From b40f7e641f40622268074cad0fac935d610e0e37 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 18 Nov 2025 11:31:59 +0300 Subject: [PATCH] Features: 1) No new features; only formatting adjustments for line wrapping in documentation. Fixes: 1) Fixed line wrapping inconsistencies in English and German sections; 2) Ensured consistent spacing and line breaks in feature lists; 3) Corrected minor spacing issues in authentication and i18n sections. Extra: 1) Improved readability by ensuring uniform line breaks; 2) No functional changes, purely cosmetic and structural. --- .../blog/locale/ar_AR/LC_MESSAGES/django.po | 2 +- .../blog/locale/cs_CZ/LC_MESSAGES/django.po | 2 +- .../blog/locale/da_DK/LC_MESSAGES/django.po | 2 +- .../blog/locale/de_DE/LC_MESSAGES/django.po | 2 +- .../blog/locale/en_GB/LC_MESSAGES/django.po | 2 +- .../blog/locale/en_US/LC_MESSAGES/django.po | 2 +- .../blog/locale/es_ES/LC_MESSAGES/django.po | 2 +- .../blog/locale/fa_IR/LC_MESSAGES/django.po | 2 +- .../blog/locale/fr_FR/LC_MESSAGES/django.po | 2 +- .../blog/locale/he_IL/LC_MESSAGES/django.po | 2 +- .../blog/locale/hi_IN/LC_MESSAGES/django.po | 2 +- .../blog/locale/hr_HR/LC_MESSAGES/django.po | 2 +- .../blog/locale/id_ID/LC_MESSAGES/django.po | 2 +- .../blog/locale/it_IT/LC_MESSAGES/django.po | 2 +- .../blog/locale/ja_JP/LC_MESSAGES/django.po | 2 +- .../blog/locale/kk_KZ/LC_MESSAGES/django.po | 2 +- .../blog/locale/ko_KR/LC_MESSAGES/django.po | 2 +- .../blog/locale/nl_NL/LC_MESSAGES/django.po | 2 +- .../blog/locale/no_NO/LC_MESSAGES/django.po | 2 +- .../blog/locale/pl_PL/LC_MESSAGES/django.po | 2 +- .../blog/locale/pt_BR/LC_MESSAGES/django.po | 2 +- .../blog/locale/ro_RO/LC_MESSAGES/django.po | 2 +- .../blog/locale/ru_RU/LC_MESSAGES/django.po | 2 +- .../blog/locale/sv_SE/LC_MESSAGES/django.po | 2 +- .../blog/locale/th_TH/LC_MESSAGES/django.po | 2 +- .../blog/locale/tr_TR/LC_MESSAGES/django.po | 2 +- .../blog/locale/vi_VN/LC_MESSAGES/django.po | 2 +- .../blog/locale/zh_Hans/LC_MESSAGES/django.po | 2 +- engine/core/admin.py | 5 +- .../core/locale/ar_AR/LC_MESSAGES/django.mo | Bin 107271 -> 108151 bytes .../core/locale/ar_AR/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 91746 -> 92583 bytes .../core/locale/cs_CZ/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/da_DK/LC_MESSAGES/django.mo | Bin 89574 -> 90354 bytes .../core/locale/da_DK/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/de_DE/LC_MESSAGES/django.mo | Bin 94818 -> 95595 bytes .../core/locale/de_DE/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/en_GB/LC_MESSAGES/django.mo | Bin 86304 -> 87054 bytes .../core/locale/en_GB/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/en_US/LC_MESSAGES/django.mo | Bin 86295 -> 87045 bytes .../core/locale/en_US/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/es_ES/LC_MESSAGES/django.mo | Bin 92778 -> 93568 bytes .../core/locale/es_ES/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/fa_IR/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/fr_FR/LC_MESSAGES/django.mo | Bin 95599 -> 96396 bytes .../core/locale/fr_FR/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/he_IL/LC_MESSAGES/django.mo | Bin 99821 -> 100755 bytes .../core/locale/he_IL/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/hi_IN/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/hr_HR/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/id_ID/LC_MESSAGES/django.mo | Bin 89768 -> 90603 bytes .../core/locale/id_ID/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/it_IT/LC_MESSAGES/django.mo | Bin 93093 -> 93881 bytes .../core/locale/it_IT/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/ja_JP/LC_MESSAGES/django.mo | Bin 98417 -> 99174 bytes .../core/locale/ja_JP/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/kk_KZ/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/ko_KR/LC_MESSAGES/django.mo | Bin 92973 -> 93749 bytes .../core/locale/ko_KR/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/nl_NL/LC_MESSAGES/django.mo | Bin 92631 -> 93423 bytes .../core/locale/nl_NL/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/no_NO/LC_MESSAGES/django.mo | Bin 90229 -> 90985 bytes .../core/locale/no_NO/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/pl_PL/LC_MESSAGES/django.mo | Bin 91904 -> 92714 bytes .../core/locale/pl_PL/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/pt_BR/LC_MESSAGES/django.mo | Bin 92529 -> 93309 bytes .../core/locale/pt_BR/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/ro_RO/LC_MESSAGES/django.mo | Bin 94381 -> 95177 bytes .../core/locale/ro_RO/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/ru_RU/LC_MESSAGES/django.mo | Bin 122185 -> 123230 bytes .../core/locale/ru_RU/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/sv_SE/LC_MESSAGES/django.mo | Bin 90283 -> 91057 bytes .../core/locale/sv_SE/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/th_TH/LC_MESSAGES/django.mo | Bin 146005 -> 147225 bytes .../core/locale/th_TH/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/tr_TR/LC_MESSAGES/django.mo | Bin 92616 -> 93403 bytes .../core/locale/tr_TR/LC_MESSAGES/django.po | 259 +++++++++-------- .../core/locale/vi_VN/LC_MESSAGES/django.mo | Bin 104172 -> 105141 bytes .../core/locale/vi_VN/LC_MESSAGES/django.po | 260 ++++++++++-------- .../core/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 81321 -> 82042 bytes .../core/locale/zh_Hans/LC_MESSAGES/django.po | 259 +++++++++-------- engine/core/serializers/detail.py | 4 + .../locale/ar_AR/LC_MESSAGES/django.po | 2 +- .../locale/cs_CZ/LC_MESSAGES/django.po | 2 +- .../locale/da_DK/LC_MESSAGES/django.po | 2 +- .../locale/de_DE/LC_MESSAGES/django.po | 2 +- .../locale/en_GB/LC_MESSAGES/django.po | 2 +- .../locale/en_US/LC_MESSAGES/django.po | 2 +- .../locale/es_ES/LC_MESSAGES/django.po | 2 +- .../locale/fa_IR/LC_MESSAGES/django.po | 2 +- .../locale/fr_FR/LC_MESSAGES/django.po | 2 +- .../locale/he_IL/LC_MESSAGES/django.po | 2 +- .../locale/hi_IN/LC_MESSAGES/django.po | 2 +- .../locale/hr_HR/LC_MESSAGES/django.po | 2 +- .../locale/id_ID/LC_MESSAGES/django.po | 2 +- .../locale/it_IT/LC_MESSAGES/django.po | 2 +- .../locale/ja_JP/LC_MESSAGES/django.po | 2 +- .../locale/kk_KZ/LC_MESSAGES/django.po | 2 +- .../locale/ko_KR/LC_MESSAGES/django.po | 2 +- .../locale/nl_NL/LC_MESSAGES/django.po | 2 +- .../locale/no_NO/LC_MESSAGES/django.po | 2 +- .../locale/pl_PL/LC_MESSAGES/django.po | 2 +- .../locale/pt_BR/LC_MESSAGES/django.po | 2 +- .../locale/ro_RO/LC_MESSAGES/django.po | 2 +- .../locale/ru_RU/LC_MESSAGES/django.po | 2 +- .../locale/sv_SE/LC_MESSAGES/django.po | 2 +- .../locale/th_TH/LC_MESSAGES/django.po | 2 +- .../locale/tr_TR/LC_MESSAGES/django.po | 2 +- .../locale/vi_VN/LC_MESSAGES/django.po | 2 +- .../locale/zh_Hans/LC_MESSAGES/django.po | 2 +- .../locale/ar_AR/LC_MESSAGES/django.po | 14 +- .../locale/cs_CZ/LC_MESSAGES/django.po | 14 +- .../locale/da_DK/LC_MESSAGES/django.po | 14 +- .../locale/de_DE/LC_MESSAGES/django.po | 14 +- .../locale/en_GB/LC_MESSAGES/django.po | 14 +- .../locale/en_US/LC_MESSAGES/django.po | 14 +- .../locale/es_ES/LC_MESSAGES/django.po | 14 +- .../locale/fa_IR/LC_MESSAGES/django.po | 14 +- .../locale/fr_FR/LC_MESSAGES/django.po | 14 +- .../locale/he_IL/LC_MESSAGES/django.po | 14 +- .../locale/hi_IN/LC_MESSAGES/django.po | 14 +- .../locale/hr_HR/LC_MESSAGES/django.po | 14 +- .../locale/id_ID/LC_MESSAGES/django.po | 14 +- .../locale/it_IT/LC_MESSAGES/django.po | 14 +- .../locale/ja_JP/LC_MESSAGES/django.po | 14 +- .../locale/kk_KZ/LC_MESSAGES/django.po | 14 +- .../locale/ko_KR/LC_MESSAGES/django.po | 14 +- .../locale/nl_NL/LC_MESSAGES/django.po | 14 +- .../locale/no_NO/LC_MESSAGES/django.po | 14 +- .../locale/pl_PL/LC_MESSAGES/django.po | 14 +- .../locale/pt_BR/LC_MESSAGES/django.po | 14 +- .../locale/ro_RO/LC_MESSAGES/django.po | 14 +- .../locale/ru_RU/LC_MESSAGES/django.po | 14 +- .../locale/sv_SE/LC_MESSAGES/django.po | 14 +- .../locale/th_TH/LC_MESSAGES/django.po | 14 +- .../locale/tr_TR/LC_MESSAGES/django.po | 14 +- .../locale/vi_VN/LC_MESSAGES/django.po | 14 +- .../locale/zh_Hans/LC_MESSAGES/django.po | 14 +- evibes/locale/ar_AR/LC_MESSAGES/django.po | 118 +++++--- evibes/locale/cs_CZ/LC_MESSAGES/django.po | 131 +++++---- evibes/locale/da_DK/LC_MESSAGES/django.po | 131 +++++---- evibes/locale/de_DE/LC_MESSAGES/django.po | 135 +++++---- evibes/locale/en_GB/LC_MESSAGES/django.po | 124 ++++++--- evibes/locale/en_US/LC_MESSAGES/django.po | 124 ++++++--- evibes/locale/es_ES/LC_MESSAGES/django.po | 132 +++++---- evibes/locale/fa_IR/LC_MESSAGES/django.po | 20 +- evibes/locale/fr_FR/LC_MESSAGES/django.po | 144 ++++++---- evibes/locale/he_IL/LC_MESSAGES/django.po | 118 +++++--- evibes/locale/hi_IN/LC_MESSAGES/django.po | 20 +- evibes/locale/hr_HR/LC_MESSAGES/django.po | 20 +- evibes/locale/id_ID/LC_MESSAGES/django.po | 131 +++++---- evibes/locale/it_IT/LC_MESSAGES/django.po | 138 ++++++---- evibes/locale/ja_JP/LC_MESSAGES/django.po | 112 +++++--- evibes/locale/kk_KZ/LC_MESSAGES/django.po | 20 +- evibes/locale/ko_KR/LC_MESSAGES/django.po | 118 +++++--- evibes/locale/nl_NL/LC_MESSAGES/django.po | 134 +++++---- evibes/locale/no_NO/LC_MESSAGES/django.po | 131 +++++---- evibes/locale/pl_PL/LC_MESSAGES/django.po | 128 +++++---- evibes/locale/pt_BR/LC_MESSAGES/django.po | 135 +++++---- evibes/locale/ro_RO/LC_MESSAGES/django.po | 135 +++++---- evibes/locale/ru_RU/LC_MESSAGES/django.po | 131 +++++---- evibes/locale/sv_SE/LC_MESSAGES/django.po | 133 +++++---- evibes/locale/th_TH/LC_MESSAGES/django.po | 127 ++++++--- evibes/locale/tr_TR/LC_MESSAGES/django.po | 137 +++++---- evibes/locale/vi_VN/LC_MESSAGES/django.po | 131 ++++++--- evibes/locale/zh_Hans/LC_MESSAGES/django.po | 91 +++--- evibes/settings/unfold.py | 5 + 167 files changed, 6503 insertions(+), 4417 deletions(-) diff --git a/engine/blog/locale/ar_AR/LC_MESSAGES/django.po b/engine/blog/locale/ar_AR/LC_MESSAGES/django.po index e2b5bc92..617fe93f 100644 --- a/engine/blog/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/blog/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po b/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po index 931e9fe3..1c0926a6 100644 --- a/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/da_DK/LC_MESSAGES/django.po b/engine/blog/locale/da_DK/LC_MESSAGES/django.po index 60a9bbb4..0d9c5206 100644 --- a/engine/blog/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/blog/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/de_DE/LC_MESSAGES/django.po b/engine/blog/locale/de_DE/LC_MESSAGES/django.po index e9226487..3ee3f09e 100644 --- a/engine/blog/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/blog/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/en_GB/LC_MESSAGES/django.po b/engine/blog/locale/en_GB/LC_MESSAGES/django.po index 9136fd88..281fee53 100644 --- a/engine/blog/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/blog/locale/en_GB/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/en_US/LC_MESSAGES/django.po b/engine/blog/locale/en_US/LC_MESSAGES/django.po index 5a5948ec..e69a1214 100644 --- a/engine/blog/locale/en_US/LC_MESSAGES/django.po +++ b/engine/blog/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/es_ES/LC_MESSAGES/django.po b/engine/blog/locale/es_ES/LC_MESSAGES/django.po index 2f8d4a34..95272256 100644 --- a/engine/blog/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/blog/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/fa_IR/LC_MESSAGES/django.po b/engine/blog/locale/fa_IR/LC_MESSAGES/django.po index 13a479a8..df59490d 100644 --- a/engine/blog/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/blog/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/fr_FR/LC_MESSAGES/django.po b/engine/blog/locale/fr_FR/LC_MESSAGES/django.po index 92f2afbc..a0d667b4 100644 --- a/engine/blog/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/blog/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/he_IL/LC_MESSAGES/django.po b/engine/blog/locale/he_IL/LC_MESSAGES/django.po index 949ec0aa..2629e684 100644 --- a/engine/blog/locale/he_IL/LC_MESSAGES/django.po +++ b/engine/blog/locale/he_IL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/hi_IN/LC_MESSAGES/django.po b/engine/blog/locale/hi_IN/LC_MESSAGES/django.po index ce840d84..d87e65d4 100644 --- a/engine/blog/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/blog/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/hr_HR/LC_MESSAGES/django.po b/engine/blog/locale/hr_HR/LC_MESSAGES/django.po index 13a479a8..df59490d 100644 --- a/engine/blog/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/blog/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/id_ID/LC_MESSAGES/django.po b/engine/blog/locale/id_ID/LC_MESSAGES/django.po index 20501425..332f03bb 100644 --- a/engine/blog/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/blog/locale/id_ID/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/it_IT/LC_MESSAGES/django.po b/engine/blog/locale/it_IT/LC_MESSAGES/django.po index b028a850..601c0d01 100644 --- a/engine/blog/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/blog/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/ja_JP/LC_MESSAGES/django.po b/engine/blog/locale/ja_JP/LC_MESSAGES/django.po index 2d4ee6fc..6e8386c1 100644 --- a/engine/blog/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/blog/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po b/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po index ce840d84..d87e65d4 100644 --- a/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/ko_KR/LC_MESSAGES/django.po b/engine/blog/locale/ko_KR/LC_MESSAGES/django.po index 4e35067e..4b15e3d2 100644 --- a/engine/blog/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/blog/locale/ko_KR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/nl_NL/LC_MESSAGES/django.po b/engine/blog/locale/nl_NL/LC_MESSAGES/django.po index 46306ef7..73dcc60f 100644 --- a/engine/blog/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/blog/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/no_NO/LC_MESSAGES/django.po b/engine/blog/locale/no_NO/LC_MESSAGES/django.po index ad26b744..963d20a5 100644 --- a/engine/blog/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/blog/locale/no_NO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/pl_PL/LC_MESSAGES/django.po b/engine/blog/locale/pl_PL/LC_MESSAGES/django.po index 35924ad5..c9663c08 100644 --- a/engine/blog/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/blog/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/pt_BR/LC_MESSAGES/django.po b/engine/blog/locale/pt_BR/LC_MESSAGES/django.po index 238fc2c7..b4f77ea1 100644 --- a/engine/blog/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/blog/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/ro_RO/LC_MESSAGES/django.po b/engine/blog/locale/ro_RO/LC_MESSAGES/django.po index 69c6d7b1..40c1d637 100644 --- a/engine/blog/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/blog/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/ru_RU/LC_MESSAGES/django.po b/engine/blog/locale/ru_RU/LC_MESSAGES/django.po index fbb1e426..9ecd52db 100644 --- a/engine/blog/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/blog/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/sv_SE/LC_MESSAGES/django.po b/engine/blog/locale/sv_SE/LC_MESSAGES/django.po index c5500b8c..5b342bde 100644 --- a/engine/blog/locale/sv_SE/LC_MESSAGES/django.po +++ b/engine/blog/locale/sv_SE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/th_TH/LC_MESSAGES/django.po b/engine/blog/locale/th_TH/LC_MESSAGES/django.po index 4ae7d235..e9d60275 100644 --- a/engine/blog/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/blog/locale/th_TH/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/tr_TR/LC_MESSAGES/django.po b/engine/blog/locale/tr_TR/LC_MESSAGES/django.po index fd82b5b4..b46deb27 100644 --- a/engine/blog/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/blog/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/vi_VN/LC_MESSAGES/django.po b/engine/blog/locale/vi_VN/LC_MESSAGES/django.po index 9de0c5a7..e9c9cf45 100644 --- a/engine/blog/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/blog/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po b/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po index a0547f14..39b9f30b 100644 --- a/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/core/admin.py b/engine/core/admin.py index 9b7b5891..92e9c944 100644 --- a/engine/core/admin.py +++ b/engine/core/admin.py @@ -388,10 +388,7 @@ class BrandAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, Mo "description", "priority", ] - additional_fields = [ - "small_logo", - "big_logo" - ] + additional_fields = ["small_logo", "big_logo"] @register(Product) diff --git a/engine/core/locale/ar_AR/LC_MESSAGES/django.mo b/engine/core/locale/ar_AR/LC_MESSAGES/django.mo index 42ec11882cf34618767a3be6e233d710f85ca218..99939ca2e6a8793fa2bc5e65d6935003507cb64c 100644 GIT binary patch delta 15361 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 delta 14480 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -130,7 +130,7 @@ msgstr "اطلب المنتجات" msgid "children" msgstr "الأطفال" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "التكوين" @@ -1084,7 +1084,7 @@ msgstr "البيانات المخزنة مؤقتاً" msgid "camelized JSON data from the requested URL" msgstr "بيانات JSON مجمّلة من عنوان URL المطلوب" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "يُسمح فقط بعناوين URL التي تبدأ ب http(s)://" @@ -2673,6 +2673,134 @@ msgstr "اتصل بنا" msgid "About Us" msgstr "نبذة عنا" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "مزيج العملاء (30 د)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "العملاء الجدد" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "العملاء العائدون" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "لا يوجد نشاط للعملاء في آخر 30 يوماً." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "المبيعات اليومية (30 د)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "الطلبات (منتهية)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "إجمالي الإيرادات" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "الطلبات" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "الإجمالي" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "نظرة عامة على الدخل" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "صافي الإيرادات" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "الضرائب" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "المرتجعات" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "إجمالي الإيرادات" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "لا يوجد تاريخ" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "الإيرادات (الإجمالي، 30 د)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "الإيرادات (الصافي، 30 د)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "المرتجعات (30 د)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "الطلبات التي تمت معالجتها (30 د)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "معظم المنتجات المرتجعة (30 د)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "لا توجد مرتجعات في آخر 30 يوماً" + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "أكثر المنتجات المرغوبة" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "لا توجد بيانات بعد." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "المنتج الأكثر شعبية" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "روابط سريعة" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "لا توجد روابط متاحة." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "مشحون مقابل رقمي (30 د)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "رقمي" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "تم الشحن" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "أعلى الفئات حسب الكمية (30 د)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "لم يتم بيع أي فئة في آخر 30 يوماً." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "مشرف موقع جانغو" @@ -2681,91 +2809,6 @@ msgstr "مشرف موقع جانغو" msgid "Dashboard" msgstr "لوحة التحكم" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "الإيرادات (الإجمالي، 30 د)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "الإيرادات (الصافي، 30 د)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "المرتجعات (30 د)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "الطلبات التي تمت معالجتها (30 د)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "نظرة عامة على الدخل" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "صافي الإيرادات" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "الضرائب" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "المرتجعات" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "إجمالي الإيرادات" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "لا توجد بيانات كافية للرسم البياني حتى الآن." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "روابط سريعة" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "لا توجد روابط متاحة." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "المبيعات اليومية (30 د)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "الطلبات (منتهية)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "إجمالي الإيرادات" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "الطلبات" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "الإجمالي" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "أكثر المنتجات المرغوبة" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "لا توجد بيانات بعد." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "المنتج الأكثر شعبية" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -2976,7 +3019,7 @@ msgstr "يجب تكوين معلمة NOMINATIM_URL!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "يجب ألا تتجاوز أبعاد الصورة w{max_width} x h{max_height} بكسل!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2984,7 +3027,7 @@ msgstr "" "يتعامل مع طلب فهرس خريطة الموقع ويعيد استجابة XML. يضمن أن تتضمن الاستجابة " "رأس نوع المحتوى المناسب ل XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2993,16 +3036,16 @@ msgstr "" "يعالج استجابة العرض التفصيلي لخريطة الموقع. تقوم هذه الدالة بمعالجة الطلب، " "وجلب استجابة تفاصيل خريطة الموقع المناسبة، وتعيين رأس نوع المحتوى ل XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "إرجاع قائمة باللغات المدعومة والمعلومات الخاصة بها." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "إرجاع معلمات الموقع الإلكتروني ككائن JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3010,11 +3053,11 @@ msgstr "" "يعالج عمليات ذاكرة التخزين المؤقت مثل قراءة بيانات ذاكرة التخزين المؤقت " "وتعيينها بمفتاح ومهلة محددة." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "يتعامل مع عمليات إرسال نموذج \"اتصل بنا\"." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3022,15 +3065,15 @@ msgstr "" "يعالج طلبات معالجة عناوين URL والتحقق من صحة عناوين URL من طلبات POST " "الواردة." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "يتعامل مع استعلامات البحث العامة." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "يتعامل بمنطق الشراء كشركة تجارية دون تسجيل." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3038,31 +3081,31 @@ msgstr "" "يتعامل مع تنزيل الأصل الرقمي المرتبط بأمر ما.\n" "تحاول هذه الدالة خدمة ملف الأصل الرقمي الموجود في دليل التخزين الخاص بالمشروع. إذا لم يتم العثور على الملف، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "الطلب_برو_منتج_uuid مطلوب" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "طلب المنتج غير موجود" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "يجب دفع الطلب قبل تنزيل الأصل الرقمي" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "لا يحتوي منتج الطلب على منتج" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "الرمز المفضل غير موجود" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3070,7 +3113,7 @@ msgstr "" "يتعامل مع طلبات الرمز المفضل لموقع ويب.\n" "تحاول هذه الدالة عرض ملف الأيقونة المفضلة الموجود في الدليل الثابت للمشروع. إذا لم يتم العثور على ملف الأيقونة المفضلة، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3080,11 +3123,11 @@ msgstr "" " توجيهها إلى صفحة فهرس واجهة إدارة Django. تستخدم دالة \"إعادة التوجيه\" في " "Django للتعامل مع إعادة توجيه HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "إرجاع الإصدار الحالي من eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "إرجاع المتغيرات المخصصة للوحة التحكم." diff --git a/engine/core/locale/cs_CZ/LC_MESSAGES/django.mo b/engine/core/locale/cs_CZ/LC_MESSAGES/django.mo index b75f19aaf41da11c7ef0740e3431c1062d2fd80e..6d4fb167774797ed89ba8d13bdb753e235cc7449 100644 GIT binary patch delta 15334 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 Sn4F^F3QWq*ySY4xJ^v4i5_uB< delta 14445 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 b_(r3sog=b))_Ha&1bI$+cE;rL3~c{DmbX{6 diff --git a/engine/core/locale/cs_CZ/LC_MESSAGES/django.po b/engine/core/locale/cs_CZ/LC_MESSAGES/django.po index 1523c11f..420a5e9f 100644 --- a/engine/core/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/core/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -132,7 +132,7 @@ msgstr "Objednat produkty" msgid "children" msgstr "Děti" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Konfigurace" @@ -1119,7 +1119,7 @@ msgstr "Data uložená v mezipaměti" msgid "camelized JSON data from the requested URL" msgstr "Kamelizovaná data JSON z požadované adresy URL" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Povoleny jsou pouze adresy URL začínající http(s)://." @@ -2738,6 +2738,134 @@ msgstr "Kontaktujte nás" msgid "About Us" msgstr "O nás" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Směs zákazníků (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Noví zákazníci" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Vracející se zákazníci" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Žádná aktivita zákazníka za posledních 30 dní." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Denní tržby (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Objednávky (DOKONČENO)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Hrubé příjmy" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Objednávky" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Hrubý" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Přehled příjmů" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Čistý příjem" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Daně" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Vrací se" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Hrubé příjmy" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Bez data" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Příjmy (hrubé, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Příjmy (čisté, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Návraty (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Zpracované objednávky (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Nejvíce vrácených výrobků (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Za posledních 30 dní jste nevrátili žádné zboží." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Nejžádanější produkt" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Zatím nejsou k dispozici žádné údaje." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Nejoblíbenější produkt" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Rychlé odkazy" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Nejsou k dispozici žádné odkazy." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Odeslané vs. digitální (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digitální" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Odesláno" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Hlavní kategorie podle množství (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Žádný prodej v kategorii za posledních 30 dní." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Správce webu Django" @@ -2746,91 +2874,6 @@ msgstr "Správce webu Django" msgid "Dashboard" msgstr "Přístrojová deska" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Příjmy (hrubé, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Příjmy (čisté, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Návraty (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Zpracované objednávky (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Přehled příjmů" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Čistý příjem" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Daně" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Vrací se" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Hrubé příjmy" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Zatím není dostatek údajů pro graf." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Rychlé odkazy" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Nejsou k dispozici žádné odkazy." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Denní tržby (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Objednávky (DOKONČENO)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Hrubé příjmy" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Objednávky" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Hrubý" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Nejžádanější produkt" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Zatím nejsou k dispozici žádné údaje." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Nejoblíbenější produkt" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3048,7 +3091,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Rozměry obrázku by neměly přesáhnout w{max_width} x h{max_height} pixelů." -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3056,7 +3099,7 @@ msgstr "" "Zpracuje požadavek na index mapy stránek a vrátí odpověď XML. Zajistí, aby " "odpověď obsahovala odpovídající hlavičku typu obsahu XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3066,16 +3109,16 @@ msgstr "" "požadavek, načte příslušnou podrobnou odpověď mapy stránek a nastaví " "hlavičku Content-Type pro XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Vrátí seznam podporovaných jazyků a odpovídajících informací." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Vrátí parametry webové stránky jako objekt JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3083,11 +3126,11 @@ msgstr "" "Zpracovává operace mezipaměti, jako je čtení a nastavování dat mezipaměti se" " zadaným klíčem a časovým limitem." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Zpracovává odeslání formuláře `contact us`." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3095,15 +3138,15 @@ msgstr "" "Zpracovává požadavky na zpracování a ověřování adres URL z příchozích " "požadavků POST." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Zpracovává globální vyhledávací dotazy." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Řeší logiku nákupu jako firmy bez registrace." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3111,31 +3154,31 @@ msgstr "" "Zpracovává stahování digitálního aktiva spojeného s objednávkou.\n" "Tato funkce se pokusí obsloužit soubor digitálního aktiva umístěný v adresáři úložiště projektu. Pokud soubor není nalezen, je vyvolána chyba HTTP 404, která označuje, že zdroj není k dispozici." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid je povinné" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "objednávka produktu neexistuje" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Digitální aktivum můžete stáhnout pouze jednou" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "objednávka musí být zaplacena před stažením digitálního aktiva." -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Objednaný produkt nemá produkt" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon nebyl nalezen" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3143,7 +3186,7 @@ msgstr "" "Zpracovává požadavky na favicon webové stránky.\n" "Tato funkce se pokusí obsloužit soubor favicon umístěný ve statickém adresáři projektu. Pokud soubor favicon není nalezen, je vyvolána chyba HTTP 404, která označuje, že zdroj není k dispozici." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3154,11 +3197,11 @@ msgstr "" "administrátorského rozhraní Django. Pro zpracování přesměrování HTTP používá" " funkci `redirect` Djanga." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Vrací aktuální verzi systému eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Vrací vlastní proměnné pro Dashboard." diff --git a/engine/core/locale/da_DK/LC_MESSAGES/django.mo b/engine/core/locale/da_DK/LC_MESSAGES/django.mo index 9f0f486ec19fc15d095a19b231ab9b88bfb87975..e05ea04416280a77e77762095c17befcf4c14ec0 100644 GIT binary patch delta 15290 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 G=6?Xa^*s*& diff --git a/engine/core/locale/da_DK/LC_MESSAGES/django.po b/engine/core/locale/da_DK/LC_MESSAGES/django.po index 20b4de47..312d3886 100644 --- a/engine/core/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/core/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -131,7 +131,7 @@ msgstr "Bestil produkter" msgid "children" msgstr "Børn" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Konfig" @@ -1124,7 +1124,7 @@ msgstr "Cachelagrede data" msgid "camelized JSON data from the requested URL" msgstr "Cameliserede JSON-data fra den ønskede URL" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Kun URL'er, der starter med http(s)://, er tilladt." @@ -2764,6 +2764,134 @@ msgstr "Kontakt os" msgid "About Us" msgstr "Om os" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Mix af kunder (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Nye kunder" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Tilbagevendende kunder" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Ingen kundeaktivitet i de sidste 30 dage." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Dagligt salg (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Ordrer (AFSLUTTET)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Bruttoindtægter" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Bestillinger" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Oversigt over indtægter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Nettoomsætning" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Skatter og afgifter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Returnerer" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Bruttoindtægter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Ingen dato" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Indtægter (brutto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Indtægter (netto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Returnerer (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Behandlede ordrer (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Mest returnerede produkter (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Ingen returneringer inden for de sidste 30 dage." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Mest ønskede produkt" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Ingen data endnu." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Mest populære produkt" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Hurtige links" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Ingen tilgængelige links." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Afsendt vs. digital (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Afsendt" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Topkategorier efter mængde (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Ingen kategorisalg inden for de sidste 30 dage." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Django site-administrator" @@ -2772,91 +2900,6 @@ msgstr "Django site-administrator" msgid "Dashboard" msgstr "Dashboard" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Indtægter (brutto, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Indtægter (netto, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Returnerer (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Behandlede ordrer (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Oversigt over indtægter" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Nettoomsætning" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Skatter og afgifter" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Returnerer" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Bruttoindtægter" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Ikke nok data til et diagram endnu." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Hurtige links" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Ingen tilgængelige links." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Dagligt salg (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Ordrer (AFSLUTTET)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Bruttoindtægter" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Bestillinger" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Brutto" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Mest ønskede produkt" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Ingen data endnu." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Mest populære produkt" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3074,7 +3117,7 @@ msgstr "" "Billedets dimensioner bør ikke overstige w{max_width} x h{max_height} " "pixels." -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3082,7 +3125,7 @@ msgstr "" "Håndterer anmodningen om sitemap-indekset og returnerer et XML-svar. Den " "sikrer, at svaret indeholder den passende indholdstypeheader for XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3092,17 +3135,17 @@ msgstr "" "behandler anmodningen, henter det relevante sitemap-detaljesvar og " "indstiller Content-Type-headeren til XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returnerer en liste over understøttede sprog og de tilhørende oplysninger." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerer hjemmesidens parametre som et JSON-objekt." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3110,11 +3153,11 @@ msgstr "" "Håndterer cache-operationer som f.eks. læsning og indstilling af cachedata " "med en specificeret nøgle og timeout." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Håndterer indsendelser af `kontakt os`-formularer." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3122,15 +3165,15 @@ msgstr "" "Håndterer anmodninger om behandling og validering af URL'er fra indgående " "POST-anmodninger." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Håndterer globale søgeforespørgsler." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Håndterer logikken i at købe som en virksomhed uden registrering." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3138,31 +3181,31 @@ msgstr "" "Håndterer download af et digitalt aktiv, der er knyttet til en ordre.\n" "Denne funktion forsøger at betjene den digitale aktivfil, der ligger i projektets lagermappe. Hvis filen ikke findes, udløses en HTTP 404-fejl som tegn på, at ressourcen ikke er tilgængelig." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid er påkrævet" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "Bestil produkt findes ikke" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Du kan kun downloade det digitale aktiv én gang" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "Ordren skal betales, før det digitale aktiv downloades." -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Ordreproduktet har ikke et produkt" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "Favicon ikke fundet" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3170,7 +3213,7 @@ msgstr "" "Håndterer anmodninger om et websteds favicon.\n" "Denne funktion forsøger at servere favicon-filen, der ligger i projektets statiske mappe. Hvis favicon-filen ikke findes, udløses en HTTP 404-fejl for at angive, at ressourcen ikke er tilgængelig." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3181,11 +3224,11 @@ msgstr "" "administratorinterfacets indeksside. Den bruger Djangos `redirect`-funktion " "til at håndtere HTTP-omdirigeringen." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Returnerer den aktuelle version af eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Returnerer brugerdefinerede variabler til Dashboard." diff --git a/engine/core/locale/de_DE/LC_MESSAGES/django.mo b/engine/core/locale/de_DE/LC_MESSAGES/django.mo index 99320f67466856ecfc281de920e972b117600c6c..da74cdf72a5222525d2bed17c99657497b974fe2 100644 GIT binary patch delta 15285 zcmaLe2Y6IPzsK=eLJ2J-R0SbR=n1_O5JKoB^p2E376^e*vI#_lrFW1H(xnK3iVBFJ zD7^_Ns3@SI)K?S>$Sd~y{p}3C-22>n&+|+^^Pib>&YUS{H$ku6$oB1>Y=JBJvo19p zo3a@56gDVi%$yKoo{3heF*EBLQxIoiKaVkMF_iePddB3y9I?ja!hHAy7R4vA24=$q z%#WRs%bG!$6^G&kV*+Lb8C~Fe498!QKA2qfjahd&a_GmRxEgn72^h173=d<5$JrZi!CJ)oo%fv;8rzZRhk7zUssqnr zUYv_%aU~|=K`eo#;*A;aF(w`p@IVt|>QElm%$N?`-!v!lZ(NRV;QZ#sy)HVm=&#IdLp%#3o}AoQLZ8X4HAxF+eBH5i;*{!|bh% z=|+64jWOMci?=nV38p953+`=aJ&altXHaYA8fr@Z#*$c|z3pf%)SSnnMyMfbgxX>S zOl!~lYp&K%kOw!TF7zfw;xS~snOmq;8ri{?@5WWcpQ6^rsE&3-#-ifcs1aF+y6#p~ zhj(KK9_SQm5f|&s_~#~5y0bA?u`0eygYYiKRK$H47==8q=8e{reg70`Z1KV|HPKfyR8m`9CEwV#ND>#@xqCfkDPpq2lZi zq~I^SM_hTRF};XOrWn(T3qCiD5geR zePIm5;=~i2t5NOtq23oaP$O7$vfXY~P($7V^Wh@YV&8yToZB!D_csU0=)z}FPy8Kr z$A2R`%Cwte-veu~De;%6DTrRAjKsax8-drr9Z|hguVjFi?n0 z0vVk!5H;r+sE*9UV9!xK-hkn_7mMI2SAWfw-*bjcw^LRSi_$I<)xlWwVmpk+5z`s} z>SR_@pgB9^D*i^@IC_R1vRI5Fj>l~1L)E9CIy?@wM&`MA1!gDShI-OBQ0KpodLLXv zt%)CIF#dYdhZN{NkY%RrSs1E8J=BHcQ8!F*<$X|dJqR`A<4_|w8+F4qs2go}@!RMn zK8B%q8?)k%0WvwrJV4#xPt=s;on!`JGAMPMoklZn-||96ndiC?37_ASO?*z>l>?NLwG54EaCxp*w%pSU$v!|A9wejCf<0n`(H zgJm)IB739isQ1E9%#V{%i*YG>aU1G=@Bv2PtwoG~0-1*tWMK2fd=10>s1C&}u|r%9 zn-j;Oo^S?gBo?ABv;sAx+fW_+3f1A9OYPJ|pxQ;DMx-Xj;IO5Pe-$z-DA1gqz*hJL zHpH^a>1y~7>V-0+OAy{F#?MNlmdEKxWCb@Vb>bv3m0GXO(UPWE_ z8kWNc&f+WVP&Y$;MhtfGH1ra0apfnlD)BAUzAy5E{giteBZ(7HYikl}>NcUS7dS>n zJ-LBi3|VQ1rZnn>(*ZSfU9l(*MlHI@E}nxeh+lH$-#dT7Fv|5kP1nhXg|Q&&L1T~+ z5158zo}i!;YN%3dg~>$C@jR@IOHfa67<=L^tc`K2?P?!`YWE^)?R#AYweTPL*1|g z*2Vr<5MMxD_chF|{r?Ub-QYMD!y8x&%{se^YdagF7HM;=gS}9TZxLz@9dP9juqkn+ z^>)NYV@Kkps29?0R7dV(KtmP!qMg$))V3*tx=|!*sA`}_q_HdSfO>)?)RT{L^^;LI zSm^54xcY6VHS-QWiAP-dl@}TRA{6{Uf%apL4fet{P_N=REQD=P7fwViqT#4DGZnQs z*Pz<(K)oOKq0T#k>i8vB{|#!F{ES{KvoT=zY4eSCjz*v^xD_LDA12`?jK)Tr>{Ja! zJ<$wQ`vq7TH=q{fIc$QVo9%VmqIStN)S5Yi>fk2Rbrh^%%Vcjfmmmhz(8?6&NRdcy`#i**NTmwbs_KVWigw->C9<*De4 z(Ky4!Z(apykgAL7?0I)BC3NsQQPdMD=+b?jXR>IW;UwbUgx*La^}DIYj)1s zqK0$|*2lN82L6n?QTZKqTlPjh(L&S(4`K_vkBzbZ>oy*b>gZ97!;m+uO;P33uo?F^ zhskKMO&SOI?veRCm8>*wru@s(0t&txwFBaZq*G_2+CvJhyU=Iw# z-BVg|F0{5V9d=f+Pk}JQC z`G_B&wsE$%nE%RTo_fnJjy8CTI1{H}(>-==oIp*KkmU|cnb9(w@@P$$o-yOT-8xeG78m!F{rtojOxfN)Dv#N zLiif0-4QH-A7V-T9`$75@7vFkI2=#h5;fJwQ0*Qdi<|fV0lP?^L9I?7>J8{eEvn_H z5!#M=qTN^@ucLNJd9ZgDcs*2AXA-!ribmE zjlp>0RjBeS*ajnx*!M&q)D4zkaeN>3WM85>kmsnqaXpM79*9XEW1dHi+|S1tP2ya~ zc`)v8mYlHLW-aPTUq=n;KGY2^VmAB*3*w&`g85I{xh{-Lh>M}7mBo?v$OHH!z?@vzLrk?Mcju*KrIzyo))AeW&e*%y87m%*NVy2K8Bx^$g#bv+(pd zm^kN0b_z#fD)AC*j3MW&%}^biagOoVB3n;^I8 zbJ-4Iany)Z$6VL|i((7Zlnik35Nt_21)pFfPGdjfn_t>L*EPGsU)AZz4_EDjj{Dla z59S2OXs%XZX?ztm73Z-Qeur5x>YCjhfZG5#uoA zI_nCXqV5;?o6Ht6rEl0Cokn%&BI<(QV=?^I)fc*H-`!ET$iwgQsF65*%XaWQ=Ais* zyo2A|wyXb>Z+Jatq5ZckT+08x%eNo>{V)FyymTnI{Uc9-J@2uC@$7wL4sk-@0b7eW z{vqFbiM_wszmWF$gAt;<&7XWPqsFH829hF%x^@Y}5l+6b6^S% z#WY+>hp%8HvA?h<_~u-KYQGir0I#BU*&Zy$gC57gJTljx@C5hssA8VrSE#Mdudx9q z6y;CWvDh88CKjRIcx$j8o<==D_Trx47na(n@^Ps1cVjoahh?!<3G2ubo#um_gM=bW3d5%F1Uh+$>yVoX5Y zXd3D|%TN!x9<>MqACXayE}%N{J?cram319JExuBy`e@XR8@qTY>V-53b%S}RH{^2E z8hH~n0$-!9dk58_2S|I~|K;on;ixB%K{brU{MZaNGCf@VAXEp^Q5{>0dXmkk?X?~C z;j#mD-U-wcT|j-Reuvr>xywuTUpN_k(I|vEu>$Hz<57#LCsx9A)P**pUeSAUzCV9T@HE7ph$Q|25a(C~By_z?ygy^#!76v?usIpgHQDpM(jx z47=hD)C0uE*r{xXy73^?Vw{9}uw~92s0TQK0X4WrCJKK+omiBA`qGoua<;+Z#EH&; zD_?`Hpg9+*#A$dAq6_&iOTj#Vo-D22(@jR zqfYFG@#sU%?N)4qZ=qf|S@UnTe^HPJ3stp4 z7=^lFENa`e!uIILlXwL60-9gVc6b?TO17a!;32lfEY)oX+G8y7DpdUiR0qEbkf}^2 zPYpY_^-&)t!%^FEJF4f0Q62ppz4!y_Ny2N|k&D66#0@bK-#`t00X`zN+J~V=W)ybD z0BWrTJ|?4~{sOg#uA>&&FIXEZ)V5FBAGL3Xpr$Glo8ny53*{WvLQfsr(K@IRX@@Ov zHR{Q4pgQtB@_+&J2N?}b!Mb)N+T#@B38?o#mUkEWQRVAhd=~2y|Av}^+E3fhl=`UmKmrE8{||Eo8Q6h}rK-SNs73Z8YCAqeT_~)f zjSHZ@>s4@Zebfu9BWj9}sr?KCW5|RxvU4;Y^(1FeL-`wO$YbN| zkTyfzpbu(MW}-SUA4}qT)KnhA8u%xwBh?z)4mZWp#Jx}-Vu8l&f34z;6lnXshl)Qy zy;yFcUOZv(_6=4MTN5{P@dDIbzl`eWL5#%HSQfuSt(^i*>_~P+jcgy(VjtWjVCQ-q z1?ur$Y>s!aCDv@}G5v8oYLQ*RHkiAa?QnP03oHrsAv6iqkr}9|TZEc|m6#iMp;rF^ zRL9Q-$Y=;}p+?{#YE@@zZciwTDvv_-xC(0DHbLFEEoy|4T|5Idx0_Jcy^QM6UDOR9 zqB;`Z!cJM>DKhF|L(~a9P$vv^rlS_$MAWNz8R`jMLXFfe)T;j-gYS!$9@Ce&KStyG zsHwPv85q&Z?zWjoeZcG`qoKQjdh$D16Mx6nShY1B@UYKOFPw#K>>KU^W+$%O*1m8W zp`NT8YJU%K&Ovo#my54DLle}F{a=lYZqy4a;AYele~4r8CZ=HDcAns$R!?C+;9u#FMBY4(((w zR2%CO55wxX8TEqt9Ahv?XWOwFs2lrG*IR{pp`FKen57H*zdf0bWa98eY=qaaD@Jv- zzv+y{F2v`tEtczM^*awb!@Aq@-p;Mqnf4D{+^UDIU*^2tgZ-}yR_$qTG#*olKSK?1 z^IrCQ`%9>}U~jA6`H8dUGq!w*^Jiz5KDK<9vtVC$zVnm5?Eg3}T(h5DrRk`-T#Z`g zM^Qunv5P(Z?JCZPn&auHZMfLQucLO+e$-m}5cR_O6{}%LqQ?xwTB!HKh5#8|Xd7zv z?m^AvVbpH8huU@_1MI#pfO_>lg~3-VYWp_DCfFDC4QT@&#+x_^Umj@JLQInVSWd*? zD|iPPedv6QT2!Tdwx@ki`}TR%B6|y4;y0)pRUc%ZFazrluSYGe&rux+9c-tx4b~&x zj8*X}YJ|gw1n(O#^~mVSXQPH{nTyw>K2%;o_4F+2O?MB&Fg)3A(@0duYN4iV0_uV0 zqOSKPdhs?sgP}w1BKKh(?f=bWv~Rye_3+6Q`ytdCLy3K;kx6ysTTmZPhftpxcbp}L z+23|Mp+2UcN6qmP)OA*)Mszc3>P};E?r*M=(YyUm)X+o>w?i3=jfjV$F0c*tLfVOX zFH}sm?NhJ^@e&{pRY!N7x(JL)G_3Eym#(&|Iz~(+#g^;vD*fG2{pD}ARP1(*^p~kQlxgpdrL3$g-$~53GIN6T3;BMu zt4Mwt>ga-c0oBD8?i{_ibi`2B-j%&TzNO2@vi{7cH29r@S6w0XrW-$=C!Hj(9iVM_ zoca}{m9E`qI6{p%N}^s)I`k6K(VwypZ~`fw#Ooz^=#Q9M%5d-*Vj7d)Cf}R%JSmQgB~n%p*`1~X?x6g2@;Wk!U&7BwA5zu;=TlY-we^GJ zUyXv_2}+}mS4k_#kHNL1^_*A)D^NBSKXw<_OH0Q?Qaoi7NhQelA{`)oMO>3}-og(^ z1Ia&0@+wc-%KIny4-JzEMp1DKU*<#|lZaQ7wox{K^goYj6l`(jdt7D0W9`DpH{|@C zkCjCc?;-y8KNsWqJroRg1trO6qft#2fU6wV~u)m1LSTg0=l4i`U1K85^#%tq`Ze;6Mfyj6o= zM)aTZ_ay0fjTGtHTvR=2bFhYAsS9g!N0QuR}uhRO9qo4%Aqobp1s5p`oLfwc* zm3W={r(FB_|JMH3 zF`RBH!AbqwDB+m$JS#Yd#|X3i+=|6-mu# zJDrqDzA1HqZ^%rbU?Zsp`4>sgl9~|nmC*2=#OxqNkm^x(75h-HBPaRZls&}Y;rxkU zHF)2lMZC%_H7t?kF9&qRA>-uC;81Y}EVO*~WR#H9pH>D`hUp@G;V~*jYW2qVw zoWWhBCFGNFIW{9jkn$4i=!6AHuaFLrex{6HqRc_8g+)pENR_x(f6C^P&rV+V4<1ia zu#a4AT;R%DViKtl>ED!pPMSsjSx#I`>Orid4>q(}^M)%^_ylPv=@ZhC$I3U5KX2oJ z8SE;2G+NF@-z0vS)PXdgvQw^}ta*+6JRCwAKwBLvNY7H9L3)oA7A)oF)u%kxE->B&>F&(x#Fe?h0OH2(Ms4r~;-0R}I#;f+9!U>z z9XE1rU3a~4s^sWG{GQDQ|C#q0cW#<3v+M5~!6MRgRQ4cMa~Jsp?~*Q)E|F%Ca=Qy` zqx~d%k>Jmo{5(v$OZu61GhMrv$m^I$tbgoWMjGwvg8%=At+qdByWl5IszReNuHhM# zlm8pOr|vgWbK*F6@!u#vNq!Jz)A6(`zpC@xF_kj?FFS7$A1D2wHum{>9g=TF<@@eL z!r;+`pMO%81NUMve23JIw)as-DCuKTJJLMbN zynxxji5a9A3NFxKCFuld5pe?L%P<@}l15P;P0}%v)R($*qz0t?)Ze5mCw3=(bo`5a zCaEcXi{5thQ3N%Si^N$$r8=dAIo;=oDzDCug3OkR*_VZ*<9-Qn? z9JaGmgRK!oM*IBfqf>oJ-jSn6B&84Zr`d*!k0vw@_{Mk#KDvf!H^MtG(eE2PVsxfA zEpeDH&6}L+^$+oRhb5-@y)~+OlM*x2DhHdnbG(TI{mB{0{>=ZgWm2L)QD;bRrq3Td zeOPj8N}4w@BXMzwcDbJN+7AA&ciY*d-Dl5%$ z;TxTDcvJcypT>wAd58J@&-#%8?UFdyms|l-R3i(W0$3ZH+2L zQCg$4)aWo;U!xS&*8aWT_c?j|`}kjv$MHO$bIyHT=Q`uM?j&yB2)KMT!1r@-w#9~H zc@|?z;MEXg#$`2TYbBK$GpnvK6q(uB*JI2Y%t8FDo-u(KSl^gjm>-K`F$~387=Q^F zjGd6vnt_-NhvH;od}b6Go!~YWz=v1}b2Tt#5qdE@eu`?h8-wsL=EQRtL&vVT^0Lv! zl%_liD`0mlhEwoUZgM4Z3Dcp8uH!RiE}1$MtaF}q=8ds;9*eq@?x+j*!Mr#c%j0BB z!VOpo1DhH%$wM6`;5*HXVbILISYz5_be_ zXlG-3GWRXI&}r(|cQa-T<&(NI{uRjF?_o?EEZ&oO#(}*UDn78cH#>va^P(}I;L0Rp zzTpJz`!fy1C6f6p)*oO@HOeCgA#rcKN1Qg;m=}nr3^ArP=esbJ5g;x%!gla;-$)h` z6$3^avz>}FDaOped8u}Lg^aa}tpqYlrZQH*F<22-qZZd8)W|%;U@SP!j%0b%)YL=m zqG;6TVzDavhLh18u5=C7x_A?6@oYtI(tM2CW<|!^De3--{oE+j;!8y>zR7ricC#@n zH)bBmNyV6;-B@urX>^48?pn8H2gLNh8B3nYCCBOH8*z-wg8-x57f$ z6?MYl7=%7lM;4&JW-Kl4$-RHSc9V>#WZ-zQ?JnDj7UHL%NT#rHx`D>^VOh;XB<4ne17y85%>_ac{ z3Dk-I#BBHwb%)PT7s&p)osz<+&qtsxR3Fv89R^}2)P;MZMqsG(RaEPaV6>wen8#9Rp;NR4(FI-KOc&^qw1&*HAh{z2dcxvQ5~L!I?qC+ozJ{O zMm^u*JcVj_3$+%WpiUGv*RFw@n2R_Xn_)|=iE~g>@daw1A4PS_7=uO9Y=^s}?rbn-#|bW;in?IBi&vq} z^8r@U{@+2SE?&kBSZtpCz?Z0@JA$?G7Yx9V`F4tmVMF3hs1D9Y&GA00h(}O2bPvm8 z$eZ>$4N=d9m(i!8ol8b@w+6kKfqEW%kGi8fn1G%I#*D>89D#>W9jd+14sio)LEIX3 zhi{@rVg>3v>rf+_f$HG(g^a&?9Gq_FrWmSW71W3{!YVihtKm8H|+e1=)E=3>TQJ&9UuKiC(G6OVB5Y%E2*6l>#Ws1x7B3i!-f zeu*9GcBps6Xcx~zFYz{4{vB2)zJuEKUf)vtmTQ4w6bwZzt~sc=dmnYe6R3{-fnLnB z%#KVX>VeY(HFAAWQ#Ts5=;pe35w;}$(3St=^qJ*$?sB3|R1^ziNz|RzMh$sOEQ&o* zL!9c$r=jL}30B3`s2lhed*B_6!qzM7Yj_H(-DYI%_{=#n`6&1Wb-~-1A3ZDWg@UjI zaTt0r8Y8eb>T`224=zWw+lU&e16T|%qdNE$3t+ZY_Vb0Xu=am5GP+<7tcOD|1lOZZ zydCv?_zFwlNi2?kU>(f4+HSih&X%YVOT@a^AGP>aqSnw6SN;s+wEv^l*dd#U9f;SU zF8C*^BTrDh z=P~LAi*8^iVYrV>Co(b)Poth}MK{`2+7G?N^HFPI8)~i(qAqY6H6?#w4Gi66jmHYa zlTahF!Fke^KgI@>`@-L~`?3$}5jzXDT6bUs{*Jmp!T0P5n_xxaL8ueI>Eh2(?XIFu zTwpVgZ;Z#9I2+Z$-KZ(NZOeV8!WLWb0%~s3Q4RMy|8nK!x7s=Df*R5{up#clTKE)o zp&IYoZJCU^p%tj}9mSUT1e;>q2a1{hnPk+{;~0Z^KC~vF%I9Ho{1#&|c$@v=(G_)~ z<*2EwM-$0`dr5qZXn=udjnNacia^5LH0n<7pgtI~+b*t#s5_Z}>cAA#T+c;yWFhJfw_qXMj%s%dOW}`L8vjAv zm@o7T`!Z>blPKtbRq+I>;WO0g_U^H3WB_V$jzm2HCt*QciyEO%P&c#(8{#e0E~&WJ zF3zE-sd^uoTAw*jMne|xrJeg~*oZh8b?56*i|h#2#Dslz%BG-J`#Y%eYZ#Bk_S@&g zK;!~uHI~G$Q8)HGssn`%=(;{mLZ%7@!!g-o%rex_J^hNO7IDFY_RdxxvfE}8>P~lJ zDLjC>z-83bn8Wr_ogK3h7RPKDhKsN)YD#uu2-i1Xkvx>#Bc6f2reyviBco2Z z)r{GR7hrx|=6n~`ZU>IWN9e_2C;4XV;gO8fG4_<*o`+A{2U_6wJfbO2Mh4X^`+>I~ zaqlyXe^Ux}p5@0Oe2lqp^N)4}KE=w!hf%xY9)@7Pb9N-cQSBqK7}i5gK_?gYz*fYm zSd@|Y0{ar5xnO_&7Il&FpG!}E{mI_x@L%lye-(A1*%*pzunz7(&E;*(hxbuamE~9a z4Jib*m?JO-yCRPQvlPo>$4ka+!f~kQOqlPoy-)<|PMV_bv@NQ^U@VMda3LLi19gXC zS8WH%VIbwT@dif!W*2dVYkWt@Li_*mT%o+8(|I{f!VeH$CAlL!6XdCX*d+; zpng~T0QH2MThO+93)RtgFh72P#kr$Bn1<&W25rN^MLqs+I&V3D#AwQcLOuR(NbN8e z*Eh4tRK-PD9}l2<`V`|ZvY0JTL7iYLcE#&h9%G7I2cdS$JZz0Somu%!wb~^(Q?VWK zO7#E!?*9%M0{3GgRxjl-y>SW#Q0xU zw&h_|hmN5-@*C<#o}j-2;aYS&tWfo(ePndudafV|HT2_A7kCZzWSfUtBk!R`;78Pn zFQGbg3)TK9s(oNtd*@|P?P{Pp5RDp{L|5^A37)E!)PK1aRfij}wJ zbx|kmi0Z%)RQ)VhzQMU0HBzUsHeSRk7{uRu^tx_@HMIYGl1ZQ-4ZGk4)E(5QXy>vy zszbd|i*Y>a&eEJ4Q8%#H)t|#M#J5qO3#w#CEW+6g)q(C(`+uyfScDabH@o;0YEJ)$ zn!9`09Rn)cCt)Ad>RyE{a0_ZA?xEV}uVQbc3~FklP`joP>T?O`YeuFQ8O`lm7?1Cx z9z+jac`g2irlD(!svm(GiJhoBJdU~XI%;Yjpk7{iBJBumF3PD4$}I@AcC(C4aYS9yQbhz-V0I2N_oj-rP8G-?f< zM|I>jMxnQsz0q!{ZQIvJMsqb9^{k(cdZ2ubb?{$QPpj6pBhnmO5~ri?`~s>YzoG8% zK5Arg^RCuNw7}^&2K5|xh)pqDl#P8Y$apE}fa*~SM&NYR6L1^q#DAjhBu8D_!3L-y zABuW@EJ1y4FILA}E-qQmPC*;gjm<)JYzMLyeC8UNND6}MyTySz@i0{RQWqb@hQxPK z51hyb_N7u2^&E&pjYxkNkHGfCZ@BWGP;2ZO>H&5KvuXbaG_(b|Fo+7Ti)*5uSglY~ zl#JTv<4|+F05wI+P;+}6$6-LUouWyo8##y?$-C%(6gRRX8jZ!Z|2vb>svM2#zzi&n zOHp&V6KmmLsE$-@Y&+Z#%My3Ma2$(T#4AwS?^74=M?F`5LOpl_n%Ddx8Y>OK5&ZyPi2esW&P#xZeE$}L~!YWNY=0!|Jt(6~| zvj5}BWNBu5+z#~w>xp^^jYoB4GHUK-qo!a1=Eg0k)xRCp@q?%l{0TJzcTkJ^395bG zSX&;7>Tvm3pWU|&DA0vtQA6~iizlPzb|vb>r%)Zbin`z()QJP*?35Kmb+8VqeIlxT zl5;p}@r^@0iqm{#bO)hGcdfzjM!`Ve=+%J>;-DlXwz%+bPbHy^5g8*1b( zpziz<*2a6-1}n6r10JRb^}O-TYGt2r$1pnu)mqyJP890S5>WfQhjSY0LR(yX#`)Y? zv5mb@2dqT9Rj4~YgyZod4#O_-9{mQ?XZDflOF_xD_5m{qb-@o&`~64MT!tjrsVR-x zc1=(tG{(6Vb*EQcT(q5ii6x@i&Bn&~C2EA9V;$}P$VB@+y+78ZVioEMbpos4GpvD? z+uIBGLY;6S>WOv)+u=h@#8w?VCI**b6Fi4qFtnrnfo2qTCO(2~xxOjY$-do&Id?b% zI@|J&&bP1=?Qgj_ri-mlbDnor=xQ&NiX&-%95up?y4kPot5I?8?(BbMhLMrqIIHxq z@m%LkXZ#Dce2X)8Pa6+&euFWbr%EroNQa}QG99(ZccX^>sEhyYbmh>VfkoYDymAaE$0Vn9$^m5)tCLR zM{mKt?$L_czYQ@KyP&=yEyn|R5vStX7wuXolVo4Z-BFL=ji{H-QLKl>``M0mMs3@f zs5SOJw!&Y1WOSiQ{p}r&z`DdsQH$#Yssqol2R2K#t9lhyCq9E3;=lp+!qriCJ{2`m zX)a!hdZ)aN>gYk#gU)xIOg=J!1MNO7jOtkgYR<->?r1vdgx{kVf5u+;9GhUTLAK+o zP}}xZNhXS!js;X}2}%eLoZR4w#ENQ95c! zSE1gD2T*r(2K8+J3pFx1hT4&=f$C@y>htSxy!QWQGI}tC53?WWhx)EJ7qytKqMl%P zU47tid*SM+`fjMjn2egrCD;|uV=JsN!j8-YRJ)H+9l0vGz9~D>ejpij;m`363>jtP zb*M+~BNvw&ZHIU=4yJq;YR!bdWVcsO3?rWH;`dOy;H)!yihcdoK_Bk|vw}1*3;%GG z!r~NaDh806ssTqo(ioS&fsC$M@2_FI@|nHFI$3^Fd*Xjxoj6X}SjUq(Lj*iPn*i+TR|e@%CuGIpN%ob-@1n>d=2eS~k|Zp=Jb*QPCH4=DJM z)Qx;;${vv~Pd){E=||i)>7Hr@%Y9ANG>U(rco*p#(qziokaVoZ{Io3MD?)UY^gbyY zrB_`GLeq#duv1MJ%sl=gUPds{wVOcQ|Hx0o&odk0SmKJ5&nL|z-u9omPbrHbZl>Ru zwWOgAo<;s2M74W#Odq+^@&BKZaW5`JC7=gU+6Gx0H3f5g=lM=xa^@hnaw zjV51;bcytmcFYfC0;#x-h42KX<4jT|@;W{t?I6BJIzrm-FXe&6#k;t?Uf17}mXLyI zlZ4YT^LU+15!zqKEWlk_WWy;Oi!rD}zkbU+7LhsXf-ICTB~_qpDrMi}$D~Q5O~l%! zm8p*;4Iy6>51|e{rgISMh^75=TtMurM)2R`1%myqtQ-v*y8JyS&olpzY={5zp{lgg zLueLtB}m`6whbt2P6{F3NLoaSBA!e8^|p=A|9jgf6#6K9PT?x@TSzsC*Ajn4UPlPA z4t=fLL;9H1(VoNz&n#)LYhF@KpI6G9eYU`q$Zkw9ktxa_tB^{ z@l)*WuVEg^kD$H)o}=tvOeE>(NcmUfL&*Q)%3gBk;`@vFjPl>`G)eED2Ci-cc^x}7 z|6h`H=*6U?zH6lXi=@7!-L&aPc`@>L$ggmpX+*3;FR5_K2D#4$`%765uH87wx4JSt zUDuFql6K-q@k2eBCVoq6loFp z7_5U+Nw3kS5Qb95tHgXuxW7h;s#=b}X?!26k=~?^mz@6? zmw6KWnvzP?ZN@UB{-k`wIu?`G(T2CN{|_8#IGdzn0B!V2Z;U@;Gs=Cf2qIO>F^v3H z3P)n*QI>oo$_oCcEVJ%Ccj8j`GW9Q0@jp^MQeDb^clE*4wIly3Hg)GIO59R!%$+n2 zP(vziV>`Ty<0yKCd=c^m)rO=aA8}(+=8=cY7o?XdTZac--3&h4n^c~%t~di1<4Wqo z$sZ$4&fNb!snE9>9sC`~oT8Eb#8#X19r<@j-KZOgI^HE!q%QNQM*eStPhCMg^}VYdz-q^xQAHBNYc;b``{TBxMKlj z?a0q1CD6VeaeeZS+~-^~lS&;w_ZZ(l{L|q-m7Qr3NgPCjN#tv~I(~{X-x0rpJ#iWJ zI{vWu|LAp^e3UDHK)XKV6Db=*`jzyMRMwsECwxKsKf5dVp2~%!O~hMVSrzF1XnkPb~=2& zSxtXe;6neO+?219S>Q}@C;D&kT7qn(@tor^_N2``*Di}Qo^l=fDN4sFi_iQ(gHK$e z-zm)L@>9r{aGjb-ezwaO!w-mc6d*Ns?G+Cqp9>30*T9EG14^h1u-jixygS(UPnpdw_KjAsX=}p z&LQO>e*j;kqKw}E4M;jX6#R*kG0v4OBww0T+24Y1G~}<4&q?Y|YDUUOnn*fMN}_%^ z9_8~VF^HriloUZ-JmpzQ(f-o^HxlMe3S((d9s7}V+;?U;Z7FZH|1U1-DsoePos@_3 z1ds}o?}W>#A4FPCJfB!cV@sI-kJD2qyiCDeQbk)~{=sZnGN#pQo;Bk_!#xfBPD)Mk4jh%@?LRmvCDr@NfYgkuiDxThoESIFlacbu zZcj$y#G#29M~<%cWQ_bau2A~fOE0ExyIiSayHWiIdq)oGKRDGpXu!xZgS>G`sRKrO v2Oij+;vFz#q&IFz(x8;25hF4@SGrf*J}TI=&$GR2h^JJR?TZR~&i45~Waf0| diff --git a/engine/core/locale/de_DE/LC_MESSAGES/django.po b/engine/core/locale/de_DE/LC_MESSAGES/django.po index 4a9d085f..1be6ab1b 100644 --- a/engine/core/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/core/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Produkte bestellen" msgid "children" msgstr "Kinder" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Konfigurieren Sie" @@ -1163,7 +1163,7 @@ msgstr "Zwischengespeicherte Daten" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-Daten aus der angeforderten URL" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Nur URLs, die mit http(s):// beginnen, sind zulässig" @@ -2837,6 +2837,134 @@ msgstr "Kontakt" msgid "About Us" msgstr "Über uns" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Kundenmix (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Neue Kunden" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Wiederkehrende Kunden" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Keine Kundenaktivität in den letzten 30 Tagen." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Tägliche Verkäufe (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Aufträge (FINISHED)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Bruttoeinnahmen" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Bestellungen" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Einkommensübersicht" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Nettoeinkommen" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Steuern" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Rückgabe" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Bruttoeinnahmen" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Kein Datum" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Einkommen (gross, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Einnahmen (netto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Rückgaben (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Bearbeitete Aufträge (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Meist zurückgesandte Produkte (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Keine Rückgaben in den letzten 30 Tagen." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Meistgewünschtes Produkt" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Noch keine Daten." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Beliebtestes Produkt" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Schnelle Links" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Keine Links verfügbar." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Versendet vs. Digital (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Versendet" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Top-Kategorien nach Menge (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Keine Kategorieverkäufe in den letzten 30 Tagen." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Django-Website-Administrator" @@ -2845,91 +2973,6 @@ msgstr "Django-Website-Administrator" msgid "Dashboard" msgstr "Dashboard" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Einkommen (gross, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Einnahmen (netto, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Rückgaben (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Bearbeitete Aufträge (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Einkommensübersicht" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Nettoeinkommen" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Steuern" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Rückgabe" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Bruttoeinnahmen" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Noch nicht genug Daten für ein Diagramm." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Schnelle Links" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Keine Links verfügbar." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Tägliche Verkäufe (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Aufträge (FINISHED)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Bruttoeinnahmen" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Bestellungen" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Brutto" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Meistgewünschtes Produkt" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Noch keine Daten." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Beliebtestes Produkt" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3149,7 +3192,7 @@ msgstr "" "Die Bildabmessungen sollten w{max_width} x h{max_height} Pixel nicht " "überschreiten" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3158,7 +3201,7 @@ msgstr "" "zurück. Sie stellt sicher, dass die Antwort den entsprechenden Content-Type-" "Header für XML enthält." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3168,18 +3211,18 @@ msgstr "" "Funktion verarbeitet die Anfrage, holt die entsprechende Sitemap-" "Detailantwort ab und setzt den Content-Type-Header für XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Gibt eine Liste der unterstützten Sprachen und der entsprechenden " "Informationen zurück." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Gibt die Parameter der Website als JSON-Objekt zurück." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3187,11 +3230,11 @@ msgstr "" "Erledigt Cache-Operationen wie das Lesen und Setzen von Cache-Daten mit " "einem bestimmten Schlüssel und Timeout." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Verarbeitet Übermittlungen des Formulars \"Kontaktieren Sie uns\"." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3199,15 +3242,15 @@ msgstr "" "Bearbeitet Anfragen zur Verarbeitung und Validierung von URLs aus " "eingehenden POST-Anfragen." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Bearbeitet globale Suchanfragen." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Behandelt die Logik des Kaufs als Unternehmen ohne Registrierung." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3215,33 +3258,33 @@ msgstr "" "Bearbeitet das Herunterladen eines digitalen Assets, das mit einem Auftrag verbunden ist.\n" "Diese Funktion versucht, die Datei des digitalen Assets, die sich im Speicherverzeichnis des Projekts befindet, bereitzustellen. Wenn die Datei nicht gefunden wird, wird ein HTTP 404-Fehler ausgelöst, um anzuzeigen, dass die Ressource nicht verfügbar ist." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid ist erforderlich" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "Produkt bestellen existiert nicht" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Sie können das digitale Asset nur einmal herunterladen" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "" "die Bestellung muss vor dem Herunterladen des digitalen Assets bezahlt " "werden" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Das Bestellprodukt hat kein Produkt" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "Favicon nicht gefunden" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3249,7 +3292,7 @@ msgstr "" "Bearbeitet Anfragen nach dem Favicon einer Website.\n" "Diese Funktion versucht, die Favicon-Datei, die sich im statischen Verzeichnis des Projekts befindet, bereitzustellen. Wenn die Favicon-Datei nicht gefunden wird, wird ein HTTP 404-Fehler ausgegeben, um anzuzeigen, dass die Ressource nicht verfügbar ist." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3260,11 +3303,11 @@ msgstr "" "Administrationsoberfläche um. Sie verwendet die Funktion `redirect` von " "Django für die Bearbeitung der HTTP-Umleitung." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Gibt die aktuelle Version von eVibes zurück." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Gibt benutzerdefinierte Variablen für das Dashboard zurück." diff --git a/engine/core/locale/en_GB/LC_MESSAGES/django.mo b/engine/core/locale/en_GB/LC_MESSAGES/django.mo index 3e911d5eb9a24b92b68c543aeef569747f12a4fa..1f32402b030959cbf802b5cfe22f6e051b9f1a5e 100644 GIT binary patch delta 15229 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 U=luZRr@B#0mYolSeBn+02P9WDIRF3v diff --git a/engine/core/locale/en_GB/LC_MESSAGES/django.po b/engine/core/locale/en_GB/LC_MESSAGES/django.po index 8e5d74c7..9dd61d81 100644 --- a/engine/core/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/core/locale/en_GB/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -135,7 +135,7 @@ msgstr "Order Products" msgid "children" msgstr "Children" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Config" @@ -1087,7 +1087,7 @@ msgstr "Cached data" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" @@ -2700,6 +2700,134 @@ msgstr "Contact Us" msgid "About Us" msgstr "About Us" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Customers mix (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "New customers" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Returning customers" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "No customer activity in the last 30 days." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Daily sales (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Orders (FINISHED)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Gross revenue" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Orders" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Income overview" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Net revenue" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Taxes" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Returns" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Gross revenue" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "No data" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Revenue (gross, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Revenue (net, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Returns (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Processed orders (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Most returned products (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "No returns in the last 30 days." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Most wished products" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "No data yet." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Most popular products" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Quick Links" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "No links available." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Shipped vs Digital (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Shipped" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Top categories by quantity (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "No category sales in the last 30 days." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Django site admin" @@ -2708,91 +2836,6 @@ msgstr "Django site admin" msgid "Dashboard" msgstr "Dashboard" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Revenue (gross, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Revenue (net, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Returns (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Processed orders (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Income overview" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Net revenue" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Taxes" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Returns" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Gross revenue" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Not enough data for chart yet." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Quick Links" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "No links available." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Daily sales (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Orders (FINISHED)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Gross revenue" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Orders" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Gross" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Most wished products" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "No data yet." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Most popular products" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3009,7 +3052,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Image dimensions should not exceed w{max_width} x h{max_height} pixels!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3017,7 +3060,7 @@ msgstr "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3027,17 +3070,17 @@ msgstr "" "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returns a list of supported languages and their corresponding information." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Returns the parameters of the website as a JSON object." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3045,11 +3088,11 @@ msgstr "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Handles `contact us` form submissions." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3057,15 +3100,15 @@ msgstr "" "Handles requests for processing and validating URLs from incoming POST " "requests." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Handles global search queries." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Handles the logic of buying as a business without registration." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3073,31 +3116,31 @@ msgstr "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid is required" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "order product does not exist" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "the order must be paid before downloading the digital asset" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "The order product does not have a product" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon not found" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3105,7 +3148,7 @@ msgstr "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3115,11 +3158,11 @@ msgstr "" " HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Returns current version of the eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Returns custom variables for Dashboard." diff --git a/engine/core/locale/en_US/LC_MESSAGES/django.mo b/engine/core/locale/en_US/LC_MESSAGES/django.mo index 1513e98b1b92431e19d43e3a139b208ad4b0252d..1a3a0b25b059213247d378b1624506ef1dadc272 100644 GIT binary patch delta 15222 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 delta 14457 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 a)3m`OM(pUG)t98(mB_T?W{@v`gZ}~6G(B7Z diff --git a/engine/core/locale/en_US/LC_MESSAGES/django.po b/engine/core/locale/en_US/LC_MESSAGES/django.po index 5e5db52f..c38bad38 100644 --- a/engine/core/locale/en_US/LC_MESSAGES/django.po +++ b/engine/core/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -131,7 +131,7 @@ msgstr "Order Products" msgid "children" msgstr "Children" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Config" @@ -1083,7 +1083,7 @@ msgstr "Cached data" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" @@ -2696,6 +2696,134 @@ msgstr "Contact Us" msgid "About Us" msgstr "About Us" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Customers mix (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "New customers" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Returning customers" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "No customer activity in the last 30 days." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Daily sales (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Orders (FINISHED)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Gross revenue" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Orders" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Income overview" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Net revenue" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Taxes" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Returns" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Gross revenue" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "No date" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Revenue (gross, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Revenue (net, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Returns (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Processed orders (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Most returned products (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "No returns in the last 30 days." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Most wished products" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "No data yet." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Most popular products" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Quick Links" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "No links available." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Shipped vs Digital (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Shipped" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Top categories by quantity (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "No category sales in the last 30 days." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Django site admin" @@ -2704,91 +2832,6 @@ msgstr "Django site admin" msgid "Dashboard" msgstr "Dashboard" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Revenue (gross, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Revenue (net, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Returns (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Processed orders (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Income overview" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Net revenue" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Taxes" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Returns" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Gross revenue" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Not enough data for chart yet." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Quick Links" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "No links available." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Daily sales (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Orders (FINISHED)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Gross revenue" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Orders" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Gross" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Most wished products" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "No data yet." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Most popular products" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3005,7 +3048,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Image dimensions should not exceed w{max_width} x h{max_height} pixels!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3013,7 +3056,7 @@ msgstr "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3023,17 +3066,17 @@ msgstr "" "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returns a list of supported languages and their corresponding information." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Returns the parameters of the website as a JSON object." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3041,11 +3084,11 @@ msgstr "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Handles `contact us` form submissions." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3053,15 +3096,15 @@ msgstr "" "Handles requests for processing and validating URLs from incoming POST " "requests." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Handles global search queries." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Handles the logic of buying as a business without registration." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3069,31 +3112,31 @@ msgstr "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid is required" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "order product does not exist" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "the order must be paid before downloading the digital asset" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "The order product does not have a product" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon not found" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3101,7 +3144,7 @@ msgstr "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3111,11 +3154,11 @@ msgstr "" " HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Returns current version of the eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Returns custom variables for Dashboard." diff --git a/engine/core/locale/es_ES/LC_MESSAGES/django.mo b/engine/core/locale/es_ES/LC_MESSAGES/django.mo index db8f18e2e8a6943a82b1389f1e86b0a89cc73f20..907238b911748e6f9af6e5ff90914267bd3e48db 100644 GIT binary patch delta 15296 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 diff --git a/engine/core/locale/es_ES/LC_MESSAGES/django.po b/engine/core/locale/es_ES/LC_MESSAGES/django.po index 3a8a43c9..09383a7e 100644 --- a/engine/core/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/core/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Pedir productos" msgid "children" msgstr "Niños" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Configurar" @@ -1135,7 +1135,7 @@ msgstr "Datos en caché" msgid "camelized JSON data from the requested URL" msgstr "Datos JSON camelizados de la URL solicitada" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Sólo se permiten URL que empiecen por http(s)://." @@ -2783,6 +2783,134 @@ msgstr "Contacte con nosotros" msgid "About Us" msgstr "Quiénes somos" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Mezcla de clientes (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Nuevos clientes" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Clientes habituales" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Sin actividad de clientes en los últimos 30 días." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Ventas diarias (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Pedidos (FINALIZADOS)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Ingresos brutos" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Pedidos" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Bruto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Resumen de ingresos" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Ingresos netos" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Impuestos" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Devuelve" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Ingresos brutos" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Sin fecha" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Ingresos (brutos, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Ingresos (netos, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Devoluciones (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Pedidos procesados (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Productos más devueltos (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Sin devoluciones en los últimos 30 días." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Producto más deseado" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Aún no hay datos." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Producto más popular" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Enlaces rápidos" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "No hay enlaces disponibles." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Enviado vs Digital (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Enviado" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Principales categorías por cantidad (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Ninguna venta de categoría en los últimos 30 días." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Administrador del sitio Django" @@ -2791,91 +2919,6 @@ msgstr "Administrador del sitio Django" msgid "Dashboard" msgstr "Cuadro de mandos" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Ingresos (brutos, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Ingresos (netos, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Devoluciones (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Pedidos procesados (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Resumen de ingresos" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Ingresos netos" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Impuestos" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Devuelve" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Ingresos brutos" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Aún no hay datos suficientes para el gráfico." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Enlaces rápidos" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "No hay enlaces disponibles." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Ventas diarias (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Pedidos (FINALIZADOS)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Ingresos brutos" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Pedidos" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Bruto" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Producto más deseado" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Aún no hay datos." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Producto más popular" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3094,7 +3137,7 @@ msgstr "" "Las dimensiones de la imagen no deben superar w{max_width} x h{max_height} " "píxeles." -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3103,7 +3146,7 @@ msgstr "" " XML. Se asegura de que la respuesta incluya el encabezado de tipo de " "contenido apropiado para XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3113,18 +3156,18 @@ msgstr "" "función procesa la solicitud, obtiene la respuesta detallada del mapa del " "sitio y establece el encabezado Content-Type para XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Devuelve una lista de los idiomas admitidos y su información " "correspondiente." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Devuelve los parámetros del sitio web como un objeto JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3132,11 +3175,11 @@ msgstr "" "Gestiona las operaciones de caché, como la lectura y el establecimiento de " "datos de caché con una clave y un tiempo de espera especificados." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Gestiona los formularios de contacto." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3144,15 +3187,15 @@ msgstr "" "Gestiona las solicitudes de procesamiento y validación de URL de las " "solicitudes POST entrantes." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Gestiona las consultas de búsqueda global." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Maneja la lógica de la compra como empresa sin registro." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3160,31 +3203,31 @@ msgstr "" "Gestiona la descarga de un activo digital asociado a un pedido.\n" "Esta función intenta servir el archivo del activo digital ubicado en el directorio de almacenamiento del proyecto. Si no se encuentra el archivo, se genera un error HTTP 404 para indicar que el recurso no está disponible." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid es obligatorio" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "pedir producto no existe" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Sólo puede descargar el activo digital una vez" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "el pedido debe pagarse antes de descargar el activo digital" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "El producto del pedido no tiene un producto" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon no encontrado" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3192,7 +3235,7 @@ msgstr "" "Gestiona las peticiones del favicon de un sitio web.\n" "Esta función intenta servir el archivo favicon ubicado en el directorio estático del proyecto. Si no se encuentra el archivo favicon, se genera un error HTTP 404 para indicar que el recurso no está disponible." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3203,11 +3246,11 @@ msgstr "" "de la interfaz de administración de Django. Utiliza la función `redirect` de" " Django para gestionar la redirección HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Devuelve la versión actual del eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Devuelve variables personalizadas para Dashboard." diff --git a/engine/core/locale/fa_IR/LC_MESSAGES/django.po b/engine/core/locale/fa_IR/LC_MESSAGES/django.po index 2966e333..3622125e 100644 --- a/engine/core/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/core/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -131,7 +131,7 @@ msgstr "" msgid "children" msgstr "" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "" @@ -1049,7 +1049,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2526,6 +2526,134 @@ msgstr "" msgid "About Us" msgstr "" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "" + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "" @@ -2534,91 +2662,6 @@ msgstr "" msgid "Dashboard" msgstr "" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "" - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "" - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "" - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -2820,53 +2863,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2874,31 +2917,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2906,18 +2949,18 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "" -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "" diff --git a/engine/core/locale/fr_FR/LC_MESSAGES/django.mo b/engine/core/locale/fr_FR/LC_MESSAGES/django.mo index 3133a923f8dfac09fbaf2e5227cf7db95a91775b..4cafb91e18c381c8487674dee657cbe41b582ae8 100644 GIT binary patch delta 15321 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 diff --git a/engine/core/locale/fr_FR/LC_MESSAGES/django.po b/engine/core/locale/fr_FR/LC_MESSAGES/django.po index 38f187b9..b7159370 100644 --- a/engine/core/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/core/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Commander des produits" msgid "children" msgstr "Les enfants" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Config" @@ -1156,7 +1156,7 @@ msgstr "Données mises en cache" msgid "camelized JSON data from the requested URL" msgstr "Données JSON camélisées provenant de l'URL demandée" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Seuls les URL commençant par http(s):// sont autorisés." @@ -2835,6 +2835,134 @@ msgstr "Nous contacter" msgid "About Us" msgstr "À propos de nous" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Mélange de clients (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Nouveaux clients" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Clients fidèles" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Pas d'activité client au cours des 30 derniers jours." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Ventes quotidiennes (30j)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Commandes (FINIES)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Recettes brutes" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Commandes" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Brut" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Aperçu des revenus" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Net revenue" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Impôts" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Retours" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Recettes brutes" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Pas de date" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Revenue (gross, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Revenue (net, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Retours (30j)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Commandes traitées (30j)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Produits les plus retournés (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Aucun retour dans les 30 derniers jours." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Produit le plus souhaité" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Pas encore de données." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Produit le plus populaire" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Liens rapides" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Aucun lien n'est disponible." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Expédiés ou numériques (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Numérique" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Expédié" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Principales catégories par quantité (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Aucune vente par catégorie au cours des 30 derniers jours." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Administrateur de site Django" @@ -2843,91 +2971,6 @@ msgstr "Administrateur de site Django" msgid "Dashboard" msgstr "Tableau de bord" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Revenue (gross, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Revenue (net, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Retours (30j)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Commandes traitées (30j)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Aperçu des revenus" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Net revenue" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Impôts" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Retours" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Recettes brutes" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Il n'y a pas encore assez de données pour établir un graphique." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Liens rapides" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Aucun lien n'est disponible." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Ventes quotidiennes (30j)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Commandes (FINIES)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Recettes brutes" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Commandes" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Brut" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Produit le plus souhaité" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Pas encore de données." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Produit le plus populaire" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3149,7 +3192,7 @@ msgstr "" "Les dimensions de l'image ne doivent pas dépasser w{max_width} x " "h{max_height} pixels." -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3157,7 +3200,7 @@ msgstr "" "Gère la demande d'index sitemap et renvoie une réponse XML. Il s'assure que " "la réponse inclut l'en-tête de type de contenu approprié pour XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3167,18 +3210,18 @@ msgstr "" "demande, récupère la réponse détaillée appropriée du plan du site et définit" " l'en-tête Content-Type pour XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Renvoie une liste des langues prises en charge et des informations " "correspondantes." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Renvoie les paramètres du site web sous la forme d'un objet JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3186,11 +3229,11 @@ msgstr "" "Gère les opérations de cache telles que la lecture et la définition des " "données de cache avec une clé et un délai spécifiés." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Gère les soumissions du formulaire `contact us`." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3198,15 +3241,15 @@ msgstr "" "Gère les demandes de traitement et de validation des URL à partir des " "requêtes POST entrantes." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Traite les demandes de recherche globales." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Gère la logique de l'achat en tant qu'entreprise sans enregistrement." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3214,31 +3257,31 @@ msgstr "" "Gère le téléchargement d'un bien numérique associé à une commande.\n" "Cette fonction tente de servir le fichier de ressource numérique situé dans le répertoire de stockage du projet. Si le fichier n'est pas trouvé, une erreur HTTP 404 est générée pour indiquer que la ressource n'est pas disponible." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid est obligatoire" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "le produit de la commande n'existe pas" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Vous ne pouvez télécharger le bien numérique qu'une seule fois" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "la commande doit être payée avant le téléchargement du bien numérique" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Le produit de la commande n'a pas de produit" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon introuvable" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3246,7 +3289,7 @@ msgstr "" "Gère les demandes de favicon d'un site web.\n" "Cette fonction tente de servir le fichier favicon situé dans le répertoire statique du projet. Si le fichier favicon n'est pas trouvé, une erreur HTTP 404 est générée pour indiquer que la ressource n'est pas disponible." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3257,11 +3300,11 @@ msgstr "" " d'index de l'interface d'administration de Django. Elle utilise la fonction" " `redirect` de Django pour gérer la redirection HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Renvoie la version actuelle d'eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Renvoie les variables personnalisées pour le tableau de bord." diff --git a/engine/core/locale/he_IL/LC_MESSAGES/django.mo b/engine/core/locale/he_IL/LC_MESSAGES/django.mo index 52ebef9da240ae11441e3a652ec16443fcc82fe7..e0b98482120627ab517a4ac42bf6e19eb495327f 100644 GIT binary patch delta 15392 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%0DJ8B>xl_t|av#)-ezx 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 diff --git a/engine/core/locale/he_IL/LC_MESSAGES/django.po b/engine/core/locale/he_IL/LC_MESSAGES/django.po index 0d9f8fe6..8d4681ec 100644 --- a/engine/core/locale/he_IL/LC_MESSAGES/django.po +++ b/engine/core/locale/he_IL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -129,7 +129,7 @@ msgstr "הזמנת מוצרים" msgid "children" msgstr "ילדים" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "תצורה" @@ -1072,7 +1072,7 @@ msgstr "נתונים במטמון" msgid "camelized JSON data from the requested URL" msgstr "נתוני JSON שעברו קמלאיזציה מה-URL המבוקש" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "רק כתובות URL המתחילות ב-http(s):// מותרות" @@ -2645,6 +2645,134 @@ msgstr "צור קשר" msgid "About Us" msgstr "אודות" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "תמהיל לקוחות (30 יום)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "לקוחות חדשים" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "לקוחות חוזרים" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "אין פעילות של לקוחות ב-30 הימים האחרונים." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "מכירות יומיות (30 יום)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "הזמנות (הושלמו)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "הכנסות ברוטו" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "הזמנות" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "גרוס" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "סקירת הכנסות" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "הכנסות נטו" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "מסים" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "החזרות" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "הכנסות ברוטו" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "בנתונים" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "הכנסה (ברוטו, 30 יום)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "הכנסות (נטו, 30 יום)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "החזרות (30 יום)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "הזמנות מעובדות (30 יום)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "רוב המוצרים שהוחזרו (30 יום)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "אין החזרות ב-30 הימים האחרונים." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "המוצר המבוקש ביותר" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "אין עדיין נתונים." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "המוצר הפופולרי ביותר" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "קישורים מהירים" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "אין קישורים זמינים." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "משלוח לעומת דיגיטלי (30 יום)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "דיגיטלי" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "נשלח" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "הקטגוריות המובילות לפי כמות (30 יום)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "אין מכירות בקטגוריה זו ב-30 הימים האחרונים." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "מנהל אתר Django" @@ -2653,91 +2781,6 @@ msgstr "מנהל אתר Django" msgid "Dashboard" msgstr "לוח מחוונים" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "הכנסה (ברוטו, 30 יום)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "הכנסות (נטו, 30 יום)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "החזרות (30 יום)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "הזמנות מעובדות (30 יום)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "סקירת הכנסות" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "הכנסות נטו" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "מסים" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "החזרות" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "הכנסות ברוטו" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "אין מספיק נתונים כדי ליצור תרשים." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "קישורים מהירים" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "אין קישורים זמינים." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "מכירות יומיות (30 יום)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "הזמנות (הושלמו)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "הכנסות ברוטו" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "הזמנות" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "גרוס" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "המוצר המבוקש ביותר" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "אין עדיין נתונים." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "המוצר הפופולרי ביותר" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -2940,7 +2983,7 @@ msgstr "יש להגדיר את הפרמטר NOMINATIM_URL!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "מידות התמונה לא יעלו על w{max_width} x h{max_height} פיקסלים!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2948,7 +2991,7 @@ msgstr "" "מטפל בבקשה לאינדקס מפת האתר ומחזיר תגובה בפורמט XML. הוא מבטיח שהתגובה תכלול" " את כותרת סוג התוכן המתאימה ל-XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2957,41 +3000,41 @@ msgstr "" "מטפל בתגובה לתצוגה מפורטת של מפת אתר. פונקציה זו מעבדת את הבקשה, משיגה את " "התגובה המתאימה לפרטי מפת האתר, וקובעת את כותרת Content-Type עבור XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "מחזיר רשימה של שפות נתמכות והמידע המתאים להן." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "מחזיר את הפרמטרים של האתר כאובייקט JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" "מטפל בפעולות מטמון כגון קריאה והגדרת נתוני מטמון עם מפתח וזמן המתנה מוגדרים." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "מטפל בהגשת טפסי \"צור קשר\"." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "מטפל בבקשות לעיבוד ואימות כתובות URL מבקשות POST נכנסות." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "מטפל בשאילתות חיפוש גלובליות." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "מטפל בהיגיון הרכישה כעסק ללא רישום." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3000,31 +3043,31 @@ msgstr "" "הדיגיטלי הנמצא בספריית האחסון של הפרויקט. אם הקובץ לא נמצא, מתקבלת שגיאת " "HTTP 404 המציינת שהמשאב אינו זמין." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid נדרש" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "המוצר שהוזמן אינו קיים" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "ניתן להוריד את הנכס הדיגיטלי פעם אחת בלבד" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "יש לשלם את ההזמנה לפני הורדת הנכס הדיגיטלי" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "למוצר ההזמנה אין מוצר" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "לא נמצא סמל מועדף" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3033,7 +3076,7 @@ msgstr "" "המועדף הנמצא בספרייה הסטטית של הפרויקט. אם קובץ הסמל המועדף לא נמצא, מתקבלת " "שגיאת HTTP 404 המציינת שהמשאב אינו זמין." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3043,11 +3086,11 @@ msgstr "" " אותן לדף האינדקס של ממשק המנהל של Django. היא משתמשת בפונקציית `redirect` " "של Django לטיפול בהפניה HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "מחזיר את הגרסה הנוכחית של eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "מחזיר משתנים מותאמים אישית עבור לוח המחוונים." diff --git a/engine/core/locale/hi_IN/LC_MESSAGES/django.po b/engine/core/locale/hi_IN/LC_MESSAGES/django.po index c1636ac3..bb69c8dc 100644 --- a/engine/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/core/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -131,7 +131,7 @@ msgstr "" msgid "children" msgstr "" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "" @@ -1049,7 +1049,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2526,6 +2526,134 @@ msgstr "" msgid "About Us" msgstr "" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "" + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "" @@ -2534,91 +2662,6 @@ msgstr "" msgid "Dashboard" msgstr "" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "" - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "" - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "" - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -2820,53 +2863,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2874,31 +2917,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2906,18 +2949,18 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "" -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "" diff --git a/engine/core/locale/hr_HR/LC_MESSAGES/django.po b/engine/core/locale/hr_HR/LC_MESSAGES/django.po index 2966e333..3622125e 100644 --- a/engine/core/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/core/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -131,7 +131,7 @@ msgstr "" msgid "children" msgstr "" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "" @@ -1049,7 +1049,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2526,6 +2526,134 @@ msgstr "" msgid "About Us" msgstr "" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "" + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "" @@ -2534,91 +2662,6 @@ msgstr "" msgid "Dashboard" msgstr "" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "" - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "" - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "" - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -2820,53 +2863,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2874,31 +2917,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2906,18 +2949,18 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "" -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "" diff --git a/engine/core/locale/id_ID/LC_MESSAGES/django.mo b/engine/core/locale/id_ID/LC_MESSAGES/django.mo index 38861e0e6d95e9456694e04430fbf764c5afb1af..e2d54b5720b2109b6ff05f98b694953084c2c7c3 100644 GIT binary patch delta 15330 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 z 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -132,7 +132,7 @@ msgstr "Pesan Produk" msgid "children" msgstr "Anak-anak" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Konfigurasi" @@ -1157,7 +1157,7 @@ msgstr "Data yang di-cache" msgid "camelized JSON data from the requested URL" msgstr "Data JSON yang di-camel dari URL yang diminta" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Hanya URL yang dimulai dengan http(s):// yang diperbolehkan" @@ -2799,6 +2799,134 @@ msgstr "Hubungi Kami" msgid "About Us" msgstr "Tentang Kami" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Bauran pelanggan (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Pelanggan baru" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Pelanggan yang kembali" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Tidak ada aktivitas nasabah dalam 30 hari terakhir." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Penjualan harian (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Pesanan (SELESAI)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Pendapatan kotor" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Pesanan" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Kotor" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Ikhtisar pendapatan" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Pendapatan bersih" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Pajak" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Pengembalian" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Pendapatan kotor" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Tidak ada tanggal" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Pendapatan (kotor, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Pendapatan (bersih, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Pengembalian (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Pesanan yang diproses (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Sebagian besar produk yang dikembalikan (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Tidak ada pengembalian dalam 30 hari terakhir." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Produk yang paling diharapkan" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Belum ada data." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Produk paling populer" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Tautan Cepat" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Tidak ada tautan yang tersedia." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Dikirim vs Digital (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Dikirim" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Kategori teratas berdasarkan kuantitas (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Tidak ada penjualan kategori dalam 30 hari terakhir." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Admin situs Django" @@ -2807,91 +2935,6 @@ msgstr "Admin situs Django" msgid "Dashboard" msgstr "Dasbor" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Pendapatan (kotor, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Pendapatan (bersih, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Pengembalian (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Pesanan yang diproses (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Ikhtisar pendapatan" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Pendapatan bersih" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Pajak" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Pengembalian" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Pendapatan kotor" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Belum cukup data untuk grafik." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Tautan Cepat" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Tidak ada tautan yang tersedia." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Penjualan harian (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Pesanan (SELESAI)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Pendapatan kotor" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Pesanan" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Kotor" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Produk yang paling diharapkan" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Belum ada data." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Produk paling populer" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3109,7 +3152,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Dimensi gambar tidak boleh melebihi w{max_width} x h{max_height} piksel!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3117,7 +3160,7 @@ msgstr "" "Menangani permintaan indeks peta situs dan mengembalikan respons XML. " "Memastikan respons menyertakan header jenis konten yang sesuai untuk XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3127,16 +3170,16 @@ msgstr "" "permintaan, mengambil respons detail peta situs yang sesuai, dan menetapkan " "header Jenis Konten untuk XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Mengembalikan daftar bahasa yang didukung dan informasi terkait." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Mengembalikan parameter situs web sebagai objek JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3144,11 +3187,11 @@ msgstr "" "Menangani operasi cache seperti membaca dan mengatur data cache dengan kunci" " dan batas waktu tertentu." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Menangani pengiriman formulir `hubungi kami`." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3156,15 +3199,15 @@ msgstr "" "Menangani permintaan untuk memproses dan memvalidasi URL dari permintaan " "POST yang masuk." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Menangani kueri penelusuran global." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Menangani logika pembelian sebagai bisnis tanpa registrasi." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3172,31 +3215,31 @@ msgstr "" "Menangani pengunduhan aset digital yang terkait dengan pesanan.\n" "Fungsi ini mencoba untuk menyajikan file aset digital yang terletak di direktori penyimpanan proyek. Jika file tidak ditemukan, kesalahan HTTP 404 akan muncul untuk mengindikasikan bahwa sumber daya tidak tersedia." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid diperlukan" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "produk pesanan tidak ada" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Anda hanya dapat mengunduh aset digital sekali saja" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "pesanan harus dibayar sebelum mengunduh aset digital" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Produk pesanan tidak memiliki produk" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon tidak ditemukan" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3204,7 +3247,7 @@ msgstr "" "Menangani permintaan favicon dari sebuah situs web.\n" "Fungsi ini mencoba menyajikan file favicon yang terletak di direktori statis proyek. Jika file favicon tidak ditemukan, kesalahan HTTP 404 akan dimunculkan untuk mengindikasikan bahwa sumber daya tidak tersedia." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3215,11 +3258,11 @@ msgstr "" "admin Django. Fungsi ini menggunakan fungsi `redirect` Django untuk " "menangani pengalihan HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Mengembalikan versi eVibes saat ini." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Mengembalikan variabel khusus untuk Dasbor." diff --git a/engine/core/locale/it_IT/LC_MESSAGES/django.mo b/engine/core/locale/it_IT/LC_MESSAGES/django.mo index 7e45bd8b29709579ea076572df8e01884e217c2e..356a26fd175d1af1802868efb02644242550c6ee 100644 GIT binary patch delta 15307 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 delta 14458 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Ordinare i prodotti" msgid "children" msgstr "I bambini" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Configurazione" @@ -1149,7 +1149,7 @@ msgstr "Dati in cache" msgid "camelized JSON data from the requested URL" msgstr "Dati JSON camelizzati dall'URL richiesto" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Sono consentiti solo gli URL che iniziano con http(s)://" @@ -2800,6 +2800,134 @@ msgstr "Contatto" msgid "About Us" msgstr "Chi siamo" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Mix di clienti (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Nuovi clienti" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Clienti di ritorno" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Nessuna attività del cliente negli ultimi 30 giorni." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Vendite giornaliere (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Ordini (FINITO)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Ricavo lordo" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Ordini" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Panoramica delle entrate" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Ricavi netti" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Tasse" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Restituzioni" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Ricavo lordo" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Nessuna data" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Ricavi (lordi, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Ricavi (netti, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Restituzioni (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Ordini evasi (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "I prodotti più restituiti (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Nessuna restituzione negli ultimi 30 giorni." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Il prodotto più desiderato" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Non ci sono ancora dati." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Il prodotto più popolare" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Collegamenti rapidi" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Nessun link disponibile." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Spedito vs. Digitale (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digitale" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Spedito" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Categorie principali per quantità (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Nessuna vendita di categoria negli ultimi 30 giorni." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Amministratore del sito Django" @@ -2808,91 +2936,6 @@ msgstr "Amministratore del sito Django" msgid "Dashboard" msgstr "Cruscotto" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Ricavi (lordi, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Ricavi (netti, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Restituzioni (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Ordini evasi (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Panoramica delle entrate" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Ricavi netti" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Tasse" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Restituzioni" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Ricavo lordo" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Non ci sono ancora dati sufficienti per un grafico." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Collegamenti rapidi" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Nessun link disponibile." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Vendite giornaliere (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Ordini (FINITO)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Ricavo lordo" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Ordini" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Gross" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Il prodotto più desiderato" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Non ci sono ancora dati." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Il prodotto più popolare" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3112,7 +3155,7 @@ msgstr "" "Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height}" " pixel" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3121,7 +3164,7 @@ msgstr "" "XML. Assicura che la risposta includa l'intestazione del tipo di contenuto " "appropriato per XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3131,17 +3174,17 @@ msgstr "" "funzione elabora la richiesta, recupera la risposta dettagliata della " "sitemap e imposta l'intestazione Content-Type per XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Restituisce un elenco di lingue supportate e le informazioni corrispondenti." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Restituisce i parametri del sito web come oggetto JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3149,11 +3192,11 @@ msgstr "" "Gestisce le operazioni di cache, come la lettura e l'impostazione dei dati " "della cache con una chiave e un timeout specificati." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Gestisce l'invio del modulo `contatti`." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3161,15 +3204,15 @@ msgstr "" "Gestisce le richieste di elaborazione e validazione degli URL dalle " "richieste POST in arrivo." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Gestisce le query di ricerca globali." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Gestisce la logica dell'acquisto come azienda senza registrazione." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3177,31 +3220,31 @@ msgstr "" "Gestisce il download di una risorsa digitale associata a un ordine.\n" "Questa funzione tenta di servire il file della risorsa digitale che si trova nella directory di archiviazione del progetto. Se il file non viene trovato, viene generato un errore HTTP 404 per indicare che la risorsa non è disponibile." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid è obbligatorio" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "ordine prodotto non esistente" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "È possibile scaricare l'asset digitale una sola volta" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "l'ordine deve essere pagato prima di scaricare il bene digitale" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Il prodotto dell'ordine non ha un prodotto" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon non trovata" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3209,7 +3252,7 @@ msgstr "" "Gestisce le richieste per la favicon di un sito web.\n" "Questa funzione tenta di servire il file favicon situato nella cartella statica del progetto. Se il file favicon non viene trovato, viene generato un errore HTTP 404 per indicare che la risorsa non è disponibile." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3220,11 +3263,11 @@ msgstr "" "indice dell'interfaccia di amministrazione di Django. Utilizza la funzione " "`redirect` di Django per gestire il reindirizzamento HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Restituisce la versione corrente di eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Restituisce le variabili personalizzate per Dashboard." diff --git a/engine/core/locale/ja_JP/LC_MESSAGES/django.mo b/engine/core/locale/ja_JP/LC_MESSAGES/django.mo index 19b7a25c7de05533cbe2ebf7e44c8ccccd19ca53..3737757ce3cac4aa6d82cfb6aac27ab80d005a99 100644 GIT binary patch delta 15271 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -129,7 +129,7 @@ msgstr "商品のご注文" msgid "children" msgstr "子供たち" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "コンフィグ" @@ -1066,7 +1066,7 @@ msgstr "キャッシュ・データ" msgid "camelized JSON data from the requested URL" msgstr "リクエストされたURLからキャメル化されたJSONデータ" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://で始まるURLのみが許可されます。" @@ -2578,6 +2578,134 @@ msgstr "お問い合わせ" msgid "About Us" msgstr "会社概要" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "顧客構成 (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "新規顧客" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "リピーター" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "過去30日間に顧客の活動がない。" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "日販(30日)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "オーダー(終了)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "総収入" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "受注状況" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "グロス" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "収入概要" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "純収入" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "税金" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "リターン" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "総収入" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "日付なし" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "収入(グロス、30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "収入(純額、30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "リターンズ(30日)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "処理済み注文 (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "最も返品された商品 (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "過去30日間返品なし。" + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "最も欲しい製品" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "まだデータはない。" + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "最も人気のある製品" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "クイックリンク" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "リンクはありません。" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "出荷対デジタル (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "デジタル" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "出荷済み" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "数量上位カテゴリー (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "過去30日間にカテゴリー別売上なし。" + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Djangoサイト管理者" @@ -2586,91 +2714,6 @@ msgstr "Djangoサイト管理者" msgid "Dashboard" msgstr "ダッシュボード" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "収入(グロス、30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "収入(純額、30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "リターンズ(30日)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "処理済み注文 (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "収入概要" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "純収入" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "税金" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "リターン" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "総収入" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "まだチャートには十分なデータがない。" - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "クイックリンク" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "リンクはありません。" - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "日販(30日)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "オーダー(終了)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "総収入" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "受注状況" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "グロス" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "最も欲しい製品" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "まだデータはない。" - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "最も人気のある製品" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -2876,14 +2919,14 @@ msgstr "NOMINATIM_URLパラメータを設定する必要があります!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "画像のサイズは w{max_width} x h{max_height} ピクセルを超えないようにしてください!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" "サイトマップインデックスのリクエストを処理し、XMLレスポンスを返します。レスポンスにXML用の適切なコンテントタイプヘッダーが含まれるようにします。" -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2892,40 +2935,40 @@ msgstr "" "サイトマップの詳細表示レスポンスを処理します。この関数はリクエストを処理し、適切なサイトマップ詳細レスポンスを取得し、XML の Content-" "Type ヘッダを設定します。" -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "サポートされている言語の一覧と対応する情報を返します。" -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "ウェブサイトのパラメータをJSONオブジェクトとして返します。" -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "指定されたキーとタイムアウトで、キャッシュ・データの読み取りや設定などのキャッシュ操作を行う。" -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "お問い合わせフォームの送信を処理する。" -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "入ってくる POST リクエストからの URL の処理と検証のリクエストを処理します。" -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "グローバル検索クエリを処理する。" -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "登録なしでビジネスとして購入するロジックを扱う。" -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -2933,31 +2976,31 @@ msgstr "" "注文に関連付けられたデジタルアセットのダウンロードを処理します。\n" "この関数は、プロジェクトのストレージディレクトリにあるデジタルアセットファイルの提供を試みます。ファイルが見つからない場合、リソースが利用できないことを示すHTTP 404エラーが発生します。" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuidは必須です。" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "注文商品が存在しない" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "デジタルアセットのダウンロードは1回限りです。" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "デジタル資産をダウンロードする前に、注文を支払う必要があります。" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "注文商品に商品がない" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "ファビコンが見つかりません" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -2965,7 +3008,7 @@ msgstr "" "ウェブサイトのファビコンへのリクエストを処理します。\n" "この関数は、プロジェクトの静的ディレクトリにあるファビコンファイルの提供を試みます。ファビコンファイルが見つからない場合、リソースが利用できないことを示す HTTP 404 エラーが発生します。" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -2974,11 +3017,11 @@ msgstr "" "リクエストを admin インデックスページにリダイレクトします。この関数は、HTTP リクエストを処理し、 Django の admin " "インタフェースインデッ クスページにリダイレクトします。HTTP リダイレクトの処理には Django の `redirect` 関数を使います。" -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "eVibes の現在のバージョンを返します。" -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "ダッシュボードのカスタム変数を返します。" diff --git a/engine/core/locale/kk_KZ/LC_MESSAGES/django.po b/engine/core/locale/kk_KZ/LC_MESSAGES/django.po index c1636ac3..bb69c8dc 100644 --- a/engine/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -131,7 +131,7 @@ msgstr "" msgid "children" msgstr "" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "" @@ -1049,7 +1049,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2526,6 +2526,134 @@ msgstr "" msgid "About Us" msgstr "" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "" + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "" + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "" @@ -2534,91 +2662,6 @@ msgstr "" msgid "Dashboard" msgstr "" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "" - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "" - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "" - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -2820,53 +2863,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2874,31 +2917,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2906,18 +2949,18 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "" -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "" diff --git a/engine/core/locale/ko_KR/LC_MESSAGES/django.mo b/engine/core/locale/ko_KR/LC_MESSAGES/django.mo index 5e7b3a0a6e939a9ce365a685e395d6dc00b6d51d..4a54b2b58b25b14ff1256b91d4bc1b2c0f64ce47 100644 GIT binary patch delta 15295 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≧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⁡wv8#{UuG4NnauT3FRxw1ai$N+E!pL zdgk@=5?!Zkqhug^-Sr?ewKxLH$h5=f+h4>>2*$a7V`;ldeH`w4-U(kPE=hhaWe)N7 z7ut4`OCaX&mps#$j@ozv1JAVXt+t88yC|`g?v1hjyZ-uaAoWUk6t(H6z5dQvTYdWfhx3WO@&qq#oe2)RTr?eOy7~hr zPix>k@Wl%|m7`x~;_0+SQoeG1Ymn0~>`>zMl!cTy;#u@xZTom8naUHA9?Acxze{}! zr6Tc4;v>|xg%WGi>-_*_2Zb+uV9QP0+th-IuTq*3>wf`nOMNkAEM*;KnC)&p!&FKg z-G6PB-N6shsW9W;!kY2lpd7*^yx)DKlS_6m$`lPOG=ww1!B8c|tsgHb3PK@fqSzDN~7`5CF)$=kS@a)+{qd{+*jtswDi96}jH zZan2(a>FPKsV86+oJ5&QpD>IdH=J^Ua-UorPR9|nJ>L@f#TNJn1SJkqeo%!ij53%V zS_dNgpGGg#`I%wryl@~jeMnB*Hs?%yM*Opj)%KR#rx9Ktj?k)qg~}wgvOT2ppIDwU zkG5Cc&ZC|m1iz%M6m6Ta2&FeAC$Y9glvVT@La9QTO_@Q_)|Wo@u{M5(^~ifo2x8RA z_6qf_B!}Yjtr+!M$>CQBW|oO z=3Y7nsUr>duqFP1qezXRo|k%v`cSmxB(6<)zGbKKDdjbCtMGHz_9pvwqZB9C9^b@8 zxSaN))K5|-Jb(W6ztiiFQ`)jnKTD^47)$w@`bJ6z+WMikjg*qKJ>SYxe@L*?C0gKV z*Y|lJxrtJQz8xvQt6lG(Hz;i=>nTYzRHvZ@r5h!R(tz9=+J@r+Vr@eyKT_|G=aq2V zd~z+R&!QyKzZ$WAh5hUHbKOibZT!kN-rxME^$U${=@CPmhYsVZS8{Fqp~-wrJO;bq z656%hwV1W!&ry$a`Tr4jr=CP^B;_jQA4)Ou+J3;!dj2!I#5W`tP&N>6ak(=1mwK}e zrJjQl?oOawS>h<-qo|F4f-^NK7hT+mTr28D$=#y9+vR=Ed7A%UX&6nJMyIkEN$Ej- z3dYkhJvN|JBX^B>Ep=^gQeWf_q&S+=k+>`6F69y>g?&0vKBuiJW+nHSQit*$WwD-r zKaEWZ-l4Q6E<<^RdO1o~>I+cYPtMBN&!z(Zz3lQO=$nHw*R{Rv^4W2;t0%g)k@VB% z{bDt}UBZQdKPReQ=6S+7!X4IKLued+;tQbz2Lci&h=9B@HNv>Zx+Vs?EYozyo zDH(^64q@f$aaA2{VsmeL7UYUKDMAI#ZoC%UA9HiwnAjY~*iIvU8ju zN;vg4xRmz(l%>RTiM7?XM43TUCX)Oa|Dcq#4d!pmkS=v{wT9_aFW2nuORZaLeV&vI zNi|c}Clx7>?C(2t*vS3^{C#>R_w@H0Hp1U~K+h4${xN-%Q?DmoD3N-4)MQ`kh%x(p zsY&C!q||H2xB60-p6D8ulK1BUDVeS%m0mRU&W1_;JKHzjow?`EJM;Xvr>?oPVygf4 z?Cp0}e0+E6_TRQo^xxUF>GrOvDL\n" "Language-Team: BRITISH ENGLISH \n" @@ -129,7 +129,7 @@ msgstr "제품 주문" msgid "children" msgstr "어린이" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "구성" @@ -1063,7 +1063,7 @@ msgstr "캐시된 데이터" msgid "camelized JSON data from the requested URL" msgstr "요청된 URL의 카멜라이즈된 JSON 데이터" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://로 시작하는 URL만 허용됩니다." @@ -2602,6 +2602,134 @@ msgstr "문의하기" msgid "About Us" msgstr "회사 소개" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "고객 믹스(30일)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "신규 고객" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "재방문 고객" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "지난 30일 동안 고객 활동이 없습니다." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "일일 판매량(30일)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "주문 (완료됨)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "총 수익" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "주문" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "수입 개요" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "순 수익" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "세금" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "반환" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "총 수익" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "날짜 없음" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "수익(총액, 30일)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "수익(순, 30일)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "반품 (30일)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "처리된 주문(30일)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "대부분의 반품 제품(30일)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "지난 30일 동안 반품이 없습니다." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "가장 많이 원하는 제품" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "아직 데이터가 없습니다." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "가장 인기 있는 제품" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "빠른 링크" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "사용할 수 있는 링크가 없습니다." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "배송 대 디지털(30일)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "디지털" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "배송됨" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "수량별 상위 카테고리(30일)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "지난 30일 동안 카테고리 매출이 없습니다." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "장고 사이트 관리자" @@ -2610,91 +2738,6 @@ msgstr "장고 사이트 관리자" msgid "Dashboard" msgstr "대시보드" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "수익(총액, 30일)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "수익(순, 30일)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "반품 (30일)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "처리된 주문(30일)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "수입 개요" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "순 수익" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "세금" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "반환" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "총 수익" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "아직 차트에 넣을 데이터가 충분하지 않습니다." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "빠른 링크" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "사용할 수 있는 링크가 없습니다." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "일일 판매량(30일)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "주문 (완료됨)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "총 수익" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "주문" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Gross" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "가장 많이 원하는 제품" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "아직 데이터가 없습니다." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "가장 인기 있는 제품" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -2901,14 +2944,14 @@ msgstr "NOMINATIM_URL 파라미터를 설정해야 합니다!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "이미지 크기는 w{max_width} x h{max_height} 픽셀을 초과하지 않아야 합니다!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" "사이트맵 색인에 대한 요청을 처리하고 XML 응답을 반환합니다. 응답에 XML에 적합한 콘텐츠 유형 헤더가 포함되어 있는지 확인합니다." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2917,40 +2960,40 @@ msgstr "" "사이트맵에 대한 상세 보기 응답을 처리합니다. 이 함수는 요청을 처리하고 적절한 사이트맵 상세 보기 응답을 가져온 다음 XML의 " "Content-Type 헤더를 설정합니다." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "지원되는 언어 목록과 해당 정보를 반환합니다." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "웹사이트의 매개변수를 JSON 객체로 반환합니다." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "지정된 키와 시간 초과로 캐시 데이터를 읽고 설정하는 등의 캐시 작업을 처리합니다." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "'문의하기' 양식 제출을 처리합니다." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "들어오는 POST 요청의 URL 처리 및 유효성 검사 요청을 처리합니다." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "글로벌 검색 쿼리를 처리합니다." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "등록하지 않고 비즈니스로 구매하는 로직을 처리합니다." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -2958,31 +3001,31 @@ msgstr "" "주문과 관련된 디지털 자산의 다운로드를 처리합니다.\n" "이 함수는 프로젝트의 저장소 디렉토리에 있는 디지털 자산 파일을 제공하려고 시도합니다. 파일을 찾을 수 없으면 HTTP 404 오류가 발생하여 리소스를 사용할 수 없음을 나타냅니다." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "주문_제품_UUID는 필수입니다." -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "주문 제품이 존재하지 않습니다." -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "디지털 자산은 한 번만 다운로드할 수 있습니다." -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "디지털 자산을 다운로드하기 전에 주문을 결제해야 합니다." -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "주문 제품에 제품이 없습니다." -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "파비콘을 찾을 수 없습니다." -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -2990,7 +3033,7 @@ msgstr "" "웹사이트의 파비콘 요청을 처리합니다.\n" "이 함수는 프로젝트의 정적 디렉토리에 있는 파비콘 파일을 제공하려고 시도합니다. 파비콘 파일을 찾을 수 없는 경우 HTTP 404 오류가 발생하여 리소스를 사용할 수 없음을 나타냅니다." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -2999,11 +3042,11 @@ msgstr "" "요청을 관리자 색인 페이지로 리디렉션합니다. 이 함수는 들어오는 HTTP 요청을 처리하여 Django 관리자 인터페이스 인덱스 페이지로 " "리디렉션합니다. HTTP 리디렉션을 처리하기 위해 Django의 `redirect` 함수를 사용합니다." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "현재 버전의 eVibes를 반환합니다." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "대시보드에 대한 사용자 지정 변수를 반환합니다." diff --git a/engine/core/locale/nl_NL/LC_MESSAGES/django.mo b/engine/core/locale/nl_NL/LC_MESSAGES/django.mo index 0f28fb1d024dfc592566ac1f14af5acf5367b9d6..51272dbbb4936192c62fc70bddb47163c11f70fe 100644 GIT binary patch delta 15295 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 L&Z~kw(S804zeZ4> delta 14450 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

|=ia#TLLmE#RFLD2|3WI1F>eE`dP1;6E zN9k?XLd|M&1(u0<15=MD#7harx_0_IqW_T}i=U@9!V$y~l+Pv2A>Q$yx;>QDA+DE( z5o<(49qcs!4$$h>F@g9~Qbp3wBpo}PKa-#DFX6`w=NG5^8u4jYf6~?I72u_;HD1Dr zq@m=slWvgS(vJCoOaK*sU@km^3vnu`BzYaXN&ATJkWP}0_)FQ&-24rf*CPIww1gB) zo1QocQ;%t6LTP^`wE#cUA{$8I2&{uT@;jAZL^`DmM;glCCzYUW67dDxMH)xiM69o8 zB=x09{m56q*0%APBr^X{sK2iLm;6fdTS(=JR}&v2uOoz5 zhu)rFl6H~!qWh2R)V)V82k|eYro{SRz}u2vLK;KbKpJA3n}e84s;&9g5$!I1m_~(( zU!#6Q=;%p)5cS#dC*l{#ZxR2|n(|}hLx`@svbWr|_*vlp2asR!JV~$h>aK2sJ>Bfr z{2wCe(A!W)HP=Y_9;EK1FKF{7<@v}zB){C9qmPdcy@HEU*2kTj!(YmJaP3A?zSWgg z!4F9HNxsIe!4MiuCeLpP|B=9d3z7aIod~BEY^FaIIu4PpD#MYBG>~$AIa7~@sTt(w zgQ@+W3#sZ8cb#p{nV3TPO&6=pG-_s}$RwSJxznRpYy56W`Gbw_))T1oVjY7?*T{Fniz;x(e9H9eYZj?F z?W+>&2khVOJlD)5QOB=&<9p73TK%W8EiFnD2h(62`3kO%KO~uR#G|n@E~Q?_?-sM3 z^7G^?yYi>R-N?sNHk|Ye=_RQcUeno6T6EI{f`eiFveFfG<6 zRi*3}@p|$)rjTFkE~Ge|)PcAQ>37m)(n8MZNcxJpDwvtFSESmc4@gV2|GiW;A$XtE zintVM0QoYc%;XoKjvLNs>}`wu|GnbMOVBneX|Ah#&y@$_D3@>U>W0%!hwoRb>E#Ms z=>H?P@}*J>oWtCO{#(47ARTEG*La1UX*0*QOXG~ATt_*J`QGX?KhR*eYxEn1nOuGX z`2wy}Q_0V8`FyyYSVwkJ1J_=0AM%+oH)#^>rjz1GeM#@Sc4es3uG7&_@BfliG@!vc zTtQ)De-%H&-3cGMI16n~P!>QOj`>Iv$>+qh)MX*RoxF}P;tyS(tSL|aFwP`pB!3ip zP*FtR|LP3Hl+cG^Rhb4JOCnhD|j=xkQ`OL_Pp5$Spzwji-kF6Y^ zyyVnWPjdLTtwR>B{H4pnq#KbXTMX&r9o#Q5$=io3CH8?ni6asRzwI3{gsUYc4)*pL k*0XoN!~x0Q+;~!Y?}Z@G$DY0GgFU}`_U_2(sonAa01O>!-~a#s diff --git a/engine/core/locale/nl_NL/LC_MESSAGES/django.po b/engine/core/locale/nl_NL/LC_MESSAGES/django.po index b99d756c..d4eaa9e9 100644 --- a/engine/core/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/core/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -131,7 +131,7 @@ msgstr "Producten bestellen" msgid "children" msgstr "Kinderen" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Config" @@ -1152,7 +1152,7 @@ msgstr "Gecachte gegevens" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-gegevens van de opgevraagde URL" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Alleen URL's die beginnen met http(s):// zijn toegestaan" @@ -2811,6 +2811,134 @@ msgstr "Neem contact met ons op" msgid "About Us" msgstr "Over ons" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Klantenmix (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Nieuwe klanten" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Terugkerende klanten" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Geen klantenactiviteit in de afgelopen 30 dagen." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Dagelijkse verkoop (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Bestellingen (AFGESLOTEN)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Bruto-omzet" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Bestellingen" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Bruto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Overzicht inkomsten" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Netto-inkomsten" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Belastingen" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Geeft" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Bruto-omzet" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Geen datum" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Inkomsten (bruto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Inkomsten (netto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Retourzendingen (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Verwerkte orders (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Meest geretourneerde producten (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Geen retourzendingen in de afgelopen 30 dagen." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Meest gewenste product" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Nog geen gegevens." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Populairste product" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Snelle links" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Geen links beschikbaar." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Verzonden vs digitaal (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digitaal" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Verzonden" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Topcategorieën naar hoeveelheid (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Geen categorieverkopen in de afgelopen 30 dagen." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Django website beheerder" @@ -2819,91 +2947,6 @@ msgstr "Django website beheerder" msgid "Dashboard" msgstr "Dashboard" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Inkomsten (bruto, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Inkomsten (netto, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Retourzendingen (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Verwerkte orders (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Overzicht inkomsten" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Netto-inkomsten" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Belastingen" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Geeft" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Bruto-omzet" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Nog niet genoeg gegevens voor een grafiek." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Snelle links" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Geen links beschikbaar." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Dagelijkse verkoop (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Bestellingen (AFGESLOTEN)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Bruto-omzet" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Bestellingen" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Bruto" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Meest gewenste product" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Nog geen gegevens." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Populairste product" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3123,7 +3166,7 @@ msgstr "" "Afbeeldingsafmetingen mogen niet groter zijn dan w{max_width} x " "h{max_height} pixels" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3132,7 +3175,7 @@ msgstr "" "terug. Het zorgt ervoor dat het antwoord de juiste inhoudstype header voor " "XML bevat." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3142,16 +3185,16 @@ msgstr "" "verwerkt het verzoek, haalt het juiste sitemap detail antwoord op en stelt " "de Content-Type header in voor XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Geeft een lijst met ondersteunde talen en de bijbehorende informatie." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Retourneert de parameters van de website als een JSON-object." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3159,11 +3202,11 @@ msgstr "" "Verwerkt cachebewerkingen zoals het lezen en instellen van cachegegevens met" " een opgegeven sleutel en time-out." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Handelt `contact met ons` formulier inzendingen af." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3171,15 +3214,15 @@ msgstr "" "Handelt verzoeken af voor het verwerken en valideren van URL's van inkomende" " POST-verzoeken." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Handelt globale zoekopdrachten af." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Behandelt de logica van kopen als bedrijf zonder registratie." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3187,33 +3230,33 @@ msgstr "" "Handelt het downloaden af van een digitaal actief dat is gekoppeld aan een bestelling.\n" "Deze functie probeert het digitale activabestand te serveren dat zich in de opslagmap van het project bevindt. Als het bestand niet wordt gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet beschikbaar is." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid is vereist" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "bestelproduct bestaat niet" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "U kunt het digitale goed maar één keer downloaden" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "" "de bestelling moet worden betaald voordat het digitale actief kan worden " "gedownload" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Het bestelde product heeft geen product" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon niet gevonden" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3221,7 +3264,7 @@ msgstr "" "Handelt verzoeken af voor de favicon van een website.\n" "Deze functie probeert het favicon-bestand te serveren dat zich in de statische map van het project bevindt. Als het favicon-bestand niet wordt gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet beschikbaar is." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3232,11 +3275,11 @@ msgstr "" "Django admin-interface. Het gebruikt Django's `redirect` functie voor het " "afhandelen van de HTTP-omleiding." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Geeft als resultaat de huidige versie van eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Geeft aangepaste variabelen voor Dashboard." diff --git a/engine/core/locale/no_NO/LC_MESSAGES/django.mo b/engine/core/locale/no_NO/LC_MESSAGES/django.mo index 70062d7ca4cd7826d9a1e3d57c1c62e7de23ddc0..a47aa432ca5308e943ce67f28b564c83059fcef4 100644 GIT binary patch delta 15289 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -132,7 +132,7 @@ msgstr "Bestill produkter" msgid "children" msgstr "Barn" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Konfigurer" @@ -1133,7 +1133,7 @@ msgstr "Bufret data" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-data fra den forespurte URL-en" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Bare nettadresser som begynner med http(s):// er tillatt" @@ -2773,6 +2773,134 @@ msgstr "Kontakt oss" msgid "About Us" msgstr "Om oss" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Kundemiks (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Nye kunder" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Tilbakevendende kunder" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Ingen kundeaktivitet de siste 30 dagene." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Daglig salg (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Bestillinger (AVSLUTTET)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Brutto inntekter" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Bestillinger" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Oversikt over inntekter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Netto inntekter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Skatter og avgifter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Retur" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Brutto inntekter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Ingen dato" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Inntekter (brutto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Inntekter (netto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Returnerer (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Behandlede bestillinger (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Flest returnerte produkter (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Ingen returer i løpet av de siste 30 dagene." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Mest ønskede produkt" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Ingen data ennå." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Mest populære produkt" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Hurtigkoblinger" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Ingen lenker tilgjengelig." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Leveres vs. digitalt (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Leveres" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Toppkategorier etter antall (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Ingen kategorisalg de siste 30 dagene." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Django site admin" @@ -2781,91 +2909,6 @@ msgstr "Django site admin" msgid "Dashboard" msgstr "Dashbord" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Inntekter (brutto, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Inntekter (netto, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Returnerer (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Behandlede bestillinger (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Oversikt over inntekter" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Netto inntekter" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Skatter og avgifter" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Retur" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Brutto inntekter" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Ikke nok data til å lage et diagram ennå." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Hurtigkoblinger" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Ingen lenker tilgjengelig." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Daglig salg (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Bestillinger (AVSLUTTET)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Brutto inntekter" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Bestillinger" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Brutto" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Mest ønskede produkt" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Ingen data ennå." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Mest populære produkt" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3083,7 +3126,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Bildedimensjonene bør ikke overstige b{max_width} x h{max_height} piksler!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3091,7 +3134,7 @@ msgstr "" "Håndterer forespørselen om områdekartindeksen og returnerer et XML-svar. Den" " sørger for at svaret inneholder riktig innholdstypeoverskrift for XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3101,17 +3144,17 @@ msgstr "" "behandler forespørselen, henter det aktuelle detaljsvaret for områdekartet " "og angir overskriften Content-Type for XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returnerer en liste over språk som støttes, med tilhørende informasjon." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerer nettstedets parametere som et JSON-objekt." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3119,11 +3162,11 @@ msgstr "" "Håndterer cache-operasjoner som lesing og innstilling av cachedata med en " "spesifisert nøkkel og tidsavbrudd." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Håndterer innsendinger av `kontakt oss`-skjemaer." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3131,15 +3174,15 @@ msgstr "" "Håndterer forespørsler om behandling og validering av URL-er fra innkommende" " POST-forespørsler." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Håndterer globale søk." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Håndterer logikken med å kjøpe som en bedrift uten registrering." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3147,31 +3190,31 @@ msgstr "" "Håndterer nedlastingen av en digital ressurs som er knyttet til en bestilling.\n" "Denne funksjonen forsøker å levere den digitale ressursfilen som ligger i lagringskatalogen til prosjektet. Hvis filen ikke blir funnet, vises en HTTP 404-feil for å indikere at ressursen ikke er tilgjengelig." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid er påkrevd" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "ordreproduktet eksisterer ikke" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Du kan bare laste ned den digitale ressursen én gang" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "bestillingen må betales før nedlasting av den digitale ressursen" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Ordreproduktet har ikke et produkt" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon ble ikke funnet" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3179,7 +3222,7 @@ msgstr "" "Håndterer forespørsler om faviconet til et nettsted.\n" "Denne funksjonen forsøker å vise favicon-filen som ligger i den statiske katalogen i prosjektet. Hvis favicon-filen ikke blir funnet, vises en HTTP 404-feil for å indikere at ressursen ikke er tilgjengelig." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3190,11 +3233,11 @@ msgstr "" "administrasjonsgrensesnittet. Den bruker Djangos `redirect`-funksjon for å " "håndtere HTTP-omdirigeringen." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Returnerer gjeldende versjon av eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Returnerer egendefinerte variabler for Dashboard." diff --git a/engine/core/locale/pl_PL/LC_MESSAGES/django.mo b/engine/core/locale/pl_PL/LC_MESSAGES/django.mo index 8eed1f1ecbf5c835347fd514d401abd477edb46c..3fd58e80448c310198363b7263afa0541f609d96 100644 GIT binary patch delta 15299 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 MzWaQzC!+U%0aS!biU0rr delta 14434 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 Kl*1R^>Hh!}@>(7M diff --git a/engine/core/locale/pl_PL/LC_MESSAGES/django.po b/engine/core/locale/pl_PL/LC_MESSAGES/django.po index 52fec4a7..738143be 100644 --- a/engine/core/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/core/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Zamawianie produktów" msgid "children" msgstr "Dzieci" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Konfiguracja" @@ -1139,7 +1139,7 @@ msgstr "Dane w pamięci podręcznej" msgid "camelized JSON data from the requested URL" msgstr "Kamelizowane dane JSON z żądanego adresu URL" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Dozwolone są tylko adresy URL zaczynające się od http(s)://" @@ -2784,6 +2784,134 @@ msgstr "Kontakt" msgid "About Us" msgstr "O nas" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Mix klientów (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Nowi klienci" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Powracający klienci" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Brak aktywności klienta w ciągu ostatnich 30 dni." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Dzienna sprzedaż (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Zamówienia (ZAKOŃCZONE)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Przychód brutto" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Zamówienia" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Przegląd dochodów" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Przychody netto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Podatki" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Zwroty" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Przychód brutto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Brak daty" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Przychody (brutto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Przychody (netto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Zwroty (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Przetworzone zamówienia (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Najczęściej zwracane produkty (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Brak zwrotów w ciągu ostatnich 30 dni." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Najbardziej pożądany produkt" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Brak danych." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Najpopularniejszy produkt" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Szybkie łącza" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Brak dostępnych linków." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Wysyłane vs cyfrowe (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Cyfrowy" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Wysłane" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Najlepsze kategorie według ilości (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Brak sprzedaży kategorii w ciągu ostatnich 30 dni." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Administrator strony Django" @@ -2792,91 +2920,6 @@ msgstr "Administrator strony Django" msgid "Dashboard" msgstr "Pulpit nawigacyjny" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Przychody (brutto, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Przychody (netto, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Zwroty (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Przetworzone zamówienia (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Przegląd dochodów" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Przychody netto" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Podatki" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Zwroty" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Przychód brutto" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Za mało danych na wykres." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Szybkie łącza" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Brak dostępnych linków." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Dzienna sprzedaż (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Zamówienia (ZAKOŃCZONE)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Przychód brutto" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Zamówienia" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Brutto" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Najbardziej pożądany produkt" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Brak danych." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Najpopularniejszy produkt" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3096,7 +3139,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Wymiary obrazu nie powinny przekraczać w{max_width} x h{max_height} pikseli." -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3104,7 +3147,7 @@ msgstr "" "Obsługuje żądanie indeksu mapy witryny i zwraca odpowiedź XML. Zapewnia, że " "odpowiedź zawiera odpowiedni nagłówek typu zawartości dla XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3114,16 +3157,16 @@ msgstr "" "przetwarza żądanie, pobiera odpowiednią szczegółową odpowiedź mapy witryny i" " ustawia nagłówek Content-Type dla XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Zwraca listę obsługiwanych języków i odpowiadające im informacje." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Zwraca parametry strony internetowej jako obiekt JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3131,11 +3174,11 @@ msgstr "" "Obsługuje operacje pamięci podręcznej, takie jak odczytywanie i ustawianie " "danych pamięci podręcznej z określonym kluczem i limitem czasu." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Obsługuje zgłoszenia formularzy `kontaktuj się z nami`." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3143,15 +3186,15 @@ msgstr "" "Obsługuje żądania przetwarzania i sprawdzania poprawności adresów URL z " "przychodzących żądań POST." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Obsługuje globalne zapytania wyszukiwania." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Obsługuje logikę zakupu jako firma bez rejestracji." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3159,31 +3202,31 @@ msgstr "" "Obsługuje pobieranie zasobu cyfrowego powiązanego z zamówieniem.\n" "Ta funkcja próbuje obsłużyć plik zasobu cyfrowego znajdujący się w katalogu przechowywania projektu. Jeśli plik nie zostanie znaleziony, zgłaszany jest błąd HTTP 404 wskazujący, że zasób jest niedostępny." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "Order_product_uuid jest wymagany" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "zamówiony produkt nie istnieje" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Zasób cyfrowy można pobrać tylko raz" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "zamówienie musi zostać opłacone przed pobraniem zasobu cyfrowego" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Produkt zamówienia nie ma produktu" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "nie znaleziono favicon" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3191,7 +3234,7 @@ msgstr "" "Obsługuje żądania favicon strony internetowej.\n" "Ta funkcja próbuje obsłużyć plik favicon znajdujący się w katalogu statycznym projektu. Jeśli plik favicon nie zostanie znaleziony, zgłaszany jest błąd HTTP 404 wskazujący, że zasób jest niedostępny." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3202,11 +3245,11 @@ msgstr "" "administratora Django. Używa funkcji `redirect` Django do obsługi " "przekierowania HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Zwraca aktualną wersję aplikacji eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Zwraca zmienne niestandardowe dla Dashboard." diff --git a/engine/core/locale/pt_BR/LC_MESSAGES/django.mo b/engine/core/locale/pt_BR/LC_MESSAGES/django.mo index 2f51c90c473493b02ef5ebc432dac8f1d409f241..99f60e1849f9e5999b707b56a824db64314fe6d6 100644 GIT binary patch delta 15297 zcmZ|W2Yk&}>05~VsFJIL5Kv2psLs2tzD}qiqe*KS)FxJas z%&fG=^eU%ZW2VpAZ0fX=cM$*AQQ5~yQ-cGpG6=!29%yV#P4crfHKrZyn`T5F;9}g0uQxL$3l$@q8`F?4sbK`qHMEQYz-+KyI7t$7{P3^hQ_P#X-xDown4X-B>rBge${TlQHpnm9gUy5sdm7UU_x3WT z8)ocnOe5;|?PJVR(rbLie1!G-8*`HTZ^trYr1!-ca~IG12N+YCf-eRk8Bg&J=}Lo* z=|Q^K5Mx^Mz*iEO0n$ejZ3lY|GiDh18Ah;y$sd(s%oMDgYG-i!D0>Qyqo)20vbyFH z>J*e4ZA@A8cOX)e$XL`AZ9|>cW0(Ukpw{pPYHDwzZhVN9u-F*eP&>>|x*KYf4oB5b zb?I@a%{LL51T!5uu6}cah?k5?W9^!?MLl2u2H_CYE*^=87~yzK%gCFIGo~W>Em%Tr zrc^AAZ($WYisASdX2Npg?Z_jr1nHg_M*GH3qyiZmQB(6R>VZ$O4wju@Ul{$d2edhi#h5&w=|@d0w8Ow1(v z9$0}*NdJIZqT-W{DUa1rr^biba3rdHGBR0aF_ywyQ|uDdM(v4)=+8qWnuu=bk6QCo zR7a*`py#L_ufgoN8}s1_SANCi-*Kj$YL_fG7NlM%s)KdVi!oRZlcqBNRf#MkLu>ZA zD|m)#xZE^5Wp%JP=_pK(aj5bks1A=s?UC19dI@GAy$Lnat*HAyLA?*Ip!UQc)0lsa z^dT8~52TrHdzKAVp*HHlQK$x^UH(g`wH|<)^0BBHoQZ011*)NUU3wRKNgu&XcpcN> zEkBWrMDC*+c!FAztTXHbN}w7FN8QjARlgOg;SQ)7@HvxF^`~GdT!vb*1E?iDfZv=Vq7hth-az&E8R`MqXWJ2#L3OAes^NC1nd*<~@EFu{W}xaVM|FIQ^Ej&B zPpG|c7jx?T=Y7rYfiTQWK?Fu&1FVV@Fc?2Vo%4gJ2L41XL6+BThYMmR(&aHLR>Le9 zg~c$&l@CKbXAD-+`QJh$2rr|0_8UfGwmG)PZBZlZgWA=@U3xUC!I>_-0QH=87=~L= zul94e4s*=4^>?CX?g09$5&4#gj#ZX@h&Wj2T&vW1xsU=`L>~| zsQ1EP%!w0Gn{g3(aTDr&a1wLiwfW3{G?9m7q++uLd=0~Ws1B81Xs5UeHX|L08sRk5 zOw2<)XbEacH=#QCBdWtei|o?mK-DXbnvrT)9upQZ|CNa>Awz3=3|r#AumP5S!!{U) zTGJ%ViQ}*a&c%v&6eI9Hrp2(uwj&i$_jSQS80*sGQQr+;_Yyx1k|~oi-mCoYNqyJK|F`*;62Qak5Kmque2krjcTwR*22D+8<(P< zyBV|S{C`YD4IITnconOoS!H)|4QB(?CT)f_u?K4N%}4E_11|qQHX&W{Ejwc)us!KT zs29?8R7dWjUsIK7wO!L}sAH24)levEsv=M`(#YkvLyaI7HS*!Ed?KoWd9HkgE8m3L zGaq9CJnZr>u4ex8k?{u^I*%FG*at_TUd54^2V0{a>_cs$p{PAG8MQfApz3cyy&v|V z?mLX?_<2|U3+j~ILob$E>$m5$*;>0sNvH?DgQ2(wWAQwe!-j9$r5cPH(KJ;3xmXF; zpf=?hY>b)K+2^)Fosuc2J@YxLgJ1iJsK>ve8oYwCB zC!!lKq8|7=X29&*?MU-s6zS%u{F%;qn3?nv)C1RI4%~@q_&8?5^Dh4<3?Y3Vb&S*R zVEro*DZImOj@EdB^cb9kO?KM7aSXL2w=fJV>~b@K6-h6~3iuh8#yhCJRA9HgFAA%X zeib!S+faM#+-|Kuk#u`(L&dQn=~h@BXQCc_088QxtcN*2wj*zg=}Gs%EZ7$dU;=6; zr(z-8gu!?O)!tWF8E^ZE1Q98=*Y4Kxs40!b{FsC-aXM<`XHg?~j2c1leRjmrsHsiC zbT}C`GczzJ?!-cP0yU6psG0I-*>5*jRn$m^qdG7Owbm0+9hrd|;Tp_?n^E-+V^RDP zi{VYw$g+Q8KT9HU9O)LQr9OhHcOTi@y#Ei_P0|asJL6Dqz!cP`T8x^ZcTpqSj&<=T z)F}x)Xg8-1wN!7TX66iP#vY^AzVxT|*!4t>d?`+%eRF_FRWh0!vTHU9qew4D!`Gf4a9-D7s` zcA!Rj1hrPDu^|4A=`rJRJM~#HE$I@N4$I(jtbkgQW2j^J6>2m7jQr0$Qo%T2z-p882&lyo`!Eam_WMWXOSZ9oky`aJWmHR*ibHZT-56APW2FbnAesHr`L zs{bA8bo_xj9S^V>hFsv+I2!DNainYgU^~1LwdNf!*(JF1qt)ZTY(IXpqmEH2R0o=1 zIQBrT@hr@ab5U!!+LeER+N76JBg%cn-d`9Cldg(7HEppWj>Da}55v$u@+UsQh^#_A zz<1R?ARaYBKWY=yc!in=9@}-0ajQ!g_ zxbGuoih3&^^KnZ47f%@k^>Win6-+grz#q5Y@p#N`>J3WkFDI2=!r4I9AQ>37m$`&Ka1S{C%jII_uKE zqK@q|%!FxkcuZB=H^D?IU_;arB%p3gL7k4-sHK>X>2N9P0V{DJZot>+a7a#1;Kj5u zmnZP%JdUdW18VPFK@H$8R%gH&a`X4s2qN|J+7S%PZ+#o}4*wo&Vx|K06eCd`Nyd`+ zGM2|xr~#Zro%4q-zj8rOVDt6FPUO!(ZSsrGCk2^*?asm+(%RSx>*Hip#ZR4=u`6l) z?OeyL8wTNU)J%;CPrhk0=msv`%nG@d~1E&pv- z;ZIb<**Lseu>@*rtDx4rC2C~tP&3rerTwV)!aNMd)uQPy@JznxR{$kw3Ee zeiKr{u4w^OK~+@6W~c_+qh_MNOQ&EN(o<0n-i+$tF4TRWpayaR)sai64&FrVsi&w@ zQKY11fb&?vi_c~Q@cKs~QH z>b~x%Jup)FI{$NBg*B*=e1zI$AES=hb<~R{xU@Z%m9aVLKG+a9phkKf_1WV@+N z>tNM#c25jN&Dbc6!DXnC|AJ~SU3t6v3zzrXjN)Xd!8)i8G)8T%UKox8us$xv&G-#! zgp(`S<247h6zfsn7p`G@yo354(4?X#@O#51)UmscmGOq3NGT#kD%mw}jCw;Qp_X7T zYG%$jf5uSKf1y5>3sklPh(I;e8hhYYR0o2??M(GXZN50vj7&hysQ)yPj6^P?8oGw+ z+25#5SgwjK?}CBTfZ8Le*b-->UPRxbUO+)rZO7VRJJJKNDegqg%o9|@K@ougvi?Lg zwH2@;4#qjS1T|Gt)^fFe%-Kafs6SX-*YuSc6V+85xsJ*op zwPc^6PSGU{qJ8t&Wn`%BF)c`!Ky9uB)QzK1A0FdTZ>|NXrCNfT%J*FP9@LBKbJWb- zNA00>b?hD}fVD__Q8UpU{k@6ICZZAkhU#&tx^{}XqmJ1O)SAyl?Sb_eg8NZR@&#&B z{)qa}(HA~7P!ZMfzNj~6GU|OX8Ff52*5mx^#dC@bZNlGB$L}s`Due6W;}wN^PEDC&kE zP(8edTEk3@?2ScGBM3*$RBhCQJD^4$i#kQqP|w|tdd_F4sXvEm=P7E2{JEp-$ZDb9 z@jXx#Mx#dZI%?N0MfH3e>Kq?IZKkuR2WM$)_e?l8C*2qIVtWVGu`f_BsM{{TYm-2^ z-;5)ohSs7Q-i(#-Fh=8D?1hb*+D)|*yOKVGn&Pl#w&PV$&uNP~UOk+nP$OOF(z~4B z1myhPA)+3KG`C-kx}v7^RqTUvu@l}xt$ouLHa!ouXRe_}n!lypv<*;Go`Rau=~xrj zVzwzTjXT@&`OeGE@Gdsrk9z(WUHrD;LS5||cEz$3j6)rt^;jNvppM}cd?d)ni93^n5qu?+g_^s<|*AL`w`7WD!-jXKv) zUAn|ec5k#tZL%3y8V{gGb{+Lb^Y*rzuO4bIB%=1vF4UCYbLmEXJZ2E>n{h;R?yq5b ze2kijG=1&JLr@Kcq0V(X)C*{+D<6Xz(E`+c-(YvVf_g>Q^Vu)AtxNfYhY_d|EJ8i-Eb16PL+z2~ z1MDlk8|ppqGHT}DL$z}pHQ)>A*T`}YwCAw{wkN$3RpAzDFN6)UYu^=hZs(xZ_5x~` zmx{Mv*?OQ}OuwQ|QP^Png{A|l-f~RD)2M+q9K!k62!;)@n`Z@Tv+PFo{62qfFNnmp7Go-aroXKbjlDD42}%P#+d; zi2q4Ei@QN}hZ4U`m`Qj_dMUjv~NKK$j*E&qWfBA{D zpl~^A?R4o}{!BU>`MSO(uD{pll#B`F@QsE%U0RMzlwBb`kGS?ze$ul@7a*?d2Ul0| zh3=V(>s0ykyii!?g+hH$eDgwCCgN}FF0LnpVA6jDQuc>-w2oJ1@+a{e_F~|Am!GR$ zyd(K(iC?ruW`pf7JDP&+u2Lc5v#1b67)@Sjm%oj4W8%jMe-iIQy$Zyqpsr4+Q&S6@ zyL+kzN;o;>@mUqPmJ)B_;&s@6<{Ppfk@3FEq}+7j#~i|O;@XJX%||I;LRjYNeTPY^ z%vB8aS+6Ur#q=fbB=J`XQ3N)9;HpW!PL;0KTK^x3{Gb$<-e5&sMWw$WyrBpeFErDL zu#0$4!W=>*5A%_i8;4;#+(P~b#C44!y&k_Kd`X_(8~UrNJ}Vj%v|mgWG9F<`)b&1L z3Gq?5lJFKc=EE@ZCgWG`;kk(GdPs;OZ#{o7v1D^7YR=?DMR zV*DO5hPsSm#M4u$8m=HOn0Q9wx)u>{MtmIcfrNO{XH~#8kN926y4qym=W6m!ypVn| znu{`BUk2vi#!Uq>rxWk&3g_cB(lf9o4?jbE2=RTGo^%}XL-_nkCa(9q{!{+$1YMg6 zp{~w3l@rzlO85<$I{uaXDC8>eT_NyaGrMwAj`T?PppRXhi@1vrLC8S(7nN@j`VeN2 z)|JRTZxKR>S0eBg!d!P{cSz?VK9ln0+JBK`6eaQe;=AELS12+4x4udL7}VB9O)3YN%YC^sl7f z#W(RLp(SyBYU!FpJg;l)4sl(tIDN!(68{5F5%evp7vcHUld`VdTN|J0{OcM@MsLDw z_t0rLn9#?SPoqu}@f!Gr%WF$~0P$At9+H7;FL}LP{50|Rh+ih?leQ^!^^YBi#G6p& z|Aok_WUM7b5MNDrnb4Rt-#ZMSxPgBz$$_=WyM!-Mt}BRmPx2mO;Bww3@h0(fE?a|4 zRGPXg2)ceF-C67ZHjyYYvl8B-pakhss4pP*2_1DKp*e9~vD9lw;43`;e#80_*Y%Ob z{O%N9LSE`rCj6WDDtz(ElZN$gPfiXVGKfO`Lz1q7IMP+_Ks?P0H@-vp=|C+$pl~;# zjY~Jd1=L-G2i!fmiBBYCBmI<+!1MB9MU~UODM5z5Sf-G11fO4vRGGx*_z__t@pxQ} zO$j*&SxM{S7bcUN@E+k)!aef%mBAdu>R6BvLa0bveaV|mJOgpHAGivTv4>aH1IRV<>wzeqQ5aCtSHRiph7<4Q?oGCNcK=-=F`w`Xh202M+(W*`8-xpl^Mq-HEbalDs6W9zB=EBu zKMxUZ5bjZLx~sRIxUTV}Un9Ih7~#qS|NjqLY=6#liQC*%nM$Kv#m|*b{2AP&>~BId z(vj}rf0KWl_yF>z;whJZN%y&HGI_%&-$D8);SbfZn3xPuz_p16L=0J|Qn7 z?#4p+F(HP!cTra+!dHYC!fVvYOqs6PgyMwjgqDO5@=H>_kf7^V^!F!Hhl0m0Gf={h z^DZ*i2bvJv62VcU+>>Ep=|KQKPUm$0owy?1it z8xfZ>aztWWtasRmq}Y-DQ<81P1)oJX^2d$x_J95i6O-ia?@Ngrm^5OHH`$jEm+XyC z^rj4o^CtL`Q@j!3-dNw5s>N;j^+dR=sU2L4Ue?oj*VhYu4(O<`wdosFb zZd-6-a_)RgvM)ZFs;Nl{sqwK%&*w4ZQg44uQYz`^k1#QDiGxNC^?6g{5@UUVhue9L z_jwbkcW6&SO8ihFn$vin=G5Kb({#rA=+1w7^#9#rC)G5HPmEpg_ND9#CR_@w5OZj4 zl6O$j$W%RmevUk};m~%*^xsTIeJY2!R9^0tvl_-a;=Sgx*^uROwyXA|0s`ih%F{3Mx$?G^JMs zM4F(&qdXu@=?F^q_x|im&foLD=ZvqJ@66si_3j#d^HbW#=hOOr&7NkF;aZx?m@vE% zY|NA$MF@{MqPwE=e9E;U6<}VzJTY0`2THlyVG%VD>7@lp)G_)fhjGC&njqHOn zqNX?ub72L{hD}j3(HS*Ey)XoapgKMi^|^USpUmfYfam>zzP1F`H!-Fi0Z*(kb+JQJ zd&3oR*3VFTU@PXp<5&PMqdNE+wYHvS#$?8{sCL;=GZKkx7gHa#*(P9q43201my?N( zw`+VBHN`)=^6#jTK0@6%fcaBLg0VRrEsE(Wk7>aS;$*yv^Y9Dm2emY&1ctUYrW0%5 zpbed-eoZ@LMi3w0p81a=^JfQRnqb~etTXoN%vAA#16?>7ls(;z*^bK-j5);(n)hHC zD2FBTS*+62n9{^c_D0HG@CoHPeT?Zyd17B<8gsuZ{g?sDg$LLU?(q#|BT>>5@C>()Ba0O~}9Y@W~Tg;9*M%kH+L@iBa)G4Zt`dnQs zg}(k|w1&%FgH^8l8EW%vLPqi@Qh&Ut?f z$LY?ssLvlk9rOFBnTnXGQ$nFK8BJ|-%!bP`05@PROh#?Klc*d2h#K)TY={3K8``vc z-yYv}Sda28)KV0mM8cY=Q_&Bz;sngj^UWMG%#vA!g)wZho%%YMg>oaziEU9g?2kd{ zLv`ds^miQ9;SCswhcN^%xca*;{>qto3ir^Og_F_L6+!i|E_$&Y7Q@k44nING%v^Hu z^i%DF%cEwjE*8XCOp60i9UG47@D$YZ7Q6E5sm#B2WikPc^lQ`&zC}&>UDTdp|OH;1GH#pF!RD5vIWx zs1d$JJs{n5yCk_#pD%%WP!&}BW*C62P!H~ent^`Kaj5olePjxg`2@9QCs1p6*)@2K zT9R}#Y|rzc_CiTiN9v;LTVW{ncE0cGm!n3!0RwP9mcZkvP3ilSj2@VOrVUg?y{q5B zD!3dqf{UmT+;IMd>TvoG?B_#KBPxUHP<_;cJD@t;AJySWsQWBH+WE|{d)HL^aK4#&9i`=|#dx$?)T`)tOdI{&-L zRKn}H7W2%tA2^7bx)T_US1~OH&$COE2dhzTh3eou)EXbcB6tEdpeGoK!Sn5Ns-fNs z!_cRxokd1#w-UXWjCvpZfEv+5j6=_d#*D;x9Dv7B9g1FHr?@IMpxhWW!uhC~ScbaK zYSfG-qdNHe0_I;m&Yon~CJ(A%any{|z~VRpOXF(Hf#-o%<%dZB&bK+HmUG-k(X zSP_?ENj!_?@hzsta*LRM^`zn=`@wFQm+}Bto{9M=FTrTsiMsJ!jKa6h$i;T5o1wlV z2D|cH^itm9;^(jo<%g(a@AWOQ-*OEwKY@Oz&Gi9l?KYuqcm~yx`{>2YAK95HiF)C5 zK+RlN)Y1(`ZMs>mybv2w{?f(&cKXaxyLK5+H_DBu<9 z1@*ZPFf%SiwOfapsUw&NucJEn1_Lq8$M*9%F_+GN9Wr`g2ds>JF&NjNZoCWiemII@ zcoy^GeXM{PR@h@#%h?b$WARuCd!RPoa?~C=;o@(xp3Z;8m3GR;VhhSEQ4f5C>d0%< zF$?;SUDFWMsqvy7R0Opo)loCj#Kk+H1~33M@-eP{7V7@X(5D9LT!UoPra6kCc-qBp zV+iHvsN)#8%HFs->Q&qrb7E`Mjr*bY&`8vtnSrm}?quvikRx$tj;AsNt`ERHO zPf*9?4SKQEYI{uMQA;!$b;GTgACF)n{)WY{(Hgr{!%zd7k7~aZOW_98ro6ny$5$ws zpik_L+n|ogT-2tygzDfgs2=}`df*!@h~b}FV^HV0hbzxS&EQ7Vnjc5)omZ#<=3dK5 z!U!LkR%B#7ynuSMw?9JRUV8Yn^9Z z{1sLu?u+=`p3APNSL_VbZrzO~@D}O;Ilizrtc67=_eR}#zANuRwY!13ao~Dh-x!PK za3-pQdr?dHz{Y(hYJ&}QM6FE{s^MYhQx}iiXxFR_YD#BgH9Umn@eS%hWjEPlnTQ(D zGSvM}Vnck5wXxo2m0AC3WYp8|F$Ob#X^lh0=VE>Q4(np}E%t{;Thxt~qL%Io)F{F)dz0eegEwhR-k^h9=vQ zda(}W=BRj*a~Wo&yc%=hMhwD(=+lGGlSz-ixr%$3jq+R6InKJ>E=^%9Nx3zi#7Q_A z<967+aSpX4FR&<9*y&~h^|@780>8&de6^GL*JdiX%YHBxqbW~EP1Rm3hSxD1v+TAH zDvq@%x55gTgu3wwEQEhyb`@V{6Z zUt$I<_O;!t(WogMfVpurHpUN8Bfo+gK-xWa0L4)wZi|}P@t6kZ_{eB#7GQQfh zY9tR)9}M1WH&->(NXDQ#FcG!ZvrrvbfEwWj%!#{D?M`Dp{0R%-->8B4LigD(lg2on zKnpB|XHX5_qIS1;zuhA}QJZrh>J2y^bKok}3~fgZXg^lNd#F=VNVZ=P^5l+mG9|JAfML8Prn!jCt@GYH0$$ zu~VN5Q&TR1X|N0~#|o$=Ifp?!-~5+MC_cawnEqQk#ph9LdJVOfFHw6WkVb>)SOkVq zUU<@;f~{Dd@@>qIc~5cAR4fDbr(EoN+kOf5ro0_}70HC1u~XIxHB}#=M)Emk!OhOS zs5L!_gD~A$yF?>Ve;r$aL$T#~d+v{2Fs8fO{lNW*_eT0+23(|bl&f4~{;Lyc^P~MY zp9L5|x$;kT31Tpka(mPa_?(L{6Xgx4soaHHvcs4TFJo@Jh7Ir~UgLqaf95Z3lq0U# z4$r*8{A-PC{$i*6mtU>-Fqnp~P!A5gYJZSKqSmq<>do01RX+f=6qB(muEJV)9(Q5( z|JhA`5)V;+iW=xn-!*%K{ivS*fZ7XJFdIHYjV$eT-f|w62Q}iYzuAuN#e&37;a~XR z25&yRd5cc4_66_o2P)bh`NRIr_sCtAkow8@`F92M9e7~>BAM?I-*kLn`(utA6?LET z?`L@H8Q+^yaNGU(s%#@t7}(k4o(^ zH!zBgFpYTT0FOEBVf~Xbc+5sB+VUrGy?Rq;@z`CCag-ylAPzz8?uE{8QA_k1HA6vJ zZMi6>rd$)#V;$7{Ar^J+C!jX>227{(zm<&EbT{e)`%uT@IL@VGrLuYaZ@7Jdw%s|@ z+FwE)$JZ)Va3B`PBvelippNG~ z7mo<>_+PE@*qZow%!lWlk6nFWZjb*@H#M;a^`lYkb~-O&JIYVdr(@DI)Z>4n^+ZkO zAk@gFquvM0P@8TycE=;w1`Fl!n5H-eRsII`!y=r+9gU??ry>y*f8Ujpa6aWNc|AV= zh->q=bnX5Dm;;BS9ykN_!6ejLuSG4<*QgF2LA`n}p+5H*)h=zg{ahYYxddv-YNKA= zEl~sO9Pab@UzKABXib)(rv5b6!I!8_S0kT|55ZiNSE4$y10!)iYE#{G^>@H%Q!JwctGpaOOV za-r(OP#q|NdT#s_vj(I1jNZM)IG= zv?mf!Q}!-4!?~!D|AJc6=cwHuSj3idp&nQY)qzT=`!vTg*b!^stRkHM&16mx&Qn^e^)N%@&9gEiF)uAEREN&Fa{O3YhDTUg6e@cs1Ze>9#jiE;#yP(Oi4RaEm51V18PP_pr-UF2H<(rgD#^w_5igB z^OdsoP0)WDd}Opq`e9?7h+8h(ni}SE1Zb7Z}L#&P&%h?AsM0Ip3YJ|J7 zJl=8fu=2JXj~d8itcJ(23Z{zoZ(@G`kw ze1&>nTtIEIN3Q%58&M9aX!llk)aTwseRmAUG&=v&$!M)+qo#6|Yp@wLRfkYB^E+ya zpQBDomP#J~UowJGGZBYfaUyDjS5X}ft!!r~4)wY5s3o6*Av*ud$YjH9s5Lo^`SAzT zm(f$y0}52JJ#US?I!$lX`(iZec&c*!~d*lJ?+-9%l&NFICJECT=2WpK+VOdN@y-#jp42D&=^p5I(P@Q zgs)Mb3#!Ta*9Z#Lv{O|Qb>jx8k+(-3qp_$Pe}THuSE#8!je5`%)C{GsWk*&5^^R|b zs_%~)$RyOJorCJYXFf7I$6sS*JdV2YKUf+I#n^X#Yt))M_dM%}0`>UcGCzKa^^3|HRhJmI{B z4XICE&;BxsMa}3??1odYHQqp$-e;=Rw}GjsO>-GF(##F)t}Ta}@;<039fy^08P>-0 z7=ytLZTmK;<2MV{?wBjTLA9&Y$ZpEfSX<}+OEP)^J;pj%rm_9@8;07wn^7IRiMnA( z6Z?XSN1dLDs5j#t)X1NsIuH|U+mFEpl((Ty#|x~76`G>X{}?hF$pNf|o;X{sjrvZQ zjJm;TXK*tc?}X~`TGT1JgSt<2ynWC}Y)g3?>RT{FbNe&BEjFXP5q-+Ma)Bl-Y{gRN z9cQJMHa^XH(OIaKjSoXT;4o^0*;?BrjKw09hoDZ+GAxekQOEF7YtH{TGIt4Rlk{n0 z&+!=4W?YO~`;{1t+g$uM>a;w>zF4HK{dc|vsQ1QV%#15gducuDfoD<2?eamj_5L`DI@V8I zIi#cA8})r;w8_R}ByLBI>@j^P4?&&#%a|4) zp=RPQ)W}nJvCj!d9cy1bGI{|epc)K7jc7XRgD0>9UP8U1%XGD0GPO{ft1D{v??BDi z6Vw2TbhG6I)R)o{)SGrE>O15B^1H%k-jFFuAa{2=)pbxaG7_8MCe%otqrRTsqSiQb zf}P?Vs8?wW>Orm0|H482j+laalkUJOcoVg^^1tIT2|E8#WHf@As5Lu|I>&#aHc7P} z_MP4o^&S|Anz~h}2kk?R_zY@f=@ad7Y=A8&FF@7bK<$O_o_6hHF;?e)G8wJy8PqNh z?PY(nHAB6aenlOl@ZR?rPBXZ@w9Ns^~@j>6wkHHq+5!e5h4ktPu1W$wRLU^ZHY z_(CY(AZ;S0A$r5LP_r7`fo)*gV9NEB@<$ZLx^`ozyF-2~?n!BcBPkalK94k)@|J(q z?I0FIxlSr(tRW3`ad7-EE4_GhO{Bb&6ixasN!J$Vf60I7kJvxoMH2s&@@ZFp!qsWt zc!{;dA8`_CFnOJfYARYEc`Q=0B+qk?o z@pq)fq#)WP;ABj>rjrSw{gspeeyvT`pWsN0L0x&B$}c3HRE8@R@g<}v+774u18yUY zCw)d)FR)_Nmn8KiUk;C>u5zUGly%jm{Xh62WnXCu|Gqj>IP7ADX;97OpEx;n{`bi@ z|N2lV+UadLgSs%%Dc80tvHGN7%IioANqQO1qWv1%#%G3;c}>tq@E`IYlixrpOL-OL zqvUl3Q`V)o<$lsO65rhZE0DU`nP zI&~eQQ2~5|UHlRI_uv842NL_4*mLAJi2rIy{3!WgN>^QMh`Sfx=4L1Hn|Ohw*L_u2 zx7Pn@etB#C50Z2>x0oufk&4|(-AH?B^A7Pm=02lWv@X3FBZ&2OpUv)%vL9T# zQN%a8n11%HB;6(X8o368XfTC5KMDL-BLB=!dQDk>N%xZOQ9es~A888ZHn|GriKR*N zsT<-xJSycT_$_rssauZ)Nj*qeDeGE9T1}e)qza@tq?sgLJ!w-HYvNB>hq$j1g_5e} zdYAl0f&($-Dnz~pu^j)3rPO`lZk!K?Q9q1|JEY2_O2lrt`s~#4Yu=2*+U`ENDL2$N z=2tXMtA{xoSq%K6v-POl#ox-yVIPovxzO*%*Zb5c9%dZDh*Nkynjxk{7&i^2{UXo_cC z+mtr)3sOPawkJJOz1~0LNUccgNbyuup`t0N3n@RT9(Vc!U&(jHOA5H_ zLt@Ry&mzUqzA|O~PJHP;=bD+})bXR-`2OY}E&f&6nieG~2hm_W`Ess~e;G38D8GlD z@FVJV-M5%eiC-XJ(Z!!p?n*wM*a*`9NH0i*i0k?VJL>$WbAcZSE+BnId4r1;$ERw| zHIRH3QZDxZ#Y#}lPx(0N3LsyN^s_5>Al96G1hL=A?{aaEbH3*PHWi~u(`Zxz!${r8 zPsZvrOpWzOm5KdE`BU<`rjlReZlrQyQhUmsN%u*YNlARB1L+ubl`tc*SEO2`m88Ww z|6VE^Q&>W3LAf~TUGk+!8Obj|UDurDv6l_`|9Qp5qiCCjG|$z|cJa(O+U4V1-3Z$0 z^4+wW9xmXD{-5y57f%T|hq@d6JG_cQ8q#R)@d`W9X0B_O${9;smwwvoI&blri!|8o z8r>q8!R05C4|AQGMt-Kt=fTaCbp?{@yY?#gCZ7>=ktWk_1}T=*hxEQ{SBg5FI$aI) z{x3>JeHwg%%Lz8}SMf94ec(T?oQXEy5DTDO81s-Okg)MWc~jw z`4E0UN>BU(|=N!9()|2Gq6KEb*)D1+~ibp7c}cG@W4YX4t3+*M>E{yQl% z_eo32MZOg-rM@?5Ddl;Tb=9=wH~q*=BzPSklZx01^EakRl{~3({nW`RwWM|N1@jK~_8d59MDIS{#Dw7q-d=--dVBOq7&_ehUeDplH{yScNxvDexrg)`_emTy%sXsE zuf9F{_8d68=P>W!grN!ELEhd&kE|v*D0%Gl@+Eg2&F1;svuk#cCwr=0CvteUxBov~ CQ*QYH diff --git a/engine/core/locale/pt_BR/LC_MESSAGES/django.po b/engine/core/locale/pt_BR/LC_MESSAGES/django.po index b8548d3e..7c6da212 100644 --- a/engine/core/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/core/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Solicitar produtos" msgid "children" msgstr "Crianças" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Configuração" @@ -1123,7 +1123,7 @@ msgstr "Dados em cache" msgid "camelized JSON data from the requested URL" msgstr "Dados JSON camelizados da URL solicitada" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Somente URLs que começam com http(s):// são permitidos" @@ -2763,6 +2763,134 @@ msgstr "Entre em contato conosco" msgid "About Us" msgstr "Sobre nós" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Mix de clientes (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Novos clientes" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Clientes que retornam" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Nenhuma atividade de cliente nos últimos 30 dias." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Vendas diárias (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Pedidos (FINALIZADOS)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Receita bruta" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Pedidos" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Bruto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Visão geral da renda" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Receita líquida" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Impostos" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Devoluções" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Receita bruta" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "No data" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Receita (bruta, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Receita (líquida, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Devoluções (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Pedidos processados (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Produtos mais devolvidos (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Não houve devoluções nos últimos 30 dias." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Produto mais desejado" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Ainda não há dados." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Produto mais popular" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Links rápidos" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Não há links disponíveis." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Enviado x Digital (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Enviado" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Principais categorias por quantidade (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Nenhuma venda de categoria nos últimos 30 dias." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Administrador do site Django" @@ -2771,91 +2899,6 @@ msgstr "Administrador do site Django" msgid "Dashboard" msgstr "Painel de controle" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Receita (bruta, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Receita (líquida, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Devoluções (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Pedidos processados (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Visão geral da renda" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Receita líquida" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Impostos" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Devoluções" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Receita bruta" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Ainda não há dados suficientes para o gráfico." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Links rápidos" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Não há links disponíveis." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Vendas diárias (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Pedidos (FINALIZADOS)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Receita bruta" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Pedidos" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Bruto" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Produto mais desejado" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Ainda não há dados." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Produto mais popular" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3072,7 +3115,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "As dimensões da imagem não devem exceder w{max_width} x h{max_height} pixels" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3081,7 +3124,7 @@ msgstr "" "Ele garante que a resposta inclua o cabeçalho de tipo de conteúdo apropriado" " para XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3091,17 +3134,17 @@ msgstr "" "processa a solicitação, obtém a resposta detalhada apropriada do mapa do " "site e define o cabeçalho Content-Type para XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Retorna uma lista de idiomas suportados e suas informações correspondentes." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Retorna os parâmetros do site como um objeto JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3109,11 +3152,11 @@ msgstr "" "Manipula operações de cache, como ler e definir dados de cache com uma chave" " e um tempo limite especificados." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Trata os envios de formulários \"entre em contato conosco\"." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3121,15 +3164,15 @@ msgstr "" "Trata as solicitações de processamento e validação de URLs de solicitações " "POST recebidas." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Trata as consultas de pesquisa global." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Lida com a lógica de comprar como uma empresa sem registro." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3137,31 +3180,31 @@ msgstr "" "Trata do download de um ativo digital associado a um pedido.\n" "Essa função tenta servir o arquivo de ativo digital localizado no diretório de armazenamento do projeto. Se o arquivo não for encontrado, será gerado um erro HTTP 404 para indicar que o recurso não está disponível." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid é obrigatório" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "o produto do pedido não existe" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Você só pode fazer o download do ativo digital uma vez" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "o pedido deve ser pago antes de fazer o download do ativo digital" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "O produto do pedido não tem um produto" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon não encontrado" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3169,7 +3212,7 @@ msgstr "" "Trata as solicitações do favicon de um site.\n" "Essa função tenta servir o arquivo favicon localizado no diretório estático do projeto. Se o arquivo favicon não for encontrado, será gerado um erro HTTP 404 para indicar que o recurso não está disponível." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3180,11 +3223,11 @@ msgstr "" "índice da interface de administração do Django. Ela usa a função `redirect` " "do Django para lidar com o redirecionamento HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Retorna a versão atual do eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Retorna variáveis personalizadas para o Dashboard." diff --git a/engine/core/locale/ro_RO/LC_MESSAGES/django.mo b/engine/core/locale/ro_RO/LC_MESSAGES/django.mo index cfd8bd78045b1e4797e3e60e664a716a87e6f656..e57b4690071cd3193f2da8e0281b297634c2d38e 100644 GIT binary patch delta 15307 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 diff --git a/engine/core/locale/ro_RO/LC_MESSAGES/django.po b/engine/core/locale/ro_RO/LC_MESSAGES/django.po index b1948d23..e8a67c35 100644 --- a/engine/core/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/core/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Comandați produse" msgid "children" msgstr "Copii" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Configurare" @@ -1146,7 +1146,7 @@ msgstr "Date în cache" msgid "camelized JSON data from the requested URL" msgstr "Date JSON Camelizate de la URL-ul solicitat" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Sunt permise numai URL-urile care încep cu http(s)://" @@ -2799,6 +2799,134 @@ msgstr "Contactați-ne" msgid "About Us" msgstr "Despre noi" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Mix de clienți (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Clienți noi" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Clienți care revin" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Nicio activitate a clientului în ultimele 30 de zile." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Vânzări zilnice (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Comenzi (FINISHED)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Venituri brute" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Ordine" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Brut" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Prezentare generală a veniturilor" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Venituri nete" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Impozite" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Returnări" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Venituri brute" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Fără dată" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Venituri (brute, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Venituri (nete, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Returnări (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Comenzi procesate (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Cele mai returnate produse (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Niciun retur în ultimele 30 de zile." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Cel mai dorit produs" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Nu există încă date." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Cel mai popular produs" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Linkuri rapide" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Nu există legături disponibile." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Livrat vs Digital (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Livrat" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Principalele categorii în funcție de cantitate (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Nicio categorie de vânzări în ultimele 30 de zile." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Administratorul site-ului Django" @@ -2807,91 +2935,6 @@ msgstr "Administratorul site-ului Django" msgid "Dashboard" msgstr "Tablou de bord" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Venituri (brute, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Venituri (nete, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Returnări (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Comenzi procesate (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Prezentare generală a veniturilor" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Venituri nete" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Impozite" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Returnări" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Venituri brute" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Nu există încă suficiente date pentru grafic." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Linkuri rapide" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Nu există legături disponibile." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Vânzări zilnice (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Comenzi (FINISHED)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Venituri brute" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Ordine" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Brut" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Cel mai dorit produs" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Nu există încă date." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Cel mai popular produs" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3110,7 +3153,7 @@ msgstr "" "Dimensiunile imaginii nu trebuie să depășească w{max_width} x h{max_height} " "pixeli" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3118,7 +3161,7 @@ msgstr "" "Gestionează cererea pentru indexul sitemap și returnează un răspuns XML. Se " "asigură că răspunsul include antetul tip de conținut adecvat pentru XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3128,17 +3171,17 @@ msgstr "" "Această funcție procesează cererea, extrage răspunsul detaliat corespunzător" " al hărții site-ului și stabilește antetul Content-Type pentru XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returnează o listă a limbilor acceptate și informațiile corespunzătoare." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnează parametrii site-ului web sub forma unui obiect JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3146,11 +3189,11 @@ msgstr "" "Gestionează operațiunile din cache, cum ar fi citirea și setarea datelor din" " cache cu o cheie și un timeout specificate." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Gestionează trimiterea formularelor `contact us`." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3158,15 +3201,15 @@ msgstr "" "Gestionează cererile de procesare și validare a URL-urilor din cererile POST" " primite." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Gestionează interogările de căutare globală." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Gestionează logica cumpărării ca o afacere fără înregistrare." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3174,31 +3217,31 @@ msgstr "" "Gestionează descărcarea unui bun digital asociat cu o comandă.\n" "Această funcție încearcă să servească fișierul activului digital situat în directorul de stocare al proiectului. Dacă fișierul nu este găsit, este generată o eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid este necesar" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "comanda produsul nu există" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Puteți descărca activul digital o singură dată" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "comanda trebuie plătită înainte de descărcarea activului digital" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Produsul de comandă nu are un produs" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon nu a fost găsit" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3206,7 +3249,7 @@ msgstr "" "Gestionează cererile pentru favicon-ul unui site web.\n" "Această funcție încearcă să servească fișierul favicon situat în directorul static al proiectului. Dacă fișierul favicon nu este găsit, este generată o eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3217,11 +3260,11 @@ msgstr "" " index a interfeței de administrare Django. Aceasta utilizează funcția " "`redirect` din Django pentru gestionarea redirecționării HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Returnează versiunea curentă a eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Returnează variabilele personalizate pentru tabloul de bord." diff --git a/engine/core/locale/ru_RU/LC_MESSAGES/django.mo b/engine/core/locale/ru_RU/LC_MESSAGES/django.mo index 595a063bf3eae0f1ca4ce8407d951c0c7b166227..5abeee3c23f019f83dc0cdc399c3ca30a858f3b6 100644 GIT binary patch delta 15527 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 delta 14482 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 diff --git a/engine/core/locale/ru_RU/LC_MESSAGES/django.po b/engine/core/locale/ru_RU/LC_MESSAGES/django.po index d0b5671e..57e763d8 100644 --- a/engine/core/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/core/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Заказанные товары" msgid "children" msgstr "Дети" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Конфигурация" @@ -1145,7 +1145,7 @@ msgstr "Кэшированные данные" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-данные из запрашиваемого URL" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Допускаются только URL-адреса, начинающиеся с http(s)://" @@ -2787,6 +2787,134 @@ msgstr "Свяжитесь с нами" msgid "About Us" msgstr "О нас" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Ассортимент клиентов (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Новые клиенты" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Возвращение клиентов" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Отсутствие активности клиентов за последние 30 дней." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Ежедневные продажи (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Заказы (ОКОНЧЕНЫ)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Валовая выручка" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Заказы" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Брутто" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Обзор доходов" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Чистая выручка" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Налоги" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Возвраты" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Валовая выручка" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Нет даты" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Выручка (брутто, 30д)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Выручка (нетто, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Возвраты (30 дней)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Обработанные заказы (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Большинство возвращенных товаров (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "За последние 30 дней возвратов не было." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Самые желанные товары" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Данных пока нет." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Самые популярные товары" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Быстрые ссылки" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Ссылки недоступны." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Доставка и цифровые технологии (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Цифровой" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Отправлено" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Лучшие категории по количеству (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "За последние 30 дней не было ни одной продажи в категории." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Администратор сайта Django" @@ -2795,91 +2923,6 @@ msgstr "Администратор сайта Django" msgid "Dashboard" msgstr "Приборная панель" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Выручка (брутто, 30д)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Выручка (нетто, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Возвраты (30 дней)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Обработанные заказы (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Обзор доходов" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Чистая выручка" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Налоги" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Возвраты" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Валовая выручка" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Пока недостаточно данных для построения графика." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Быстрые ссылки" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Ссылки недоступны." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Ежедневные продажи (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Заказы (ОКОНЧЕНЫ)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Валовая выручка" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Заказы" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Брутто" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Самые желанные товары" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Данных пока нет." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Самые популярные товары" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3099,7 +3142,7 @@ msgstr "" "Размеры изображения не должны превышать w{max_width} x h{max_height} " "пикселей" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3108,7 +3151,7 @@ msgstr "" "Он обеспечивает включение в ответ заголовка типа содержимого, " "соответствующего типу XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3118,17 +3161,17 @@ msgstr "" "обрабатывает запрос, извлекает соответствующий подробный ответ карты сайта и" " устанавливает заголовок Content-Type для XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Возвращает список поддерживаемых языков и соответствующую информацию о них." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Возвращает параметры сайта в виде объекта JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3136,26 +3179,26 @@ msgstr "" "Выполняет операции с кэшем, такие как чтение и установка данных кэша с " "заданным ключом и таймаутом." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Обрабатывает отправленные формы `contact us`." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" "Обрабатывает запросы на обработку и проверку URL из входящих POST-запросов." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Обрабатывает глобальные поисковые запросы." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Работает с логикой покупки как бизнеса без регистрации." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3163,31 +3206,31 @@ msgstr "" "Обрабатывает загрузку цифрового актива, связанного с заказом.\n" "Эта функция пытается обслужить файл цифрового актива, расположенный в каталоге хранения проекта. Если файл не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "требуется order_product_uuid" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "заказанный товар не существует" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Вы можете загрузить цифровой актив только один раз" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "заказ должен быть оплачен до загрузки цифрового актива" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "У заказанного продукта нет продукта" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon не найден" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3195,7 +3238,7 @@ msgstr "" "Обрабатывает запросы на фавикон веб-сайта.\n" "Эта функция пытается обслужить файл favicon, расположенный в статической директории проекта. Если файл favicon не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3206,11 +3249,11 @@ msgstr "" "администратора Django. Для обработки HTTP-перенаправления используется " "функция Django `redirect`." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Возвращает текущую версию eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Возвращает пользовательские переменные для Dashboard." diff --git a/engine/core/locale/sv_SE/LC_MESSAGES/django.mo b/engine/core/locale/sv_SE/LC_MESSAGES/django.mo index 389559a9e0b1ed916308cc8d8e75cab5b6457a8b..b0cd46f41946ce43eaf04c5aa57cb7b212355cd1 100644 GIT binary patch delta 15280 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 diff --git a/engine/core/locale/sv_SE/LC_MESSAGES/django.po b/engine/core/locale/sv_SE/LC_MESSAGES/django.po index 67da0e1e..bf18e158 100644 --- a/engine/core/locale/sv_SE/LC_MESSAGES/django.po +++ b/engine/core/locale/sv_SE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -131,7 +131,7 @@ msgstr "Beställ produkter" msgid "children" msgstr "Barn och ungdomar" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Konfig" @@ -1118,7 +1118,7 @@ msgstr "Cachad data" msgid "camelized JSON data from the requested URL" msgstr "Cameliserad JSON-data från den begärda URL:en" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Endast webbadresser som börjar med http(s):// är tillåtna" @@ -2752,6 +2752,134 @@ msgstr "Kontakta oss" msgid "About Us" msgstr "Om oss" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Kundmix (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Nya kunder" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Återkommande kunder" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Ingen kundaktivitet under de senaste 30 dagarna." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Daglig försäljning (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Beställningar (AVSLUTAD)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Bruttointäkter" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Beställningar" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Översikt över intäkter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Nettoomsättning" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Skatter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Avkastning" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Bruttointäkter" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Inget datum" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Intäkter (brutto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Intäkter (netto, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Avkastning (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Bearbetade order (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Mest returnerade produkter (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Inga returer under de senaste 30 dagarna." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Mest önskade produkt" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Inga uppgifter ännu." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Mest populära produkt" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Snabblänkar" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Inga länkar tillgängliga." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Skickat eller digitalt (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Digital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Levereras" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Toppkategorier efter antal (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Ingen kategoriförsäljning under de senaste 30 dagarna." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Django webbplatsadministratör" @@ -2760,91 +2888,6 @@ msgstr "Django webbplatsadministratör" msgid "Dashboard" msgstr "Instrumentpanel" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Intäkter (brutto, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Intäkter (netto, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Avkastning (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Bearbetade order (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Översikt över intäkter" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Nettoomsättning" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Skatter" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Avkastning" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Bruttointäkter" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Inte tillräckligt med data för diagram ännu." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Snabblänkar" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Inga länkar tillgängliga." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Daglig försäljning (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Beställningar (AVSLUTAD)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Bruttointäkter" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Beställningar" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Brutto" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Mest önskade produkt" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Inga uppgifter ännu." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Mest populära produkt" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3061,7 +3104,7 @@ msgstr "Parametern NOMINATIM_URL måste konfigureras!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "Bildmåtten får inte överstiga w{max_width} x h{max_height} pixlar!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3069,7 +3112,7 @@ msgstr "" "Hanterar begäran om index för webbplatskartan och returnerar ett XML-svar. " "Den ser till att svaret innehåller rätt innehållstypshuvud för XML." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3079,16 +3122,16 @@ msgstr "" "bearbetar begäran, hämtar det lämpliga detaljerade svaret för " "webbplatskartan och ställer in Content-Type-huvudet för XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Returnerar en lista över språk som stöds och motsvarande information." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerar webbplatsens parametrar som ett JSON-objekt." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3096,11 +3139,11 @@ msgstr "" "Hanterar cacheoperationer som att läsa och ställa in cachedata med en " "angiven nyckel och timeout." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Hanterar formulärinlämningar för `kontakta oss`." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3108,15 +3151,15 @@ msgstr "" "Hanterar förfrågningar om bearbetning och validering av URL:er från " "inkommande POST-förfrågningar." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Hanterar globala sökfrågor." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Hanterar logiken i att köpa som ett företag utan registrering." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3124,31 +3167,31 @@ msgstr "" "Hanterar nedladdning av en digital tillgång som är kopplad till en order.\n" "Denna funktion försöker servera den digitala tillgångsfilen som finns i lagringskatalogen för projektet. Om filen inte hittas visas ett HTTP 404-fel som indikerar att resursen inte är tillgänglig." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid är obligatoriskt" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "Beställ produkten finns inte" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Du kan bara ladda ner den digitala tillgången en gång" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "beställningen måste betalas innan den digitala tillgången laddas ner" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Beställningens produkt har ingen produkt" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon hittades inte" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3156,7 +3199,7 @@ msgstr "" "Hanterar förfrågningar om favicon på en webbplats.\n" "Denna funktion försöker servera favicon-filen som finns i den statiska katalogen i projektet. Om favicon-filen inte hittas visas ett HTTP 404-fel som anger att resursen inte är tillgänglig." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3167,11 +3210,11 @@ msgstr "" "admin-gränssnitt. Den använder Djangos `redirect`-funktion för att hantera " "HTTP-omdirigeringen." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Returnerar aktuell version av eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Returnerar anpassade variabler för Dashboard." diff --git a/engine/core/locale/th_TH/LC_MESSAGES/django.mo b/engine/core/locale/th_TH/LC_MESSAGES/django.mo index 9851644dca15327b1d758aa46bbd822dc59f3689..28908b02112f252994c65d5c6b796c2cc3fb9fd6 100644 GIT binary patch delta 15477 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 RBa#=|$*}j`LEfg1{ts!|2DJbH delta 14467 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 diff --git a/engine/core/locale/th_TH/LC_MESSAGES/django.po b/engine/core/locale/th_TH/LC_MESSAGES/django.po index 014d01fc..2384c1c1 100644 --- a/engine/core/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/core/locale/th_TH/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -131,7 +131,7 @@ msgstr "สั่งซื้อสินค้า" msgid "children" msgstr "เด็ก" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "การกำหนดค่า" @@ -1112,7 +1112,7 @@ msgstr "ข้อมูลที่เก็บไว้ในแคช" msgid "camelized JSON data from the requested URL" msgstr "ข้อมูล JSON ที่ผ่านการคาราเมลไลซ์จาก URL ที่ร้องขอ" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "อนุญาตเฉพาะ URL ที่ขึ้นต้นด้วย http(s):// เท่านั้น" @@ -2724,6 +2724,134 @@ msgstr "ติดต่อเรา" msgid "About Us" msgstr "เกี่ยวกับเรา" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "ลูกค้าผสม (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "ลูกค้าใหม่" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "ลูกค้าที่กลับมาใช้บริการ" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "ไม่มีกิจกรรมของลูกค้าใน 30 วันที่ผ่านมา" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "ยอดขายรายวัน (30 วัน)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "คำสั่งซื้อ (เสร็จสิ้น)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "รายได้รวม" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "คำสั่ง" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "กรอส" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "ภาพรวมรายได้" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "รายได้สุทธิ" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "ภาษี" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "การคืนสินค้า" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "รายได้รวม" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "ไม่มีวันที่" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "รายได้ (รวม, 30 วัน)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "รายได้ (สุทธิ, 30 วัน)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "การคืนสินค้า (30 วัน)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "คำสั่งซื้อที่ดำเนินการแล้ว (30 วัน)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "สินค้าที่ส่งคืนส่วนใหญ่ (30 วัน)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "ไม่มีการคืนสินค้าในช่วง 30 วันที่ผ่านมา" + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "สินค้าที่ลูกค้าต้องการมากที่สุด" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "ยังไม่มีข้อมูล" + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "สินค้าที่ได้รับความนิยมมากที่สุด" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "ลิงก์ด่วน" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "ไม่มีลิงก์ให้ใช้" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "จัดส่งทางไปรษณีย์ vs ดิจิทัล (30 วัน)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "ดิจิทัล" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "จัดส่งแล้ว" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "หมวดหมู่ยอดนิยมตามปริมาณ (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "ไม่มีการขายในหมวดหมู่ใดในช่วง 30 วันที่ผ่านมา" + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "ผู้ดูแลระบบเว็บไซต์ Django" @@ -2732,91 +2860,6 @@ msgstr "ผู้ดูแลระบบเว็บไซต์ Django" msgid "Dashboard" msgstr "แดชบอร์ด" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "รายได้ (รวม, 30 วัน)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "รายได้ (สุทธิ, 30 วัน)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "การคืนสินค้า (30 วัน)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "คำสั่งซื้อที่ดำเนินการแล้ว (30 วัน)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "ภาพรวมรายได้" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "รายได้สุทธิ" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "ภาษี" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "การคืนสินค้า" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "รายได้รวม" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "ข้อมูลไม่เพียงพอสำหรับการสร้างแผนภูมิ" - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "ลิงก์ด่วน" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "ไม่มีลิงก์ให้ใช้" - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "ยอดขายรายวัน (30 วัน)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "คำสั่งซื้อ (เสร็จสิ้น)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "รายได้รวม" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "คำสั่ง" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "กรอส" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "สินค้าที่ลูกค้าต้องการมากที่สุด" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "ยังไม่มีข้อมูล" - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "สินค้าที่ได้รับความนิยมมากที่สุด" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3025,7 +3068,7 @@ msgstr "ต้องกำหนดค่าพารามิเตอร์ NO msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "ขนาดของภาพไม่ควรเกิน w{max_width} x h{max_height} พิกเซล!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3033,7 +3076,7 @@ msgstr "" "จัดการคำขอสำหรับดัชนีแผนผังเว็บไซต์และส่งคืนการตอบสนองในรูปแบบ XML " "โดยตรวจสอบให้แน่ใจว่าการตอบสนองมีหัวข้อประเภทเนื้อหาที่เหมาะสมสำหรับ XML" -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3043,16 +3086,16 @@ msgstr "" " ดึงการตอบสนองรายละเอียดแผนผังเว็บไซต์ที่เหมาะสม และตั้งค่าส่วนหัว Content-" "Type สำหรับ XML" -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "ส่งคืนรายการของภาษาที่รองรับและข้อมูลที่เกี่ยวข้อง" -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "ส่งคืนพารามิเตอร์ของเว็บไซต์ในรูปแบบอ็อบเจ็กต์ JSON" -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3060,11 +3103,11 @@ msgstr "" "จัดการการดำเนินการแคช เช่น " "การอ่านและการตั้งค่าข้อมูลแคชด้วยคีย์ที่กำหนดและเวลาหมดอายุ" -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "จัดการการส่งแบบฟอร์ม 'ติดต่อเรา'" -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3072,15 +3115,15 @@ msgstr "" "จัดการคำขอสำหรับการประมวลผลและตรวจสอบความถูกต้องของ URL จากคำขอ POST " "ที่เข้ามา" -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "จัดการคำค้นหาทั่วโลก" -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "จัดการตรรกะของการซื้อในฐานะธุรกิจโดยไม่ต้องจดทะเบียน" -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3089,31 +3132,31 @@ msgstr "" "ฟังก์ชันนี้พยายามให้บริการไฟล์สินทรัพย์ดิจิทัลที่อยู่ในไดเรกทอรีจัดเก็บของโครงการ" " หากไม่พบไฟล์ จะเกิดข้อผิดพลาด HTTP 404 เพื่อระบุว่าทรัพยากรไม่พร้อมใช้งาน" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid เป็นข้อมูลที่จำเป็น" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "คำสั่งซื้อสินค้าไม่มีอยู่" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "คุณสามารถดาวน์โหลดสินทรัพย์ดิจิทัลได้เพียงครั้งเดียวเท่านั้น" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "คำสั่งซื้อจะต้องชำระเงินก่อนดาวน์โหลดสินทรัพย์ดิจิทัล" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "สินค้าตามคำสั่งซื้อไม่มีสินค้า" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "ไม่พบไอคอนเว็บไซต์" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3122,7 +3165,7 @@ msgstr "" "favicon ที่อยู่ในไดเรกทอรีแบบคงที่ของโปรเจกต์ หากไม่พบไฟล์ favicon " "จะเกิดข้อผิดพลาด HTTP 404 เพื่อแสดงว่าทรัพยากรไม่พร้อมใช้งาน" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3132,11 +3175,11 @@ msgstr "" "ที่เข้ามาและเปลี่ยนเส้นทางไปยังหน้าดัชนีของอินเทอร์เฟซผู้ดูแลระบบ Django " "โดยใช้ฟังก์ชัน `redirect` ของ Django สำหรับการเปลี่ยนเส้นทาง HTTP" -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "ส่งคืนเวอร์ชันปัจจุบันของ eVibes" -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "ส่งคืนตัวแปรที่กำหนดเองสำหรับแดชบอร์ด" diff --git a/engine/core/locale/tr_TR/LC_MESSAGES/django.mo b/engine/core/locale/tr_TR/LC_MESSAGES/django.mo index a299e4e894c9dda738f2ceb8ba7055c18e593c1a..37468013e23ed9ff6dfc74526d0905ab75b99d97 100644 GIT binary patch delta 15277 zcmZ|W2Y6IPzsK=eIs^!z6G}F82%&{uL+B+T^s2BV0YV^w5CTDA=^dm>R{@cth=@p6 zkPbG~R|OOl6%<7gL9xO8{&of~&wbu|o@es;PdVqznR0d$^z_F$FI~v#zg#%S3d8YY zHeMAv6P9tNA;#?f$G3GhUL;ikaV{&8eCdTB$U@VEDSPG*sC&pr7 z?15a?48_{v?4PAIgd*jNeA#a4mu^R^CaLkJnP$M=COW;CO$2X(Sdl~(7(i|svn;YipWK3`J zCp#O{hkV&C#tK95~vT(Uj*(X8}__KEs%qSS!ao@1+|LD;W3_Y3TEfY+e|Vh zlJX8rp%zmnR>l{w4xYl=_$TJU>Qn5KM_~o>1F#zRH-3T|6l_Bc&8Mgf-p3|bb*g<~ zBw$(clb!2O?GB*c7vG{rFm#&TZnaQD-X4Q-DQdBAL@mzkn4kNbqXfF}`=}@W3H#vh z$c{2`)9rg;J+>kLC2ESw&oCwe>!Ws!4-4WrRQ(KOu*^!VghgiBDQJvZ6D`qSj3Aak zCnTWeJQLNCIT+|Us>d6#5bnnkc-GZlb>+96*=N})D~h4C3qy6V33@ROt7FZnv(B)TQF7n$^Pr3_r{@bYc!By0n z_+>WZuP41nf!+hz=GdMUL^WuPx^N8YhOw^v3DjHx>0S^32jmBJE3me9W??z=U7zxnOF(epr-5y zY6{Q0`tMOw;{TUGJr9{@Z(I@8ktV1Hov;)>>73x|m!i(wi0aTD)Gj)VT9h|XH!MEi z<|DBY`F_|Kmm&|~H}4YY2`)KrqI&!Qb%8<)>=RW%b*LHY#__0;N zAB}p#*{G3Ng1XQu)R1mRb?_@xhx4wmQxk$}R~|JY^)LcQu3-FY5v-y>b9x#(;uqKg zD?e**n1q_sG%SphumLW{NIZp6co(x{wUxFbk*M=}V`)ru`6;OHhKu|J^$2#LE_@ZM z;9Y0gRd%S`qCO*rx%^D@lHcOWPh)NJ*HHVu#A^E~*Bryh`%r6ZDr)LpL|xB+l0ZHA z7QL8#jUAebs25H=YUp}lC=Np{x@j&yAKR0E$(8@?`~wS8uJ38OPB0e7qNoRrKt|ke zS`d_^pgU@)Qf!6ELe23)tclA}PjC$T;Wcc4(d+DLACGFc0kw8MM0Ma()D6GGV7!OA zPoDMq@~Zt$;H4l6YhX{*iBnPgeleE8^{A0LfT4H+)xkSh2>(W%pZ_`gq>WKGjK@Ye z7>nX+)OBCQAnpHy1iHZ~EREk{eKgP8RouYY0<}onVMFYXT6{}UYv_n8zl&|iN4{W3 zEFHU%Ux9idT}O4~H}q?$@@%kkS`f8uN}z5Oh8n6U)QGfl7Grh}E&>i*~9;pq^+p zs{LZDi5pRi@;tW2Je%!xyP$T-Ow^ir57og>`~>Rp4b%dLBH!QTr=W&# z6Kc*6qt?!C)CdG`;hQanVh_y3Hh32GVhi4C7imBAlK0Od&|=tvn(ITT8=OT=$+uVs z3vIK;U={Kis1aG`Jmt!7V-w0lx7%&m3-yNeqZaE<)GqlFxxU}zd)Z#F0am5rNvw{u zUH)~9Ab$yU;oPqn(;Q>4E>1ypa5rk3edo%{?XdZ7sHvHUYPa9{W1yV*FZ-&Uvo5G1 zosLa$A4cIF)Qzg{wA*q3>WP-1E_f8%<8Rmso4#iAlTaN!fzgye*~8mZl=HFjaY=AR(P0ehqJ*phrFtdH|h7e0a&@g_FI!Uye>cg39K`(qFe z#!@&EHIlQiG;YWIcoKELkFgg1>LBKKXP`!AE*8eUSQ^iw9^@Kor2Ii|*~L{C^(13Z9T<uIQt%tbxnMl6P} zqS_tDa`*v;MBYc1hS#yEuKQsd^DLGUrhv_77_AE5Bp6-2l{+ug2-z-y9*ROF^4scFx9Q z4EeRF^2^v6Lyp_`#1p6+EXT6=HtNZ~M0Ftl347zl7(qS(6FtT}gGI^TIcfhkl=l>E zxxd+T+79h&s3ARsy6`D1kKbWV%yY)hT|vxFJ_>VVLtKe1QB(98hT%6DirLTd*28kB z5&j$t;C1w?;avi)+G6MI{;h?h=y5C54R*e3zt`_YjmQVs1+%?pcTHEkpN%zxKFTvc zv?KI6CXvs6-tMYoY)yU}>H%+_XZ-bKK_A(khd9e(1m)FmGWNoX_zCLIX@6oSzWRy% zOsMp!{f09b|DxUN$S9i~pYg=B%lO>BlBZwbWkvZpq`xNdBIB3>VhLN3a6t+XfNi)!x)06P$P5!Yhcc+w!SXrC*KS;r5#a2oq%<4Dz3oY*ckmC zzp;OGo{m8j)c@8#VJpOJATX3wjFcgQ!#>(tl1&UVGn zADFsq{3djRn0(Mpe*4ki|0@4%|I)eV7yjXaibB8gl(_CT+k_MPbG28=-}&AC$#l~_ zW4_`BEC1rjDWC8+i;Z@h|FNHzAKtfrqAm7-5u$#+@tAjUug7C{(r!j}k2y=eUM`RM z*Teij$n7y3srWaqC-4Wx7xH_|0U9K-a`dEOg*<^zvqq>9=!m_sFKXy_qK5JdjKSg| zp1_p$LwyR4M2+Ai%#LeOQ~Eqca(}a#pe}xlT5P!rdjfM8jJiNI)Co;cYaklct`m;N z9yo*!AIHk%s}%JF7H=HpAfJGGlMY9%t*0@V2VRE$J_MVJdjgB;?~d7OVeNl^RChAjjFKY4LbcUDqn0WHNumry3e5*9$Uxk8CDQJNA zu_e~$Z{%t?&bbg8BkhSyOeavSwz_fQ?nU)B@&Fe-%_p+=a1t*{?%Ms?%?_QCja zeujczYdQM_`%rU!12y#7!)(4N?jj$F8saOcq0Qy>1l|WhsNEBeA!>)}SW8rgd!VlO zBrwB4-7bI9<-b5(;1?{7f1&nu@o-PzW3)Dgk?)T6Fda4YTToMU z2@7DJ@}9tUE{@g6mqU%9zXO489Ea+$4|T(FsE$oR4dt__8$XZbalgxdfja+p)Q$31 zuv1V1Ym;w)Dj$X#p>e3Gor+x7Z&nj%Rc>_dM>YHqb>bJOp}T?V;NKXI!4>UpsDru4 zH$}CJL2c6>&LOC^F$VPjlTo{973S3E|3(5m!B$ky4q_Sn78RbY5jDqWu_4~T z4p_d5-4!XQ2iSpn@*}8@e1N*%_o$BCMRlw|Rcl4`YZW#nknyMsB%!7t19id_)CE^! zD8A;(&!MK`s>|o7W~Zz)YRy!`IIN3WoKs!>o2UmnUXA^)?eY@^n!EeX;Ocfxy{L{< zL0vEk>tZukpN1{SXQCF{9#s2l7=gF3EtcbhKpjs+J%}GQGOHr|c2RAnK#Og^Yj6tH zp|7wR{)(|!lTVzF@oCidiI22X*Bk4TABkFw8?g&+!(RBitM5|No;MBk9+~4Os7kOC zb)(O*GZy0?0|VO;wb;g?Mrt`~`@Mu(q-U@KUc)5JSKAZ#OX_GGMgBUfqrK|b7u^7C zLp}vH0{+(s^yG(8Yv3G4<5yT6!|U3i?}8eUUZ^+bP;7^psJT6i`i!`Z8sf+(I|A)c z53~$5g;!ALe~&zn-`pe6ljo~vw^@6fM1CCR#@|qL{5R?XP3qh2(;AicVMQE)&G8x3 zwtNp8<8^0v15e;<`T*2}&BGen|9c4PP;fO+!1um}_J*yn0p(LrbGsLH;!T$?*~nfn z4t4${)FRyJ%D+N&D7dlxtcXQz^X{nkz;Mi?{Xc_1t8*c0ZnmO^`lcG-ebn6NZer)M z6l%YRp~~x`rmhX@J<$)f3$jq#cP45LtiwjQ5%oZq(4R^W($vn~6x0(RM19=eMs=WG zGrQQDqvozZ>cS&X9i580@lwUFG%H&BbXRC9Y?Bx>Jzk4? zp=?22=nQJeJT2^MErG4cS454#a992msv~pIi>pz)<^XC@UO;WjqAl&azclJaSE(iY zU#qts1$rYTV_RH;?eQ~A#IR_)O=qCKQ0zc`N`|zub6Ey8#EnoR)&h0I_Nb|eLycSl zs^eo_`7A#{;K^NsEvR?(UQ`c1K+W-G)QPuHpI+Hx>?$vS8lftvMb#X&>ieNOxD0ij z=TJkw19hEqsP~5dGJ&QbTWdR~VWQE2Vg;G#2j)@qBvr$8R5cS34B5I0q zw6Slv4yav|h7)lOR>fj%1NHpOXf;qqrOn*2Xl3!8Vb z`*sv+cWiQALcM^B#Mq1*PnsRROw?i_y zuiXxNFp`Q3sKuDOpItO1P^-TQCSXTY{SMT&I*d8+k}LlT^&-24`VcGJ-%f2P_9ovI z^}cw?PoP!&3TpN4Ms1I`QH$q$)c*e4)rSnQtGz60TQ)@P`>v=VPC-q{9^8!o;ym0m z(0(JT`Goxqt3Otz+`opPGr>{RjSD;vRQl~=+tf&EWVgo1d~lP01U=b%2l zwxK%mEhgbD)RgodY8Tl|)EjaOYLWhqMKR|v`#_yFqM46+(Hup+VE#nCKq8WD{SefMt->XE9M!(}2)hOrq26?FqB?vVQ!qTmu7!mu z?0;S09SYRLpRpz8A8CiY3)Uu|<=l=Q@;db5s+5hVAT1+qMe-8QC)K1;x@-6ohEu0w zrYoC8tS>NHe`W$FRHI@BE0F038aQ6&=LQ$|pgcSAWm{#o*#7bfNW~u4s5J3>8ssHSpscbh-%Y+X z@oCZ@#Di#8gLo$D=!yE2Y=rIIIojtsA}HgtD{$y~MwDo8J6* zhIEElD_?KMQ`D~_t#R!>!!$MK2uCeo9opME22*wpCzE1GEdIdJkn%_yn$DX4ugHAq z3iReH>l&))ebTcEICwFdR-}Ez14z%1qPdulvZ6Q|<8deDuMz9WBL5P8M*4s<{id~u zvijJXr1fIzQ1CZaL>)UwtBA+rbEFqIu>@A5YzBVpF0PlBj(emS%BGOY5$mJ%2G z^*HBEJV#0(E=BSxCT->YW5yFqBaNZr8gAo69aG7#BW}{70(b zSVH_8b$x6$@N)xYXCKQy9u}ca#|MG&x3Q@~;T+;#u5u|}BR>}#a`E%TDa3~{C;24e zWBBkGORTT*FH+u*q~ldmm}_%E^(1{S&@r4g{^$5n+BM)iM&Q3@w$*$OBtOnw=%8zJ z8TXN*NV!N~(D)W<5NR%X9jTo20!be>dhheyBk*qls=G}pLVh0gYqkEODJVzg;lX#s zM@JZu{#)O)MP&f(lMR5xVzbHVjWLAeZ+-{f5CT26-fh0503%V z>96jM@qzZgj!_gmNm}48IvYoj2D$p#v`HgwfbYAquEax$JGpbn2986NJ?Y{PiC-c9 znxro=ZD~7;luF!&I{yy@lPTCliXz@Xnn-F*o-ZzjPh7K;6hdlD*%f?(dL4O*2T*no z1BdfhGV6%-jaY{sGF5rnt|#gEk$f-B|BD1M6c!-8Kt%=el~CVM?vi@wL{fWV9f`DS zN#d)$`Igj_SjQU{^OI9}NyTYXi}XG5^Z58tEF1IRjgk;9GMviV?qZ=h&Nc2%ob9m_ zx6=MYca;gapVYhhL=cKvB6FG4isV{jQPhblhnq96;*^;CYq)$l4A1mKT{E^N3 z%`jJyM5C2l^mX#vNb#gal$~|;gn@qtT!_O-LujjG6=@=EGD&Zd3I{;KR3`X8V`>+S6+hhvF_&2PR&H)JjIDkaSCY~Wt;HvV;E&`Q_$75SKafZ=Qytm zsU_**ag?|@nRiGHNq>@W;p$T!Yv-TjGUMEtb;;M{21CfVayROXtI79sZJu}K$~GqH zA-=&)oZHA+$m#=_ct8?dG_4FA?jQLVh9XSyH;I3;h2dw%Y!j=Q6)?QY{*dcMacD zIq?JdnYzD7?Z`*Fi~mLW8RDUo&BAwG`4ye#jv18cf7yAH{3+5eYGa?D*CDa~KcBbV ziDUyuPk#POS#I2qrSTvsj<&y{jy$A~NpYlww8=-Ejs>Lhr0b-Pq+rS`Qoo#};|BT@ z2%1pwk1Gt+@Z+Kj7Q6Dgv}sOSLwcIJ+LTu%{=wB}BTlA#g*#8gKNc%|om7?fhe-$Q zdH%pZy=QWA1O=bcU=8UsX({^^QuO;H?@}JF(jClT8MBawQK- z&hU-gU7^|5kP_)h8RODZlM=n7)6){iC1i}X4VRsWZRJlI?@f4k4HK8@&MjSTp`DkGE&q=!Z{~%+n0X@{SqjOU+P!?O656+R`;F_Sm5l&u1j1Cyz`@ z_on#LkMBD1{PA6*j_-1f{yn{p0UZ$-(3NM`77g_!CV7(*X`bpmb}0SWp;Vn1xZtv? zR|fj~C8Z{NM?H2?(<3ca!#9kk-sEFjl2f@riXG`>MmodZ(VLZ)QuDvIeRMJJP@ivP zGQ*f`8~603Cl6Qn*bpyUbfs*`|8~b@`n~(yl^v16bo|jJ>HFT)0-g^&;Ypb($yvS( y)58UJPy^3xpKfonV9x_j<=Etu3}3pB$9XfIf#8v{k{>QLco4MxL&pGC1=GZXin3%aYx4CbUE8>UTVi*c3=ai$;6qQaT zN1|LIDMaN=NyPfU-oMXhkAMIF_wo36ey;EL`?-I={p!NGfI}w(d_RQbT4lJ_^(XcBnzhbO0<;ai5 z2u#5+oQdzy$#uvpOs8ggkI$IJMCy~V(RtQcAkOwY9@Uc+)QkIK0UU>waR#R1RxFEw z&5fDvp$rpoOABKdG;=TBn2s3P(wM(+8t&%(W_&AS@>8*5Yh!q~solo*d>m@10utod>Ym8g{b?|kT#ju@MGTh8~VDFvHdAylF9J2GbSE; zw6_mjpJ?5NS_8YW2p+_8cplZj$EdmWbTB3e15ousP$NCI4a!^eHt8Kgb^joE|iQjIyv13C_5 z8c3HO#J$*PuramBuQ3!!_rZIlmkcweC+V5PjcLpCE{tFVNLLzd8~A~53=4^Z!Q+hC zOTn4(#>~Z~6YTa1on#kVX=Ij6Bu3ywtb*%Ni|Zh2WU?>>i%hm7Ss67o4NuEGYF-iBH{JCRPBw^7@y_!K)ODbL#b#-bMA1k~c2fd{C!5OdP8#A%EQ z`JJXSUFbvYn%A+8_WubYwaLiAX`s2Rhw5Q0R=`218y8@8eA|^@a`}NwAzR99kCFu!$91D#V`}K_>Q0+d=}N?`4G79gE~MX@{Tfuk@O zeW->kM}Nan4c>u;@iQ!rCtdjsm;aA5Xb#WNoRuM>p{s&wVLW;<86$BD*2T@poS8E& zKhIqI;(DkNi^uZV4g+uus$mmQ4W5H~-)fiMIG6F)s>~!qJ$)bbfJ3Muzkym4f1`Tp znP>NTepJJXqsm*L9^4M~!tO4A2x_j!qK149Y6R0!@5`9S`0GV`T*jy9C4C(A;JcU$ zAEJ7gg?d5m`F2W*q3*AadQl@({SFw2T~IIXg&Kho&gW3|m->iQBC;7ZXNOU9c-~d` z9W^Dn7uc4Eq1HkTR72uXb|6C(M^ zXoux6*;RNJ^`O~U2lruK{0-HxKQRuAFR=|yLG^4H=EkWmJqz{1beDb^^_(}bs`mdr zA`S2|ZpE;r_J&VTLw6XX@Dc`KXqug(FpMGH1=YYb)Es|`Rq!yXL-(*UhAy-3i9wwU z&!A63yO@aP?iKW6Ch9ymh3e5AOhnIeVdzi21Tu~L);i!lWvRZ;WE@ntVKO% zBWgr5Q4Rcc1>>(4hosxN2}4z^h8mG3SPds)E!>Dj@EdH4KVws@wbH(D3>F|g1w(Ki zM&lZ+fhVvYW?@dOyNdBwOQKiV8~b4?(xY8^A(kcmB1Yl6s0ZJ`2+VR;UTufE1L`wk zoJ%i7FX^{j{x?{g^c~c;_xfJ6pK`4+oQx5u#kB}Ece_vzJdSF}E%aj0OLk;xpbnfK zsFCZ7n!0hQMYq_cS7IB|Z@T;kPM=w0=PobmK_##lmO=G23N_?yumtu(4e2}#6gQzByccyoe2%5@ z1eU^ESReDQx7)6nvkhv*lCS{|L@mB`s5NxhXk?2t{vPNZK!z3?uoA&*hp zEcjJBr^Qjb#*2DU71Wf(qDJH?m)`@`fzha*Pj%&sQO{qCK2^wY6*5ta=5s8G$6Wq( zEKd4w)OIYq!9F+^briS7qSzJn;1Q@bGzqn4mY^1A2CDu()cJ5=1LLn7kCCC4UqMy4 zhuS7j(2F%U+HIPInxZMF2kypjJb;7n3PxhWCOcKnpgOb+ReufE#2u(bd47|Rk5D4P zo9%prZG*HAAg^16LsGps^-DC)t>T>1l4y{o7P7v9eCjqR{5 zE<`nOKWYkZ+kBsi*kLnzqUI(YRq-?DpDw@hPCIAaP(%6x#^9$|51*i3RA-mnmV;0o zT8nz#5p08xu{pMULuuxJ9uc+lYmCF7H?4`N{H53mzruJ7dCPwB=#F~O8r0NXz^3Tk zZSU`gYUl>6fTyt%KEwhT{x)le_nR6-3S&p?jj31=KSJ&AV;F!xp>Dj6dfLl8 zJSM(l*Ty%fDS3!hvHrVmBvAKl!0PxlR>ptcW&E|6%I~!|w!!A0zQHmcau1 z?2D>lGtynKKBl7{d>AX@Ul@y}-m^VVL5<)*%#XvdBu;#f@z+qMk)bm^6NB(L>V@B9 zEqsJ|G4g%8SffxwIvPvh6l{yjQ9Zwa>OjB;wgc5rJ?@Sg+3A=Im-vWiXjWhdeuAa& zB&sKOP&bC|w~H$V)sv~H2Fygw^*R-k&g1B>EbRJ~(Z7Qe%C_yE;0U&#;che=zU zPDUrJiN{eDvrwzs`;lEEgHelf4C(}&jzw?-YJ~QnI`k37;7!ynsq(R1oFhqYg!CX(&o`kK*q9ON5wn%n%H^J4()rWA^igN;1gILZ=W zG3YG4z@12gO{?$hgA=eO>CvcN@iJ;^_F*18hMI~qsMY=x=EetD46{%jEP9Tw?0O*% zBi;N0KjVX*$w?z2*P!Sx4h8`6jVW)V^E{zG>zJhnfj4#sMfUwFbNB?kUWC#ZMIc+3&f zb8>pj6HE&5m`&s-272^6q0ijS>oMnAgq8OA{Ac`EWaJ{_57a*X8?`+Omht#cyf9S5s-yOM9O{AXP%r3>nxcuQ`xl|s z#s-(pbm_yW`@ct>C)dmPJpO%~v#iJeX;%irDQJdK*bg=ID^ZK^5b8+2kJ_#|!#(~F zul%SHtdDwe464B$P%j*SYS?JhNIs7`FJABwDNiKBWgJF5;0o$Rf1#!zm)GO}i>LxB zzbk5l2B6l!7}SI3p%!JDGXqucL)3kTQ6qO2)j;1bM9L9)jM@cd%X$0T-XE@}kQP#su>YS?R78b3kRzlb&P0Wu;!Q>nb|VGOE5Pv->G+%84+ zXdCK*AEAcw3~CN{_aYKr$_1MUB_L=wm-RMBpW6jTq^ zqI$jy)sX$D2cAYX>{kc)wZi3ihF<;N&!ML7hVwD%Got|irArM7MXePt`sxy?N<bhLczgFJUXpUxk)qCsa>Hp+;sdYEi8~H7vuG??E-_7{=lcn24pSvj0yK z8D7;co+goY4&$*t`8`k#OT+fK8oS{YSKf$E94)%BSQ#f`6?_@>qA#!==HQddza3G# zX#i@ZW>xpu?Uzo5R_VJ~0Z-y!e1Ma%PYsX%7td3u7q+NrPr3wbNje2J0_#yd-;O$v z_F)_z!$>Sx%MN`b)QGh35z&#^1zY1l)ZA`IeMnqF4RKg)I|B7kJ(`J{!>>^HpGNiQ zXH?H0U=56_&+L61?N z6^*0qT4{zl2fCp;@HA?1PDM@4D%4P)cjY%wBlRcxKmT(#u=_m-RS=GvyE>?YqBUw4 z3_e)fmw)Di>vp)~&qzgeU-g2k|sXMm98Q2Ct$3Ym>#BS54 zo3Q`&g<>rk`k2f@&1K%Ec8DvXhO8Rug;A)fi9xOUj;MzBclpntzvr%eCF-c&f@y1-M&&Mj5qlGQ6 zh8n5Ps1fRc+MdHP0as!Nyy)_M)#E*;Ga1RK8@HoIVmE3ikD?aYS?42EL&~(Y`7ND8 zor^Gz@?EG7+(vb?|34topNyo|b_Cu+EuyQap)c9S_M{7Hs0X4( zY7(k^JI3HutcBhLdwz68J!iH{@5MOMzoP0zw$-*}|MeuI?Xk>x2z3DIe+a1#b+In? zL%n!~OCLm?Xb(}JX0_XS{6FQ+Kpi~aVhb$Z-sAuO3wol?fvwmcuVb9{e^jEK)_4ZnVwoiSf}yDV?Wh<3j(SmaM?11puqWwrn2J%IJSGKKqfe1L zE+e6{E!gOMx%^{Tj`T&;r`W%!xeZLVe9B3#zPej_T?)BcIo2DK~ZV>^5U_2NfZ z5i9hvJx{=zq(`DUu+~RJpK{01i>9}&P!83Qju?TXup_R-IQ$v)fXaRB5cfirFGL;P z=TReZ1GW9`p$?{hQBza8uYJBRj)+dS-lz|qp{Vmw@@SWm&*?sV0-9AeM&Y#^|TXuaU$yZt5FU41_x{ZUnHVAi63Ye*?80uxe^QF z6%56Ds2&9lvWv7HYSDH=eGf=QeL-1^IuE|XPFQ)c{eCb7bIHLgIqpW?5I@wefoZ6dZZoREmvAH&9A?+TRMh=%qIS^*Y=#d}L*8h(U28*}FQU&w z!CJzQ9Q?yo7E6(-lWs7fxhilCAWU@e-;jIFCVvTkZgbDar1h{ugpQ>Dc4gvg@+P5v zCHao{AbgSZbG+ZMmCbq*`U>?D@$73akuxsMZu9?Ib)GzyiTQx=kg$++EDzg_FW`R6 zz8GE8p1k{Hyh+ecGv&y8M7%Qb@z`6x6g`#hsa2%XA&O>`eTnS%2}cPt$m4MLU+b|D zHH-U-lfFvWMaV_&RaZmRn(zdciRp&f*Po5tfpE z>px}hkQYa~MGi)+4Hb2<4LO}38DOd#@@Odpy55`UTa z4niH$8%TdnTvsS*T{=BKBD_uD6WxCmrtAe`A*6pKJVjbR|8^z5nlP2Hl`z&;Hy>jr zp_%4iS3URePpMRn^b_pkFJT^ukEXmZo+IyXP-IU#6wA4a(Pd?XYuvGyi5Mi zc#@#wzOgIQr?0N}H27|r;2{%cfApId>4(TVP z?-6tjCp`?GCFncCR6=g@4!GwvC!J21@6tr|{}B7kZ$t*U%p16!aFei){N6l3R~gbv za5P~AdD96mlQ)*Il6V}}$616q)G3N3$s0%big1U#Xk38fDa*bR`Nn2OP@wA*!bL^6 ziV{YV-^rh{|Fr&3oUae2*?%6SqBq@hb~zVe7WtQ5T6N~Tds^dJ(j~R(M-rK(Qm((K z{0G(|ETimcck|@zhu|T~s#3Nc%M%6?3X;~fim;J7qY3p1O9%@Ix&~7x9-HEK*n)gt z0*M+bII133)~Slb2ogx_fY0e1`I8DENiYkkEj=0fg4@^uf5*vWJxjbe@gk~2&{dFhQ$qF?MC3!lGvsZ=FI?GN?(IXU zOkQ`Ki>q)QyV)E#iNX zc*kY5$K$SUb{+XTp*(d{2zOPk^XEB27eWRhiGoHHv?uf-gcDklx0$kW_z`JcV+cPG z?~7-Y;jZQ6bs)Z&kVyT8r1f{@BX^&xW+qU^w|V1xz(1Y-Q`nUnHAn|jVLI`;u8cpH z%r~T;#a{Rl<+^TJ%og%b5|4KI_eu99ocZxpE_TX7f8Aih7o2HFM>HK%TN3b;=0O^ ze$~Z^nmWWk#YKcX#1CM93d-yAzcE3Vhm5;816#Vh6~xOCBKj~P30=rHe~)CsBHA!EmT2M$XeKf(L#;0c*mlg>tD z9-lnhlR5s`{hrLEX&FhGMUSrYWbXTFO=$YWpE{?Y1KWm=@eUh2 s=D_}`x_j{WQNz8H29F<}IqmYU8he`;_8j!=jSTTT@$Bso>RFQVKkDLVDF6Tf diff --git a/engine/core/locale/tr_TR/LC_MESSAGES/django.po b/engine/core/locale/tr_TR/LC_MESSAGES/django.po index 9452a1e7..cf5ca196 100644 --- a/engine/core/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/core/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Sipariş Ürünleri" msgid "children" msgstr "Çocuklar" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Konfigürasyon" @@ -1134,7 +1134,7 @@ msgstr "Önbelleğe alınmış veriler" msgid "camelized JSON data from the requested URL" msgstr "İstenen URL'den kameleştirilmiş JSON verileri" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Yalnızca http(s):// ile başlayan URL'lere izin verilir" @@ -2765,6 +2765,134 @@ msgstr "Bize Ulaşın" msgid "About Us" msgstr "Hakkımızda" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Müşteriler karışımı (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Yeni müşteriler" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Geri dönen müşteriler" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Son 30 gün içinde müşteri faaliyeti yok." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Günlük satışlar (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Siparişler (BİTTİ)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Brüt gelir" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Siparişler" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Brüt" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Gelire genel bakış" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Net gelir" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Vergiler" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Geri dönüşler" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Brüt gelir" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Tarih yok" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Gelir (brüt, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Gelir (net, 30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "İadeler (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "İşlenmiş siparişler (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "En çok iade edilen ürünler (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Son 30 gün içinde iade yok." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "En çok istenen ürün" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "No data yet." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "En popüler ürün" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Hızlı Bağlantılar" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Bağlantı mevcut değil." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Sevkiyat vs Dijital (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Dijital" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Sevkiyat" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Miktara göre en iyi kategoriler (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "Son 30 gün içinde kategori satışı yok." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Django site yöneticisi" @@ -2773,91 +2901,6 @@ msgstr "Django site yöneticisi" msgid "Dashboard" msgstr "Gösterge Tablosu" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Gelir (brüt, 30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Gelir (net, 30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "İadeler (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "İşlenmiş siparişler (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Gelire genel bakış" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Net gelir" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Vergiler" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Geri dönüşler" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Brüt gelir" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Grafik için henüz yeterli veri yok." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Hızlı Bağlantılar" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Bağlantı mevcut değil." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Günlük satışlar (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Siparişler (BİTTİ)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Brüt gelir" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Siparişler" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Brüt" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "En çok istenen ürün" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "No data yet." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "En popüler ürün" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3074,7 +3117,7 @@ msgstr "NOMINATIM_URL parametresi yapılandırılmalıdır!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "Resim boyutları w{max_width} x h{max_height} pikseli geçmemelidir!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3082,7 +3125,7 @@ msgstr "" "Site haritası dizini için isteği işler ve bir XML yanıtı döndürür. Yanıtın " "XML için uygun içerik türü başlığını içermesini sağlar." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3092,18 +3135,18 @@ msgstr "" " işler, uygun site haritası ayrıntı yanıtını getirir ve XML için Content-" "Type başlığını ayarlar." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Desteklenen dillerin bir listesini ve bunlara karşılık gelen bilgileri " "döndürür." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Web sitesinin parametrelerini bir JSON nesnesi olarak döndürür." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3111,11 +3154,11 @@ msgstr "" "Belirli bir anahtar ve zaman aşımı ile önbellek verilerini okuma ve ayarlama" " gibi önbellek işlemlerini gerçekleştirir." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Bize ulaşın` form gönderimlerini işler." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3123,15 +3166,15 @@ msgstr "" "Gelen POST isteklerinden gelen URL'leri işleme ve doğrulama isteklerini " "işler." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Küresel arama sorgularını işler." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "Kayıt olmadan bir işletme olarak satın alma mantığını ele alır." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3139,31 +3182,31 @@ msgstr "" "Bir siparişle ilişkili bir dijital varlığın indirilmesini yönetir.\n" "Bu fonksiyon, projenin depolama dizininde bulunan dijital varlık dosyasını sunmaya çalışır. Dosya bulunamazsa, kaynağın kullanılamadığını belirtmek için bir HTTP 404 hatası verilir." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid gereklidir" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "sipariş ürünü mevcut değil" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Dijital varlığı yalnızca bir kez indirebilirsiniz" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "dijital varlık indirilmeden önce siparişin ödenmesi gerekir" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Sipariş ürününün bir ürünü yok" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "favicon bulunamadı" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3171,7 +3214,7 @@ msgstr "" "Bir web sitesinin favicon'u için istekleri işler.\n" "Bu fonksiyon, projenin statik dizininde bulunan favicon dosyasını sunmaya çalışır. Favicon dosyası bulunamazsa, kaynağın kullanılamadığını belirtmek için bir HTTP 404 hatası verilir." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3182,11 +3225,11 @@ msgstr "" "yönlendirir. HTTP yönlendirmesini işlemek için Django'nun `redirect` " "fonksiyonunu kullanır." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "eVibes'in geçerli sürümünü döndürür." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Gösterge Tablosu için özel değişkenleri döndürür." diff --git a/engine/core/locale/vi_VN/LC_MESSAGES/django.mo b/engine/core/locale/vi_VN/LC_MESSAGES/django.mo index 71bae1371fdb3d82d7e8bb019f3361962da0da26..e9f23b242894c5b286cc34d888a9ea4e8cf7a52f 100644 GIT binary patch delta 15461 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 DFG9w) diff --git a/engine/core/locale/vi_VN/LC_MESSAGES/django.po b/engine/core/locale/vi_VN/LC_MESSAGES/django.po index 92ab881a..03d5b1ff 100644 --- a/engine/core/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/core/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -133,7 +133,7 @@ msgstr "Đặt hàng sản phẩm" msgid "children" msgstr "Trẻ em" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "Cấu hình" @@ -1156,7 +1156,7 @@ msgid "camelized JSON data from the requested URL" msgstr "" "Dữ liệu JSON đã được chuyển đổi sang định dạng JSON từ URL được yêu cầu." -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "Chỉ các URL bắt đầu bằng http(s):// mới được phép." @@ -2796,6 +2796,135 @@ msgstr "Liên hệ với chúng tôi" msgid "About Us" msgstr "Giới thiệu về chúng tôi" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "Hỗn hợp khách hàng (30 ngày)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "Khách hàng mới" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "Khách hàng quay lại" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "Không có hoạt động của khách hàng trong 30 ngày qua." + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "Doanh số hàng ngày (30 ngày)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "Đơn hàng (Đã hoàn thành)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "Doanh thu tổng" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "Đơn hàng" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "Tổng quan về thu nhập" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "Doanh thu ròng" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "Thuế" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "Trả hàng" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "Doanh thu tổng" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "Không có dữ liệu" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "Doanh thu (tổng, 30 ngày)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "Doanh thu (ròng, 30 ngày)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "Hoàn trả (30 ngày)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "Đơn hàng đã xử lý (30 ngày)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "Hầu hết các sản phẩm được trả lại (30 ngày)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "Không có đơn hàng trả lại trong 30 ngày qua." + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "Sản phẩm được mong đợi nhất" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "Chưa có dữ liệu." + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "Sản phẩm phổ biến nhất" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "Liên kết nhanh" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "Không có liên kết nào có sẵn." + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "Giao hàng vật lý so với bản kỹ thuật số (30 ngày)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "Số hóa" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "Đã giao hàng" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "Các danh mục hàng đầu theo số lượng (30 ngày)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "" +"Không có doanh số bán hàng trong bất kỳ danh mục nào trong 30 ngày qua." + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Quản trị viên trang web Django" @@ -2804,91 +2933,6 @@ msgstr "Quản trị viên trang web Django" msgid "Dashboard" msgstr "Bảng điều khiển" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "Doanh thu (tổng, 30 ngày)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "Doanh thu (ròng, 30 ngày)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "Hoàn trả (30 ngày)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "Đơn hàng đã xử lý (30 ngày)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "Tổng quan về thu nhập" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "Doanh thu ròng" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "Thuế" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "Trả hàng" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "Doanh thu tổng" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "Chưa có đủ dữ liệu để tạo biểu đồ." - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "Liên kết nhanh" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "Không có liên kết nào có sẵn." - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "Doanh số hàng ngày (30 ngày)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "Đơn hàng (Đã hoàn thành)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "Doanh thu tổng" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "Đơn hàng" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "Gross" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "Sản phẩm được mong đợi nhất" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "Chưa có dữ liệu." - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "Sản phẩm phổ biến nhất" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -3104,7 +3148,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Kích thước hình ảnh không được vượt quá w{max_width} x h{max_height} pixel!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3112,7 +3156,7 @@ msgstr "" "Xử lý yêu cầu về sơ đồ trang web (sitemap index) và trả về phản hồi XML. Nó " "đảm bảo rằng phản hồi bao gồm tiêu đề loại nội dung XML phù hợp." -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3122,17 +3166,17 @@ msgstr "" "lấy phản hồi chi tiết phù hợp của sơ đồ trang web và đặt tiêu đề Content-" "Type cho XML." -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Trả về danh sách các ngôn ngữ được hỗ trợ và thông tin tương ứng của chúng." -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "Trả về các tham số của trang web dưới dạng đối tượng JSON." -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3140,27 +3184,27 @@ msgstr "" "Xử lý các thao tác bộ nhớ đệm như đọc và ghi dữ liệu bộ nhớ đệm với khóa và " "thời gian chờ được chỉ định." -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "Xử lý các biểu mẫu liên hệ." -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "Xử lý các yêu cầu xử lý và xác thực URL từ các yêu cầu POST đến." -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "Xử lý các truy vấn tìm kiếm toàn cầu." -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "" "Xử lý logic của việc mua hàng như một hoạt động kinh doanh mà không cần đăng" " ký." -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3170,32 +3214,32 @@ msgstr "" " lưu trữ của dự án. Nếu tệp không được tìm thấy, một lỗi HTTP 404 sẽ được " "trả về để thông báo rằng tài nguyên không khả dụng." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid là trường bắt buộc." -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "Sản phẩm không tồn tại" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "Bạn chỉ có thể tải xuống tài sản kỹ thuật số một lần." -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "" "Đơn hàng phải được thanh toán trước khi tải xuống tài sản kỹ thuật số." -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "Sản phẩm đặt hàng không có sản phẩm." -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "Biểu tượng trang web không tìm thấy" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -3205,7 +3249,7 @@ msgstr "" "không được tìm thấy, một lỗi HTTP 404 sẽ được trả về để thông báo rằng tài " "nguyên không khả dụng." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -3216,11 +3260,11 @@ msgstr "" "Django. Nó sử dụng hàm `redirect` của Django để xử lý việc chuyển hướng " "HTTP." -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "Trả về phiên bản hiện tại của eVibes." -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "Trả về các biến tùy chỉnh cho Bảng điều khiển." diff --git a/engine/core/locale/zh_Hans/LC_MESSAGES/django.mo b/engine/core/locale/zh_Hans/LC_MESSAGES/django.mo index b8426252a7ef2f741425ef5e69b83452d2ab96f8..072505f2e1bbb0f190d5fdd6e6881545eb5dc7dd 100644 GIT binary patch delta 15209 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 a%i{@Q`N-UwJo~@z$|~-4S+W$B8X=@4goFrD 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -129,7 +129,7 @@ msgstr "订购产品" msgid "children" msgstr "儿童" -#: engine/core/admin.py:980 +#: engine/core/admin.py:977 msgid "Config" msgstr "配置" @@ -1059,7 +1059,7 @@ msgstr "缓存数据" msgid "camelized JSON data from the requested URL" msgstr "从请求的 URL 中获取驼峰化 JSON 数据" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:252 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:256 msgid "only URLs starting with http(s):// are allowed" msgstr "只允许使用以 http(s):// 开头的 URL" @@ -2565,6 +2565,134 @@ msgstr "联系我们" msgid "About Us" msgstr "关于我们" +#: engine/core/templates/admin/dashboard/_customers_mix.html:5 +msgid "Customers mix (30d)" +msgstr "客户组合 (30d)" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:10 +msgid "New customers" +msgstr "新客户" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:17 +msgid "Returning customers" +msgstr "回头客" + +#: engine/core/templates/admin/dashboard/_customers_mix.html:25 +msgid "No customer activity in the last 30 days." +msgstr "过去 30 天内没有客户活动。" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:5 +msgid "Daily sales (30d)" +msgstr "每日销售额 (30d)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:59 +msgid "Orders (FINISHED)" +msgstr "订单(已完成)" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:69 +msgid "Gross revenue" +msgstr "总收入" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:106 +msgid "Orders" +msgstr "订单" + +#: engine/core/templates/admin/dashboard/_daily_sales.html:113 +msgid "Gross" +msgstr "毛额" + +#: engine/core/templates/admin/dashboard/_income_overview.html:7 +msgid "Income overview" +msgstr "收入概览" + +#: engine/core/templates/admin/dashboard/_income_overview.html:31 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Net" +msgstr "净收入" + +#: engine/core/templates/admin/dashboard/_income_overview.html:37 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Taxes" +msgstr "税收" + +#: engine/core/templates/admin/dashboard/_income_overview.html:43 +#: engine/core/templates/admin/dashboard/_income_overview.html:66 +msgid "Returns" +msgstr "返回" + +#: engine/core/templates/admin/dashboard/_income_overview.html:48 +msgid "Gross (pie total)" +msgstr "总收入" + +#: engine/core/templates/admin/dashboard/_income_overview.html:72 +msgid "No data" +msgstr "无日期" + +#: engine/core/templates/admin/dashboard/_kpis.html:6 +msgid "Revenue (gross, 30d)" +msgstr "收入(毛额,30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:15 +msgid "Revenue (net, 30d)" +msgstr "收入(净额,30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:24 +msgid "Returns (30d)" +msgstr "返回 (30d)" + +#: engine/core/templates/admin/dashboard/_kpis.html:33 +msgid "Processed orders (30d)" +msgstr "已处理订单 (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:5 +msgid "Most returned products (30d)" +msgstr "退货最多的产品 (30d)" + +#: engine/core/templates/admin/dashboard/_most_returned.html:24 +msgid "No returns in the last 30 days." +msgstr "最近 30 天内无退货。" + +#: engine/core/templates/admin/dashboard/_product_lists.html:6 +msgid "Most wished product" +msgstr "最希望的产品" + +#: engine/core/templates/admin/dashboard/_product_lists.html:33 +#: engine/core/templates/admin/dashboard/_product_lists.html:67 +msgid "No data yet." +msgstr "尚无数据。" + +#: engine/core/templates/admin/dashboard/_product_lists.html:40 +msgid "Most popular product" +msgstr "最受欢迎的产品" + +#: engine/core/templates/admin/dashboard/_quick_links.html:5 +msgid "Quick Links" +msgstr "快速链接" + +#: engine/core/templates/admin/dashboard/_quick_links.html:12 +msgid "No links available." +msgstr "没有链接。" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:5 +msgid "Shipped vs Digital (30d)" +msgstr "运输与数字 (30d)" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:10 +msgid "Digital" +msgstr "数字" + +#: engine/core/templates/admin/dashboard/_shipped_vs_digital.html:20 +msgid "Shipped" +msgstr "已发货" + +#: engine/core/templates/admin/dashboard/_top_categories.html:5 +msgid "Top categories by quantity (30d)" +msgstr "数量最多的类别 (30d)" + +#: engine/core/templates/admin/dashboard/_top_categories.html:23 +msgid "No category sales in the last 30 days." +msgstr "最近 30 天内无类别销售。" + #: engine/core/templates/admin/index.html:9 msgid "Django site admin" msgstr "Django 网站管理员" @@ -2573,91 +2701,6 @@ msgstr "Django 网站管理员" msgid "Dashboard" msgstr "仪表板" -#: engine/core/templates/admin/index.html:27 -msgid "Revenue (gross, 30d)" -msgstr "收入(毛额,30d)" - -#: engine/core/templates/admin/index.html:36 -msgid "Revenue (net, 30d)" -msgstr "收入(净额,30d)" - -#: engine/core/templates/admin/index.html:45 -msgid "Returns (30d)" -msgstr "返回 (30d)" - -#: engine/core/templates/admin/index.html:54 -msgid "Processed orders (30d)" -msgstr "已处理订单 (30d)" - -#: engine/core/templates/admin/index.html:67 -msgid "Income overview" -msgstr "收入概览" - -#: engine/core/templates/admin/index.html:99 -#: engine/core/templates/admin/index.html:139 -msgid "Net" -msgstr "净收入" - -#: engine/core/templates/admin/index.html:107 -#: engine/core/templates/admin/index.html:140 -msgid "Taxes" -msgstr "税收" - -#: engine/core/templates/admin/index.html:115 -#: engine/core/templates/admin/index.html:141 -msgid "Returns" -msgstr "返回" - -#: engine/core/templates/admin/index.html:122 -msgid "Gross (pie total)" -msgstr "总收入" - -#: engine/core/templates/admin/index.html:201 -#: engine/core/templates/admin/index.html:326 -msgid "Not enough data for chart yet." -msgstr "图表数据尚不充足。" - -#: engine/core/templates/admin/index.html:210 -msgid "Quick Links" -msgstr "快速链接" - -#: engine/core/templates/admin/index.html:217 -msgid "No links available." -msgstr "没有链接。" - -#: engine/core/templates/admin/index.html:225 -msgid "Daily sales (30d)" -msgstr "每日销售额 (30d)" - -#: engine/core/templates/admin/index.html:254 -msgid "Orders (FINISHED)" -msgstr "订单(已完成)" - -#: engine/core/templates/admin/index.html:264 -msgid "Gross revenue" -msgstr "总收入" - -#: engine/core/templates/admin/index.html:301 -msgid "Orders" -msgstr "订单" - -#: engine/core/templates/admin/index.html:308 -msgid "Gross" -msgstr "毛额" - -#: engine/core/templates/admin/index.html:334 -msgid "Most wished product" -msgstr "最希望的产品" - -#: engine/core/templates/admin/index.html:361 -#: engine/core/templates/admin/index.html:395 -msgid "No data yet." -msgstr "尚无数据。" - -#: engine/core/templates/admin/index.html:368 -msgid "Most popular product" -msgstr "最受欢迎的产品" - #: engine/core/templates/digital_order_created_email.html:7 #: engine/core/templates/digital_order_created_email.html:100 #: engine/core/templates/digital_order_delivered_email.html:6 @@ -2863,53 +2906,53 @@ msgstr "必须配置 NOMINATIM_URL 参数!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "图像尺寸不应超过 w{max_width} x h{max_height} 像素!" -#: engine/core/views.py:86 +#: engine/core/views.py:90 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "处理网站地图索引请求并返回 XML 响应。它确保响应包含适当的 XML 内容类型标头。" -#: engine/core/views.py:101 +#: engine/core/views.py:105 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "处理网站地图的详细视图响应。该函数处理请求,获取相应的网站地图详细响应,并将 Content-Type 标头设置为 XML。" -#: engine/core/views.py:136 +#: engine/core/views.py:140 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "返回支持语言及其相应信息的列表。" -#: engine/core/views.py:168 +#: engine/core/views.py:172 msgid "Returns the parameters of the website as a JSON object." msgstr "以 JSON 对象形式返回网站参数。" -#: engine/core/views.py:187 +#: engine/core/views.py:191 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "处理缓存操作,如使用指定的键和超时读取和设置缓存数据。" -#: engine/core/views.py:214 +#: engine/core/views.py:218 msgid "Handles `contact us` form submissions." msgstr "处理 \"联系我们 \"表单提交。" -#: engine/core/views.py:235 +#: engine/core/views.py:239 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "处理来自传入 POST 请求的处理和验证 URL 的请求。" -#: engine/core/views.py:275 +#: engine/core/views.py:279 msgid "Handles global search queries." msgstr "处理全局搜索查询。" -#: engine/core/views.py:290 +#: engine/core/views.py:294 msgid "Handles the logic of buying as a business without registration." msgstr "处理未注册企业的购买逻辑。" -#: engine/core/views.py:327 +#: engine/core/views.py:331 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -2917,31 +2960,31 @@ msgstr "" "处理与订单相关的数字资产的下载。\n" "此函数会尝试为位于项目存储目录中的数字资产文件提供服务。如果未找到文件,则会出现 HTTP 404 错误,表示资源不可用。" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "order_product_uuid is required" msgstr "order_product_uuid 为必填项" -#: engine/core/views.py:345 +#: engine/core/views.py:349 msgid "order product does not exist" msgstr "订单产品不存在" -#: engine/core/views.py:348 +#: engine/core/views.py:352 msgid "you can only download the digital asset once" msgstr "您只能下载一次数字资产" -#: engine/core/views.py:351 +#: engine/core/views.py:355 msgid "the order must be paid before downloading the digital asset" msgstr "在下载数字资产前必须支付订单费用" -#: engine/core/views.py:357 +#: engine/core/views.py:361 msgid "the order product does not have a product" msgstr "订单产品没有产品" -#: engine/core/views.py:394 +#: engine/core/views.py:398 msgid "favicon not found" msgstr "未找到 favicon" -#: engine/core/views.py:399 +#: engine/core/views.py:403 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." @@ -2949,7 +2992,7 @@ msgstr "" "处理网站的 favicon 请求。\n" "该函数会尝试为位于项目静态目录中的 favicon 文件提供服务。如果找不到 favicon 文件,就会出现 HTTP 404 错误,表示资源不可用。" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "" "Redirects the request to the admin index page. The function handles incoming" " HTTP requests and redirects them to the Django admin interface index page. " @@ -2958,11 +3001,11 @@ msgstr "" "将请求重定向到管理索引页面。该函数处理传入的 HTTP 请求并将其重定向到 Django 管理界面索引页面。它使用 Django 的 " "`redirect` 函数来处理 HTTP 重定向。" -#: engine/core/views.py:424 +#: engine/core/views.py:428 msgid "Returns current version of the eVibes. " msgstr "返回 eVibes 的当前版本。" -#: engine/core/views.py:587 +#: engine/core/views.py:637 msgid "Returns custom variables for Dashboard. " msgstr "返回 Dashboard 的自定义变量。" diff --git a/engine/core/serializers/detail.py b/engine/core/serializers/detail.py index 007e22bc..8950f72f 100644 --- a/engine/core/serializers/detail.py +++ b/engine/core/serializers/detail.py @@ -253,6 +253,7 @@ class ProductDetailSerializer(ModelSerializer): quantity = SerializerMethodField() feedbacks_count = SerializerMethodField() discount_price = SerializerMethodField() + personal_orders_only = SerializerMethodField() class Meta: model = Product @@ -287,6 +288,9 @@ class ProductDetailSerializer(ModelSerializer): def get_feedbacks_count(self, obj: Product) -> int: return obj.feedbacks_count + def get_personal_orders_only(self, obj: Product) -> bool: + return obj.personal_orders_only + def get_quantity(self, obj: Product) -> int: return obj.quantity diff --git a/engine/payments/locale/ar_AR/LC_MESSAGES/django.po b/engine/payments/locale/ar_AR/LC_MESSAGES/django.po index 7a97f48e..5da772f6 100644 --- a/engine/payments/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/payments/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po b/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po index e02bff03..65e771c7 100644 --- a/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/da_DK/LC_MESSAGES/django.po b/engine/payments/locale/da_DK/LC_MESSAGES/django.po index eb88d6a4..0ce1da02 100644 --- a/engine/payments/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/payments/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/de_DE/LC_MESSAGES/django.po b/engine/payments/locale/de_DE/LC_MESSAGES/django.po index 1d47a8fc..c37147f0 100644 --- a/engine/payments/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/payments/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/en_GB/LC_MESSAGES/django.po b/engine/payments/locale/en_GB/LC_MESSAGES/django.po index 8567bfbd..69439ee9 100644 --- a/engine/payments/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/payments/locale/en_GB/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/en_US/LC_MESSAGES/django.po b/engine/payments/locale/en_US/LC_MESSAGES/django.po index daa950cc..59724006 100644 --- a/engine/payments/locale/en_US/LC_MESSAGES/django.po +++ b/engine/payments/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/es_ES/LC_MESSAGES/django.po b/engine/payments/locale/es_ES/LC_MESSAGES/django.po index 8aa9c550..adb944c8 100644 --- a/engine/payments/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/payments/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/fa_IR/LC_MESSAGES/django.po b/engine/payments/locale/fa_IR/LC_MESSAGES/django.po index 6427db5d..cee7afdb 100644 --- a/engine/payments/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/payments/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/engine/payments/locale/fr_FR/LC_MESSAGES/django.po b/engine/payments/locale/fr_FR/LC_MESSAGES/django.po index ed7eea81..d675f428 100644 --- a/engine/payments/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/payments/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/he_IL/LC_MESSAGES/django.po b/engine/payments/locale/he_IL/LC_MESSAGES/django.po index eb410a0e..12e51ee4 100644 --- a/engine/payments/locale/he_IL/LC_MESSAGES/django.po +++ b/engine/payments/locale/he_IL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/hi_IN/LC_MESSAGES/django.po b/engine/payments/locale/hi_IN/LC_MESSAGES/django.po index 4666a43d..bab5e568 100644 --- a/engine/payments/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/payments/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/payments/locale/hr_HR/LC_MESSAGES/django.po b/engine/payments/locale/hr_HR/LC_MESSAGES/django.po index 6427db5d..cee7afdb 100644 --- a/engine/payments/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/payments/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/engine/payments/locale/id_ID/LC_MESSAGES/django.po b/engine/payments/locale/id_ID/LC_MESSAGES/django.po index be984224..a9a67c48 100644 --- a/engine/payments/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/payments/locale/id_ID/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/it_IT/LC_MESSAGES/django.po b/engine/payments/locale/it_IT/LC_MESSAGES/django.po index 7fe39a59..31e4f50b 100644 --- a/engine/payments/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/payments/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/ja_JP/LC_MESSAGES/django.po b/engine/payments/locale/ja_JP/LC_MESSAGES/django.po index 9965c0de..5feeb1c5 100644 --- a/engine/payments/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/payments/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po b/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po index 4666a43d..bab5e568 100644 --- a/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/engine/payments/locale/ko_KR/LC_MESSAGES/django.po b/engine/payments/locale/ko_KR/LC_MESSAGES/django.po index 5e8f1c4c..5328fd49 100644 --- a/engine/payments/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/payments/locale/ko_KR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/nl_NL/LC_MESSAGES/django.po b/engine/payments/locale/nl_NL/LC_MESSAGES/django.po index 23025c96..cfd728a5 100644 --- a/engine/payments/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/payments/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/no_NO/LC_MESSAGES/django.po b/engine/payments/locale/no_NO/LC_MESSAGES/django.po index 04b56a25..0ff2dbbe 100644 --- a/engine/payments/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/payments/locale/no_NO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/pl_PL/LC_MESSAGES/django.po b/engine/payments/locale/pl_PL/LC_MESSAGES/django.po index 0b96b77f..8d496cd3 100644 --- a/engine/payments/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/payments/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/pt_BR/LC_MESSAGES/django.po b/engine/payments/locale/pt_BR/LC_MESSAGES/django.po index 21c0136e..3087c82a 100644 --- a/engine/payments/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/payments/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/ro_RO/LC_MESSAGES/django.po b/engine/payments/locale/ro_RO/LC_MESSAGES/django.po index 93761584..99555885 100644 --- a/engine/payments/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/payments/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/ru_RU/LC_MESSAGES/django.po b/engine/payments/locale/ru_RU/LC_MESSAGES/django.po index 03f89f41..b2b76502 100644 --- a/engine/payments/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/payments/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/sv_SE/LC_MESSAGES/django.po b/engine/payments/locale/sv_SE/LC_MESSAGES/django.po index b76efda2..abb9dc81 100644 --- a/engine/payments/locale/sv_SE/LC_MESSAGES/django.po +++ b/engine/payments/locale/sv_SE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/th_TH/LC_MESSAGES/django.po b/engine/payments/locale/th_TH/LC_MESSAGES/django.po index ca5bffc4..b2b06930 100644 --- a/engine/payments/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/payments/locale/th_TH/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/tr_TR/LC_MESSAGES/django.po b/engine/payments/locale/tr_TR/LC_MESSAGES/django.po index c205fcf1..abf33b19 100644 --- a/engine/payments/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/payments/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/vi_VN/LC_MESSAGES/django.po b/engine/payments/locale/vi_VN/LC_MESSAGES/django.po index 82e8fc07..a9da3633 100644 --- a/engine/payments/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/payments/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po b/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po index 01e36ce4..812c0bee 100644 --- a/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" diff --git a/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po index a727d6a6..c247b2a4 100644 --- a/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "تأكيد إعادة تعيين كلمة مرور المستخدم" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -219,21 +219,21 @@ msgstr "رقم هاتف مشوه: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "تنسيق السمة غير صالح: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "رابط التفعيل غير صالح!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "تم تفعيل الحساب بالفعل..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "حدث خطأ ما: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "الرمز غير صالح!" diff --git a/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po b/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po index e1833509..a7164aaf 100644 --- a/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "Potvrzení obnovení hesla uživatele" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -217,21 +217,21 @@ msgstr "Chybně zadané telefonní číslo: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Nesprávný formát atributu: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Aktivační odkaz je neplatný!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Účet byl již aktivován..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Něco se pokazilo: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token je neplatný!" diff --git a/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.po b/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.po index a970515f..a23dd1d3 100644 --- a/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Bekræft nulstilling af en brugers adgangskode" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -219,21 +219,21 @@ msgstr "Misdannet telefonnummer: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Ugyldigt attributformat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Aktiveringslinket er ugyldigt!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Kontoen er allerede aktiveret..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Noget gik galt: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token er ugyldig!" diff --git a/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po b/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po index 1601fd87..9a263ae4 100644 --- a/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -174,7 +174,7 @@ msgid "confirm a user's password reset" msgstr "Bestätigen Sie das Zurücksetzen des Passworts eines Benutzers" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -223,21 +223,21 @@ msgstr "Missgebildete Telefonnummer: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Ungültiges Attributformat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Der Aktivierungslink ist ungültig!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Das Konto wurde bereits aktiviert..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Etwas ist schief gelaufen: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token ist ungültig!" diff --git a/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po b/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po index 0fcacae8..b5f47373 100644 --- a/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -175,7 +175,7 @@ msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -221,21 +221,21 @@ msgstr "Malformed phone number: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Account has been already activated..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token is invalid!" diff --git a/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po b/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po index 0bf342a6..1fa82d89 100644 --- a/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -217,21 +217,21 @@ msgstr "Malformed phone number: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Account has been already activated..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token is invalid!" diff --git a/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po b/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po index 09556fc1..c03a8227 100644 --- a/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Confirmar el restablecimiento de la contraseña de un usuario" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -220,21 +220,21 @@ msgstr "Número de teléfono malformado: ¡{phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo no válido: ¡{attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "El enlace de activación no es válido." -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "La cuenta ya ha sido activada..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Algo salió mal: {e!s}." -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "¡La ficha no es válida!" diff --git a/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po index b0a8db27..4752995c 100644 --- a/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -216,21 +216,21 @@ msgstr "" msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "" diff --git a/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po index 6c7a1d57..76724cf3 100644 --- a/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -176,7 +176,7 @@ msgid "confirm a user's password reset" msgstr "Confirmer la réinitialisation du mot de passe d'un utilisateur" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -224,21 +224,21 @@ msgstr "Numéro de téléphone malformé : {phone_number} !" msgid "Invalid attribute format: {attribute_pair}" msgstr "Format d'attribut non valide : {attribute_pair} !" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Le lien d'activation n'est pas valide !" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Le compte a déjà été activé..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Quelque chose a mal tourné : {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Le jeton n'est pas valide !" diff --git a/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.po b/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.po index 59d20db9..639d570d 100644 --- a/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "אשר את איפוס הסיסמה של המשתמש" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -217,21 +217,21 @@ msgstr "מספר טלפון שגוי: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "פורמט תכונה לא חוקי: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "קישור ההפעלה אינו תקף!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "החשבון כבר הופעל..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "משהו השתבש: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "האסימון אינו חוקי!" diff --git a/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po b/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po index 271caaaa..856ac540 100644 --- a/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -216,21 +216,21 @@ msgstr "" msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "" diff --git a/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po index b0a8db27..4752995c 100644 --- a/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -216,21 +216,21 @@ msgstr "" msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "" diff --git a/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po b/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po index 741e26aa..f381601f 100644 --- a/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Mengonfirmasi pengaturan ulang kata sandi pengguna" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -220,21 +220,21 @@ msgstr "Nomor telepon rusak: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Format atribut tidak valid: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Tautan aktivasi tidak valid!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Akun sudah diaktifkan..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Ada yang tidak beres: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token tidak valid!" diff --git a/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po b/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po index 32508f33..a6fee508 100644 --- a/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -175,7 +175,7 @@ msgid "confirm a user's password reset" msgstr "Confermare la reimpostazione della password di un utente" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -221,21 +221,21 @@ msgstr "Numero di telefono malformato: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato attributo non valido: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Il link di attivazione non è valido!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "L'account è già stato attivato..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Qualcosa è andato storto: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Il gettone non è valido!" diff --git a/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po index f0a841b1..4d366633 100644 --- a/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "ユーザーのパスワード・リセットを確認する" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -219,21 +219,21 @@ msgstr "電話番号が不正です:{phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "無効な属性形式です:{attribute_pair}です!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "アクティベーションリンクが無効です!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "アカウントはすでに有効になっています..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "何かが間違っていた:{e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "トークンが無効です!" diff --git a/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po b/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po index 271caaaa..856ac540 100644 --- a/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -216,21 +216,21 @@ msgstr "" msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "" -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "" diff --git a/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po index 45aa3933..46318f44 100644 --- a/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -170,7 +170,7 @@ msgid "confirm a user's password reset" msgstr "사용자의 비밀번호 재설정 확인" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -216,21 +216,21 @@ msgstr "잘못된 전화 번호입니다: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "잘못된 속성 형식입니다: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "활성화 링크가 유효하지 않습니다!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "계정이 이미 활성화되었습니다..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "문제가 발생했습니다: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "토큰이 유효하지 않습니다!" diff --git a/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po b/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po index 0d57b651..9c64606d 100644 --- a/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Bevestig het resetten van het wachtwoord van een gebruiker" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -221,21 +221,21 @@ msgstr "Misvormd telefoonnummer: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Ongeldig attribuutformaat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Activeringslink is ongeldig!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Account is al geactiveerd..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Er ging iets mis: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token is invalid!" diff --git a/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.po b/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.po index d615c160..a6ed4d8f 100644 --- a/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Bekreft tilbakestilling av en brukers passord" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -219,21 +219,21 @@ msgstr "Feilaktig telefonnummer: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Ugyldig attributtformat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Aktiveringslenken er ugyldig!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Kontoen er allerede aktivert..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Noe gikk galt: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Tokenet er ugyldig!" diff --git a/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po b/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po index c8d3c336..31c843a7 100644 --- a/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Potwierdzenie zresetowania hasła użytkownika" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -221,21 +221,21 @@ msgstr "Zniekształcony numer telefonu: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Nieprawidłowy format atrybutu: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Link aktywacyjny jest nieprawidłowy!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Konto zostało już aktywowane..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Coś poszło nie tak: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token jest nieprawidłowy!" diff --git a/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po index 29855d5c..b1df93dc 100644 --- a/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -172,7 +172,7 @@ msgid "confirm a user's password reset" msgstr "Confirmar a redefinição de senha de um usuário" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -218,21 +218,21 @@ msgstr "Número de telefone malformado: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo inválido: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "O link de ativação é inválido!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "A conta já foi ativada..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Algo deu errado: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "O token é inválido!" diff --git a/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po index 7e8c3df9..18073aba 100644 --- a/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -175,7 +175,7 @@ msgid "confirm a user's password reset" msgstr "Confirmați resetarea parolei unui utilizator" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -222,21 +222,21 @@ msgstr "Număr de telefon malformat: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Format de atribut invalid: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Linkul de activare este invalid!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Contul a fost deja activat..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Ceva nu a mers bine: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token-ul nu este valabil!" diff --git a/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po index 42875b0f..2373a990 100644 --- a/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Подтверждение сброса пароля пользователя" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -221,21 +221,21 @@ msgstr "Некорректный номер телефона: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Недопустимый формат атрибута: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Ссылка на активацию недействительна!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Аккаунт уже активирован..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Что-то пошло не так: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Токен недействителен!" diff --git a/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.po b/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.po index f19f0bcf..f473ccad 100644 --- a/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -173,7 +173,7 @@ msgid "confirm a user's password reset" msgstr "Bekräfta återställning av en användares lösenord" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -220,21 +220,21 @@ msgstr "Missbildat telefonnummer: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Ogiltigt attributformat: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Aktiveringslänken är ogiltig!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Kontot har redan aktiverats..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Något gick fel: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token är ogiltig!" diff --git a/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po b/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po index e3145873..dc80dd8a 100644 --- a/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "ยืนยันการรีเซ็ตรหัสผ่านของผู้ใช้" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -217,21 +217,21 @@ msgstr "หมายเลขโทรศัพท์ไม่ถูกต้อ msgid "Invalid attribute format: {attribute_pair}" msgstr "รูปแบบแอตทริบิวต์ไม่ถูกต้อง: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "ลิงก์การเปิดใช้งานไม่ถูกต้อง!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "บัญชีได้รับการเปิดใช้งานแล้ว..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "เกิดข้อผิดพลาด: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "โทเคนไม่ถูกต้อง!" diff --git a/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.po index 5d64e564..11ed6710 100644 --- a/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -172,7 +172,7 @@ msgid "confirm a user's password reset" msgstr "Bir kullanıcının parola sıfırlamasını onaylama" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -218,21 +218,21 @@ msgstr "Hatalı biçimlendirilmiş telefon numarası: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Geçersiz öznitelik biçimi: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Aktivasyon bağlantısı geçersiz!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Hesap zaten etkinleştirildi..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Bir şeyler ters gitti: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Jeton geçersiz!" diff --git a/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po b/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po index 9ff2e5e2..2ccc654d 100644 --- a/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -171,7 +171,7 @@ msgid "confirm a user's password reset" msgstr "Xác nhận việc đặt lại mật khẩu của người dùng" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -220,21 +220,21 @@ msgstr "Số điện thoại không hợp lệ: {phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "Định dạng thuộc tính không hợp lệ: {attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "Liên kết kích hoạt không hợp lệ!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "Tài khoản đã được kích hoạt..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "Có sự cố xảy ra: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token không hợp lệ!" diff --git a/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po b/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po index c9d52e11..8fa103f9 100644 --- a/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -169,7 +169,7 @@ msgid "confirm a user's password reset" msgstr "确认用户密码重置" #: engine/vibes_auth/docs/drf/viewsets.py:87 -#: engine/vibes_auth/graphene/mutations.py:317 +#: engine/vibes_auth/graphene/mutations.py:319 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" @@ -215,21 +215,21 @@ msgstr "畸形电话号码:{phone_number}!" msgid "Invalid attribute format: {attribute_pair}" msgstr "属性格式无效:{attribute_pair}!" -#: engine/vibes_auth/graphene/mutations.py:270 +#: engine/vibes_auth/graphene/mutations.py:272 #: engine/vibes_auth/viewsets.py:127 engine/vibes_auth/viewsets.py:146 msgid "activation link is invalid!" msgstr "激活链接无效!" -#: engine/vibes_auth/graphene/mutations.py:273 +#: engine/vibes_auth/graphene/mutations.py:275 msgid "account already activated..." msgstr "帐户已激活..." -#: engine/vibes_auth/graphene/mutations.py:280 -#: engine/vibes_auth/graphene/mutations.py:336 +#: engine/vibes_auth/graphene/mutations.py:282 +#: engine/vibes_auth/graphene/mutations.py:338 msgid "something went wrong: {e!s}" msgstr "出了问题:{e!s}" -#: engine/vibes_auth/graphene/mutations.py:324 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:326 engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "令牌无效!" diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.po b/evibes/locale/ar_AR/LC_MESSAGES/django.po index 539fcc48..1f608e3c 100644 --- a/evibes/locale/ar_AR/LC_MESSAGES/django.po +++ b/evibes/locale/ar_AR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,34 +204,49 @@ msgstr "" "\n" "مرحباً بك في وثائق eVibes.\n" "\n" -"eVibes عبارة عن منصة تجارة إلكترونية قوية تتيح لك إطلاق وإدارة متجر إلكتروني من أي نوع بنقرات قليلة.\n" +"eVibes عبارة عن منصة تجارة إلكترونية قوية تتيح لك إطلاق وإدارة متجر إلكتروني " +"من أي نوع بنقرات قليلة.\n" "\n" "## الميزات الرئيسية\n" -"- ** كتالوج المنتجات:** إدارة تفاصيل المنتج والتسعير والمخزون والتوافر عبر فئات متعددة.\n" -"- **إدارة الطلبات:** معالجة الطلبات وتتبع التنفيذ والتعامل مع طلبات العملاء بكفاءة.\n" -"- **المصادقة والتفويض:** مصادقة شاملة للمستخدمين باستخدام رموز JWT المميزة والأذونات المستندة إلى الأدوار.\n" +"- ** كتالوج المنتجات:** إدارة تفاصيل المنتج والتسعير والمخزون والتوافر عبر " +"فئات متعددة.\n" +"- **إدارة الطلبات:** معالجة الطلبات وتتبع التنفيذ والتعامل مع طلبات العملاء " +"بكفاءة.\n" +"- **المصادقة والتفويض:** مصادقة شاملة للمستخدمين باستخدام رموز JWT المميزة " +"والأذونات المستندة إلى الأدوار.\n" "- ** معالجة المدفوعات:** دمج بوابات دفع متعددة وإدارة المعاملات بشكل آمن.\n" -"- ** إدارة المدونة والمحتوى:** إنشاء وإدارة منشورات المدونة والمحتوى التسويقي لمتجرك.\n" -"- ** عمليات B2B:** نقاط نهاية مخصصة للمعاملات بين الشركات وإدارة البيع بالجملة.\n" -"- **دعم متعدد اللغات:** خدمة العملاء في جميع أنحاء العالم مع إمكانات التدويل الكاملة (i18n).\n" -"- **تكامل مخصص:** بنية واجهة برمجة تطبيقات قابلة للتوسيع للتكامل مع المنصات والخدمات الخارجية.\n" -"- **التحليلات والتقارير:** إنشاء تقارير مفصلة عن المبيعات والمخزون وسلوك العملاء.\n" -"- ** تحديثات في الوقت الفعلي:** احصل على بيانات مباشرة عن مستويات المخزون وحالات الطلبات وتغييرات الأسعار.\n" +"- ** إدارة المدونة والمحتوى:** إنشاء وإدارة منشورات المدونة والمحتوى " +"التسويقي لمتجرك.\n" +"- ** عمليات B2B:** نقاط نهاية مخصصة للمعاملات بين الشركات وإدارة البيع " +"بالجملة.\n" +"- **دعم متعدد اللغات:** خدمة العملاء في جميع أنحاء العالم مع إمكانات التدويل " +"الكاملة (i18n).\n" +"- **تكامل مخصص:** بنية واجهة برمجة تطبيقات قابلة للتوسيع للتكامل مع المنصات " +"والخدمات الخارجية.\n" +"- **التحليلات والتقارير:** إنشاء تقارير مفصلة عن المبيعات والمخزون وسلوك " +"العملاء.\n" +"- ** تحديثات في الوقت الفعلي:** احصل على بيانات مباشرة عن مستويات المخزون " +"وحالات الطلبات وتغييرات الأسعار.\n" "\n" "## واجهات برمجة التطبيقات المتاحة\n" "- **واجهة برمجة تطبيقات REST:** واجهة REST كاملة (هذه الوثائق)\n" -"- ** واجهة برمجة تطبيقات GraphiQL:** متوفرة على '/graphql/' مع واجهة GraphiQL للاستعلامات التفاعلية\n" +"- ** واجهة برمجة تطبيقات GraphiQL:** متوفرة على '/graphql/' مع واجهة " +"GraphiQL للاستعلامات التفاعلية\n" "\n" "## المصادقة\n" -"- يتم التعامل مع المصادقة عبر رموز JWT المميزة. قم بتضمين الرمز المميز في رأس \"X-EVIBES-AUTH\" لطلباتك بصيغة \"حامل \".\n" +"- يتم التعامل مع المصادقة عبر رموز JWT المميزة. قم بتضمين الرمز المميز في " +"رأس \"X-EVIBES-AUTH\" لطلباتك بصيغة \"حامل \".\n" "{\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}{\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "}- يتم تدوير رموز التحديث تلقائيًا وإبطالها بعد الاستخدام لتعزيز الأمان.\n" "\n" "## التدويل (i18n)\n" -"- قم بتعيين رأس \"قبول اللغة\" لتحديد لغتك المفضلة (على سبيل المثال، \"قبول اللغة: en-US\").\n" +"- قم بتعيين رأس \"قبول اللغة\" لتحديد لغتك المفضلة (على سبيل المثال، \"قبول " +"اللغة: en-US\").\n" "- يمكن استرداد اللغات المتاحة من نقطة النهاية \"/ التطبيق/اللغات/\".\n" "- جميع المحتويات التي تواجه المستخدم تدعم لغات متعددة خارج الصندوق.\n" "\n" @@ -255,38 +287,38 @@ msgstr "المهام الدورية" msgid "Taskboard" msgstr "لوحة المهام" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "الدعم" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "روابط سريعة" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "المستخدمون" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "المجموعات" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "الطلبات" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "المنتجات" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "الفئات" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "العلامات التجارية" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "المدونات" diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.po b/evibes/locale/cs_CZ/LC_MESSAGES/django.po index 1cc7a88f..9e7aa6d4 100644 --- a/evibes/locale/cs_CZ/LC_MESSAGES/django.po +++ b/evibes/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,44 +204,64 @@ msgstr "" "\n" "Vítejte v dokumentaci systému eVibes.\n" "\n" -"eVibes je výkonná platforma pro elektronické obchodování, která umožňuje spustit a spravovat internetový obchod jakéhokoli druhu na několik kliknutí.\n" +"eVibes je výkonná platforma pro elektronické obchodování, která umožňuje " +"spustit a spravovat internetový obchod jakéhokoli druhu na několik " +"kliknutí.\n" "\n" "## Klíčové funkce\n" -"- **Katalog produktů:** Správa podrobností o produktech, cen, skladových zásob a dostupnosti v několika kategoriích.\n" -"- **Správa objednávek:** Zpracovávejte objednávky, sledujte jejich plnění a efektivně vyřizujte požadavky zákazníků.\n" -"- **Ověřování a autorizace:** Komplexní ověřování uživatelů pomocí tokenů JWT a oprávnění na základě rolí.\n" -"- **Zpracování plateb:** Integrace více platebních bran a bezpečná správa transakcí.\n" -"- **Správa blogu a obsahu:** Vytváření a správa příspěvků na blogu a marketingového obsahu pro váš obchod.\n" -"- **Provoz B2B:** Vyhrazené koncové body pro transakce mezi podniky a správu velkoobchodu.\n" -"- **Vícejazyčná podpora:** Obsluhujte zákazníky po celém světě díky plným možnostem internacionalizace (i18n).\n" -"- **Vlastní integrace:** Rozšiřitelná architektura API pro integraci s externími platformami a službami.\n" -"- **Analytika a reporting:** Generování podrobných reportů o prodeji, zásobách a chování zákazníků.\n" -"- **Aktualizace v reálném čase:** Získávejte živé údaje o stavu zásob, stavu objednávek a změnách cen.\n" +"- **Katalog produktů:** Správa podrobností o produktech, cen, skladových " +"zásob a dostupnosti v několika kategoriích.\n" +"- **Správa objednávek:** Zpracovávejte objednávky, sledujte jejich plnění a " +"efektivně vyřizujte požadavky zákazníků.\n" +"- **Ověřování a autorizace:** Komplexní ověřování uživatelů pomocí tokenů " +"JWT a oprávnění na základě rolí.\n" +"- **Zpracování plateb:** Integrace více platebních bran a bezpečná správa " +"transakcí.\n" +"- **Správa blogu a obsahu:** Vytváření a správa příspěvků na blogu a " +"marketingového obsahu pro váš obchod.\n" +"- **Provoz B2B:** Vyhrazené koncové body pro transakce mezi podniky a správu " +"velkoobchodu.\n" +"- **Vícejazyčná podpora:** Obsluhujte zákazníky po celém světě díky plným " +"možnostem internacionalizace (i18n).\n" +"- **Vlastní integrace:** Rozšiřitelná architektura API pro integraci s " +"externími platformami a službami.\n" +"- **Analytika a reporting:** Generování podrobných reportů o prodeji, " +"zásobách a chování zákazníků.\n" +"- **Aktualizace v reálném čase:** Získávejte živé údaje o stavu zásob, stavu " +"objednávek a změnách cen.\n" "\n" "## Dostupná rozhraní API\n" "- **REST API:** Plné rozhraní RESTful (tato dokumentace).\n" -"- **GraphQL API:** K dispozici na adrese `/graphql/` s rozhraním GraphiQL pro interaktivní dotazy.\n" +"- **GraphQL API:** K dispozici na adrese `/graphql/` s rozhraním GraphiQL " +"pro interaktivní dotazy.\n" "\n" "## Ověřování\n" -"- Ověřování se provádí pomocí tokenů JWT. Token zahrňte do hlavičky `X-EVIBES-AUTH` svých požadavků ve formátu `Bearer `.\n" +"- Ověřování se provádí pomocí tokenů JWT. Token zahrňte do hlavičky `X-" +"EVIBES-AUTH` svých požadavků ve formátu `Bearer `.\n" "- Životnost přístupového tokenu je {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "}. {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Životnost tokenu pro obnovení je {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hodin.\n" -"- Tokeny pro obnovení jsou po použití automaticky rotovány a zneplatněny z důvodu vyšší bezpečnosti.\n" +"- Tokeny pro obnovení jsou po použití automaticky rotovány a zneplatněny z " +"důvodu vyšší bezpečnosti.\n" "\n" "## Internacionalizace (i18n)\n" -"- Nastavte hlavičku `Accept-Language` tak, aby určovala preferovaný jazyk (např. `Accept-Language: en-US`).\n" +"- Nastavte hlavičku `Accept-Language` tak, aby určovala preferovaný jazyk " +"(např. `Accept-Language: en-US`).\n" "- Dostupné jazyky lze získat z koncového bodu `/app/languages/`.\n" -"- Veškerý obsah směřující k uživateli podporuje více jazyků hned po vybalení z krabice.\n" +"- Veškerý obsah směřující k uživateli podporuje více jazyků hned po vybalení " +"z krabice.\n" "\n" "## Formáty odpovědí\n" "Rozhraní API podporuje více formátů odpovědí:\n" "- **JSON** (výchozí, formátováno camelCase).\n" "- **XML** (přidejte `?format=xml` nebo nastavte `Accept: application/xml`).\n" -"- **YAML** (přidejte `?format=yaml` nebo nastavte `Accept: application/x-yaml`)\n" +"- **YAML** (přidejte `?format=yaml` nebo nastavte `Accept: application/x-" +"yaml`)\n" "\n" "## Stav a monitorování\n" "- Kontroly stavu: `/health/`\n" @@ -257,38 +294,38 @@ msgstr "Pravidelné úkoly" msgid "Taskboard" msgstr "Taskboard" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Podpora" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Rychlé odkazy" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Uživatelé" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Skupiny" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Objednávky" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produkty" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Kategorie" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Značky" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposty" diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.po b/evibes/locale/da_DK/LC_MESSAGES/django.po index 8068c58e..e15ad4ec 100644 --- a/evibes/locale/da_DK/LC_MESSAGES/django.po +++ b/evibes/locale/da_DK/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -30,8 +30,8 @@ msgid "" "Tax rate in jurisdiction of your company. Leave 0 if you don't want to " "process taxes." msgstr "" -"Skattesats i din virksomheds jurisdiktion. Lad 0 stå, hvis du ikke ønsker at" -" behandle skatter." +"Skattesats i din virksomheds jurisdiktion. Lad 0 stå, hvis du ikke ønsker at " +"behandle skatter." #: evibes/settings/constance.py:28 msgid "Shows if the taxes are already included in product's selling prices" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,36 +204,53 @@ msgstr "" "\n" "Velkommen til eVibes' dokumentation.\n" "\n" -"eVibes er en stærk e-handelsplatform, der giver dig mulighed for at starte og administrere en onlinebutik af enhver art med blot nogle få klik.\n" +"eVibes er en stærk e-handelsplatform, der giver dig mulighed for at starte " +"og administrere en onlinebutik af enhver art med blot nogle få klik.\n" "\n" "## Nøglefunktioner\n" -"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og tilgængelighed på tværs af flere kategorier.\n" -"- Ordrehåndtering:** Behandl ordrer, spor opfyldelse og håndter kundeanmodninger effektivt.\n" -"- Godkendelse og autorisation:** Omfattende brugergodkendelse med JWT-tokens og rollebaserede tilladelser.\n" -"- **Betalingsbehandling:** Integrer flere betalingsgateways og håndter transaktioner sikkert.\n" -"- Blog- og indholdsstyring: ** Opret og administrer blogindlæg og markedsføringsindhold til din butik.\n" -"- **B2B Operations:** Dedikerede slutpunkter til business-to-business-transaktioner og engrosadministration.\n" -"- Flersproget support:** Betjen kunder over hele verden med fuld internationalisering (i18n).\n" -"- Brugerdefinerede integrationer:** Udvidelig API-arkitektur til integration med eksterne platforme og tjenester.\n" -"- Analyse og rapportering:** Generer detaljerede rapporter om salg, lagerbeholdning og kundeadfærd.\n" -"- Opdateringer i realtid:** Få live-data om lagerniveauer, ordrestatus og prisændringer.\n" +"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og " +"tilgængelighed på tværs af flere kategorier.\n" +"- Ordrehåndtering:** Behandl ordrer, spor opfyldelse og håndter " +"kundeanmodninger effektivt.\n" +"- Godkendelse og autorisation:** Omfattende brugergodkendelse med JWT-tokens " +"og rollebaserede tilladelser.\n" +"- **Betalingsbehandling:** Integrer flere betalingsgateways og håndter " +"transaktioner sikkert.\n" +"- Blog- og indholdsstyring: ** Opret og administrer blogindlæg og " +"markedsføringsindhold til din butik.\n" +"- **B2B Operations:** Dedikerede slutpunkter til business-to-business-" +"transaktioner og engrosadministration.\n" +"- Flersproget support:** Betjen kunder over hele verden med fuld " +"internationalisering (i18n).\n" +"- Brugerdefinerede integrationer:** Udvidelig API-arkitektur til integration " +"med eksterne platforme og tjenester.\n" +"- Analyse og rapportering:** Generer detaljerede rapporter om salg, " +"lagerbeholdning og kundeadfærd.\n" +"- Opdateringer i realtid:** Få live-data om lagerniveauer, ordrestatus og " +"prisændringer.\n" "\n" "## Tilgængelige API'er\n" "- **REST API:** Fuld RESTful-grænseflade (denne dokumentation)\n" -"- GraphQL API:** Tilgængelig på `/graphql/` med GraphiQL-grænseflade til interaktive forespørgsler\n" +"- GraphQL API:** Tilgængelig på `/graphql/` med GraphiQL-grænseflade til " +"interaktive forespørgsler\n" "\n" "## Autentificering\n" -"- Autentificering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-headeren i dine anmodninger i formatet `Bearer `.\n" +"- Autentificering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-" +"AUTH`-headeren i dine anmodninger i formatet `Bearer `.\n" "- Adgangstokenets levetid er {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Opdateringstokenets levetid er {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} timer.\n" -"- Refresh-tokens bliver automatisk roteret og ugyldiggjort efter brug for at øge sikkerheden.\n" +"- Refresh-tokens bliver automatisk roteret og ugyldiggjort efter brug for at " +"øge sikkerheden.\n" "\n" "## Internationalisering (i18n)\n" -"- Indstil headeren `Accept-Language` til at angive dit foretrukne sprog (f.eks. `Accept-Language: en-US`).\n" +"- Indstil headeren `Accept-Language` til at angive dit foretrukne sprog (f." +"eks. `Accept-Language: en-US`).\n" "- Tilgængelige sprog kan hentes fra `/app/languages/` endpoint.\n" "- Alt brugervendt indhold understøtter flere sprog fra starten.\n" "\n" @@ -224,7 +258,8 @@ msgstr "" "API'en understøtter flere svarformater:\n" "- **JSON** (standard, camelCase-formateret)\n" "- XML** (tilføj `?format=xml` eller indstil `Accept: application/xml`)\n" -"- **YAML** (tilføj `?format=yaml` eller indstil `Accept: application/x-yaml`)\n" +"- **YAML** (tilføj `?format=yaml` eller indstil `Accept: application/x-" +"yaml`)\n" "\n" "## Sundhed og overvågning\n" "- Sundhedstjek: `/health/`\n" @@ -257,38 +292,38 @@ msgstr "Periodiske opgaver" msgid "Taskboard" msgstr "Opgavetavle" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Støtte" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Hurtige links" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Brugere" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Grupper" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Bestillinger" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produkter" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Kategorier" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Mærker" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogindlæg" diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.po b/evibes/locale/de_DE/LC_MESSAGES/django.po index 6d0b7e7b..8995679d 100644 --- a/evibes/locale/de_DE/LC_MESSAGES/django.po +++ b/evibes/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -141,36 +141,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -190,44 +207,66 @@ msgstr "" "\n" "Willkommen bei der eVibes-Dokumentation.\n" "\n" -"eVibes ist eine leistungsstarke E-Commerce-Plattform, die es Ihnen ermöglicht, mit nur wenigen Klicks einen Online-Shop jeglicher Art zu eröffnen und zu verwalten.\n" +"eVibes ist eine leistungsstarke E-Commerce-Plattform, die es Ihnen " +"ermöglicht, mit nur wenigen Klicks einen Online-Shop jeglicher Art zu " +"eröffnen und zu verwalten.\n" "\n" "## Hauptmerkmale\n" -"- **Produktkatalog:** Verwalten Sie Produktdetails, Preise, Bestand und Verfügbarkeit über mehrere Kategorien hinweg.\n" -"- **Auftragsverwaltung:** Verarbeiten Sie Aufträge, verfolgen Sie die Ausführung und bearbeiten Sie Kundenanfragen effizient.\n" -"- **Authentifizierung & Autorisierung:** Umfassende Benutzerauthentifizierung mit JWT-Tokens und rollenbasierten Berechtigungen.\n" -"- **Zahlungsabwicklung:** Integrieren Sie mehrere Zahlungsgateways und verwalten Sie Transaktionen auf sichere Weise.\n" -"- **Blog & Content Management:** Erstellen und verwalten Sie Blogbeiträge und Marketinginhalte für Ihren Shop.\n" -"- **B2B-Betrieb:** Dedizierte Endpunkte für Business-to-Business-Transaktionen und Großhandelsmanagement.\n" -"- **Mehrsprachige Unterstützung:** Bedienen Sie Kunden auf der ganzen Welt mit vollständigen Internationalisierungsfunktionen (i18n).\n" -"- **Benutzerdefinierte Integrationen:** Erweiterbare API-Architektur für die Integration mit externen Plattformen und Diensten.\n" -"- **Analytik & Reporting:** Generieren Sie detaillierte Berichte über Verkäufe, Bestände und Kundenverhalten.\n" -"- **Echtzeit-Updates:** Erhalten Sie Live-Daten zu Lagerbeständen, Bestellstatus und Preisänderungen.\n" +"- **Produktkatalog:** Verwalten Sie Produktdetails, Preise, Bestand und " +"Verfügbarkeit über mehrere Kategorien hinweg.\n" +"- **Auftragsverwaltung:** Verarbeiten Sie Aufträge, verfolgen Sie die " +"Ausführung und bearbeiten Sie Kundenanfragen effizient.\n" +"- **Authentifizierung & Autorisierung:** Umfassende " +"Benutzerauthentifizierung mit JWT-Tokens und rollenbasierten " +"Berechtigungen.\n" +"- **Zahlungsabwicklung:** Integrieren Sie mehrere Zahlungsgateways und " +"verwalten Sie Transaktionen auf sichere Weise.\n" +"- **Blog & Content Management:** Erstellen und verwalten Sie Blogbeiträge " +"und Marketinginhalte für Ihren Shop.\n" +"- **B2B-Betrieb:** Dedizierte Endpunkte für Business-to-Business-" +"Transaktionen und Großhandelsmanagement.\n" +"- **Mehrsprachige Unterstützung:** Bedienen Sie Kunden auf der ganzen Welt " +"mit vollständigen Internationalisierungsfunktionen (i18n).\n" +"- **Benutzerdefinierte Integrationen:** Erweiterbare API-Architektur für die " +"Integration mit externen Plattformen und Diensten.\n" +"- **Analytik & Reporting:** Generieren Sie detaillierte Berichte über " +"Verkäufe, Bestände und Kundenverhalten.\n" +"- **Echtzeit-Updates:** Erhalten Sie Live-Daten zu Lagerbeständen, " +"Bestellstatus und Preisänderungen.\n" "\n" "## Verfügbare APIs\n" "- **REST API:** Vollständige RESTful-Schnittstelle (diese Dokumentation)\n" -"- **GraphQL API:** Verfügbar unter `/graphql/` mit GraphiQL-Schnittstelle für interaktive Abfragen\n" +"- **GraphQL API:** Verfügbar unter `/graphql/` mit GraphiQL-Schnittstelle " +"für interaktive Abfragen\n" "\n" "## Authentifizierung\n" -"- Die Authentifizierung erfolgt über JWT-Tokens. Fügen Sie das Token in den `X-EVIBES-AUTH`-Header Ihrer Anfragen im Format `Bearer ` ein.\n" +"- Die Authentifizierung erfolgt über JWT-Tokens. Fügen Sie das Token in den " +"`X-EVIBES-AUTH`-Header Ihrer Anfragen im Format `Bearer ` ein.\n" "- Die Lebensdauer des Zugangstokens beträgt {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Die Lebensdauer von Auffrischungstoken beträgt {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} Stunden.\n" -"- Refresh-Tokens werden automatisch rotiert und nach der Verwendung ungültig gemacht, um die Sicherheit zu erhöhen.\n" +"- Refresh-Tokens werden automatisch rotiert und nach der Verwendung ungültig " +"gemacht, um die Sicherheit zu erhöhen.\n" "\n" "## Internationalisierung (i18n)\n" -"- Setzen Sie den `Accept-Language`-Header, um Ihre bevorzugte Sprache anzugeben (z.B. `Accept-Language: en-US`).\n" -"- Die verfügbaren Sprachen können über den Endpunkt `/app/languages/` abgerufen werden.\n" +"- Setzen Sie den `Accept-Language`-Header, um Ihre bevorzugte Sprache " +"anzugeben (z.B. `Accept-Language: en-US`).\n" +"- Die verfügbaren Sprachen können über den Endpunkt `/app/languages/` " +"abgerufen werden.\n" "- Alle benutzerseitigen Inhalte unterstützen von Haus aus mehrere Sprachen.\n" "\n" "## Antwortformate\n" "Die API unterstützt mehrere Antwortformate:\n" "- **JSON** (Standard, camelCase-formatiert)\n" -"- XML** (fügen Sie `?format=xml` hinzu oder setzen Sie `Accept: application/xml`)\n" -"- **YAML** (fügen Sie `?format=yaml` hinzu oder legen Sie `Accept: application/x-yaml` fest)\n" +"- XML** (fügen Sie `?format=xml` hinzu oder setzen Sie `Accept: application/" +"xml`)\n" +"- **YAML** (fügen Sie `?format=yaml` hinzu oder legen Sie `Accept: " +"application/x-yaml` fest)\n" "\n" "## Gesundheit & Überwachung\n" "- Gesundheitsprüfungen: `/health/`\n" @@ -260,38 +299,38 @@ msgstr "Regelmäßige Aufgaben" msgid "Taskboard" msgstr "Aufgabentafel" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Unterstützung" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Schnelle Links" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Benutzer" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Gruppen" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Bestellungen" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produkte" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Kategorien" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Marken" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposts" diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.po b/evibes/locale/en_GB/LC_MESSAGES/django.po index 4317e2bb..2e2e61f3 100644 --- a/evibes/locale/en_GB/LC_MESSAGES/django.po +++ b/evibes/locale/en_GB/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -142,36 +142,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -191,36 +208,53 @@ msgstr "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -261,38 +295,38 @@ msgstr "Periodic Tasks" msgid "Taskboard" msgstr "Taskboard" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Support" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Quick Links" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Users" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Groups" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Orders" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Products" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Categories" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Brands" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposts" diff --git a/evibes/locale/en_US/LC_MESSAGES/django.po b/evibes/locale/en_US/LC_MESSAGES/django.po index 409b6492..f5013fb1 100644 --- a/evibes/locale/en_US/LC_MESSAGES/django.po +++ b/evibes/locale/en_US/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,36 +204,53 @@ msgstr "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks.\n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -257,38 +291,38 @@ msgstr "Periodic Tasks" msgid "Taskboard" msgstr "Taskboard" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Support" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Quick Links" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Users" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Groups" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Orders" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Products" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Categories" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Brands" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposts" diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.po b/evibes/locale/es_ES/LC_MESSAGES/django.po index 9506fe03..55528bac 100644 --- a/evibes/locale/es_ES/LC_MESSAGES/django.po +++ b/evibes/locale/es_ES/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -140,36 +140,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -189,38 +206,59 @@ msgstr "" "\n" "Bienvenido a la documentación de eVibes.\n" "\n" -"eVibes es una potente plataforma de comercio electrónico que le permite lanzar y gestionar una tienda en línea de cualquier tipo en tan sólo unos clics.\n" +"eVibes es una potente plataforma de comercio electrónico que le permite " +"lanzar y gestionar una tienda en línea de cualquier tipo en tan sólo unos " +"clics.\n" "\n" "## Características principales\n" -"- **Catálogo de productos:** Gestione los detalles de los productos, precios, inventario y disponibilidad en múltiples categorías.\n" -"- **Gestión de Pedidos:** Procesar pedidos, seguimiento de cumplimiento, y manejar las solicitudes de los clientes de manera eficiente.\n" -"- Autenticación y autorización:Autenticación de usuario integral con tokens JWT y permisos basados en roles.\n" -"- **Procesamiento de pagos:** Integre múltiples pasarelas de pago y gestione las transacciones de forma segura.\n" -"- **Blog y gestión de contenidos:** Crear y gestionar entradas de blog y contenido de marketing para su tienda.\n" -"- **Operaciones B2B:** Puntos finales dedicados para transacciones de empresa a empresa y gestión de ventas al por mayor.\n" -"- Soporte multilingüe:** Sirve a clientes de todo el mundo con capacidades de internacionalización completa (i18n).\n" -"- Integraciones personalizadas:** Arquitectura API extensible para la integración con plataformas y servicios externos.\n" -"- Análisis e informes:** Generación de informes detallados sobre ventas, inventario y comportamiento de los clientes.\n" -"- Actualizaciones en tiempo real:** Obtenga datos en tiempo real sobre los niveles de inventario, el estado de los pedidos y los cambios de precios.\n" +"- **Catálogo de productos:** Gestione los detalles de los productos, " +"precios, inventario y disponibilidad en múltiples categorías.\n" +"- **Gestión de Pedidos:** Procesar pedidos, seguimiento de cumplimiento, y " +"manejar las solicitudes de los clientes de manera eficiente.\n" +"- Autenticación y autorización:Autenticación de usuario integral con tokens " +"JWT y permisos basados en roles.\n" +"- **Procesamiento de pagos:** Integre múltiples pasarelas de pago y gestione " +"las transacciones de forma segura.\n" +"- **Blog y gestión de contenidos:** Crear y gestionar entradas de blog y " +"contenido de marketing para su tienda.\n" +"- **Operaciones B2B:** Puntos finales dedicados para transacciones de " +"empresa a empresa y gestión de ventas al por mayor.\n" +"- Soporte multilingüe:** Sirve a clientes de todo el mundo con capacidades " +"de internacionalización completa (i18n).\n" +"- Integraciones personalizadas:** Arquitectura API extensible para la " +"integración con plataformas y servicios externos.\n" +"- Análisis e informes:** Generación de informes detallados sobre ventas, " +"inventario y comportamiento de los clientes.\n" +"- Actualizaciones en tiempo real:** Obtenga datos en tiempo real sobre los " +"niveles de inventario, el estado de los pedidos y los cambios de precios.\n" "\n" "## API disponibles\n" "- API REST:** Interfaz RESTful completa (esta documentación)\n" -"- API GraphQL:** Disponible en `/graphql/` con interfaz GraphiQL para consultas interactivas\n" +"- API GraphQL:** Disponible en `/graphql/` con interfaz GraphiQL para " +"consultas interactivas\n" "\n" "## Autenticación\n" -"- La autenticación se gestiona mediante tokens JWT. Incluya el token en la cabecera `X-EVIBES-AUTH` de sus peticiones con el formato `Bearer `.\n" +"- La autenticación se gestiona mediante tokens JWT. Incluya el token en la " +"cabecera `X-EVIBES-AUTH` de sus peticiones con el formato `Bearer " +"`.\n" "- La duración del token de acceso es {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- La duración del token de actualización es de {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} horas.\n" -"- Los tokens de actualización se rotan automáticamente y se invalidan después de su uso para mejorar la seguridad.\n" +"- Los tokens de actualización se rotan automáticamente y se invalidan " +"después de su uso para mejorar la seguridad.\n" "\n" "## Internacionalización (i18n)\n" -"- Establezca la cabecera `Accept-Language` para especificar su idioma preferido (por ejemplo, `Accept-Language: en-US`).\n" -"- Los idiomas disponibles pueden recuperarse desde el punto final `/app/languages/`.\n" -"- Todos los contenidos orientados al usuario son compatibles con varios idiomas.\n" +"- Establezca la cabecera `Accept-Language` para especificar su idioma " +"preferido (por ejemplo, `Accept-Language: en-US`).\n" +"- Los idiomas disponibles pueden recuperarse desde el punto final `/app/" +"languages/`.\n" +"- Todos los contenidos orientados al usuario son compatibles con varios " +"idiomas.\n" "\n" "## Formatos de respuesta\n" "La API admite varios formatos de respuesta:\n" @@ -259,38 +297,38 @@ msgstr "Tareas periódicas" msgid "Taskboard" msgstr "Taskboard" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Ayuda" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Enlaces rápidos" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Usuarios" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Grupos" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Pedidos" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Productos" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Categorías" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Marcas" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposts" diff --git a/evibes/locale/fa_IR/LC_MESSAGES/django.po b/evibes/locale/fa_IR/LC_MESSAGES/django.po index c26cbfbf..ffe07507 100644 --- a/evibes/locale/fa_IR/LC_MESSAGES/django.po +++ b/evibes/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -227,38 +227,38 @@ msgstr "" msgid "Taskboard" msgstr "" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "" diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.po b/evibes/locale/fr_FR/LC_MESSAGES/django.po index a8d44b1d..0038670c 100644 --- a/evibes/locale/fr_FR/LC_MESSAGES/django.po +++ b/evibes/locale/fr_FR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -30,8 +30,8 @@ msgid "" "Tax rate in jurisdiction of your company. Leave 0 if you don't want to " "process taxes." msgstr "" -"Taux d'imposition dans la juridiction de votre entreprise. Laissez 0 si vous" -" ne souhaitez pas traiter les taxes." +"Taux d'imposition dans la juridiction de votre entreprise. Laissez 0 si vous " +"ne souhaitez pas traiter les taxes." #: evibes/settings/constance.py:28 msgid "Shows if the taxes are already included in product's selling prices" @@ -83,8 +83,8 @@ msgstr "" #: evibes/settings/constance.py:41 msgid "How many days we store messages from authenticated users" msgstr "" -"Pendant combien de jours les messages des utilisateurs authentifiés sont-ils" -" conservés ?" +"Pendant combien de jours les messages des utilisateurs authentifiés sont-ils " +"conservés ?" #: evibes/settings/constance.py:42 msgid "Disable buy functionality" @@ -143,36 +143,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -192,48 +209,69 @@ msgstr "" "\n" "Bienvenue dans la documentation d'eVibes.\n" "\n" -"eVibes est une puissante plateforme de commerce électronique qui vous permet de lancer et de gérer une boutique en ligne de tout type en quelques clics.\n" +"eVibes est une puissante plateforme de commerce électronique qui vous permet " +"de lancer et de gérer une boutique en ligne de tout type en quelques clics.\n" "\n" "## Fonctionnalités principales\n" -"- Catalogue de produits:** Gérer les détails des produits, les prix, l'inventaire et la disponibilité à travers plusieurs catégories.\n" -"- Gestion des commandes:** Traiter les commandes, suivre l'exécution et traiter les demandes des clients de manière efficace.\n" -"- Authentification et autorisation:** Authentification complète des utilisateurs avec des jetons JWT et des autorisations basées sur les rôles.\n" -"- Traitement des paiements:** Intégration de plusieurs passerelles de paiement et gestion sécurisée des transactions.\n" -"- Gestion de blog et de contenu:** Créez et gérez des articles de blog et du contenu marketing pour votre boutique.\n" -"- Opérations B2B:** Points d'accès dédiés aux transactions interentreprises et à la gestion des ventes en gros.\n" -"- Support multilingue:** Servez vos clients dans le monde entier grâce à des capacités d'internationalisation complètes (i18n).\n" -"- Intégrations personnalisées:** Architecture API extensible pour l'intégration avec des plates-formes et des services externes.\n" -"- Analyses et rapports:** Générer des rapports détaillés sur les ventes, les stocks et le comportement des clients.\n" -"- Mises à jour en temps réel:** Obtenez des données en direct sur les niveaux de stock, les statuts des commandes et les changements de prix.\n" +"- Catalogue de produits:** Gérer les détails des produits, les prix, " +"l'inventaire et la disponibilité à travers plusieurs catégories.\n" +"- Gestion des commandes:** Traiter les commandes, suivre l'exécution et " +"traiter les demandes des clients de manière efficace.\n" +"- Authentification et autorisation:** Authentification complète des " +"utilisateurs avec des jetons JWT et des autorisations basées sur les rôles.\n" +"- Traitement des paiements:** Intégration de plusieurs passerelles de " +"paiement et gestion sécurisée des transactions.\n" +"- Gestion de blog et de contenu:** Créez et gérez des articles de blog et du " +"contenu marketing pour votre boutique.\n" +"- Opérations B2B:** Points d'accès dédiés aux transactions interentreprises " +"et à la gestion des ventes en gros.\n" +"- Support multilingue:** Servez vos clients dans le monde entier grâce à des " +"capacités d'internationalisation complètes (i18n).\n" +"- Intégrations personnalisées:** Architecture API extensible pour " +"l'intégration avec des plates-formes et des services externes.\n" +"- Analyses et rapports:** Générer des rapports détaillés sur les ventes, les " +"stocks et le comportement des clients.\n" +"- Mises à jour en temps réel:** Obtenez des données en direct sur les " +"niveaux de stock, les statuts des commandes et les changements de prix.\n" "\n" "## API disponibles\n" "- API REST:** Interface RESTful complète (cette documentation)\n" -"- API GraphQL:** Disponible sur `/graphql/` avec l'interface GraphiQL pour les requêtes interactives.\n" +"- API GraphQL:** Disponible sur `/graphql/` avec l'interface GraphiQL pour " +"les requêtes interactives.\n" "\n" "## Authentification\n" -"- L'authentification est gérée par des jetons JWT. Incluez le jeton dans l'en-tête `X-EVIBES-AUTH` de vos requêtes au format `Bearer `.\n" +"- L'authentification est gérée par des jetons JWT. Incluez le jeton dans " +"l'en-tête `X-EVIBES-AUTH` de vos requêtes au format `Bearer `.\n" "- La durée de vie du jeton d'accès est de {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- La durée de vie du jeton de rafraîchissement est de {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} heures.\n" -"- Les jetons de rafraîchissement font l'objet d'une rotation automatique et sont invalidés après utilisation pour une meilleure sécurité.\n" +"- Les jetons de rafraîchissement font l'objet d'une rotation automatique et " +"sont invalidés après utilisation pour une meilleure sécurité.\n" "\n" "## Internationalisation (i18n)\n" -"- Définissez l'en-tête `Accept-Language` pour spécifier votre langue préférée (par exemple, `Accept-Language : en-US`).\n" -"- Les langues disponibles peuvent être récupérées à partir du point de terminaison `/app/languages/`.\n" -"- Tous les contenus destinés à l'utilisateur supportent d'emblée plusieurs langues.\n" +"- Définissez l'en-tête `Accept-Language` pour spécifier votre langue " +"préférée (par exemple, `Accept-Language : en-US`).\n" +"- Les langues disponibles peuvent être récupérées à partir du point de " +"terminaison `/app/languages/`.\n" +"- Tous les contenus destinés à l'utilisateur supportent d'emblée plusieurs " +"langues.\n" "\n" "## Formats de réponse\n" "L'API prend en charge plusieurs formats de réponse :\n" "- **JSON** (par défaut, formaté en camelCase)\n" "- **XML** (ajoutez `?format=xml` ou définissez `Accept : application/xml`)\n" -"- **YAML** (ajouter `?format=yaml` ou définir `Accept : application/x-yaml`)\n" +"- **YAML** (ajouter `?format=yaml` ou définir `Accept : application/x-" +"yaml`)\n" "\n" "## Santé et surveillance\n" "- Contrôles de santé : `/health/`\n" -"- Métriques Prometheus (protégées par l'authentification de base) : `/prometheus/`\n" +"- Métriques Prometheus (protégées par l'authentification de base) : `/" +"prometheus/`\n" "\n" "## Version\n" "Version actuelle de l'API : {EVIBES_VERSION}\n" @@ -262,38 +300,38 @@ msgstr "Tâches périodiques" msgid "Taskboard" msgstr "Tableau des tâches" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Soutien" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Liens rapides" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Utilisateurs" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Groupes" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Commandes" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produits" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Catégories" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Marques" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposts" diff --git a/evibes/locale/he_IL/LC_MESSAGES/django.po b/evibes/locale/he_IL/LC_MESSAGES/django.po index 00dc5958..7351ed47 100644 --- a/evibes/locale/he_IL/LC_MESSAGES/django.po +++ b/evibes/locale/he_IL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -29,8 +29,7 @@ msgstr "מספר הטלפון של החברה" msgid "" "Tax rate in jurisdiction of your company. Leave 0 if you don't want to " "process taxes." -msgstr "" -"שיעור המס בתחום השיפוט של החברה שלך. השאר 0 אם אינך מעוניין לעבד מסים." +msgstr "שיעור המס בתחום השיפוט של החברה שלך. השאר 0 אם אינך מעוניין לעבד מסים." #: evibes/settings/constance.py:28 msgid "Shows if the taxes are already included in product's selling prices" @@ -137,36 +136,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -184,18 +200,42 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" "\n" -"ברוכים הבאים לתיעוד של eVibes. eVibes היא פלטפורמת מסחר אלקטרוני עוצמתית המאפשרת להקים ולנהל חנות מקוונת מכל סוג בכמה לחיצות בלבד. ## תכונות עיקריות - **קטלוג מוצרים:** ניהול פרטי מוצרים, מחירים, מלאי וזמינות בקטגוריות מרובות. - **ניהול הזמנות:** עיבוד הזמנות, מעקב אחר ביצוען וטיפול יעיל בבקשות לקוחות.\n" -"- **אימות ואישור:** אימות משתמשים מקיף באמצעות אסימוני JWT והרשאות מבוססות תפקידים. - **עיבוד תשלומים:** שלבו מספר שערי תשלום ונהלו עסקאות בצורה מאובטחת. - **ניהול בלוג ותוכן:** צרו ונהלו פוסטים בבלוג ותוכן שיווקי לחנות שלכם. - **פעולות B2B:** נקודות קצה ייעודיות לעסקאות בין עסקים וניהול סיטונאי.\n" -"- **תמיכה בריבוי שפות:** שירות ללקוחות ברחבי העולם עם יכולות בינלאומיות מלאות (i18n). - **אינטגרציות מותאמות אישית:** ארכיטקטורת API ניתנת להרחבה לשילוב עם פלטפורמות ושירותים חיצוניים. - **ניתוחים ודיווחים:** יצירת דוחות מפורטים על מכירות, מלאי והתנהגות לקוחות. - **עדכונים בזמן אמת:** קבלת נתונים בזמן אמת על רמות המלאי, סטטוס ההזמנות ושינויים במחירים.\n" +"ברוכים הבאים לתיעוד של eVibes. eVibes היא פלטפורמת מסחר אלקטרוני עוצמתית " +"המאפשרת להקים ולנהל חנות מקוונת מכל סוג בכמה לחיצות בלבד. ## תכונות עיקריות " +"- **קטלוג מוצרים:** ניהול פרטי מוצרים, מחירים, מלאי וזמינות בקטגוריות " +"מרובות. - **ניהול הזמנות:** עיבוד הזמנות, מעקב אחר ביצוען וטיפול יעיל בבקשות " +"לקוחות.\n" +"- **אימות ואישור:** אימות משתמשים מקיף באמצעות אסימוני JWT והרשאות מבוססות " +"תפקידים. - **עיבוד תשלומים:** שלבו מספר שערי תשלום ונהלו עסקאות בצורה " +"מאובטחת. - **ניהול בלוג ותוכן:** צרו ונהלו פוסטים בבלוג ותוכן שיווקי לחנות " +"שלכם. - **פעולות B2B:** נקודות קצה ייעודיות לעסקאות בין עסקים וניהול " +"סיטונאי.\n" +"- **תמיכה בריבוי שפות:** שירות ללקוחות ברחבי העולם עם יכולות בינלאומיות " +"מלאות (i18n). - **אינטגרציות מותאמות אישית:** ארכיטקטורת API ניתנת להרחבה " +"לשילוב עם פלטפורמות ושירותים חיצוניים. - **ניתוחים ודיווחים:** יצירת דוחות " +"מפורטים על מכירות, מלאי והתנהגות לקוחות. - **עדכונים בזמן אמת:** קבלת נתונים " +"בזמן אמת על רמות המלאי, סטטוס ההזמנות ושינויים במחירים.\n" "\n" -"## ממשקי API זמינים - **REST API:** ממשק RESTful מלא (תיעוד זה) - **GraphQL API:** זמין ב-`/graphql/` עם ממשק GraphiQL לשאילתות אינטראקטיביות ## אימות - האימות מתבצע באמצעות אסימוני JWT. כלול את האסימון בכותרת `X-EVIBES-AUTH` של בקשותיך בפורמט `Bearer `.\n" +"## ממשקי API זמינים - **REST API:** ממשק RESTful מלא (תיעוד זה) - **GraphQL " +"API:** זמין ב-`/graphql/` עם ממשק GraphiQL לשאילתות אינטראקטיביות ## אימות - " +"האימות מתבצע באמצעות אסימוני JWT. כלול את האסימון בכותרת `X-EVIBES-AUTH` של " +"בקשותיך בפורמט `Bearer `.\n" "- אורך חיי אסימון הגישה הוא {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}. - אורך חיי אסימון הרענון הוא {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" -"} שעות. - אסימוני הרענון מסתובבים באופן אוטומטי ומבוטלים לאחר השימוש לשם אבטחה משופרת. ## בינלאומיות (i18n) - הגדר את הכותרת `Accept-Language` כדי לציין את השפה המועדפת עליך (לדוגמה, `Accept-Language: en-US`).\n" -"- ניתן לאחזר את השפות הזמינות מנקודת הקצה `/app/languages/`. - כל התוכן המוצג למשתמש תומך במספר שפות באופן מובנה. ## פורמטים של תגובה ה-API תומך במספר פורמטים של תגובה: - **JSON** (ברירת מחדל, בפורמט camelCase) - **XML** (הוסף `?format=xml` או הגדר `Accept: application/xml`)\n" -"- **YAML** (הוסף `?format=yaml` או הגדר `Accept: application/x-yaml`) ## תקינות וניטור - בדיקות תקינות: `/health/` - מדדי Prometheus (מוגנים באמצעות אימות בסיסי): `/prometheus/` ## גרסה גרסת ה-API הנוכחית: {EVIBES_VERSION}\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" +"} שעות. - אסימוני הרענון מסתובבים באופן אוטומטי ומבוטלים לאחר השימוש לשם " +"אבטחה משופרת. ## בינלאומיות (i18n) - הגדר את הכותרת `Accept-Language` כדי " +"לציין את השפה המועדפת עליך (לדוגמה, `Accept-Language: en-US`).\n" +"- ניתן לאחזר את השפות הזמינות מנקודת הקצה `/app/languages/`. - כל התוכן " +"המוצג למשתמש תומך במספר שפות באופן מובנה. ## פורמטים של תגובה ה-API תומך " +"במספר פורמטים של תגובה: - **JSON** (ברירת מחדל, בפורמט camelCase) - **XML** " +"(הוסף `?format=xml` או הגדר `Accept: application/xml`)\n" +"- **YAML** (הוסף `?format=yaml` או הגדר `Accept: application/x-yaml`) ## " +"תקינות וניטור - בדיקות תקינות: `/health/` - מדדי Prometheus (מוגנים באמצעות " +"אימות בסיסי): `/prometheus/` ## גרסה גרסת ה-API הנוכחית: {EVIBES_VERSION}\n" #: evibes/settings/unfold.py:57 msgid "Menu" @@ -221,38 +261,38 @@ msgstr "משימות תקופתיות" msgid "Taskboard" msgstr "לוח משימות" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "תמיכה" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "קישורים מהירים" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "משתמשים" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "קבוצות" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "הזמנות" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "מוצרים" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "קטגוריות" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "מותגים" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "פוסטים בבלוג" diff --git a/evibes/locale/hi_IN/LC_MESSAGES/django.po b/evibes/locale/hi_IN/LC_MESSAGES/django.po index a8e152cc..e03c44cc 100644 --- a/evibes/locale/hi_IN/LC_MESSAGES/django.po +++ b/evibes/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -227,38 +227,38 @@ msgstr "" msgid "Taskboard" msgstr "" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "" diff --git a/evibes/locale/hr_HR/LC_MESSAGES/django.po b/evibes/locale/hr_HR/LC_MESSAGES/django.po index c26cbfbf..ffe07507 100644 --- a/evibes/locale/hr_HR/LC_MESSAGES/django.po +++ b/evibes/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -227,38 +227,38 @@ msgstr "" msgid "Taskboard" msgstr "" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "" diff --git a/evibes/locale/id_ID/LC_MESSAGES/django.po b/evibes/locale/id_ID/LC_MESSAGES/django.po index a798a2f4..c7d1373a 100644 --- a/evibes/locale/id_ID/LC_MESSAGES/django.po +++ b/evibes/locale/id_ID/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,44 +204,64 @@ msgstr "" "\n" "Selamat datang di dokumentasi eVibes.\n" "\n" -"eVibes adalah platform e-commerce yang kuat yang memungkinkan Anda untuk meluncurkan dan mengelola toko online dalam bentuk apa pun hanya dengan beberapa klik.\n" +"eVibes adalah platform e-commerce yang kuat yang memungkinkan Anda untuk " +"meluncurkan dan mengelola toko online dalam bentuk apa pun hanya dengan " +"beberapa klik.\n" "\n" "## Fitur Utama\n" -"- Katalog Produk:** Kelola detail produk, harga, inventaris, dan ketersediaan di berbagai kategori.\n" -"- Manajemen Pesanan:** Memproses pesanan, melacak pemenuhan pesanan, dan menangani permintaan pelanggan secara efisien.\n" -"- Autentikasi & Otorisasi:** Autentikasi pengguna yang komprehensif dengan token JWT dan izin berbasis peran.\n" -"- Pemrosesan Pembayaran:** Mengintegrasikan beberapa gateway pembayaran dan mengelola transaksi dengan aman.\n" -"- Manajemen Blog & Konten:** Buat dan kelola posting blog dan konten pemasaran untuk toko Anda.\n" -"- ** Operasi B2B:** Titik akhir khusus untuk transaksi bisnis-ke-bisnis dan manajemen grosir.\n" -"- Dukungan Multi-bahasa:** Melayani pelanggan di seluruh dunia dengan kemampuan internasionalisasi penuh (i18n).\n" -"- Integrasi Khusus:** Arsitektur API yang dapat diperluas untuk berintegrasi dengan platform dan layanan eksternal.\n" -"- Analisis & Pelaporan:** Menghasilkan laporan terperinci tentang penjualan, inventaris, dan perilaku pelanggan.\n" -"- **Pembaruan Waktu Nyata:** Dapatkan data langsung tentang tingkat inventaris, status pesanan, dan perubahan harga.\n" +"- Katalog Produk:** Kelola detail produk, harga, inventaris, dan " +"ketersediaan di berbagai kategori.\n" +"- Manajemen Pesanan:** Memproses pesanan, melacak pemenuhan pesanan, dan " +"menangani permintaan pelanggan secara efisien.\n" +"- Autentikasi & Otorisasi:** Autentikasi pengguna yang komprehensif dengan " +"token JWT dan izin berbasis peran.\n" +"- Pemrosesan Pembayaran:** Mengintegrasikan beberapa gateway pembayaran dan " +"mengelola transaksi dengan aman.\n" +"- Manajemen Blog & Konten:** Buat dan kelola posting blog dan konten " +"pemasaran untuk toko Anda.\n" +"- ** Operasi B2B:** Titik akhir khusus untuk transaksi bisnis-ke-bisnis dan " +"manajemen grosir.\n" +"- Dukungan Multi-bahasa:** Melayani pelanggan di seluruh dunia dengan " +"kemampuan internasionalisasi penuh (i18n).\n" +"- Integrasi Khusus:** Arsitektur API yang dapat diperluas untuk berintegrasi " +"dengan platform dan layanan eksternal.\n" +"- Analisis & Pelaporan:** Menghasilkan laporan terperinci tentang penjualan, " +"inventaris, dan perilaku pelanggan.\n" +"- **Pembaruan Waktu Nyata:** Dapatkan data langsung tentang tingkat " +"inventaris, status pesanan, dan perubahan harga.\n" "\n" "## API yang tersedia\n" "- **REST API:** Antarmuka RESTful penuh (dokumentasi ini)\n" -"- API GraphQL:** Tersedia di `/graphql/` dengan antarmuka GraphiQL untuk kueri interaktif\n" +"- API GraphQL:** Tersedia di `/graphql/` dengan antarmuka GraphiQL untuk " +"kueri interaktif\n" "\n" "## Otentikasi\n" -"- Otentikasi ditangani melalui token JWT. Sertakan token di header `X-EVIBES-AUTH` pada permintaan Anda dalam format `Bearer `.\n" +"- Otentikasi ditangani melalui token JWT. Sertakan token di header `X-EVIBES-" +"AUTH` pada permintaan Anda dalam format `Bearer `.\n" "- Masa berlaku token akses adalah {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Masa berlaku token refresh adalah {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} jam.\n" -"- Refresh token secara otomatis dirotasi dan dibatalkan setelah digunakan untuk meningkatkan keamanan.\n" +"- Refresh token secara otomatis dirotasi dan dibatalkan setelah digunakan " +"untuk meningkatkan keamanan.\n" "\n" "## Internasionalisasi (i18n)\n" -"- Atur header `Accept-Language` untuk menentukan bahasa yang Anda inginkan (misalnya, `Accept-Language: en-US`).\n" +"- Atur header `Accept-Language` untuk menentukan bahasa yang Anda inginkan " +"(misalnya, `Accept-Language: en-US`).\n" "- Bahasa yang tersedia dapat diambil dari titik akhir `/app/languages/`.\n" -"- Semua konten yang berhadapan dengan pengguna mendukung beberapa bahasa secara langsung.\n" +"- Semua konten yang berhadapan dengan pengguna mendukung beberapa bahasa " +"secara langsung.\n" "\n" "Format Tanggapan ## Format Tanggapan\n" "API mendukung beberapa format respons:\n" "- **JSON** (default, berformat camelCase)\n" "- **XML** (tambahkan `?format=xml` atau setel `Accept: application/xml`)\n" -"- **YAML** (tambahkan `?format=yaml` atau setel `Accept: application/x-yaml`)\n" +"- **YAML** (tambahkan `?format=yaml` atau setel `Accept: application/x-" +"yaml`)\n" "\n" "## Kesehatan & Pemantauan\n" "- Pemeriksaan kesehatan: `/health/`\n" @@ -257,38 +294,38 @@ msgstr "Tugas Berkala" msgid "Taskboard" msgstr "Papan tugas" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Dukungan" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Tautan Cepat" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Pengguna" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Grup" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Pesanan" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produk" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Kategori" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Merek" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Posting blog" diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.po b/evibes/locale/it_IT/LC_MESSAGES/django.po index 6d41f1d9..bdf7a14b 100644 --- a/evibes/locale/it_IT/LC_MESSAGES/django.po +++ b/evibes/locale/it_IT/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -30,8 +30,8 @@ msgid "" "Tax rate in jurisdiction of your company. Leave 0 if you don't want to " "process taxes." msgstr "" -"Aliquota fiscale nella giurisdizione della vostra azienda. Lasciare 0 se non" -" si desidera elaborare le imposte." +"Aliquota fiscale nella giurisdizione della vostra azienda. Lasciare 0 se non " +"si desidera elaborare le imposte." #: evibes/settings/constance.py:28 msgid "Shows if the taxes are already included in product's selling prices" @@ -139,36 +139,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -188,44 +205,65 @@ msgstr "" "\n" "Benvenuti nella documentazione di eVibes.\n" "\n" -"eVibes è una potente piattaforma di e-commerce che consente di lanciare e gestire un negozio online di qualsiasi tipo in pochi clic.\n" +"eVibes è una potente piattaforma di e-commerce che consente di lanciare e " +"gestire un negozio online di qualsiasi tipo in pochi clic.\n" "\n" "## Caratteristiche principali\n" -"- **Catalogo dei prodotti:** Gestione dei dettagli dei prodotti, dei prezzi, delle scorte e della disponibilità di più categorie.\n" -"- Gestione degli ordini:** Elaborazione degli ordini, monitoraggio dell'evasione e gestione efficiente delle richieste dei clienti.\n" -"- Autenticazione e autorizzazione:** Autenticazione completa degli utenti con token JWT e autorizzazioni basate sui ruoli.\n" -"- Elaborazione dei pagamenti:** Integrazione di più gateway di pagamento e gestione sicura delle transazioni.\n" -"- Gestione di blog e contenuti:** Creazione e gestione di post sul blog e di contenuti di marketing per il vostro negozio.\n" -"- Operazioni B2B:** Endpoint dedicati per le transazioni business-to-business e la gestione della vendita all'ingrosso.\n" -"- Supporto multilingue:** Servite i clienti in tutto il mondo con funzionalità di internazionalizzazione completa (i18n).\n" -"- Integrazioni personalizzate:** Architettura API estensibile per l'integrazione con piattaforme e servizi esterni.\n" -"- **Analitica e reportistica:** Generazione di report dettagliati su vendite, inventario e comportamento dei clienti.\n" -"- Aggiornamenti in tempo reale:** Ottenete dati in tempo reale sui livelli di inventario, sullo stato degli ordini e sulle modifiche dei prezzi.\n" +"- **Catalogo dei prodotti:** Gestione dei dettagli dei prodotti, dei prezzi, " +"delle scorte e della disponibilità di più categorie.\n" +"- Gestione degli ordini:** Elaborazione degli ordini, monitoraggio " +"dell'evasione e gestione efficiente delle richieste dei clienti.\n" +"- Autenticazione e autorizzazione:** Autenticazione completa degli utenti " +"con token JWT e autorizzazioni basate sui ruoli.\n" +"- Elaborazione dei pagamenti:** Integrazione di più gateway di pagamento e " +"gestione sicura delle transazioni.\n" +"- Gestione di blog e contenuti:** Creazione e gestione di post sul blog e di " +"contenuti di marketing per il vostro negozio.\n" +"- Operazioni B2B:** Endpoint dedicati per le transazioni business-to-" +"business e la gestione della vendita all'ingrosso.\n" +"- Supporto multilingue:** Servite i clienti in tutto il mondo con " +"funzionalità di internazionalizzazione completa (i18n).\n" +"- Integrazioni personalizzate:** Architettura API estensibile per " +"l'integrazione con piattaforme e servizi esterni.\n" +"- **Analitica e reportistica:** Generazione di report dettagliati su " +"vendite, inventario e comportamento dei clienti.\n" +"- Aggiornamenti in tempo reale:** Ottenete dati in tempo reale sui livelli " +"di inventario, sullo stato degli ordini e sulle modifiche dei prezzi.\n" "\n" "## API disponibili\n" "- API REST:** Interfaccia REST completa (questa documentazione)\n" -"- API **GraphQL:** Disponibile su `/graphql/` con interfaccia GraphiQL per le query interattive.\n" +"- API **GraphQL:** Disponibile su `/graphql/` con interfaccia GraphiQL per " +"le query interattive.\n" "\n" "## Autenticazione\n" -"- L'autenticazione è gestita tramite token JWT. Includere il token nell'intestazione `X-EVIBES-AUTH` delle richieste nel formato `Bearer `.\n" +"- L'autenticazione è gestita tramite token JWT. Includere il token " +"nell'intestazione `X-EVIBES-AUTH` delle richieste nel formato `Bearer " +"`.\n" "- La durata di vita del token di accesso è {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- La durata del token di aggiornamento è di {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} ore.\n" -"- I token di aggiornamento vengono ruotati e invalidati automaticamente dopo l'uso per una maggiore sicurezza.\n" +"- I token di aggiornamento vengono ruotati e invalidati automaticamente dopo " +"l'uso per una maggiore sicurezza.\n" "\n" "## Internazionalizzazione (i18n)\n" -"- Impostare l'intestazione `Accept-Language` per specificare la lingua preferita (ad esempio, `Accept-Language: en-US`).\n" -"- Le lingue disponibili possono essere recuperate dall'endpoint `/app/languages/`.\n" -"- Tutti i contenuti rivolti all'utente supportano immediatamente più lingue.\n" +"- Impostare l'intestazione `Accept-Language` per specificare la lingua " +"preferita (ad esempio, `Accept-Language: en-US`).\n" +"- Le lingue disponibili possono essere recuperate dall'endpoint `/app/" +"languages/`.\n" +"- Tutti i contenuti rivolti all'utente supportano immediatamente più " +"lingue.\n" "\n" "## Formati di risposta\n" "L'API supporta diversi formati di risposta:\n" "- **JSON** (predefinito, formattato in camelCase)\n" "- **XML** (aggiungere `?format=xml` o impostare `Accept: application/xml`)\n" -"- **YAML** (aggiungere `?format=yaml` o impostare `Accept: application/x-yaml`)\n" +"- **YAML** (aggiungere `?format=yaml` o impostare `Accept: application/x-" +"yaml`)\n" "\n" "## Salute e monitoraggio\n" "- Controlli sulla salute: `/salute/`\n" @@ -258,38 +296,38 @@ msgstr "Compiti periodici" msgid "Taskboard" msgstr "Lavagna" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Supporto" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Collegamenti rapidi" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Utenti" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Gruppi" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Ordini" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Prodotti" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Categorie" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Marche" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposts" diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.po b/evibes/locale/ja_JP/LC_MESSAGES/django.po index ae1f88ed..e08600ef 100644 --- a/evibes/locale/ja_JP/LC_MESSAGES/django.po +++ b/evibes/locale/ja_JP/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -136,36 +136,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -185,36 +202,48 @@ msgstr "" "\n" "eVibes のドキュメントへようこそ。\n" "\n" -"eVibesは、数クリックであらゆる種類のオンラインストアを立ち上げ、管理できる強力なeコマースプラットフォームです。\n" +"eVibesは、数クリックであらゆる種類のオンラインストアを立ち上げ、管理できる強" +"力なeコマースプラットフォームです。\n" "\n" "## 主な機能\n" -"- 商品カタログ:** 複数のカテゴリにまたがる商品の詳細、価格、在庫、在庫状況を管理します。\n" +"- 商品カタログ:** 複数のカテゴリにまたがる商品の詳細、価格、在庫、在庫状況を" +"管理します。\n" "- 注文管理:**注文を処理し、履行を追跡し、顧客の要求を効率的に処理します。\n" "- JWT トークンとロールベースの権限による包括的なユーザー認証。\n" "- 複数の決済ゲートウェイを統合し、トランザクションを安全に管理します。\n" -"- ブログ・コンテンツ管理:** ブログ記事やマーケティングコンテンツを作成・管理できます。\n" +"- ブログ・コンテンツ管理:** ブログ記事やマーケティングコンテンツを作成・管理" +"できます。\n" "- B2B オペレーション:** 企業間取引と卸売管理のための専用エンドポイント。\n" -"- **多言語サポート:**完全な国際化(国際化)機能で世界中の顧客にサービスを提供します。\n" -"- カスタム統合:**外部プラットフォームやサービスと統合するための拡張可能なAPIアーキテクチャ。\n" +"- **多言語サポート:**完全な国際化(国際化)機能で世界中の顧客にサービスを提供" +"します。\n" +"- カスタム統合:**外部プラットフォームやサービスと統合するための拡張可能なAPI" +"アーキテクチャ。\n" "- 分析&レポート:**売上、在庫、顧客行動に関する詳細なレポートを生成します。\n" -"- リアルタイム更新:**在庫レベル、注文状況、価格変更に関するライブデータを取得します。\n" +"- リアルタイム更新:**在庫レベル、注文状況、価格変更に関するライブデータを取" +"得します。\n" "\n" "## 利用可能なAPI\n" "- **REST API:** 完全なRESTfulインターフェース(このドキュメント)\n" -"- **GraphQL API:** `/graphql/` で利用可能で、対話的なクエリのための GraphiQL インターフェースがある。\n" +"- **GraphQL API:** `/graphql/` で利用可能で、対話的なクエリのための GraphiQL " +"インターフェースがある。\n" "\n" "## 認証\n" -"- 認証はJWTトークンで行われる。リクエストの `X-EVIBES-AUTH` ヘッダーに `Bearer ` という形式でトークンを含めてください。\n" +"- 認証はJWTトークンで行われる。リクエストの `X-EVIBES-AUTH` ヘッダーに " +"`Bearer ` という形式でトークンを含めてください。\n" "- アクセストークンの有効期限は {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}。\n" "- リフレッシュ・トークンの有効期限は {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} 時間です。\n" -"- リフレッシュ・トークンはセキュリティ強化のため、使用後に自動的にローテーションされ無効化されます。\n" +"- リフレッシュ・トークンはセキュリティ強化のため、使用後に自動的にローテー" +"ションされ無効化されます。\n" "\n" "## 国際化 (i18n)\n" -"- Accept-Language`ヘッダを設定して、希望する言語を指定する (例: `Accept-Language: en-US`) 。\n" +"- Accept-Language`ヘッダを設定して、希望する言語を指定する (例: `Accept-" +"Language: en-US`) 。\n" "- 利用可能な言語は `/app/languages/` エンドポイントから取得できます。\n" "- すべてのユーザー向けコンテンツは、すぐに多言語をサポートします。\n" "\n" @@ -222,7 +251,8 @@ msgstr "" "APIは複数のレスポンスフォーマットをサポートしています:\n" "- JSON** (デフォルト、キャメルケースフォーマット)\n" "- XML** (`?format=xml` を追加するか、`Accept: application/xml` を設定する)\n" -"- YAML** (`?format=yaml` を追加するか、`Accept: application/x-yaml` を設定してください)\n" +"- YAML** (`?format=yaml` を追加するか、`Accept: application/x-yaml` を設定し" +"てください)\n" "\n" "## ヘルス&モニタリング\n" "- ヘルスチェックヘルスチェック: `/health/`\n" @@ -255,38 +285,38 @@ msgstr "定期的なタスク" msgid "Taskboard" msgstr "タスクボード" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "サポート" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "クイックリンク" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "ユーザー" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "グループ" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "受注状況" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "製品紹介" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "カテゴリー" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "ブランド" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "ブログ記事" diff --git a/evibes/locale/kk_KZ/LC_MESSAGES/django.po b/evibes/locale/kk_KZ/LC_MESSAGES/django.po index a8e152cc..e03c44cc 100644 --- a/evibes/locale/kk_KZ/LC_MESSAGES/django.po +++ b/evibes/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -227,38 +227,38 @@ msgstr "" msgid "Taskboard" msgstr "" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "" diff --git a/evibes/locale/ko_KR/LC_MESSAGES/django.po b/evibes/locale/ko_KR/LC_MESSAGES/django.po index b8b755b7..3b2a1411 100644 --- a/evibes/locale/ko_KR/LC_MESSAGES/django.po +++ b/evibes/locale/ko_KR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -29,7 +29,8 @@ msgstr "회사 전화번호" msgid "" "Tax rate in jurisdiction of your company. Leave 0 if you don't want to " "process taxes." -msgstr "회사 관할 지역의 세율입니다. 세금을 처리하지 않으려면 0을 그대로 둡니다." +msgstr "" +"회사 관할 지역의 세율입니다. 세금을 처리하지 않으려면 0을 그대로 둡니다." #: evibes/settings/constance.py:28 msgid "Shows if the taxes are already included in product's selling prices" @@ -136,36 +137,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -185,36 +203,50 @@ msgstr "" "\n" "eVibes 문서에 오신 것을 환영합니다.\n" "\n" -"eVibes는 클릭 몇 번으로 모든 종류의 온라인 스토어를 시작하고 관리할 수 있는 강력한 전자상거래 플랫폼입니다.\n" +"eVibes는 클릭 몇 번으로 모든 종류의 온라인 스토어를 시작하고 관리할 수 있는 " +"강력한 전자상거래 플랫폼입니다.\n" "\n" "주요 기능 ## 주요 기능\n" -"- **제품 카탈로그:** 여러 카테고리에서 제품 세부 정보, 가격, 재고 및 가용성을 관리합니다.\n" -"- 주문 관리:** 주문을 처리하고, 주문 이행을 추적하고, 고객 요청을 효율적으로 처리하세요.\n" -"- 인증 및 권한 부여:** JWT 토큰 및 역할 기반 권한으로 포괄적인 사용자 인증을 수행합니다.\n" +"- **제품 카탈로그:** 여러 카테고리에서 제품 세부 정보, 가격, 재고 및 가용성" +"을 관리합니다.\n" +"- 주문 관리:** 주문을 처리하고, 주문 이행을 추적하고, 고객 요청을 효율적으로 " +"처리하세요.\n" +"- 인증 및 권한 부여:** JWT 토큰 및 역할 기반 권한으로 포괄적인 사용자 인증을 " +"수행합니다.\n" "- 결제 처리:** 여러 결제 게이트웨이를 통합하고 거래를 안전하게 관리하세요.\n" -"- **블로그 및 콘텐츠 관리:** 스토어용 블로그 게시물과 마케팅 콘텐츠를 생성하고 관리합니다.\n" +"- **블로그 및 콘텐츠 관리:** 스토어용 블로그 게시물과 마케팅 콘텐츠를 생성하" +"고 관리합니다.\n" "- B2B 운영:** B2B 거래 및 도매 관리를 위한 전용 엔드포인트.\n" -"- 다국어 지원:** 완전한 국제화(i18n) 기능으로 전 세계 고객에게 서비스를 제공합니다.\n" -"- **맞춤형 통합:** 외부 플랫폼 및 서비스와의 통합을 위한 확장 가능한 API 아키텍처.\n" -"- **분석 및 보고:** 판매, 재고, 고객 행동에 대한 상세한 보고서를 생성합니다.\n" -"- 실시간 업데이트:** 재고 수준, 주문 상태, 가격 변동에 대한 실시간 데이터를 확인할 수 있습니다.\n" +"- 다국어 지원:** 완전한 국제화(i18n) 기능으로 전 세계 고객에게 서비스를 제공" +"합니다.\n" +"- **맞춤형 통합:** 외부 플랫폼 및 서비스와의 통합을 위한 확장 가능한 API 아키" +"텍처.\n" +"- **분석 및 보고:** 판매, 재고, 고객 행동에 대한 상세한 보고서를 생성합니" +"다.\n" +"- 실시간 업데이트:** 재고 수준, 주문 상태, 가격 변동에 대한 실시간 데이터를 " +"확인할 수 있습니다.\n" "\n" "## 사용 가능한 API\n" "- **REST API:** 전체 RESTful 인터페이스(이 문서)\n" -"- GraphQL API:** 대화형 쿼리를 위한 GraphiQL 인터페이스로 `/graphql/`에서 사용 가능\n" +"- GraphQL API:** 대화형 쿼리를 위한 GraphiQL 인터페이스로 `/graphql/`에서 사" +"용 가능\n" "\n" "## 인증\n" -"- 인증은 JWT 토큰을 통해 처리됩니다. 토큰을 요청의 `X-EVIBES-AUTH` 헤더에 `Bearer ` 형식으로 포함하세요.\n" +"- 인증은 JWT 토큰을 통해 처리됩니다. 토큰을 요청의 `X-EVIBES-AUTH` 헤더에 " +"`Bearer ` 형식으로 포함하세요.\n" "- 액세스 토큰 수명은 {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "}입니다. {\"minutes\" if not DEBUG else \"hours\"}입니다.\n" "- 새로 고침 토큰 수명은 {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} 시간입니다.\n" "- 새로 고침 토큰은 보안 강화를 위해 사용 후 자동으로 교체되고 무효화됩니다.\n" "\n" "## 국제화(i18n)\n" -"- 수락 언어` 헤더를 설정하여 선호하는 언어를 지정합니다(예: `수락 언어: en-US`).\n" +"- 수락 언어` 헤더를 설정하여 선호하는 언어를 지정합니다(예: `수락 언어: en-" +"US`).\n" "- 사용 가능한 언어는 `/app/languages/` 엔드포인트에서 검색할 수 있습니다.\n" "- 모든 사용자 대상 콘텐츠는 기본적으로 여러 언어를 지원합니다.\n" "\n" @@ -255,38 +287,38 @@ msgstr "정기 작업" msgid "Taskboard" msgstr "작업 보드" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "지원" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "빠른 링크" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "사용자" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "그룹" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "주문" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "제품" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "카테고리" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "브랜드" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "블로그 게시물" diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.po b/evibes/locale/nl_NL/LC_MESSAGES/django.po index da64454c..278d06a6 100644 --- a/evibes/locale/nl_NL/LC_MESSAGES/django.po +++ b/evibes/locale/nl_NL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -30,8 +30,8 @@ msgid "" "Tax rate in jurisdiction of your company. Leave 0 if you don't want to " "process taxes." msgstr "" -"Belastingtarief in het rechtsgebied van je bedrijf. Laat 0 staan als je geen" -" belastingen wilt verwerken." +"Belastingtarief in het rechtsgebied van je bedrijf. Laat 0 staan als je geen " +"belastingen wilt verwerken." #: evibes/settings/constance.py:28 msgid "Shows if the taxes are already included in product's selling prices" @@ -140,36 +140,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -189,44 +206,63 @@ msgstr "" "\n" "Welkom bij de eVibes documentatie.\n" "\n" -"eVibes is een krachtig e-commerce platform waarmee je in een paar klikken een online winkel van elk type kunt starten en beheren.\n" +"eVibes is een krachtig e-commerce platform waarmee je in een paar klikken " +"een online winkel van elk type kunt starten en beheren.\n" "\n" "## Belangrijkste functies\n" -"- **Productcatalogus:**Beheer productgegevens, prijzen, voorraad en beschikbaarheid in meerdere categorieën.\n" -"- **Order Management:** Verwerk bestellingen, volg de leveringen en behandel verzoeken van klanten efficiënt.\n" -"- **Authenticatie en autorisatie:**Uitgebreide gebruikersverificatie met JWT tokens en rolgebaseerde rechten.\n" -"- **Betalingsverwerking:** Integreer meerdere betalingsgateways en beheer transacties veilig.\n" -"- **Blog & Content Management:** Creëer en beheer blog posts en marketing content voor uw winkel.\n" -"- **B2B Operations:** Specifieke eindpunten voor business-to-business transacties en groothandelsbeheer.\n" -"- Ondersteuning voor meerdere talen:** Bedien klanten wereldwijd met volledige internationalisatiemogelijkheden (i18n).\n" -"- Aangepaste integraties:** Extensibele API-architectuur voor integratie met externe platforms en diensten.\n" -"- Analyse en rapportage:** Genereer gedetailleerde rapporten over verkoop, voorraad en klantgedrag.\n" -"- Realtime updates:** Ontvang live gegevens over voorraadniveaus, orderstatussen en prijswijzigingen.\n" +"- **Productcatalogus:**Beheer productgegevens, prijzen, voorraad en " +"beschikbaarheid in meerdere categorieën.\n" +"- **Order Management:** Verwerk bestellingen, volg de leveringen en behandel " +"verzoeken van klanten efficiënt.\n" +"- **Authenticatie en autorisatie:**Uitgebreide gebruikersverificatie met JWT " +"tokens en rolgebaseerde rechten.\n" +"- **Betalingsverwerking:** Integreer meerdere betalingsgateways en beheer " +"transacties veilig.\n" +"- **Blog & Content Management:** Creëer en beheer blog posts en marketing " +"content voor uw winkel.\n" +"- **B2B Operations:** Specifieke eindpunten voor business-to-business " +"transacties en groothandelsbeheer.\n" +"- Ondersteuning voor meerdere talen:** Bedien klanten wereldwijd met " +"volledige internationalisatiemogelijkheden (i18n).\n" +"- Aangepaste integraties:** Extensibele API-architectuur voor integratie met " +"externe platforms en diensten.\n" +"- Analyse en rapportage:** Genereer gedetailleerde rapporten over verkoop, " +"voorraad en klantgedrag.\n" +"- Realtime updates:** Ontvang live gegevens over voorraadniveaus, " +"orderstatussen en prijswijzigingen.\n" "\n" "## Beschikbare API's\n" "- **REST API:** Volledige RESTful interface (deze documentatie)\n" -"- **GraphQL API:** Beschikbaar op `/graphql/` met GraphiQL interface voor interactieve queries\n" +"- **GraphQL API:** Beschikbaar op `/graphql/` met GraphiQL interface voor " +"interactieve queries\n" "\n" "## Authenticatie\n" -"- Authenticatie wordt afgehandeld via JWT tokens. Neem het token op in de `X-EVIBES-AUTH` header van je verzoeken in het formaat `Bearer `.\n" +"- Authenticatie wordt afgehandeld via JWT tokens. Neem het token op in de `X-" +"EVIBES-AUTH` header van je verzoeken in het formaat `Bearer `.\n" "- De levensduur van het toegangstoken is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- De levensduur van een verversingstoken is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} uur.\n" -"- Refresh tokens worden automatisch geroteerd en ongeldig gemaakt na gebruik voor een betere beveiliging.\n" +"- Refresh tokens worden automatisch geroteerd en ongeldig gemaakt na gebruik " +"voor een betere beveiliging.\n" "\n" "## Internationalisatie (i18n)\n" -"- Stel de `Accept-Language` header in om uw voorkeurstaal op te geven (bijvoorbeeld `Accept-Language: en-US`).\n" -"- Beschikbare talen kunnen worden opgehaald van het `/app/languages/` eindpunt.\n" +"- Stel de `Accept-Language` header in om uw voorkeurstaal op te geven " +"(bijvoorbeeld `Accept-Language: en-US`).\n" +"- Beschikbare talen kunnen worden opgehaald van het `/app/languages/` " +"eindpunt.\n" "- Alle gebruikerscontent ondersteunt standaard meerdere talen.\n" "\n" "## Antwoordformaten\n" "De API ondersteunt meerdere antwoordformaten:\n" "- **JSON** (standaard, camelCase geformatteerd)\n" "- **XML** (voeg `?format=xml` toe of stel `Accept: application/xml` in)\n" -"- **YAML** (voeg `?format=yaml` toe of stel `Accept: application/x-yaml` in)\n" +"- **YAML** (voeg `?format=yaml` toe of stel `Accept: application/x-yaml` " +"in)\n" "\n" "## Gezondheid en bewaking\n" "- Gezondheidscontroles: `/gezondheid/`\n" @@ -259,38 +295,38 @@ msgstr "Periodieke taken" msgid "Taskboard" msgstr "Taakbord" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Ondersteuning" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Snelle links" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Gebruikers" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Groepen" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Bestellingen" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Producten" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Categorieën" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Merken" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposts" diff --git a/evibes/locale/no_NO/LC_MESSAGES/django.po b/evibes/locale/no_NO/LC_MESSAGES/django.po index a68729f9..184b4c32 100644 --- a/evibes/locale/no_NO/LC_MESSAGES/django.po +++ b/evibes/locale/no_NO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -30,8 +30,8 @@ msgid "" "Tax rate in jurisdiction of your company. Leave 0 if you don't want to " "process taxes." msgstr "" -"Skattesats i jurisdiksjonen til selskapet ditt. La 0 stå hvis du ikke ønsker" -" å behandle skatter." +"Skattesats i jurisdiksjonen til selskapet ditt. La 0 stå hvis du ikke ønsker " +"å behandle skatter." #: evibes/settings/constance.py:28 msgid "Shows if the taxes are already included in product's selling prices" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,36 +204,53 @@ msgstr "" "\n" "Velkommen til eVibes-dokumentasjonen.\n" "\n" -"eVibes er en kraftig e-handelsplattform som lar deg starte og administrere en hvilken som helst type nettbutikk med bare noen få klikk.\n" +"eVibes er en kraftig e-handelsplattform som lar deg starte og administrere " +"en hvilken som helst type nettbutikk med bare noen få klikk.\n" "\n" "## Nøkkelfunksjoner\n" -"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og tilgjengelighet på tvers av flere kategorier.\n" -"- Ordrehåndtering:** Behandle bestillinger, spore oppfyllelse og håndtere kundeforespørsler effektivt.\n" -"- Autentisering og autorisasjon:** Omfattende brukerautentisering med JWT-tokens og rollebaserte tillatelser.\n" -"- Betalingsbehandling: ** Integrer flere betalingsportaler og håndter transaksjoner på en sikker måte.\n" -"- Blogg- og innholdsadministrasjon:** Opprett og administrer blogginnlegg og markedsføringsinnhold for butikken din.\n" -"- B2B-drift: ** Dedikerte endepunkter for business-to-business-transaksjoner og grossistadministrasjon.\n" -"- Flerspråklig støtte:** Betjen kunder over hele verden med full internasjonaliseringsfunksjonalitet (i18n).\n" -"- Tilpassede integrasjoner:** Utvidbar API-arkitektur for integrering med eksterne plattformer og tjenester.\n" -"- Analyse og rapportering:** Generer detaljerte rapporter om salg, lagerbeholdning og kundeatferd.\n" -"- Sanntidsoppdateringer:** Få sanntidsdata om lagernivåer, ordrestatus og prisendringer.\n" +"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og " +"tilgjengelighet på tvers av flere kategorier.\n" +"- Ordrehåndtering:** Behandle bestillinger, spore oppfyllelse og håndtere " +"kundeforespørsler effektivt.\n" +"- Autentisering og autorisasjon:** Omfattende brukerautentisering med JWT-" +"tokens og rollebaserte tillatelser.\n" +"- Betalingsbehandling: ** Integrer flere betalingsportaler og håndter " +"transaksjoner på en sikker måte.\n" +"- Blogg- og innholdsadministrasjon:** Opprett og administrer blogginnlegg og " +"markedsføringsinnhold for butikken din.\n" +"- B2B-drift: ** Dedikerte endepunkter for business-to-business-transaksjoner " +"og grossistadministrasjon.\n" +"- Flerspråklig støtte:** Betjen kunder over hele verden med full " +"internasjonaliseringsfunksjonalitet (i18n).\n" +"- Tilpassede integrasjoner:** Utvidbar API-arkitektur for integrering med " +"eksterne plattformer og tjenester.\n" +"- Analyse og rapportering:** Generer detaljerte rapporter om salg, " +"lagerbeholdning og kundeatferd.\n" +"- Sanntidsoppdateringer:** Få sanntidsdata om lagernivåer, ordrestatus og " +"prisendringer.\n" "\n" "## Tilgjengelige API-er\n" "- **REST API:** Fullt REST-grensesnitt (denne dokumentasjonen)\n" -"- GraphiQL API:** Tilgjengelig på `/graphql/` med GraphiQL-grensesnitt for interaktive spørringer\n" +"- GraphiQL API:** Tilgjengelig på `/graphql/` med GraphiQL-grensesnitt for " +"interaktive spørringer\n" "\n" "## Autentisering\n" -"- Autentisering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-overskriften i forespørslene dine i formatet `Bearer `.\n" +"- Autentisering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-" +"overskriften i forespørslene dine i formatet `Bearer `.\n" "- Levetiden for tilgangstoken er {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "}. {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Levetiden for oppdateringstoken er {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} timer.\n" -"- Oppdateringstokener roteres automatisk og ugyldiggjøres etter bruk for økt sikkerhet.\n" +"- Oppdateringstokener roteres automatisk og ugyldiggjøres etter bruk for økt " +"sikkerhet.\n" "\n" "## Internasjonalisering (i18n)\n" -"- Angi `Accept-Language`-overskriften for å spesifisere ditt foretrukne språk (f.eks. `Accept-Language: en-US`).\n" +"- Angi `Accept-Language`-overskriften for å spesifisere ditt foretrukne " +"språk (f.eks. `Accept-Language: en-US`).\n" "- Tilgjengelige språk kan hentes fra endepunktet `/app/languages/`.\n" "- Alt brukerrettet innhold støtter flere språk uten videre.\n" "\n" @@ -224,7 +258,8 @@ msgstr "" "API-et støtter flere svarformater:\n" "- **JSON** (standard, camelCase-formatert)\n" "- XML** (legg til `?format=xml` eller angi `Accept: application/xml`)\n" -"- **YAML** (legg til `?format=yaml` eller angi `Accept: application/x-yaml`)\n" +"- **YAML** (legg til `?format=yaml` eller angi `Accept: application/x-" +"yaml`)\n" "\n" "## Helse og overvåking\n" "- Helsesjekker: `/health/`\n" @@ -257,38 +292,38 @@ msgstr "Periodiske oppgaver" msgid "Taskboard" msgstr "Oppgavetavle" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Støtte" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Hurtigkoblinger" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Brukere" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Grupper" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Bestillinger" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produkter" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Kategorier" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Merkevarer" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogginnlegg" diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.po b/evibes/locale/pl_PL/LC_MESSAGES/django.po index b60f70b0..09056998 100644 --- a/evibes/locale/pl_PL/LC_MESSAGES/django.po +++ b/evibes/locale/pl_PL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,38 +204,57 @@ msgstr "" "\n" "Witamy w dokumentacji eVibes.\n" "\n" -"eVibes to potężna platforma e-commerce, która umożliwia uruchomienie i zarządzanie sklepem internetowym dowolnego rodzaju za pomocą zaledwie kilku kliknięć.\n" +"eVibes to potężna platforma e-commerce, która umożliwia uruchomienie i " +"zarządzanie sklepem internetowym dowolnego rodzaju za pomocą zaledwie kilku " +"kliknięć.\n" "\n" "## Kluczowe funkcje\n" -"- Katalog produktów:** Zarządzanie szczegółami produktów, cenami, zapasami i dostępnością w wielu kategoriach.\n" -"- **Zarządzanie zamówieniami:** Przetwarzanie zamówień, śledzenie realizacji i sprawna obsługa zgłoszeń klientów.\n" -"- Uwierzytelnianie i autoryzacja:** Kompleksowe uwierzytelnianie użytkowników za pomocą tokenów JWT i uprawnień opartych na rolach.\n" -"- Przetwarzanie płatności:** Integracja wielu bramek płatniczych i bezpieczne zarządzanie transakcjami.\n" -"- Blog i zarządzanie treścią:** Tworzenie i zarządzanie wpisami na blogu oraz treściami marketingowymi dla sklepu.\n" -"- Operacje B2B:** Dedykowane punkty końcowe dla transakcji między firmami i zarządzania sprzedażą hurtową.\n" -"- Obsługa wielu języków:** Obsługa klientów na całym świecie dzięki pełnym możliwościom internacjonalizacji (i18n).\n" -"- Integracje niestandardowe:** Rozszerzalna architektura API do integracji z zewnętrznymi platformami i usługami.\n" -"- Analityka i raportowanie:** Generowanie szczegółowych raportów dotyczących sprzedaży, zapasów i zachowań klientów.\n" -"- Aktualizacje w czasie rzeczywistym:** Uzyskaj dane na żywo o poziomach zapasów, statusach zamówień i zmianach cen.\n" +"- Katalog produktów:** Zarządzanie szczegółami produktów, cenami, zapasami i " +"dostępnością w wielu kategoriach.\n" +"- **Zarządzanie zamówieniami:** Przetwarzanie zamówień, śledzenie realizacji " +"i sprawna obsługa zgłoszeń klientów.\n" +"- Uwierzytelnianie i autoryzacja:** Kompleksowe uwierzytelnianie " +"użytkowników za pomocą tokenów JWT i uprawnień opartych na rolach.\n" +"- Przetwarzanie płatności:** Integracja wielu bramek płatniczych i " +"bezpieczne zarządzanie transakcjami.\n" +"- Blog i zarządzanie treścią:** Tworzenie i zarządzanie wpisami na blogu " +"oraz treściami marketingowymi dla sklepu.\n" +"- Operacje B2B:** Dedykowane punkty końcowe dla transakcji między firmami i " +"zarządzania sprzedażą hurtową.\n" +"- Obsługa wielu języków:** Obsługa klientów na całym świecie dzięki pełnym " +"możliwościom internacjonalizacji (i18n).\n" +"- Integracje niestandardowe:** Rozszerzalna architektura API do integracji z " +"zewnętrznymi platformami i usługami.\n" +"- Analityka i raportowanie:** Generowanie szczegółowych raportów dotyczących " +"sprzedaży, zapasów i zachowań klientów.\n" +"- Aktualizacje w czasie rzeczywistym:** Uzyskaj dane na żywo o poziomach " +"zapasów, statusach zamówień i zmianach cen.\n" "\n" "## Dostępne API\n" "- **REST API:** Pełny interfejs RESTful (ta dokumentacja)\n" -"- API GraphQL:** Dostępne pod adresem `/graphql/` z interfejsem GraphiQL do interaktywnych zapytań.\n" +"- API GraphQL:** Dostępne pod adresem `/graphql/` z interfejsem GraphiQL do " +"interaktywnych zapytań.\n" "\n" "## Uwierzytelnianie\n" -"- Uwierzytelnianie jest obsługiwane za pomocą tokenów JWT. Dołącz token w nagłówku `X-EVIBES-AUTH` swoich żądań w formacie `Bearer `.\n" +"- Uwierzytelnianie jest obsługiwane za pomocą tokenów JWT. Dołącz token w " +"nagłówku `X-EVIBES-AUTH` swoich żądań w formacie `Bearer `.\n" "- Okres ważności tokenu dostępu wynosi {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Okres ważności tokenu odświeżania wynosi {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} godzin.\n" -"- Tokeny odświeżania są automatycznie obracane i unieważniane po użyciu w celu zwiększenia bezpieczeństwa.\n" +"- Tokeny odświeżania są automatycznie obracane i unieważniane po użyciu w " +"celu zwiększenia bezpieczeństwa.\n" "\n" "## Internacjonalizacja (i18n)\n" -"- Ustaw nagłówek `Accept-Language`, aby określić preferowany język (np. `Accept-Language: en-US`).\n" +"- Ustaw nagłówek `Accept-Language`, aby określić preferowany język (np. " +"`Accept-Language: en-US`).\n" "- Dostępne języki można pobrać z punktu końcowego `/app/languages/`.\n" -"- Cała zawartość skierowana do użytkownika obsługuje wiele języków od razu po wyjęciu z pudełka.\n" +"- Cała zawartość skierowana do użytkownika obsługuje wiele języków od razu " +"po wyjęciu z pudełka.\n" "\n" "## Formaty odpowiedzi\n" "API obsługuje wiele formatów odpowiedzi:\n" @@ -257,38 +293,38 @@ msgstr "Zadania okresowe" msgid "Taskboard" msgstr "Tablica zadań" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Wsparcie" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Szybkie łącza" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Użytkownicy" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Grupy" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Zamówienia" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produkty" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Kategorie" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Marki" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposts" diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.po b/evibes/locale/pt_BR/LC_MESSAGES/django.po index e5ddf3fd..cf02bbfc 100644 --- a/evibes/locale/pt_BR/LC_MESSAGES/django.po +++ b/evibes/locale/pt_BR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -139,36 +139,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -188,38 +205,59 @@ msgstr "" "\n" "Bem-vindo à documentação do eVibes.\n" "\n" -"O eVibes é uma poderosa plataforma de comércio eletrônico que lhe permite lançar e gerenciar uma loja on-line de qualquer tipo com apenas alguns cliques.\n" +"O eVibes é uma poderosa plataforma de comércio eletrônico que lhe permite " +"lançar e gerenciar uma loja on-line de qualquer tipo com apenas alguns " +"cliques.\n" "\n" "## Principais recursos\n" -"- Catálogo de produtos:** Gerencie detalhes, preços, estoque e disponibilidade de produtos em várias categorias.\n" -"- Gerenciamento de pedidos:** Processar pedidos, rastrear o atendimento e lidar com as solicitações dos clientes de forma eficiente.\n" -"- Autenticação e autorização:** Autenticação abrangente de usuários com tokens JWT e permissões baseadas em funções.\n" -"- Processamento de pagamentos: integre vários gateways de pagamento e gerencie as transações com segurança.\n" -"- **Gerenciamento de blogs e conteúdo:** Crie e gerencie postagens de blogs e conteúdo de marketing para sua loja.\n" -"- Operações B2B:** Pontos de extremidade dedicados para transações business-to-business e gerenciamento de atacado.\n" -"- Suporte a vários idiomas:** Atenda a clientes em todo o mundo com recursos completos de internacionalização (i18n).\n" -"- Integrações personalizadas:** Arquitetura de API extensível para integração com plataformas e serviços externos.\n" -"- Análises e relatórios:** Gerar relatórios detalhados sobre vendas, estoque e comportamento do cliente.\n" -"- Atualizações em tempo real:** Obtenha dados em tempo real sobre níveis de estoque, status de pedidos e alterações de preços.\n" +"- Catálogo de produtos:** Gerencie detalhes, preços, estoque e " +"disponibilidade de produtos em várias categorias.\n" +"- Gerenciamento de pedidos:** Processar pedidos, rastrear o atendimento e " +"lidar com as solicitações dos clientes de forma eficiente.\n" +"- Autenticação e autorização:** Autenticação abrangente de usuários com " +"tokens JWT e permissões baseadas em funções.\n" +"- Processamento de pagamentos: integre vários gateways de pagamento e " +"gerencie as transações com segurança.\n" +"- **Gerenciamento de blogs e conteúdo:** Crie e gerencie postagens de blogs " +"e conteúdo de marketing para sua loja.\n" +"- Operações B2B:** Pontos de extremidade dedicados para transações business-" +"to-business e gerenciamento de atacado.\n" +"- Suporte a vários idiomas:** Atenda a clientes em todo o mundo com recursos " +"completos de internacionalização (i18n).\n" +"- Integrações personalizadas:** Arquitetura de API extensível para " +"integração com plataformas e serviços externos.\n" +"- Análises e relatórios:** Gerar relatórios detalhados sobre vendas, estoque " +"e comportamento do cliente.\n" +"- Atualizações em tempo real:** Obtenha dados em tempo real sobre níveis de " +"estoque, status de pedidos e alterações de preços.\n" "\n" "## APIs disponíveis\n" "- API REST:** Interface RESTful completa (esta documentação)\n" -"- API GraphQL:** Disponível em `/graphql/` com interface GraphiQL para consultas interativas\n" +"- API GraphQL:** Disponível em `/graphql/` com interface GraphiQL para " +"consultas interativas\n" "\n" "## Autenticação\n" -"- A autenticação é tratada por meio de tokens JWT. Inclua o token no cabeçalho `X-EVIBES-AUTH` de suas solicitações no formato `Bearer `.\n" +"- A autenticação é tratada por meio de tokens JWT. Inclua o token no " +"cabeçalho `X-EVIBES-AUTH` de suas solicitações no formato `Bearer " +"`.\n" "- O tempo de vida do token de acesso é {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- A vida útil do token de atualização é de {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} horas.\n" -"- Os tokens de atualização são automaticamente girados e invalidados após o uso para aumentar a segurança.\n" +"- Os tokens de atualização são automaticamente girados e invalidados após o " +"uso para aumentar a segurança.\n" "\n" "## Internacionalização (i18n)\n" -"- Defina o cabeçalho `Accept-Language` para especificar o idioma de sua preferência (por exemplo, `Accept-Language: en-US`).\n" -"- Os idiomas disponíveis podem ser recuperados no ponto de extremidade `/app/languages/`.\n" -"- Todo o conteúdo voltado para o usuário é compatível com vários idiomas desde o início.\n" +"- Defina o cabeçalho `Accept-Language` para especificar o idioma de sua " +"preferência (por exemplo, `Accept-Language: en-US`).\n" +"- Os idiomas disponíveis podem ser recuperados no ponto de extremidade `/app/" +"languages/`.\n" +"- Todo o conteúdo voltado para o usuário é compatível com vários idiomas " +"desde o início.\n" "\n" "## Formatos de resposta\n" "A API oferece suporte a vários formatos de resposta:\n" @@ -229,7 +267,8 @@ msgstr "" "\n" "## Saúde e monitoramento\n" "- Verificações de integridade: `/health/`\n" -"- Métricas do Prometheus (protegido por autenticação básica): `/prometheus/`\n" +"- Métricas do Prometheus (protegido por autenticação básica): `/prometheus/" +"`\n" "\n" "## Versão\n" "Versão atual da API: {EVIBES_VERSION}\n" @@ -258,38 +297,38 @@ msgstr "Tarefas periódicas" msgid "Taskboard" msgstr "Quadro de tarefas" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Suporte" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Links rápidos" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Usuários" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Grupos" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Pedidos" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produtos" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Categorias" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Marcas" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Postagens em blogs" diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.po b/evibes/locale/ro_RO/LC_MESSAGES/django.po index 536c250b..1bb69ac5 100644 --- a/evibes/locale/ro_RO/LC_MESSAGES/django.po +++ b/evibes/locale/ro_RO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -139,36 +139,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -188,44 +205,66 @@ msgstr "" "\n" "Bine ați venit la documentația eVibes.\n" "\n" -"eVibes este o platformă puternică de comerț electronic care vă permite să lansați și să gestionați un magazin online de orice tip în doar câteva clicuri.\n" +"eVibes este o platformă puternică de comerț electronic care vă permite să " +"lansați și să gestionați un magazin online de orice tip în doar câteva " +"clicuri.\n" "\n" "## Caracteristici principale\n" -"- **Product Catalog:** Gestionați detaliile produselor, prețurile, inventarul și disponibilitatea în mai multe categorii.\n" -"- **Order Management:** Procesați comenzile, urmăriți îndeplinirea și gestionați eficient cererile clienților.\n" -"- **Autentificare și autorizare:** Autentificare cuprinzătoare a utilizatorilor cu token-uri JWT și permisiuni bazate pe roluri.\n" -"- **Payment Processing:** Integrați mai multe gateway-uri de plată și gestionați tranzacțiile în siguranță.\n" -"- **Blog & Content Management:** Creați și gestionați postări pe blog și conținut de marketing pentru magazinul dvs.\n" -"- **B2B Operations:** Puncte finale dedicate pentru tranzacțiile business-to-business și gestionarea comerțului cu ridicata.\n" -"- **Suport multilingv:** Serviți clienții din întreaga lume cu capacități complete de internaționalizare (i18n).\n" -"- **Integrații personalizate:** Arhitectură API extensibilă pentru integrarea cu platforme și servicii externe.\n" -"- **Analytics & Reporting:** Generați rapoarte detaliate privind vânzările, stocurile și comportamentul clienților.\n" -"- **Actualizări în timp real:** Obțineți date în timp real privind nivelurile stocurilor, starea comenzilor și modificările prețurilor.\n" +"- **Product Catalog:** Gestionați detaliile produselor, prețurile, " +"inventarul și disponibilitatea în mai multe categorii.\n" +"- **Order Management:** Procesați comenzile, urmăriți îndeplinirea și " +"gestionați eficient cererile clienților.\n" +"- **Autentificare și autorizare:** Autentificare cuprinzătoare a " +"utilizatorilor cu token-uri JWT și permisiuni bazate pe roluri.\n" +"- **Payment Processing:** Integrați mai multe gateway-uri de plată și " +"gestionați tranzacțiile în siguranță.\n" +"- **Blog & Content Management:** Creați și gestionați postări pe blog și " +"conținut de marketing pentru magazinul dvs.\n" +"- **B2B Operations:** Puncte finale dedicate pentru tranzacțiile business-to-" +"business și gestionarea comerțului cu ridicata.\n" +"- **Suport multilingv:** Serviți clienții din întreaga lume cu capacități " +"complete de internaționalizare (i18n).\n" +"- **Integrații personalizate:** Arhitectură API extensibilă pentru " +"integrarea cu platforme și servicii externe.\n" +"- **Analytics & Reporting:** Generați rapoarte detaliate privind vânzările, " +"stocurile și comportamentul clienților.\n" +"- **Actualizări în timp real:** Obțineți date în timp real privind " +"nivelurile stocurilor, starea comenzilor și modificările prețurilor.\n" "\n" "## API-uri disponibile\n" "- **REST API:** Interfață RESTful completă (această documentație)\n" -"- **GraphQL API:** Disponibil la `/graphql/` cu interfața GraphiQL pentru interogări interactive\n" +"- **GraphQL API:** Disponibil la `/graphql/` cu interfața GraphiQL pentru " +"interogări interactive\n" "\n" "## Autentificare\n" -"- Autentificarea este gestionată prin jetoane JWT. Includeți tokenul în antetul `X-EVIBES-AUTH` al cererilor dvs. în formatul `Bearer `.\n" +"- Autentificarea este gestionată prin jetoane JWT. Includeți tokenul în " +"antetul `X-EVIBES-AUTH` al cererilor dvs. în formatul `Bearer " +"`.\n" "- Durata de viață a jetonului de acces este {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Durata de viață a jetonului de reînnoire este de {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} ore.\n" -"- Jetoanele de reîmprospătare sunt rotite automat și invalidate după utilizare pentru o securitate sporită.\n" +"- Jetoanele de reîmprospătare sunt rotite automat și invalidate după " +"utilizare pentru o securitate sporită.\n" "\n" "## Internaționalizare (i18n)\n" -"- Setați antetul `Accept-Language` pentru a specifica limba preferată (de exemplu, `Accept-Language: en-US`).\n" -"- Limbile disponibile pot fi preluate de la punctul final `/app/languages/`.\n" -"- Toate conținuturile destinate utilizatorilor acceptă din start mai multe limbi.\n" +"- Setați antetul `Accept-Language` pentru a specifica limba preferată (de " +"exemplu, `Accept-Language: en-US`).\n" +"- Limbile disponibile pot fi preluate de la punctul final `/app/languages/" +"`.\n" +"- Toate conținuturile destinate utilizatorilor acceptă din start mai multe " +"limbi.\n" "\n" "## Formate de răspuns\n" "API acceptă mai multe formate de răspuns:\n" "- **JSON** (implicit, formatat camelCase)\n" "- **XML** (adăugați `?format=xml` sau setați `Accept: application/xml`)\n" -"- **YAML** (adăugați `?format=yaml` sau setați `Accept: application/x-yaml`)\n" +"- **YAML** (adăugați `?format=yaml` sau setați `Accept: application/x-" +"yaml`)\n" "\n" "## Sănătate și monitorizare\n" "- Verificări de sănătate: `/health/`\n" @@ -258,38 +297,38 @@ msgstr "Sarcini periodice" msgid "Taskboard" msgstr "Tablou de sarcini" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Sprijin" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Linkuri rapide" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Utilizatori" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Grupuri" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Ordine" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produse" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Categorii" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Mărci" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogposturi" diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.po b/evibes/locale/ru_RU/LC_MESSAGES/django.po index 6ec7539f..2402b47d 100644 --- a/evibes/locale/ru_RU/LC_MESSAGES/django.po +++ b/evibes/locale/ru_RU/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,44 +204,64 @@ msgstr "" "\n" "Добро пожаловать в документацию eVibes.\n" "\n" -"eVibes - это мощная платформа для электронной коммерции, которая позволяет запустить и управлять интернет-магазином любого типа всего за несколько кликов.\n" +"eVibes - это мощная платформа для электронной коммерции, которая позволяет " +"запустить и управлять интернет-магазином любого типа всего за несколько " +"кликов.\n" "\n" "## Ключевые особенности.\n" -"- **Каталог товаров:** Управление информацией о товарах, ценами, запасами и наличием товаров в нескольких категориях.\n" -"- **Управление заказами:** Обработка заказов, отслеживание выполнения и эффективная обработка запросов клиентов.\n" -"- **Аутентификация и авторизация:** Комплексная аутентификация пользователей с помощью JWT-токенов и ролевых разрешений.\n" -"- **Обработка платежей:** Интеграция нескольких платежных шлюзов и безопасное управление транзакциями.\n" -"- **Управление блогом и контентом:** Создание и управление записями в блоге и маркетинговым контентом для вашего магазина.\n" -"- **B2B-операции:** Выделенные конечные точки для транзакций между бизнесменами и управления оптовыми продажами.\n" -"- **Мультиязыковая поддержка:** Обслуживайте клиентов по всему миру, используя возможности полной интернационализации (i18n).\n" -"- **Заказные интеграции:** Расширяемая архитектура API для интеграции с внешними платформами и сервисами.\n" -"- **Аналитика и отчетность:** Генерируйте подробные отчеты о продажах, запасах и поведении клиентов.\n" -"- **Обновления в режиме реального времени:** Получайте данные об уровне запасов, состоянии заказов и изменениях цен в режиме реального времени.\n" +"- **Каталог товаров:** Управление информацией о товарах, ценами, запасами и " +"наличием товаров в нескольких категориях.\n" +"- **Управление заказами:** Обработка заказов, отслеживание выполнения и " +"эффективная обработка запросов клиентов.\n" +"- **Аутентификация и авторизация:** Комплексная аутентификация пользователей " +"с помощью JWT-токенов и ролевых разрешений.\n" +"- **Обработка платежей:** Интеграция нескольких платежных шлюзов и " +"безопасное управление транзакциями.\n" +"- **Управление блогом и контентом:** Создание и управление записями в блоге " +"и маркетинговым контентом для вашего магазина.\n" +"- **B2B-операции:** Выделенные конечные точки для транзакций между " +"бизнесменами и управления оптовыми продажами.\n" +"- **Мультиязыковая поддержка:** Обслуживайте клиентов по всему миру, " +"используя возможности полной интернационализации (i18n).\n" +"- **Заказные интеграции:** Расширяемая архитектура API для интеграции с " +"внешними платформами и сервисами.\n" +"- **Аналитика и отчетность:** Генерируйте подробные отчеты о продажах, " +"запасах и поведении клиентов.\n" +"- **Обновления в режиме реального времени:** Получайте данные об уровне " +"запасов, состоянии заказов и изменениях цен в режиме реального времени.\n" "\n" "## Доступные API\n" "- **REST API:** Полный REST-интерфейс (данная документация)\n" -"- **GraphQL API:** Доступен по адресу `/graphql/` с интерфейсом GraphiQL для интерактивных запросов\n" +"- **GraphQL API:** Доступен по адресу `/graphql/` с интерфейсом GraphiQL для " +"интерактивных запросов\n" "\n" "## Аутентификация\n" -"- Аутентификация осуществляется с помощью JWT-токенов. Включите токен в заголовок `X-EVIBES-AUTH` ваших запросов в формате `Bearer <ваш_токен>`.\n" +"- Аутентификация осуществляется с помощью JWT-токенов. Включите токен в " +"заголовок `X-EVIBES-AUTH` ваших запросов в формате `Bearer <ваш_токен>`.\n" "- Срок действия токена доступа составляет {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Время жизни токена обновления составляет {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} часов.\n" -"- Для повышения безопасности маркеры доступа автоматически поворачиваются и аннулируются после использования.\n" +"- Для повышения безопасности маркеры доступа автоматически поворачиваются и " +"аннулируются после использования.\n" "\n" "## Интернационализация (i18n)\n" -"- Укажите в заголовке `Accept-Language` предпочтительный язык (например, `Accept-Language: en-US`).\n" +"- Укажите в заголовке `Accept-Language` предпочтительный язык (например, " +"`Accept-Language: en-US`).\n" "- Доступные языки можно получить из конечной точки `/app/languages/`.\n" -"- Весь контент, предназначенный для пользователей, изначально поддерживает несколько языков.\n" +"- Весь контент, предназначенный для пользователей, изначально поддерживает " +"несколько языков.\n" "\n" "## Форматы ответов\n" "API поддерживает несколько форматов ответов:\n" "- **JSON** (по умолчанию, с форматированием в camelCase)\n" "- **XML** (добавьте `?format=xml` или установите `Accept: application/xml`)\n" -"- **YAML** (добавьте `?format=yaml` или установите `Accept: application/x-yaml`)\n" +"- **YAML** (добавьте `?format=yaml` или установите `Accept: application/x-" +"yaml`)\n" "\n" "## Здоровье и мониторинг\n" "- Проверка здоровья: `/health/`\n" @@ -257,38 +294,38 @@ msgstr "Периодические задачи" msgid "Taskboard" msgstr "Канбан" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Поддержка" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Быстрые ссылки" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Пользователи" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Группы" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Заказы" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Товары" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Категории" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Бренды" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Посты" diff --git a/evibes/locale/sv_SE/LC_MESSAGES/django.po b/evibes/locale/sv_SE/LC_MESSAGES/django.po index 7242f72b..13f52556 100644 --- a/evibes/locale/sv_SE/LC_MESSAGES/django.po +++ b/evibes/locale/sv_SE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,48 +204,68 @@ msgstr "" "\n" "Välkommen till eVibes dokumentation.\n" "\n" -"eVibes är en kraftfull e-handelsplattform som gör att du kan starta och hantera en onlinebutik av alla slag med bara några få klick.\n" +"eVibes är en kraftfull e-handelsplattform som gör att du kan starta och " +"hantera en onlinebutik av alla slag med bara några få klick.\n" "\n" "## Viktiga funktioner\n" -"- Produktkatalog:** Hantera produktinformation, priser, lager och tillgänglighet i flera kategorier.\n" -"- ** Orderhantering:** Behandla beställningar, spåra uppfyllande och hantera kundförfrågningar effektivt.\n" -"- Autentisering och auktorisering: ** Omfattande användarautentisering med JWT-tokens och rollbaserade behörigheter.\n" -"- **Betalningshantering:** Integrera flera betalningsgateways och hantera transaktioner på ett säkert sätt.\n" -"- **Blogg & Content Management:** Skapa och hantera blogginlägg och marknadsföringsinnehåll för din butik.\n" -"- **B2B Operations:** Dedikerade slutpunkter för transaktioner mellan företag och grossisthantering.\n" -"- Stöd för flera språk: ** Betjäna kunder över hela världen med fullständiga internationaliseringsfunktioner (i18n).\n" -"- **Kundanpassade integrationer:** Utökad API-arkitektur för integrering med externa plattformar och tjänster.\n" -"- **Analys och rapportering:** Generera detaljerade rapporter om försäljning, lager och kundbeteende.\n" -"- Uppdateringar i realtid: ** Få live-data om lagernivåer, orderstatus och prisändringar.\n" +"- Produktkatalog:** Hantera produktinformation, priser, lager och " +"tillgänglighet i flera kategorier.\n" +"- ** Orderhantering:** Behandla beställningar, spåra uppfyllande och hantera " +"kundförfrågningar effektivt.\n" +"- Autentisering och auktorisering: ** Omfattande användarautentisering med " +"JWT-tokens och rollbaserade behörigheter.\n" +"- **Betalningshantering:** Integrera flera betalningsgateways och hantera " +"transaktioner på ett säkert sätt.\n" +"- **Blogg & Content Management:** Skapa och hantera blogginlägg och " +"marknadsföringsinnehåll för din butik.\n" +"- **B2B Operations:** Dedikerade slutpunkter för transaktioner mellan " +"företag och grossisthantering.\n" +"- Stöd för flera språk: ** Betjäna kunder över hela världen med fullständiga " +"internationaliseringsfunktioner (i18n).\n" +"- **Kundanpassade integrationer:** Utökad API-arkitektur för integrering med " +"externa plattformar och tjänster.\n" +"- **Analys och rapportering:** Generera detaljerade rapporter om " +"försäljning, lager och kundbeteende.\n" +"- Uppdateringar i realtid: ** Få live-data om lagernivåer, orderstatus och " +"prisändringar.\n" "\n" "## Tillgängliga API:er\n" "- **REST API:** Fullständigt RESTful-gränssnitt (denna dokumentation)\n" -"- **GraphQL API:** Tillgängligt på `/graphql/` med GraphiQL-gränssnitt för interaktiva frågor\n" +"- **GraphQL API:** Tillgängligt på `/graphql/` med GraphiQL-gränssnitt för " +"interaktiva frågor\n" "\n" "## Autentisering\n" -"- Autentisering hanteras via JWT-tokens. Inkludera token i `X-EVIBES-AUTH`-huvudet för dina förfrågningar i formatet `Bearer `.\n" +"- Autentisering hanteras via JWT-tokens. Inkludera token i `X-EVIBES-AUTH`-" +"huvudet för dina förfrågningar i formatet `Bearer `.\n" "- Åtkomsttokenens livstid är {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Uppdateringstokenens livslängd är {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} timmar.\n" -"- Uppdateringstokens roteras automatiskt och ogiltigförklaras efter användning för ökad säkerhet.\n" +"- Uppdateringstokens roteras automatiskt och ogiltigförklaras efter " +"användning för ökad säkerhet.\n" "\n" "## Internationalisering (i18n)\n" -"- Ange önskat språk i rubriken `Accept-Language` (t.ex. `Accept-Language: en-US`).\n" +"- Ange önskat språk i rubriken `Accept-Language` (t.ex. `Accept-Language: en-" +"US`).\n" "- Tillgängliga språk kan hämtas från slutpunkten `/app/languages/`.\n" "- Allt innehåll som vänder sig till användare stöder flera språk direkt.\n" "\n" "## Svarsformat\n" "API:et stöder flera olika svarsformat:\n" "- **JSON** (standard, camelCase-formaterad)\n" -"- **XML** (lägg till `?format=xml` eller ställ in `Accept: application/xml`)\n" -"- **YAML** (lägg till `?format=yaml` eller ställ in `Accept: application/x-yaml`)\n" +"- **XML** (lägg till `?format=xml` eller ställ in `Accept: application/" +"xml`)\n" +"- **YAML** (lägg till `?format=yaml` eller ställ in `Accept: application/x-" +"yaml`)\n" "\n" "## Hälsa och övervakning\n" "- Hälsokontroller: `/hälsa/`\n" -"- Prometheus-mätvärden (skyddade med grundläggande autentisering): `/prometheus/`\n" +"- Prometheus-mätvärden (skyddade med grundläggande autentisering): `/" +"prometheus/`\n" "\n" "## Version\n" "Aktuell API-version: {EVIBES_VERSION}\n" @@ -257,38 +294,38 @@ msgstr "Periodiska uppgifter" msgid "Taskboard" msgstr "Uppgiftstavla" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Stöd" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Snabblänkar" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Användare" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Grupper" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Beställningar" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Produkter" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Kategorier" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Brands" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blogginlägg" diff --git a/evibes/locale/th_TH/LC_MESSAGES/django.po b/evibes/locale/th_TH/LC_MESSAGES/django.po index f9a524a7..51cf31e6 100644 --- a/evibes/locale/th_TH/LC_MESSAGES/django.po +++ b/evibes/locale/th_TH/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -29,9 +29,7 @@ msgstr "หมายเลขโทรศัพท์ของบริษัท msgid "" "Tax rate in jurisdiction of your company. Leave 0 if you don't want to " "process taxes." -msgstr "" -"อัตราภาษีในเขตอำนาจศาลของบริษัทของคุณ. ให้เป็น 0 " -"หากคุณไม่ต้องการดำเนินการภาษี." +msgstr "อัตราภาษีในเขตอำนาจศาลของบริษัทของคุณ. ให้เป็น 0 หากคุณไม่ต้องการดำเนินการภาษี." #: evibes/settings/constance.py:28 msgid "Shows if the taxes are already included in product's selling prices" @@ -138,36 +136,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -185,18 +200,48 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" "\n" -"ยินดีต้อนรับสู่เอกสารคู่มือของ eVibes eVibes เป็นแพลตฟอร์มอีคอมเมิร์ซที่ทรงพลังซึ่งช่วยให้คุณสามารถเปิดตัวและจัดการร้านค้าออนไลน์ได้ทุกประเภทเพียงแค่ไม่กี่คลิก ## คุณสมบัติหลัก - **แคตตาล็อกสินค้า:** จัดการรายละเอียดสินค้า ราคาสินค้า สินค้าคงคลัง และความพร้อมจำหน่ายในหลายหมวดหมู่ - **การจัดการคำสั่งซื้อ:** ประมวลผลคำสั่งซื้อ ติดตามการจัดส่ง และจัดการคำขอของลูกค้าอย่างมีประสิทธิภาพ\n" -"- **การตรวจสอบสิทธิ์และการอนุญาต:** การตรวจสอบสิทธิ์ผู้ใช้อย่างครอบคลุมด้วยโทเค็น JWT และสิทธิ์ตามบทบาท - **การประมวลผลการชำระเงิน:** ผสานรวมเกตเวย์การชำระเงินหลายช่องทางและจัดการธุรกรรมอย่างปลอดภัย - **การจัดการบล็อกและเนื้อหา:** สร้างและจัดการโพสต์บล็อกและเนื้อหาการตลาดสำหรับร้านค้าของคุณ - **การดำเนินงาน B2B:** จุดเชื่อมต่อเฉพาะสำหรับการทำธุรกรรมระหว่างธุรกิจและการจัดการขายส่ง\n" -"- **รองรับหลายภาษา:** ให้บริการลูกค้าทั่วโลกด้วยความสามารถในการรองรับภาษาสากลอย่างเต็มรูปแบบ (i18n) - **การผสานรวมแบบกำหนดเอง:** สถาปัตยกรรม API ที่สามารถขยายได้สำหรับการผสานรวมกับแพลตฟอร์มและบริการภายนอก - **การวิเคราะห์และรายงาน:** สร้างรายงานรายละเอียดเกี่ยวกับยอดขาย, สินค้าคงคลัง, และพฤติกรรมของลูกค้า - **การอัปเดตแบบเรียลไทม์:** รับข้อมูลสดเกี่ยวกับระดับสินค้าคงคลัง, สถานะการสั่งซื้อ, และการเปลี่ยนแปลงราคา\n" +"ยินดีต้อนรับสู่เอกสารคู่มือของ eVibes eVibes " +"เป็นแพลตฟอร์มอีคอมเมิร์ซที่ทรงพลังซึ่งช่วยให้คุณสามารถเปิดตัวและจัดการร้านค้าออนไลน์ได้ทุกประเภทเพียงแค่ไม่กี่คลิก " +"## คุณสมบัติหลัก - **แคตตาล็อกสินค้า:** จัดการรายละเอียดสินค้า ราคาสินค้า สินค้าคงคลัง " +"และความพร้อมจำหน่ายในหลายหมวดหมู่ - **การจัดการคำสั่งซื้อ:** ประมวลผลคำสั่งซื้อ " +"ติดตามการจัดส่ง และจัดการคำขอของลูกค้าอย่างมีประสิทธิภาพ\n" +"- **การตรวจสอบสิทธิ์และการอนุญาต:** การตรวจสอบสิทธิ์ผู้ใช้อย่างครอบคลุมด้วยโทเค็น JWT " +"และสิทธิ์ตามบทบาท - **การประมวลผลการชำระเงิน:** " +"ผสานรวมเกตเวย์การชำระเงินหลายช่องทางและจัดการธุรกรรมอย่างปลอดภัย - " +"**การจัดการบล็อกและเนื้อหา:** สร้างและจัดการโพสต์บล็อกและเนื้อหาการตลาดสำหรับร้านค้าของคุณ " +"- **การดำเนินงาน B2B:** " +"จุดเชื่อมต่อเฉพาะสำหรับการทำธุรกรรมระหว่างธุรกิจและการจัดการขายส่ง\n" +"- **รองรับหลายภาษา:** " +"ให้บริการลูกค้าทั่วโลกด้วยความสามารถในการรองรับภาษาสากลอย่างเต็มรูปแบบ (i18n) - " +"**การผสานรวมแบบกำหนดเอง:** สถาปัตยกรรม API " +"ที่สามารถขยายได้สำหรับการผสานรวมกับแพลตฟอร์มและบริการภายนอก - **การวิเคราะห์และรายงาน:" +"** สร้างรายงานรายละเอียดเกี่ยวกับยอดขาย, สินค้าคงคลัง, และพฤติกรรมของลูกค้า - " +"**การอัปเดตแบบเรียลไทม์:** รับข้อมูลสดเกี่ยวกับระดับสินค้าคงคลัง, สถานะการสั่งซื้อ, " +"และการเปลี่ยนแปลงราคา\n" "\n" -"## API ที่มีให้บริการ - **REST API:** อินเทอร์เฟซ RESTful แบบเต็มรูปแบบ (เอกสารนี้) - **GraphQL API:** สามารถใช้งานได้ที่ `/graphql/` พร้อมอินเทอร์เฟซ GraphiQL สำหรับการสืบค้นแบบโต้ตอบ ## การยืนยันตัวตน - การยืนยันตัวตนดำเนินการผ่านโทเค็น JWT โปรดใส่โทเค็นในหัวข้อ `X-EVIBES-AUTH` ของคำขอของคุณในรูปแบบ `Bearer `\n" +"## API ที่มีให้บริการ - **REST API:** อินเทอร์เฟซ RESTful แบบเต็มรูปแบบ (เอกสารนี้) - " +"**GraphQL API:** สามารถใช้งานได้ที่ `/graphql/` พร้อมอินเทอร์เฟซ GraphiQL " +"สำหรับการสืบค้นแบบโต้ตอบ ## การยืนยันตัวตน - การยืนยันตัวตนดำเนินการผ่านโทเค็น JWT " +"โปรดใส่โทเค็นในหัวข้อ `X-EVIBES-AUTH` ของคำขอของคุณในรูปแบบ `Bearer `\n" "- ระยะเวลาการใช้งานโทเค็นการเข้าถึงคือ {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" -"} {\"minutes\" if not DEBUG else \"hours\"}. - ระยะเวลาการใช้งานโทเค็นการรีเฟรชคือ {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" -"} ชั่วโมง. - โทเค็นการรีเฟรชจะถูกหมุนเวียนและยกเลิกการใช้งานโดยอัตโนมัติหลังการใช้งานเพื่อเพิ่มความปลอดภัย. ## การแปลภาษา (i18n) - ตั้งค่าหัวข้อ `Accept-Language` เพื่อระบุภาษาที่คุณต้องการ (เช่น `Accept-Language: en-US`).\n" -"- ภาษาที่มีให้บริการสามารถดึงข้อมูลได้จากจุดสิ้นสุด `/app/languages/` - เนื้อหาที่แสดงต่อผู้ใช้ทั้งหมดรองรับหลายภาษาโดยอัตโนมัติ ## รูปแบบการตอบกลับ API รองรับรูปแบบการตอบกลับหลายรูปแบบ: - **JSON** (ค่าเริ่มต้น, รูปแบบ camelCase) - **XML** (เพิ่ม `?format=xml` หรือตั้งค่า `Accept: application/xml`)\n" -"- **YAML** (เพิ่ม `?format=yaml` หรือตั้งค่า `Accept: application/x-yaml`) ## สุขภาพและการตรวจสอบ - การตรวจสอบสุขภาพ: `/health/` - เมตริก Prometheus (ป้องกันด้วย basic-auth): `/prometheus/` ## เวอร์ชัน เวอร์ชัน API ปัจจุบัน: {EVIBES_VERSION}\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" +"} {\"minutes\" if not DEBUG else \"hours\"}. - " +"ระยะเวลาการใช้งานโทเค็นการรีเฟรชคือ {\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" +"} ชั่วโมง. - " +"โทเค็นการรีเฟรชจะถูกหมุนเวียนและยกเลิกการใช้งานโดยอัตโนมัติหลังการใช้งานเพื่อเพิ่มความปลอดภัย. " +"## การแปลภาษา (i18n) - ตั้งค่าหัวข้อ `Accept-Language` เพื่อระบุภาษาที่คุณต้องการ (เช่น " +"`Accept-Language: en-US`).\n" +"- ภาษาที่มีให้บริการสามารถดึงข้อมูลได้จากจุดสิ้นสุด `/app/languages/` - " +"เนื้อหาที่แสดงต่อผู้ใช้ทั้งหมดรองรับหลายภาษาโดยอัตโนมัติ ## รูปแบบการตอบกลับ API " +"รองรับรูปแบบการตอบกลับหลายรูปแบบ: - **JSON** (ค่าเริ่มต้น, รูปแบบ camelCase) - " +"**XML** (เพิ่ม `?format=xml` หรือตั้งค่า `Accept: application/xml`)\n" +"- **YAML** (เพิ่ม `?format=yaml` หรือตั้งค่า `Accept: application/x-yaml`) ## " +"สุขภาพและการตรวจสอบ - การตรวจสอบสุขภาพ: `/health/` - เมตริก Prometheus " +"(ป้องกันด้วย basic-auth): `/prometheus/` ## เวอร์ชัน เวอร์ชัน API ปัจจุบัน: " +"{EVIBES_VERSION}\n" #: evibes/settings/unfold.py:57 msgid "Menu" @@ -222,38 +267,38 @@ msgstr "งานประจำ" msgid "Taskboard" msgstr "กระดานงาน" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "การสนับสนุน" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "ลิงก์ด่วน" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "ผู้ใช้" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "กลุ่ม" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "คำสั่ง" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "ผลิตภัณฑ์" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "หมวดหมู่" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "แบรนด์" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "บทความบล็อก" diff --git a/evibes/locale/tr_TR/LC_MESSAGES/django.po b/evibes/locale/tr_TR/LC_MESSAGES/django.po index b4c078de..f70b671d 100644 --- a/evibes/locale/tr_TR/LC_MESSAGES/django.po +++ b/evibes/locale/tr_TR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -79,8 +79,7 @@ msgstr "Anonim kullanıcılardan gelen mesajları kaç gün saklıyoruz" #: evibes/settings/constance.py:41 msgid "How many days we store messages from authenticated users" -msgstr "" -"Kimliği doğrulanmış kullanıcılardan gelen mesajları kaç gün saklıyoruz" +msgstr "Kimliği doğrulanmış kullanıcılardan gelen mesajları kaç gün saklıyoruz" #: evibes/settings/constance.py:42 msgid "Disable buy functionality" @@ -139,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -188,44 +204,65 @@ msgstr "" "\n" "eVibes belgelerine hoş geldiniz.\n" "\n" -"eVibes, sadece birkaç tıklamayla her türlü çevrimiçi mağazayı açmanıza ve yönetmenize olanak tanıyan güçlü bir e-ticaret platformudur.\n" +"eVibes, sadece birkaç tıklamayla her türlü çevrimiçi mağazayı açmanıza ve " +"yönetmenize olanak tanıyan güçlü bir e-ticaret platformudur.\n" "\n" "## Temel Özellikler\n" -"- Ürün Kataloğu:** Birden fazla kategoride ürün ayrıntılarını, fiyatlandırmayı, envanteri ve kullanılabilirliği yönetin.\n" -"- Sipariş Yönetimi:** Siparişleri işleyin, gönderimi takip edin ve müşteri taleplerini verimli bir şekilde ele alın.\n" -"- Kimlik Doğrulama ve Yetkilendirme:** JWT belirteçleri ve rol tabanlı izinler ile kapsamlı kullanıcı kimlik doğrulaması.\n" -"- **Ödeme İşleme:** Birden fazla ödeme ağ geçidini entegre edin ve işlemleri güvenli bir şekilde yönetin.\n" -"- **Blog ve İçerik Yönetimi:** Mağazanız için blog gönderileri ve pazarlama içeriği oluşturun ve yönetin.\n" -"- **B2B İşlemleri:** İşletmeler arası işlemler ve toptan satış yönetimi için özel uç noktalar.\n" -"- Çoklu Dil Desteği:** Tam uluslararasılaştırma (i18n) yetenekleri ile dünya çapındaki müşterilere hizmet verin.\n" -"- Özel Entegrasyonlar:** Harici platformlar ve hizmetlerle entegrasyon için genişletilebilir API mimarisi.\n" -"- Analitik ve Raporlama:** Satış, envanter ve müşteri davranışları hakkında ayrıntılı raporlar oluşturun.\n" -"- Gerçek Zamanlı Güncellemeler:** Envanter seviyeleri, sipariş durumları ve fiyat değişiklikleri hakkında canlı veriler alın.\n" +"- Ürün Kataloğu:** Birden fazla kategoride ürün ayrıntılarını, " +"fiyatlandırmayı, envanteri ve kullanılabilirliği yönetin.\n" +"- Sipariş Yönetimi:** Siparişleri işleyin, gönderimi takip edin ve müşteri " +"taleplerini verimli bir şekilde ele alın.\n" +"- Kimlik Doğrulama ve Yetkilendirme:** JWT belirteçleri ve rol tabanlı " +"izinler ile kapsamlı kullanıcı kimlik doğrulaması.\n" +"- **Ödeme İşleme:** Birden fazla ödeme ağ geçidini entegre edin ve işlemleri " +"güvenli bir şekilde yönetin.\n" +"- **Blog ve İçerik Yönetimi:** Mağazanız için blog gönderileri ve pazarlama " +"içeriği oluşturun ve yönetin.\n" +"- **B2B İşlemleri:** İşletmeler arası işlemler ve toptan satış yönetimi için " +"özel uç noktalar.\n" +"- Çoklu Dil Desteği:** Tam uluslararasılaştırma (i18n) yetenekleri ile dünya " +"çapındaki müşterilere hizmet verin.\n" +"- Özel Entegrasyonlar:** Harici platformlar ve hizmetlerle entegrasyon için " +"genişletilebilir API mimarisi.\n" +"- Analitik ve Raporlama:** Satış, envanter ve müşteri davranışları hakkında " +"ayrıntılı raporlar oluşturun.\n" +"- Gerçek Zamanlı Güncellemeler:** Envanter seviyeleri, sipariş durumları ve " +"fiyat değişiklikleri hakkında canlı veriler alın.\n" "\n" "## Mevcut API'ler\n" "- **REST API:** Tam RESTful arayüz (bu dokümantasyon)\n" -"- **GraphQL API:** Etkileşimli sorgular için GraphiQL arayüzü ile `/graphql/` adresinde mevcuttur\n" +"- **GraphQL API:** Etkileşimli sorgular için GraphiQL arayüzü ile `/graphql/" +"` adresinde mevcuttur\n" "\n" "## Kimlik Doğrulama\n" -"- Kimlik doğrulama JWT belirteçleri aracılığıyla gerçekleştirilir. Belirteci, isteklerinizin `X-EVIBES-AUTH` başlığına `Bearer ` biçiminde ekleyin.\n" +"- Kimlik doğrulama JWT belirteçleri aracılığıyla gerçekleştirilir. " +"Belirteci, isteklerinizin `X-EVIBES-AUTH` başlığına `Bearer ` " +"biçiminde ekleyin.\n" "- Erişim belirteci ömrü {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Yenileme belirteci ömrü {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} saattir.\n" -"- Yenileme belirteçleri, gelişmiş güvenlik için kullanımdan sonra otomatik olarak döndürülür ve geçersiz kılınır.\n" +"- Yenileme belirteçleri, gelişmiş güvenlik için kullanımdan sonra otomatik " +"olarak döndürülür ve geçersiz kılınır.\n" "\n" "## Uluslararasılaştırma (i18n)\n" -"- Tercih ettiğiniz dili belirtmek için `Accept-Language` başlığını ayarlayın (örneğin, `Accept-Language: en-US`).\n" +"- Tercih ettiğiniz dili belirtmek için `Accept-Language` başlığını ayarlayın " +"(örneğin, `Accept-Language: en-US`).\n" "- Mevcut diller `/app/languages/` uç noktasından alınabilir.\n" -"- Kullanıcıya yönelik tüm içerikler kutudan çıkar çıkmaz birden fazla dili destekler.\n" +"- Kullanıcıya yönelik tüm içerikler kutudan çıkar çıkmaz birden fazla dili " +"destekler.\n" "\n" "## Yanıt Biçimleri\n" "API birden fazla yanıt biçimini destekler:\n" "- **JSON** (varsayılan, camelCase biçimlendirilmiş)\n" -"- **XML** (`?format=xml` ekleyin veya `Accept: application/xml` olarak ayarlayın)\n" -"- **YAML** (`?format=yaml` ekleyin veya `Accept: application/x-yaml` olarak ayarlayın)\n" +"- **XML** (`?format=xml` ekleyin veya `Accept: application/xml` olarak " +"ayarlayın)\n" +"- **YAML** (`?format=yaml` ekleyin veya `Accept: application/x-yaml` olarak " +"ayarlayın)\n" "\n" "## Sağlık ve İzleme\n" "- Sağlık kontrolleri: `/health/`\n" @@ -258,38 +295,38 @@ msgstr "Periyodik Görevler" msgid "Taskboard" msgstr "Görev Panosu" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Destek" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Hızlı Bağlantılar" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Kullanıcılar" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Gruplar" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Siparişler" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Ürünler" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Kategoriler" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Markalar" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Blog Yazıları" diff --git a/evibes/locale/vi_VN/LC_MESSAGES/django.po b/evibes/locale/vi_VN/LC_MESSAGES/django.po index ab145809..76023af4 100644 --- a/evibes/locale/vi_VN/LC_MESSAGES/django.po +++ b/evibes/locale/vi_VN/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -30,8 +30,8 @@ msgid "" "Tax rate in jurisdiction of your company. Leave 0 if you don't want to " "process taxes." msgstr "" -"Tỷ lệ thuế tại khu vực pháp lý của công ty bạn. Để trống ô này nếu bạn không" -" muốn xử lý thuế." +"Tỷ lệ thuế tại khu vực pháp lý của công ty bạn. Để trống ô này nếu bạn không " +"muốn xử lý thuế." #: evibes/settings/constance.py:28 msgid "Shows if the taxes are already included in product's selling prices" @@ -75,8 +75,7 @@ msgstr "Địa chỉ email của người gửi" #: evibes/settings/constance.py:40 msgid "How many days we store messages from anonymous users" -msgstr "" -"Chúng tôi lưu trữ tin nhắn từ người dùng ẩn danh trong bao nhiêu ngày?" +msgstr "Chúng tôi lưu trữ tin nhắn từ người dùng ẩn danh trong bao nhiêu ngày?" #: evibes/settings/constance.py:41 msgid "How many days we store messages from authenticated users" @@ -140,36 +139,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,18 +203,49 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" "\n" -"Chào mừng đến với tài liệu hướng dẫn của eVibes. eVibes là một nền tảng thương mại điện tử mạnh mẽ cho phép bạn khởi chạy và quản lý cửa hàng trực tuyến bất kỳ loại nào chỉ với vài cú nhấp chuột. ## Tính năng chính - **Danh mục sản phẩm:** Quản lý chi tiết sản phẩm, giá cả, tồn kho và tình trạng sẵn có trên nhiều danh mục. - **Quản lý đơn hàng:** Xử lý đơn hàng, theo dõi quá trình giao hàng và xử lý yêu cầu của khách hàng một cách hiệu quả.\n" -"- **Xác thực & Quyền truy cập:** Hệ thống xác thực người dùng toàn diện với token JWT và quyền truy cập dựa trên vai trò. - **Xử lý thanh toán:** Tích hợp nhiều cổng thanh toán và quản lý giao dịch an toàn. - **Quản lý blog và nội dung:** Tạo và quản lý bài viết blog và nội dung tiếp thị cho cửa hàng của bạn. - **Hoạt động B2B:** Các điểm cuối chuyên dụng cho giao dịch B2B và quản lý bán sỉ.\n" -"- **Hỗ trợ đa ngôn ngữ:** Phục vụ khách hàng toàn cầu với khả năng quốc tế hóa (i18n) đầy đủ. - **Tích hợp tùy chỉnh:** Kiến trúc API mở rộng để tích hợp với các nền tảng và dịch vụ bên ngoài. - **Phân tích & Báo cáo:** Tạo báo cáo chi tiết về doanh số, hàng tồn kho và hành vi khách hàng. - **Cập nhật thời gian thực:** Nhận dữ liệu trực tiếp về mức tồn kho, trạng thái đơn hàng và thay đổi giá.\n" +"Chào mừng đến với tài liệu hướng dẫn của eVibes. eVibes là một nền tảng " +"thương mại điện tử mạnh mẽ cho phép bạn khởi chạy và quản lý cửa hàng trực " +"tuyến bất kỳ loại nào chỉ với vài cú nhấp chuột. ## Tính năng chính - **Danh " +"mục sản phẩm:** Quản lý chi tiết sản phẩm, giá cả, tồn kho và tình trạng sẵn " +"có trên nhiều danh mục. - **Quản lý đơn hàng:** Xử lý đơn hàng, theo dõi quá " +"trình giao hàng và xử lý yêu cầu của khách hàng một cách hiệu quả.\n" +"- **Xác thực & Quyền truy cập:** Hệ thống xác thực người dùng toàn diện với " +"token JWT và quyền truy cập dựa trên vai trò. - **Xử lý thanh toán:** Tích " +"hợp nhiều cổng thanh toán và quản lý giao dịch an toàn. - **Quản lý blog và " +"nội dung:** Tạo và quản lý bài viết blog và nội dung tiếp thị cho cửa hàng " +"của bạn. - **Hoạt động B2B:** Các điểm cuối chuyên dụng cho giao dịch B2B và " +"quản lý bán sỉ.\n" +"- **Hỗ trợ đa ngôn ngữ:** Phục vụ khách hàng toàn cầu với khả năng quốc tế " +"hóa (i18n) đầy đủ. - **Tích hợp tùy chỉnh:** Kiến trúc API mở rộng để tích " +"hợp với các nền tảng và dịch vụ bên ngoài. - **Phân tích & Báo cáo:** Tạo " +"báo cáo chi tiết về doanh số, hàng tồn kho và hành vi khách hàng. - **Cập " +"nhật thời gian thực:** Nhận dữ liệu trực tiếp về mức tồn kho, trạng thái đơn " +"hàng và thay đổi giá.\n" "\n" -"## Các API có sẵn - **REST API:** Giao diện RESTful đầy đủ (tài liệu này) - **GraphQL API:** Có sẵn tại `/graphql/` với giao diện GraphiQL cho các truy vấn tương tác ## Xác thực - Xác thực được xử lý thông qua token JWT. Bao gồm token trong tiêu đề `X-EVIBES-AUTH` của yêu cầu của bạn theo định dạng `Bearer `.\n" +"## Các API có sẵn - **REST API:** Giao diện RESTful đầy đủ (tài liệu này) - " +"**GraphQL API:** Có sẵn tại `/graphql/` với giao diện GraphiQL cho các truy " +"vấn tương tác ## Xác thực - Xác thực được xử lý thông qua token JWT. Bao gồm " +"token trong tiêu đề `X-EVIBES-AUTH` của yêu cầu của bạn theo định dạng " +"`Bearer `.\n" "- Thời hạn sử dụng của token truy cập là {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" -"} {\"minutes\" if not DEBUG else \"hours\"}. - Thời hạn sử dụng của token làm mới là {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" -"} giờ. - Token làm mới được tự động xoay vòng và vô hiệu hóa sau khi sử dụng để tăng cường bảo mật. ## Quốc tế hóa (i18n) - Đặt tiêu đề `Accept-Language` để chỉ định ngôn ngữ ưa thích của bạn (ví dụ: `Accept-Language: en-US`).\n" -"- Các ngôn ngữ có sẵn có thể được lấy từ điểm cuối `/app/languages/`. - Tất cả nội dung hiển thị cho người dùng đều hỗ trợ nhiều ngôn ngữ ngay từ đầu. ## Định dạng phản hồi API hỗ trợ nhiều định dạng phản hồi: - **JSON** (mặc định, định dạng camelCase) - **XML** (thêm `?format=xml` hoặc đặt `Accept: application/xml`)\n" -"- **YAML** (thêm `?format=yaml` hoặc đặt `Accept: application/x-yaml`) ## Sức khỏe & Giám sát - Kiểm tra sức khỏe: `/health/` - Chỉ số Prometheus (bảo vệ bằng basic-auth): `/prometheus/` ## Phiên bản Phiên bản API hiện tại: {EVIBES_VERSION}\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" +"} {\"minutes\" if not DEBUG else \"hours\"}. - Thời hạn sử dụng của token " +"làm mới là {\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" +"} giờ. - Token làm mới được tự động xoay vòng và vô hiệu hóa sau khi sử dụng " +"để tăng cường bảo mật. ## Quốc tế hóa (i18n) - Đặt tiêu đề `Accept-Language` " +"để chỉ định ngôn ngữ ưa thích của bạn (ví dụ: `Accept-Language: en-US`).\n" +"- Các ngôn ngữ có sẵn có thể được lấy từ điểm cuối `/app/languages/`. - Tất " +"cả nội dung hiển thị cho người dùng đều hỗ trợ nhiều ngôn ngữ ngay từ đầu. " +"## Định dạng phản hồi API hỗ trợ nhiều định dạng phản hồi: - **JSON** (mặc " +"định, định dạng camelCase) - **XML** (thêm `?format=xml` hoặc đặt `Accept: " +"application/xml`)\n" +"- **YAML** (thêm `?format=yaml` hoặc đặt `Accept: application/x-yaml`) ## " +"Sức khỏe & Giám sát - Kiểm tra sức khỏe: `/health/` - Chỉ số Prometheus (bảo " +"vệ bằng basic-auth): `/prometheus/` ## Phiên bản Phiên bản API hiện tại: " +"{EVIBES_VERSION}\n" #: evibes/settings/unfold.py:57 msgid "Menu" @@ -224,38 +271,38 @@ msgstr "Các tác vụ định kỳ" msgid "Taskboard" msgstr "Bảng nhiệm vụ" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "Hỗ trợ" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "Liên kết nhanh" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "Người dùng" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "Nhóm" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "Đơn hàng" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "Sản phẩm" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "Các danh mục" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "Thương hiệu" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "Bài viết trên blog" diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.po b/evibes/locale/zh_Hans/LC_MESSAGES/django.po index 6e6acf8d..8def7a09 100644 --- a/evibes/locale/zh_Hans/LC_MESSAGES/django.po +++ b/evibes/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-17 16:16+0300\n" +"POT-Creation-Date: 2025-11-18 11:26+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -136,36 +136,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -185,7 +202,8 @@ msgstr "" "\n" "欢迎使用 eVibes 文档。\n" "\n" -"eVibes 是一个功能强大的电子商务平台,只需点击几下,您就可以创建和管理任何类型的网上商店。\n" +"eVibes 是一个功能强大的电子商务平台,只需点击几下,您就可以创建和管理任何类型" +"的网上商店。\n" "\n" "## 关键功能\n" "- 产品目录:** 管理多个类别的产品详情、定价、库存和可用性。\n" @@ -201,20 +219,25 @@ msgstr "" "\n" "## 可用的应用程序接口\n" "- REST API:** 完整的 REST 接口(本文档)\n" -"- **GraphQL 应用程序接口:** 可在 `/graphql/`使用 GraphiQL 接口进行交互式查询\n" +"- **GraphQL 应用程序接口:** 可在 `/graphql/`使用 GraphiQL 接口进行交互式查" +"询\n" "\n" "## 验证\n" -"- 通过 JWT 标记进行身份验证。在请求的 `X-EVIBES-AUTH` 头中包含令牌,格式为 `Bearer `。\n" +"- 通过 JWT 标记进行身份验证。在请求的 `X-EVIBES-AUTH` 头中包含令牌,格式为 " +"`Bearer `。\n" "- 访问令牌的有效期为 {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "}{\"minutes\" if not DEBUG else \"hours\"}。\n" "- 刷新令牌的有效期为 {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} 小时。\n" "- 刷新令牌在使用后会自动轮换和失效,以增强安全性。\n" "\n" "### 国际化(i18n)\n" -"- 设置 `Accept-Language` 标头,指定首选语言(例如,`Accept-Language: en-US`)。\n" +"- 设置 `Accept-Language` 标头,指定首选语言(例如,`Accept-Language: en-" +"US`)。\n" "- 可从 `/app/languages/` 端点检索可用语言。\n" "- 所有面向用户的内容均支持多种语言。\n" "\n" @@ -255,38 +278,38 @@ msgstr "定期任务" msgid "Taskboard" msgstr "任务板" -#: evibes/settings/unfold.py:107 +#: evibes/settings/unfold.py:112 msgid "Support" msgstr "支持" -#: evibes/settings/unfold.py:114 +#: evibes/settings/unfold.py:119 msgid "Quick Links" msgstr "快速链接" -#: evibes/settings/unfold.py:119 +#: evibes/settings/unfold.py:124 msgid "Users" msgstr "用户" -#: evibes/settings/unfold.py:124 +#: evibes/settings/unfold.py:129 msgid "Groups" msgstr "组别" -#: evibes/settings/unfold.py:129 +#: evibes/settings/unfold.py:134 msgid "Orders" msgstr "订单" -#: evibes/settings/unfold.py:134 +#: evibes/settings/unfold.py:139 msgid "Products" msgstr "产品" -#: evibes/settings/unfold.py:139 +#: evibes/settings/unfold.py:144 msgid "Categories" msgstr "类别" -#: evibes/settings/unfold.py:144 +#: evibes/settings/unfold.py:149 msgid "Brands" msgstr "品牌" -#: evibes/settings/unfold.py:149 +#: evibes/settings/unfold.py:154 msgid "Blogposts" msgstr "博客文章" diff --git a/evibes/settings/unfold.py b/evibes/settings/unfold.py index b0ffadc8..9e4cb2fb 100644 --- a/evibes/settings/unfold.py +++ b/evibes/settings/unfold.py @@ -103,6 +103,11 @@ UNFOLD: dict[str, Any] = { "icon": "view_kanban", "link": TASKBOARD_URL, }, + { + "title": "Documentation", + "icon": "book_2", + "link": reverse_lazy("django-admindocs-docroot"), + }, { "title": _("Support"), "icon": "contact_support",