From 20ecaa683fb44bf07e7782ce694d08766887ae9e Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Sun, 16 Nov 2025 15:48:23 +0300 Subject: [PATCH] Features: 1) Added "Orders", "Taskboard", "Support", "Quick Links" settings; 2) Reordered and updated setting labels for consistency. Fixes: 1) Corrected line endings in locale file; 2) Updated POT-Creation-Date to reflect current build. Extra: 1) Refactored setting file to improve structure; 2) Ensured translation keys match updated UI labels. --- .../core/locale/ar_AR/LC_MESSAGES/django.mo | Bin 105594 -> 106864 bytes .../core/locale/ar_AR/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 90369 -> 91414 bytes .../core/locale/cs_CZ/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/da_DK/LC_MESSAGES/django.mo | Bin 88225 -> 89225 bytes .../core/locale/da_DK/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/de_DE/LC_MESSAGES/django.mo | Bin 93461 -> 94481 bytes .../core/locale/de_DE/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/en_GB/LC_MESSAGES/django.mo | Bin 85055 -> 85990 bytes .../core/locale/en_GB/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/en_US/LC_MESSAGES/django.mo | Bin 85046 -> 85981 bytes .../core/locale/en_US/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/es_ES/LC_MESSAGES/django.mo | Bin 91426 -> 92455 bytes .../core/locale/es_ES/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/fa_IR/LC_MESSAGES/django.po | 109 +++++++++++--- .../core/locale/fr_FR/LC_MESSAGES/django.mo | Bin 94219 -> 95266 bytes .../core/locale/fr_FR/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/he_IL/LC_MESSAGES/django.mo | Bin 98260 -> 99460 bytes .../core/locale/he_IL/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/hi_IN/LC_MESSAGES/django.po | 109 +++++++++++--- .../core/locale/hr_HR/LC_MESSAGES/django.po | 109 +++++++++++--- .../core/locale/id_ID/LC_MESSAGES/django.mo | Bin 88446 -> 89443 bytes .../core/locale/id_ID/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/it_IT/LC_MESSAGES/django.mo | Bin 91739 -> 92765 bytes .../core/locale/it_IT/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/ja_JP/LC_MESSAGES/django.mo | Bin 97023 -> 98103 bytes .../core/locale/ja_JP/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/kk_KZ/LC_MESSAGES/django.po | 109 +++++++++++--- .../core/locale/ko_KR/LC_MESSAGES/django.mo | Bin 91587 -> 92664 bytes .../core/locale/ko_KR/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/nl_NL/LC_MESSAGES/django.mo | Bin 91305 -> 92298 bytes .../core/locale/nl_NL/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/no_NO/LC_MESSAGES/django.mo | Bin 88879 -> 89870 bytes .../core/locale/no_NO/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/pl_PL/LC_MESSAGES/django.mo | Bin 90562 -> 91559 bytes .../core/locale/pl_PL/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/pt_BR/LC_MESSAGES/django.mo | Bin 91167 -> 92204 bytes .../core/locale/pt_BR/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/ro_RO/LC_MESSAGES/django.mo | Bin 93001 -> 94041 bytes .../core/locale/ro_RO/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/ru_RU/LC_MESSAGES/django.mo | Bin 120491 -> 121808 bytes .../core/locale/ru_RU/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/sv_SE/LC_MESSAGES/django.mo | Bin 88911 -> 89933 bytes .../core/locale/sv_SE/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/th_TH/LC_MESSAGES/django.mo | Bin 143950 -> 145597 bytes .../core/locale/th_TH/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/tr_TR/LC_MESSAGES/django.mo | Bin 91281 -> 92291 bytes .../core/locale/tr_TR/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/vi_VN/LC_MESSAGES/django.mo | Bin 102677 -> 103839 bytes .../core/locale/vi_VN/LC_MESSAGES/django.po | 107 +++++++++++--- .../core/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 80069 -> 81012 bytes .../core/locale/zh_Hans/LC_MESSAGES/django.po | 107 +++++++++++--- engine/core/templates/admin/index.html | 138 +++++++++++++----- engine/core/views.py | 62 +++++++- evibes/locale/ar_AR/LC_MESSAGES/django.mo | Bin 10055 -> 10151 bytes evibes/locale/ar_AR/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 8637 -> 8723 bytes evibes/locale/cs_CZ/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/da_DK/LC_MESSAGES/django.mo | Bin 8352 -> 8438 bytes evibes/locale/da_DK/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/de_DE/LC_MESSAGES/django.mo | Bin 8792 -> 8879 bytes evibes/locale/de_DE/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/en_GB/LC_MESSAGES/django.mo | Bin 8213 -> 8291 bytes evibes/locale/en_GB/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/en_US/LC_MESSAGES/django.mo | Bin 8217 -> 8295 bytes evibes/locale/en_US/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/es_ES/LC_MESSAGES/django.mo | Bin 8814 -> 8898 bytes evibes/locale/es_ES/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/fa_IR/LC_MESSAGES/django.po | 74 +++++----- evibes/locale/fr_FR/LC_MESSAGES/django.mo | Bin 9098 -> 9181 bytes evibes/locale/fr_FR/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/he_IL/LC_MESSAGES/django.mo | Bin 9442 -> 9542 bytes evibes/locale/he_IL/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/hi_IN/LC_MESSAGES/django.po | 74 +++++----- evibes/locale/hr_HR/LC_MESSAGES/django.po | 74 +++++----- evibes/locale/id_ID/LC_MESSAGES/django.mo | Bin 8390 -> 8470 bytes evibes/locale/id_ID/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/it_IT/LC_MESSAGES/django.mo | Bin 8758 -> 8844 bytes evibes/locale/it_IT/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/ja_JP/LC_MESSAGES/django.mo | Bin 9117 -> 9211 bytes evibes/locale/ja_JP/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/kk_KZ/LC_MESSAGES/django.po | 74 +++++----- evibes/locale/ko_KR/LC_MESSAGES/django.mo | Bin 8567 -> 8647 bytes evibes/locale/ko_KR/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/nl_NL/LC_MESSAGES/django.mo | Bin 8468 -> 8553 bytes evibes/locale/nl_NL/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/no_NO/LC_MESSAGES/django.mo | Bin 8404 -> 8492 bytes evibes/locale/no_NO/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/pl_PL/LC_MESSAGES/django.mo | Bin 8699 -> 8786 bytes evibes/locale/pl_PL/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/pt_BR/LC_MESSAGES/django.mo | Bin 8788 -> 8870 bytes evibes/locale/pt_BR/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/ro_RO/LC_MESSAGES/django.mo | Bin 8833 -> 8914 bytes evibes/locale/ro_RO/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/ru_RU/LC_MESSAGES/django.mo | Bin 11147 -> 11247 bytes evibes/locale/ru_RU/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/sv_SE/LC_MESSAGES/django.mo | Bin 8488 -> 8575 bytes evibes/locale/sv_SE/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/th_TH/LC_MESSAGES/django.mo | Bin 12914 -> 13020 bytes evibes/locale/th_TH/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/tr_TR/LC_MESSAGES/django.mo | Bin 8818 -> 8911 bytes evibes/locale/tr_TR/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/vi_VN/LC_MESSAGES/django.mo | Bin 9352 -> 9441 bytes evibes/locale/vi_VN/LC_MESSAGES/django.po | 72 +++++---- evibes/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 7948 -> 8027 bytes evibes/locale/zh_Hans/LC_MESSAGES/django.po | 72 +++++---- evibes/settings/unfold.py | 72 +++++---- 107 files changed, 3737 insertions(+), 1563 deletions(-) diff --git a/engine/core/locale/ar_AR/LC_MESSAGES/django.mo b/engine/core/locale/ar_AR/LC_MESSAGES/django.mo index 544a862fed5e15d7126f90ddca5f86bd45d454a2..7129ab1043ee907cf4a3021de47acd6325c19a8c 100644 GIT binary patch delta 15188 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 delta 13953 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 diff --git a/engine/core/locale/ar_AR/LC_MESSAGES/django.po b/engine/core/locale/ar_AR/LC_MESSAGES/django.po index 56c2224b..2d4a996e 100644 --- a/engine/core/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/core/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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "يُسمح فقط بعناوين URL التي تبدأ ب http(s)://" @@ -2673,6 +2673,67 @@ msgstr "اتصل بنا" msgid "About Us" msgstr "نبذة عنا" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "مشرف موقع جانغو" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "لوحة التحكم" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "الإيرادات (الإجمالي، 30 د)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "الإيرادات (الصافي، 30 د)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "المرتجعات (30 د)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "الطلبات التي تمت معالجتها (30 د)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "المبيعات مقابل العوائد (30 د)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "الإجمالي" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "المرتجعات" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "لا توجد بيانات كافية للرسم البياني حتى الآن." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "روابط سريعة" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "لا توجد روابط متاحة." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "أكثر المنتجات المرغوبة" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "لا توجد بيانات بعد." + +#: engine/core/templates/admin/index.html:135 +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 @@ -2883,7 +2944,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:73 +#: engine/core/views.py:77 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." @@ -2891,7 +2952,7 @@ msgstr "" "يتعامل مع طلب فهرس خريطة الموقع ويعيد استجابة XML. يضمن أن تتضمن الاستجابة " "رأس نوع المحتوى المناسب ل XML." -#: engine/core/views.py:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2900,16 +2961,16 @@ msgstr "" "يعالج استجابة العرض التفصيلي لخريطة الموقع. تقوم هذه الدالة بمعالجة الطلب، " "وجلب استجابة تفاصيل خريطة الموقع المناسبة، وتعيين رأس نوع المحتوى ل XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "إرجاع قائمة باللغات المدعومة والمعلومات الخاصة بها." -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "إرجاع معلمات الموقع الإلكتروني ككائن JSON." -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2917,11 +2978,11 @@ msgstr "" "يعالج عمليات ذاكرة التخزين المؤقت مثل قراءة بيانات ذاكرة التخزين المؤقت " "وتعيينها بمفتاح ومهلة محددة." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "يتعامل مع عمليات إرسال نموذج \"اتصل بنا\"." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2929,15 +2990,15 @@ msgstr "" "يعالج طلبات معالجة عناوين URL والتحقق من صحة عناوين URL من طلبات POST " "الواردة." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "يتعامل مع استعلامات البحث العامة." -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "يتعامل بمنطق الشراء كشركة تجارية دون تسجيل." -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -2945,31 +3006,31 @@ msgstr "" "يتعامل مع تنزيل الأصل الرقمي المرتبط بأمر ما.\n" "تحاول هذه الدالة خدمة ملف الأصل الرقمي الموجود في دليل التخزين الخاص بالمشروع. إذا لم يتم العثور على الملف، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر." -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "الطلب_برو_منتج_uuid مطلوب" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "طلب المنتج غير موجود" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "يجب دفع الطلب قبل تنزيل الأصل الرقمي" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "لا يحتوي منتج الطلب على منتج" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "الرمز المفضل غير موجود" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -2977,7 +3038,7 @@ msgstr "" "يتعامل مع طلبات الرمز المفضل لموقع ويب.\n" "تحاول هذه الدالة عرض ملف الأيقونة المفضلة الموجود في الدليل الثابت للمشروع. إذا لم يتم العثور على ملف الأيقونة المفضلة، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر." -#: engine/core/views.py:398 +#: engine/core/views.py:402 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. " @@ -2987,10 +3048,14 @@ msgstr "" " توجيهها إلى صفحة فهرس واجهة إدارة Django. تستخدم دالة \"إعادة التوجيه\" في " "Django للتعامل مع إعادة توجيه HTTP." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "إرجاع الإصدار الحالي من eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "إرجاع المتغيرات المخصصة للوحة التحكم." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/cs_CZ/LC_MESSAGES/django.mo b/engine/core/locale/cs_CZ/LC_MESSAGES/django.mo index ffa342e6051cafc5d25081611adbb8899c87b6b0..24a70285e3006a1e56471af7088981a63f06c5b7 100644 GIT binary patch delta 15028 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 delta 13982 zcmYk@37k*W|Htw3WyUi0ZR}&rm>I)h#xe_LF-DAi?E4mBCL~KDzQ~rX>}!@tDNBqk zBBIF>m83|PR7fcz3HiU?-*fyQzx#Ncd7jTX=iYnnIp?15cSbEf?my`hfA7WOev1sp zTGZW=%a~C^BoYx5t=Wn2$Ix&X~Md2?Ha zhW?m{Ww0@FPtyZG=0>Zq6LGI*#&jm$iH)&Pb9=pv7S`@qnRWwEQ!pL9jG~!MW)Xgh zm9TqDV^-ie%!8#{8B-90P$N|x+j4^x)LNL=n(4shxRLU)ZCFQGC4*}*6&dY}IZyrO z4#te4d`3s64FBuI{5K~P-o=W9ZhOuC9 z*>GbRHB)JXT~wK#@Wn&_-;#j*_n_>*{P>jYks44jh^;Vq6 zP|P*Xo)?Z$#BEXa-tn&DZLCkh7g!DhUg0Jf=4_0*abNVkMp%;g5NeU0MUC7oEP@H+ z?f#ICfy5c8H8cn-;wWUXd(8qeohf(|SwH3;CS%$J5>7#FAjhyeUceHVkEtt+6;Son zk-nQG48y&sx8^by!e6iy-bJ+!n5Zcws7OYyT`lzW9M$7=)P~dt^@PJw^{=7ImpR`< zP1!!w$mO6qcm;#;9#+G^N$if;2sLFRu^RU`8_4LwUtwOnf+2VV^#lbc+xp_DMHqs* zVOPfp`2tJ1z^4CynVlnDLS7QO(h+g$SPR4&8O-ey`fOE`%EL z5Y!OHpl+Ckx=}k9_r_r2A*dVAML%4Edcc*a>#u*6@zgIaK>7)SNd$P0c{m6pnHAucM}9J*wk-Q1?ACh4EKUuDAxbu`IFwRBI(v zeFEylbX13WU=;R8Ey{VQ8}4`U8Pv{drr8gn1k?kJKs~@@=Rz+T^>_p70=rR9bPCnu ztEd~_NA);hy6sRf>O#?|cB!b2cXGaf>iA3y!R4sy>_@GEFHuwNJx?Z;%+FXGtIn`f z(H-j%4?^8w73vALqdI&D^WkaK8u%WysBU0oyodR)^lSDy!5Bl_3DtoaNXNWpKA98> zcA|RxH|ojq%(Sbz3@WaKx?qfp>tlZ6mKcehFb*f;+qehSzSk@}as#n0@p$yd?HI53 ze-D`k6x>Gju*PgV$Gx#C@j%oQy@BDl9d)B~sC}W>96Pj;sHtm+!I**C4_-t)z#MFa zt8p~`j{5vD{pZ>qokk7uclZomLp@>5*X>Beqb`(;nwkt$2d86R`~WpIdr<9;p*s3K zR>u-=*iXx3)RYcGZ#tP*$t2-P)C~*HvvV4VS~OKK7UQr64#hgS5_991sE(Y$LiiZV zV}bcLj=&(|dZ;PrfW`5(`HX)AnUxgCBdDSN4J%^d1vZYtVB*%O@?jW_b1)1KU?~2C zl`!8zyXvc=uGa!}-VjtrW??YCw~+DI(43&a5AS0!e1w|2!i(%8ibTb=u_?B4<%^uF zP*e8~>N>knuk$|Clb*&B_%oKl2dI%M?p%+X?O-TVr5tGW?)0q4d-G>T#g#4t*CurC+5}re}If`l!F?o^QaNI z?#l0@o}j==`{ZR%^^vF>#G~rdTzv-W2K}%sX1VgISeke-YRzrIf_neYlL^3USPJi; zE}ZX8JG3RS3~_bT;!H!e?}U0?`=ZXvLUnACtA7LamaM>F{2cX~{*IcWz*UUDF4%^Q zUYowyA17fo`~@puvDNm8YNFc5VNFa&Ey^+27`LJ>{1@siiCSaV%t%xR$Dukr4=dq{ zHH^RJY##;kBIy33NSb@6W7pT`V*L(Jf;!z_r2%F+^Y=l3$xXSysqt9as z0H)w$R8Nz(*gbv(h7m8pLbxA8 z@C0gOx`jRP2^Pj4TkY$eh5p1|)Ok}eRPX-+GI=Q2jkWLq(lc|*mB)Nw>*Fzi@?_M0 z(H!+Q^unU}0_MX>u6!mIAzq2vAva-7Jd8E)4j$+JCU_ek!FUrRaM*S`B}*`p_-jnT z$EXvNvhAXJ9>a;3VO2bc4e$nP#KLyik?Mxkh$mu2d>?h6W9UsLbDNCjI%cQ6@Ib6W zybv4Who~q28#RQUU3P=Yi+VjvU?|qW@|b}IaR};$V^Jf!6!YUz)Z#t8i}BZm3+%Q# zTp*?s*Frt{%c!|thkAlzs3*RQ8rt%E?8j|&)W}3*aqNZa$Z*ty%t4*E9ksU3p&q2n zhm5~E5cHv)<47z+9E}Aq9ZO+HRJ$w;!qHe67onbPH|E7_I3E8%&GnGIw%tlhBR+sy zBf0n4#aYlxMyt0xmcS&`5Vb=+Q4ef@Gf{6z4r+1c`^ZjJ3)IMrL5FiV|#-JSdsWS)RRrYD9lFP_%c?0ZPz;!UWX@idM@zt8Q|O~iHFa0_eOW54F3l7@rO5C282ktbLMOPsMI7mo#qTVrADhN>ToT5NMsYitQ7<6b<^ zef~vnZwkISYkOMnTfRtAaqc@iv>E5^&~-ApD{+e`1YGeClD)73Mt`pN2njA>#8t@zIP|e&$02 zhg`FN-^;#k|7=(ISN^z2`-L}+Swns5Egk}|{$UKWY4+ddH6)&Thc!jJcmA>)-l2QU ze=-&K?=h@2jJwZADskLDtXdi#dB6%LPI$z{@SDfBV;|D^5OMun9g64V@@be=}d-M82eFQfkC+BmPr_YG!Y zKHGjH7NLF%7Q+J=K*zttM)-Yz$M>;bv5?32dS+lv+KtB~^ll=fxx9(GVOU|0Z!T+M zE#fX%9cQ@m9ax$8B8H$T;_-bS2t~zN&bg=?ZNpT&jEyj~sBJgE>NPXSG@;^s)DzrB zEuP%PY#e|Z!U`CSHBj}fu?u#@Hn;_Ko&T^krWLp6Ex;J!^{D;itSkQ$OX~gil<=6v zR0Lu)ZbnVTMGVBNsEy`d)JEl3(w3LQyu>l6jwhftpcXFfk7_>}^#HS7`J1RI+lu-l zrumqRPCSb0;T6=-J;bV5t(3?2SEbehcC7?sAcoAhjvd1acoj9IrnFr%wNWF~0M(%;F7AqY(q~cE zAK}WUp+@A5(jKpG=+;u86SJ`zeun;d2Q}CKplS-k8j7Th>9bz5+WLreXqWq!&6jmtp_a&Xq$!N&FM_Dd%6-K4~Zh6Q`hV)YrwMQ0*5x-$$Ky5H&&< zUHL<2(Q>?&l!u{q(rDDj`?Fp$>iIlZunqNIUcwX%DsOMp8#QMmQBN=n^+fA22=}5o za1Ql)-bb}7%RiSWu8nHn0reo6F7{3!qYErVT_D?4e1%#I*IZnnqR020t}^OEHBs+% z8tRFrqvm)o>H$uo7F$6+(PVkljjN%iCJ7lquSs(iT``u5A*i`tkBxB)Hpe@t#gtgd zcB~b)B_58!_z7x}UPUe1$Ec1L2(}%l?2L9MW3=A?)@0OUFK)vFsJVKfvhDFW)Dymr z>iH+w6^~+13<_pVtv;(!be}rLp7xg-q3-y=|n2x1!6_(KZzl)4EkmIPeZ~^rs zkJJDIt9X207^-1s;cpL$E2nirRoqpq}6^s^_8n<6Sy7z-BlV^#$Y<>Osz<7VB@=5OY_xuXPGeBhEs- zrgy6H{;Nk1D9{CJMcTP-fa+Lp)ax_^8{kaTljWd>_`I`tHM?~;M|E@@YJ+;u#TQ&$ zpt@bOiI_nB#Ohvqp}iDn@4tiUaVY)y<{|GQK%tFLJeIL)CGIEcsOeBpMhGOJ5f_{5Ov;ns3*FF z8kw@SJZ21LpvsS99rTN~BNUGsaqmDf+9*b#Zaf<`#OqLd^lsD>9Yqc4byP>n#kfU> zYS$IDlV+lCKS51hHtI%SqON}dHAR0R`wf5pscjcs3O1pl6Y9xVI=7+LLJq1UXPkF2 zg}7uLI|3cCAaM`W`GZl5bONelM^Ufw9n=Vg)zu>Rvg*lbmA{Q0@D%C^LhIRYDygXN z0|QWVnu&VPM_^$bhnm8fsMl;I>Pfev-l`nbh@N%+ifaF#2;tStyZ-JmX(!$i~t zyI=@rq289cs0$xKUFZyItNsPmJ|NEH`|Y

UB97UstZ=+%X0kkK41MO|<` zYL0fHM&f6zjehZV$m38Q8iSgW71$5=q289D1Y6${wOEItIx-ex@eR~ef0n@e--%42 z`gTX^kBZl$R`o;FjdC@xaTw}JqnvHAI`K#suW=r6UPpa~6l`eMKwH!UkHyY7vmx() zYcfAlpdQ5}+V~}`MVy1x@NZ1T%1L%E`=j2PF{qK5hxPFY>UDd9+Ak84?Q55bT6C*i zd=^uP1H37=K?~G|qgWT%hx$;uhnn-cjqC+8Q8!%SJcYWkC)HlCA*!R}@fkdb;h49v zwI*f|cf@4$zC%VMa1FKR$EMjmeF7@}%*92T*d443wxxWN^Rct_Gxox(QB!yuTVk`O z_C|~FS>kW72PQQ0tr@RbOhy-c;B205;}y=|oQchC`CR8EXLJi&KFN6+b%W5B_E)fp zs5P?_^>KU-_1ZqcV7>o^TiJqIIEjiR7azp3#9yF4-ax$_e_$2#w6^;|IBH62Vt4F| zYQG=#njJ>HT_@4k0n~M#U^%`2#oE|a8HJ^Z8)6`K!19=dS_{)L5pysb{n~o;pHP`S zs1C$s*eT1zVB+nlweU4+5eK%jTX!SpQ1t43T|q{x^BBgUr@bArI;ang&MuyX+84HB zE4+y6P*exIXfsjgug5lc7WJgz9qsEIkJ`$UQTs-#j=cZs*$@h}(JVy`*>2Pxeh5?W zENae5ce0Bt9Ce{FsMl~B_Q%zz4)}GpPaKPS4g0!yK59hwqwaIAv)A6>Dh1l1s&ug@ z)JJ{FWnnBXMZIQUp!WWNu69m~qqgiIqHH+^k$8UnV1W=c$E~FPTqKxS|JfA}=lgEZk@6PA8shgT z`v!F^B>(g%PW{t^y~XgBnrB>DJb7L&bB3hjI_YEOb^jm9fYVJU2)t|2O%%_?{ZLV+-oD~;#texZ#A$Kn#y-wJgUc200kr7ne}qlPQf=YA2&{79SFe@rHs z6|T_^e9`5#su$@@cXZ+ce^J+flt6wYmd7t${RbFISwG5NBrR~|f#lhteg9F4iu5|` zXhnHfFBLil5HuvOJ>XeaR>t`+W%>eIf;RO@wJ9%6`p?xq znTPrv0KBg*!>HflHGfASktz%h`r8Ke*e+~4?dVh1co;U750ofL+ZUA{7H z!l~2IgZxh1L)|C1o>a}X^T*%S2K8UQMvxv7Pa=K;E?e1{S2c%5$Gbqz%zrLO~ao3nlT?rCj4SnB~;`RJz33QAg z@$v0Df;r)J^7>o7j{T(7q)L>v!Wh?XB6%H;iS_9?(6zrr{uHSs2>P;Nu5ZalXTQ1@q3NQ<<_6C zaE$ASf_F#{X;6x?+vIDxx)6M<2JWa&8y%e~uY@0y5_KL&Jb*EA9Uw2Y4^&jGRJOAu;1d$ZRbJEizoP07VmUN8z^Hek>?Iulf z?S3Vnhx|6w@twu@|2uT!oF9n~U~N|}P7&uKz3D4sN#rK;h=RuW6{#NiRGdVrLi(L} zCFv&V=@CFair^S2k(A{s%F&s&q(!dnGFL9zkg8G_O489&a)0v%jqj2|NJA-%p{xQ) z$4Sy$Qcvnqs9S|KN#{s9YT*y03{o}X+O*k1zLu}n{XSC9lKVPCqF; z3vr~uR3s8VPkMp;%cRzne}vWC$%H1B_!Vq|7fBDum&N<4O-V>ZA(>;1}+~N3jLz2g*i~J}3VPDU$Yo z5w9RUAohI;8Vbcp6-g5*Jc^@fc*WO%z#T78_Vjq0x`Qs5Oun&eo9f!Ugnv>tj5gg! zvpm_iVpDTx*RS8mlRc+FWxwnl$)Sbjw~ELf*lLj{yF{CpJ=sg!&aSec$m>B1x{T_y z;M-Br3u=uno!xWv@C^U70nZH{y5PaLLD_kZR`o2I9O8+~9((LRzijWR<%Jit{-J*M zlOHa5vL9Vq>&f19WkiJk;k6?VZ(dR~!V|Qldwx&LC12(D)G66&z{tMABZeN{JY+yt TaQh~0O#2occlQtQZ147eP$K?R diff --git a/engine/core/locale/cs_CZ/LC_MESSAGES/django.po b/engine/core/locale/cs_CZ/LC_MESSAGES/django.po index f5cc4c39..359cdbf0 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Povoleny jsou pouze adresy URL začínající http(s)://." @@ -2738,6 +2738,67 @@ msgstr "Kontaktujte nás" msgid "About Us" msgstr "O nás" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Správce webu Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Přístrojová deska" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Příjmy (hrubé, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Příjmy (čisté, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Návraty (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Zpracované objednávky (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Prodej vs. návratnost (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Hrubý" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Vrací se" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Zatím není dostatek údajů pro graf." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Rychlé odkazy" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Nejsou k dispozici žádné odkazy." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Nejžádanější produkt" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Zatím nejsou k dispozici žádné údaje." + +#: engine/core/templates/admin/index.html:135 +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 @@ -2955,7 +3016,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:73 +#: engine/core/views.py:77 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." @@ -2963,7 +3024,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2973,16 +3034,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2990,11 +3051,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Zpracovává odeslání formuláře `contact us`." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3002,15 +3063,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:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Zpracovává globální vyhledávací dotazy." -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "Řeší logiku nákupu jako firmy bez registrace." -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -3018,31 +3079,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid je povinné" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "objednávka produktu neexistuje" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Digitální aktivum můžete stáhnout pouze jednou" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Objednaný produkt nemá produkt" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon nebyl nalezen" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3050,7 +3111,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:398 +#: engine/core/views.py:402 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. " @@ -3061,10 +3122,14 @@ msgstr "" "administrátorského rozhraní Django. Pro zpracování přesměrování HTTP používá" " funkci `redirect` Djanga." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Vrací aktuální verzi systému eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Vrací vlastní proměnné pro Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/da_DK/LC_MESSAGES/django.mo b/engine/core/locale/da_DK/LC_MESSAGES/django.mo index 7faad8929fa61fd6fb7bcb4b4ca6f8feef38136d..8852f9b39ca05766e755b4ac094150133c6f9bd0 100644 GIT binary patch delta 14931 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 OvhD1<=|P^T-v0;tG7YW( delta 13973 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Kun URL'er, der starter med http(s)://, er tilladt." @@ -2764,6 +2764,67 @@ msgstr "Kontakt os" msgid "About Us" msgstr "Om os" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Django site-administrator" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Dashboard" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Indtægter (brutto, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Indtægter (netto, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Returnerer (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Behandlede ordrer (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Salg vs. returnering (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Returnerer" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Ikke nok data til et diagram endnu." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Hurtige links" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Ingen tilgængelige links." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Mest ønskede produkt" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Ingen data endnu." + +#: engine/core/templates/admin/index.html:135 +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 @@ -2981,7 +3042,7 @@ msgstr "" "Billedets dimensioner bør ikke overstige w{max_width} x h{max_height} " "pixels." -#: engine/core/views.py:73 +#: engine/core/views.py:77 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." @@ -2989,7 +3050,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2999,17 +3060,17 @@ msgstr "" "behandler anmodningen, henter det relevante sitemap-detaljesvar og " "indstiller Content-Type-headeren til XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerer hjemmesidens parametre som et JSON-objekt." -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3017,11 +3078,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Håndterer indsendelser af `kontakt os`-formularer." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3029,15 +3090,15 @@ msgstr "" "Håndterer anmodninger om behandling og validering af URL'er fra indgående " "POST-anmodninger." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Håndterer globale søgeforespørgsler." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3045,31 +3106,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid er påkrævet" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "Bestil produkt findes ikke" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Du kan kun downloade det digitale aktiv én gang" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Ordreproduktet har ikke et produkt" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "Favicon ikke fundet" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3077,7 +3138,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:398 +#: engine/core/views.py:402 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. " @@ -3088,10 +3149,14 @@ msgstr "" "administratorinterfacets indeksside. Den bruger Djangos `redirect`-funktion " "til at håndtere HTTP-omdirigeringen." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Returnerer den aktuelle version af eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Returnerer brugerdefinerede variabler til Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/de_DE/LC_MESSAGES/django.mo b/engine/core/locale/de_DE/LC_MESSAGES/django.mo index 0d6dcfb2ea5a5a04cfaf0d93182c3158cb75705a..5b4c25e001bf4b913558606993ad718fa2b11da8 100644 GIT binary patch delta 14960 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 diff --git a/engine/core/locale/de_DE/LC_MESSAGES/django.po b/engine/core/locale/de_DE/LC_MESSAGES/django.po index bbdcc681..43aa2575 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Nur URLs, die mit http(s):// beginnen, sind zulässig" @@ -2837,6 +2837,67 @@ msgstr "Kontakt" msgid "About Us" msgstr "Über uns" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Django-Website-Administrator" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Dashboard" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Einkommen (gross, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Einnahmen (netto, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Rückgaben (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Bearbeitete Aufträge (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Verkäufe vs. Retouren (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Rückgabe" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Noch nicht genug Daten für ein Diagramm." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Schnelle Links" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Keine Links verfügbar." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Meistgewünschtes Produkt" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Noch keine Daten." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3056,7 +3117,7 @@ msgstr "" "Die Bildabmessungen sollten w{max_width} x h{max_height} Pixel nicht " "überschreiten" -#: engine/core/views.py:73 +#: engine/core/views.py:77 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3065,7 +3126,7 @@ msgstr "" "zurück. Sie stellt sicher, dass die Antwort den entsprechenden Content-Type-" "Header für XML enthält." -#: engine/core/views.py:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3075,18 +3136,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3094,11 +3155,11 @@ msgstr "" "Erledigt Cache-Operationen wie das Lesen und Setzen von Cache-Daten mit " "einem bestimmten Schlüssel und Timeout." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Verarbeitet Übermittlungen des Formulars \"Kontaktieren Sie uns\"." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3106,15 +3167,15 @@ msgstr "" "Bearbeitet Anfragen zur Verarbeitung und Validierung von URLs aus " "eingehenden POST-Anfragen." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Bearbeitet globale Suchanfragen." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3122,33 +3183,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid ist erforderlich" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "Produkt bestellen existiert nicht" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Sie können das digitale Asset nur einmal herunterladen" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Das Bestellprodukt hat kein Produkt" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "Favicon nicht gefunden" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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 +3217,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:398 +#: engine/core/views.py:402 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,10 +3228,14 @@ msgstr "" "Administrationsoberfläche um. Sie verwendet die Funktion `redirect` von " "Django für die Bearbeitung der HTTP-Umleitung." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Gibt die aktuelle Version von eVibes zurück." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Gibt benutzerdefinierte Variablen für das Dashboard zurück." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/en_GB/LC_MESSAGES/django.mo b/engine/core/locale/en_GB/LC_MESSAGES/django.mo index b900c9b6288144f5bff183361eb3e09e889002d9..1a7883b333d4bd255aef940bd726fbfdb24fd5f2 100644 GIT binary patch delta 14913 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" @@ -2700,6 +2700,67 @@ msgstr "Contact Us" msgid "About Us" msgstr "About Us" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Django site admin" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Dashboard" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Revenue (gross, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Revenue (net, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Returns (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Processed orders (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Sales vs Returns (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Returns" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Not enough data for chart yet." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Quick Links" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "No links available." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Most wished product" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "No data yet." + +#: engine/core/templates/admin/index.html:135 +msgid "Most popular product" +msgstr "Most popular 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 @@ -2916,7 +2977,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:73 +#: engine/core/views.py:77 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." @@ -2924,7 +2985,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2934,17 +2995,17 @@ msgstr "" "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2952,11 +3013,11 @@ msgstr "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Handles `contact us` form submissions." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2964,15 +3025,15 @@ msgstr "" "Handles requests for processing and validating URLs from incoming POST " "requests." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Handles global search queries." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -2980,31 +3041,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid is required" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "order product does not exist" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "The order product does not have a product" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon not found" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3012,7 +3073,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:398 +#: engine/core/views.py:402 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. " @@ -3022,10 +3083,14 @@ 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Returns current version of the eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Returns custom variables for Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/en_US/LC_MESSAGES/django.mo b/engine/core/locale/en_US/LC_MESSAGES/django.mo index 77ab373e92049407f5e391856fce7cb9db78a83b..6fd8ef157ce008e7099fea9f8ee79b8aac4714d2 100644 GIT binary patch delta 14905 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 delta 13953 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 P2TVM=vwwi!jGX@i3L($G diff --git a/engine/core/locale/en_US/LC_MESSAGES/django.po b/engine/core/locale/en_US/LC_MESSAGES/django.po index 33f2e8ca..609c7b12 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" @@ -2696,6 +2696,67 @@ msgstr "Contact Us" msgid "About Us" msgstr "About Us" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Django site admin" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Dashboard" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Revenue (gross, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Revenue (net, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Returns (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Processed orders (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Sales vs Returns (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Returns" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Not enough data for chart yet." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Quick Links" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "No links available." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Most wished product" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "No data yet." + +#: engine/core/templates/admin/index.html:135 +msgid "Most popular product" +msgstr "Most popular 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 @@ -2912,7 +2973,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:73 +#: engine/core/views.py:77 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." @@ -2920,7 +2981,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2930,17 +2991,17 @@ msgstr "" "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2948,11 +3009,11 @@ msgstr "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Handles `contact us` form submissions." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2960,15 +3021,15 @@ msgstr "" "Handles requests for processing and validating URLs from incoming POST " "requests." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Handles global search queries." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -2976,31 +3037,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid is required" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "order product does not exist" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "The order product does not have a product" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon not found" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3008,7 +3069,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:398 +#: engine/core/views.py:402 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. " @@ -3018,10 +3079,14 @@ 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Returns current version of the eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Returns custom variables for Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/es_ES/LC_MESSAGES/django.mo b/engine/core/locale/es_ES/LC_MESSAGES/django.mo index 012cd06aefbf003822844497520d16045b4dd264..bf0f3afb8ebbc8df8ffd9ef583f06f801efe2239 100644 GIT binary patch delta 14994 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 delta 13939 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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 94e9ab84..1ee5cf01 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Sólo se permiten URL que empiecen por http(s)://." @@ -2783,6 +2783,67 @@ msgstr "Contacte con nosotros" msgid "About Us" msgstr "Quiénes somos" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Administrador del sitio Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Cuadro de mandos" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Ingresos (brutos, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Ingresos (netos, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Devoluciones (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Pedidos procesados (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Ventas frente a devoluciones (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Bruto" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Devuelve" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Aún no hay datos suficientes para el gráfico." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Enlaces rápidos" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "No hay enlaces disponibles." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Producto más deseado" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Aún no hay datos." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3001,7 +3062,7 @@ msgstr "" "Las dimensiones de la imagen no deben superar w{max_width} x h{max_height} " "píxeles." -#: engine/core/views.py:73 +#: engine/core/views.py:77 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." @@ -3010,7 +3071,7 @@ msgstr "" " XML. Se asegura de que la respuesta incluya el encabezado de tipo de " "contenido apropiado para XML." -#: engine/core/views.py:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3020,18 +3081,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3039,11 +3100,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Gestiona los formularios de contacto." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3051,15 +3112,15 @@ msgstr "" "Gestiona las solicitudes de procesamiento y validación de URL de las " "solicitudes POST entrantes." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Gestiona las consultas de búsqueda global." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3067,31 +3128,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid es obligatorio" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "pedir producto no existe" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Sólo puede descargar el activo digital una vez" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "El producto del pedido no tiene un producto" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon no encontrado" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3099,7 +3160,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:398 +#: engine/core/views.py:402 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. " @@ -3110,10 +3171,14 @@ 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Devuelve la versión actual del eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Devuelve variables personalizadas para Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/fa_IR/LC_MESSAGES/django.po b/engine/core/locale/fa_IR/LC_MESSAGES/django.po index 07f0c955..8342cd77 100644 --- a/engine/core/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/core/locale/fa_IR/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1049,7 +1049,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2526,6 +2526,67 @@ msgstr "" msgid "About Us" msgstr "" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "" + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "" + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "" + +#: engine/core/templates/admin/index.html:135 +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 @@ -2727,53 +2788,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:73 +#: engine/core/views.py:77 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:88 +#: engine/core/views.py:92 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:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:314 +#: engine/core/views.py:318 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 " @@ -2781,31 +2842,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "" -#: engine/core/views.py:386 +#: engine/core/views.py:390 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2813,17 +2874,21 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:398 +#: engine/core/views.py:402 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "" +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "" + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/fr_FR/LC_MESSAGES/django.mo b/engine/core/locale/fr_FR/LC_MESSAGES/django.mo index cc07a3fe7f81893da9dc6e613cc32202b2c567fb..f562baa2bb284b5c0e2e4361c42e85a8c6e709d0 100644 GIT binary patch delta 15027 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 ONXd=&W|j7=^Zg&=^Gq86 delta 13977 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 KSjw|v!2baucos1L diff --git a/engine/core/locale/fr_FR/LC_MESSAGES/django.po b/engine/core/locale/fr_FR/LC_MESSAGES/django.po index 9aea5106..0dc5c414 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Seuls les URL commençant par http(s):// sont autorisés." @@ -2835,6 +2835,67 @@ msgstr "Nous contacter" msgid "About Us" msgstr "À propos de nous" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Administrateur de site Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Revenue (gross, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Revenue (net, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Retours (30j)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Commandes traitées (30j)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Ventes et retours (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Brut" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Retours" + +#: engine/core/templates/admin/index.html:94 +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:103 +msgid "Quick Links" +msgstr "Liens rapides" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Aucun lien n'est disponible." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Produit le plus souhaité" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Pas encore de données." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3056,7 +3117,7 @@ msgstr "" "Les dimensions de l'image ne doivent pas dépasser w{max_width} x " "h{max_height} pixels." -#: engine/core/views.py:73 +#: engine/core/views.py:77 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." @@ -3064,7 +3125,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3074,18 +3135,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3093,11 +3154,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Gère les soumissions du formulaire `contact us`." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3105,15 +3166,15 @@ msgstr "" "Gère les demandes de traitement et de validation des URL à partir des " "requêtes POST entrantes." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Traite les demandes de recherche globales." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3121,31 +3182,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid est obligatoire" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "le produit de la commande n'existe pas" -#: engine/core/views.py:335 +#: engine/core/views.py:339 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:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Le produit de la commande n'a pas de produit" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon introuvable" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3153,7 +3214,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:398 +#: engine/core/views.py:402 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. " @@ -3164,10 +3225,14 @@ 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Renvoie la version actuelle d'eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Renvoie les variables personnalisées pour le tableau de bord." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/he_IL/LC_MESSAGES/django.mo b/engine/core/locale/he_IL/LC_MESSAGES/django.mo index 9ec719127484d85dae8a8c8ceae6e070c3ee9926..fa608b54ea9cd913e2b63cf0e87e806cf058866a 100644 GIT binary patch delta 15150 zcmZ|V2Yk)f!^iP+Ywr-T$F+k<5J94d*tPdAk%SmYG{b0dt*TvOgi?Etwi-(5(1DiH z(s5g=+R{O*L$&?u@_fGc9RDXzU$5u)dL8exe&=`Q@7^RnxL07_!h*if%H&^dxUwHG zrV8#aYfMT$V;-!pTw{J}ZVXxGXB_Dkw(wIV+hDC7-R=_z}5!Yh@Jd9=V zIMS>+kNNQ;&NRkn{6y5iz-VKFFdjoN9arH3EQnQOY`xl8gmeVP(xGT9P5RMR#?-(i zSP!4UO85~TW^g|vO_^P7Z2Mne6wf!m2O`EaYO4%m5>O*vhZ?~%SQigrJYL3X*gDpj z8FXMc_P|T+jA3$2XnSLN<0$+M58^@G-NBe*)EnB-7@9C+Ix#>Wk)1>|C9OK!k;GyJ z(tWWUPC$)#4r->BV0p|zb?{kK{liEf%z1p32L*LuR!P6t)tEt~>pf&ld-Qd)?Y+^R zxEel3L?iZNFn*6U(Dbk!tBJ)))`fm+qIY}2C$ui>hQO2C*{vo58|0-nENigOYj7wx=QP6x0 zk{*M%Nv|2px{+R(Y)n@gygrT*lMbI~JNRabF_XwoO*7^Q`Bxt?=5fr)u&1PImN6x0 zrw+0TCKBu6OdpX@B0Eu==UvoN6q;<0O%>Gcj=+4_4$EOj)YJ|~-JgKrxCFJAj=S;` zE`1sqn|TLyYMM;3?fBBC+8Y+4_QEpMCR>YdP;ndPV`O6=<%EzwVY)H(aUIshH?Rrb z#Ku@~^RX&!alVRb;0i`zA(l=v z)f#mg`l6Owb1De@(DLP_9 zl7msFU>=slwXS>@K1TW&*1_g;?C~6qTKmx$f|F2h#Q9j7=bLpzH1+#1&~sFePht>$ ziW=c9S6*PQ%@1+bMJ-ti)Xc@9IyeHo_y{(@Y;1}zqn7L^^r@icJp14ts3{wPH8BbG zf?43om!US}M$`kJbLr!#&3Fzq(hpGge~Fs%0*~80Q3f^8%BW*r=W*s=9cbbz3`aGb zgqn#-E`Jtktrw!Ed?RWK51<}+0`;KtE`1rjq;H_!D@EtqO&*LIUM9LH#g4CZldhK|MGNH3RdUYf$xfV;y`MwPe>&OL)hX7kk1ki5J!JW~k?O_7PD} zMz{(oSdsK>=XzIu7TlbKStqo)B`Flwj&5fO>t{1j6G3%U=S9=B&>mtpvqUG+S!0j@FJ=M z`Io3;tba)&v1Bws^*9|hvN>1~SGn|hRD%ax`UO-&Z()7Bh%N9h+=0!O+WMDJGj|P} z;ax0%;mcSeo&RP;_;O-WP(9p(TI0(Yiq}vhD*mK><%XjkGywHpSc;n39jK){ie5a2 zdLR6N8c>ntflqW(87Gq-hrSddpA%7!dakfj+#frUPC$)tFKQ+ZVQD;$n$mNq4(7|Y z9S*}F(#=ryI-)u{2pi&)7=g!8OZr_l^WT-oJu=#0*Om5x3$O&~Y%GJDu{q{qBfN=` zSYeg@RP2uGNN?1A)37o=;nLf%8tH@B4BtbwTVOTwUyn$I)z()o~u`4Y(cE-f2{OH&7iZlw;eg>m#D6>5O{eWT2*QDr)T( zp*GzPmwpC2lYZOfmtJejD`83UYoXd{isi5cYNS0e7~`=5W}#-vx6Bo6K&|m}7>-9! zBlsGJV3Bop2@+7d{V7zvH&J`%7gPuCq8?cIDSMhKqaM@{t6(&GaUh22{7)gG8@FR| z%tci^ftso-SPB0^b+G(;yUD5{4VVbjNQYx7%)pj77t7*HsCF-4G5ieG{!Of`^IvF# z-OaU7$8Lx-9yMj-um#RQZN9^(O?1uWS9scfPw0)BvDMfIkD?w}bffJ^In+!wL@j9( z)R!0&LqrdXLrv8{)Qlv${0!6xoH&vb`3YBk4)uV~up)lr@;#gE`=ShL z&ow}w8XicbC?;SCrlK02hnm{uSOIsTHs=Xc{fnsg!xhwh-=I4Fw<|Bc*`AW}=q0}k z>X?p0Em8Jn=3fn-C8IiC!9@HU8{p_IcCD78Mzj}IKNrLCBsRx8*d7~hwGF4CPRVZ6 zp7{yY!QW9GF0su%ulzQjU9%Qs)TCf2*1;Jry$v;mr%-GDIaa}t?REy5;xN*!u^+C( z4tNW@V$&UVlTJr3={=}Tc?PxASA9hEfLo|FDYVmm21GiOP%o$))Qr69yy@~ocG+*u zt+77kQ&F$jt*Fg<5yQ~zw(U26xez9YQsD z9Xn&W1NNughf(RxsE&S%u~_#R>sVC&ZtRF(V|xsHR^K~V|4BsJk&%m9yI-*l#yn>m zn1)*WV^|A+#5x#!(5_)LYVUN$ARLdw@i8okAES=uHj`3IbbuqgS*Q4OBL(s&8=;P0_8{_XM$=Gr%61=KMP#c*tkjW88`XNYVdG8e}l zvYX>O)RF`rwwtOK#*&_fy73r>;kQ^9Lte0(=|R+eNvIjyf|{w1umS#sRk7X?`<#wP znE$q9q>vGX2T%=P!`c{hlwU+)6l&z@s41L*#c(d_^gM}Lnmt$<&tY-AfqLL?sF^MM zqCNi|uqEl9FEamX_z5y9U^aHeeOMoVMU9~PF*|~es1Z-XQkaAJaTjW4_G1~mgzCsG z)If?HcVFF5dusq{Agg>t)Pbi^dte8uBl}S!Jc%KA0afoCtcJI-29|!wjw})jkxsxF zI03cRH&FE|ylgjj3~G<~P@B`YfQWW)4hG{fEQ04zBl;LyVZm4IDTzaE&UvV%I*kqR z4r<1#ziQXME4C&*6E$Nmq4wA{Y>Hz~1eVNao+6?KUqKakUgLKF*bJNFEYt&zU{(AQ zH8S(M?LY+T!Naj3&c{TLG0$TS(&gVY=0(!cs2Tj_q&+qNU~!%Qpi}mpUKMpi3~Gvo zV@*uLe7L~51UWEfIqKMTIBh>n2B12ag`7aM67|4NZ`t$S2ep(V@gg0{!g4&{bU9-; z#Yh}YdLuSL&sly5;mMIWpY#jo?J;ZpE=P;>80?CL-?R2b&Ajl3Jy#dy?x3obMNHHbV(Mo&D5l^-DTDWiibpRo~n@LYTi z`+jb}!Ib^d8is1H1J=X|s6Dg{bu3@Q>Uauk;n(;e7QJTee2w|PO2#}gG*yY$Z8{q@ zh3Q|}H`QZUmh?8%$d00Zk?2R&Tk?%P@2jx^`3JG~1B~NaVW@7n89PE<~;Uc5IBt zuqb|q(LCS$Mx+%PjVs!MiOwm`IhaWKQhb|^-A3*5mnwS#Yy2&iBYn%6pWo-sV<44r zCvL9h34Gpnu3_D1>I*5(*PdI0K}E=Se7&nt}CL5szVI`~Y>|PpA&%=ZNV3N)0@|z(~T#Py^AZihWS$ zItjH_OHfO26eI8khGNBrw!t_oNqR79FO5YFU>nxK{ip|D#8UVz*24cZ^x3Jb!e1BE zqxz^3v~ua8&WWgx<(a6Fj&{)Ku~77DkPMBNyIDsPAyQFGKtJE1x>(UoVRW^@+nzEv*07j-;+uMmkM z@(HS;QvBJY23ALnxE-qDp{Vj%s2i7K3EYR8xffA0cNTTuO_!gqu`Lflb*vsfgpDy; z=l?MxTI<88k$;MPutXD2;CsMG)Pwh-MsVDvFF3zIJ@{u-$AX%A0w2Q-QTKI4l@CF^ z!l$A-yc9!p{x=b+NycHUf*%J8SX0zFFBWMZ9D^D`Z`9Ne!9kda`X=-eYAJ7EXY}x* z*VK1KJ#Yl7JPp;(6Ifa2e>o9V+>dSW1nL3zup1VQ@|Z3-5OwZ1p=NA9j==X(Up$&L zw-4%tdO$o@$MG(`2=$zmsCIUtPw(l_cX!l=1oy*@*BdXlWp8sf^ zLOKbPRS!pErw8p!?L;r>gQz9B=+X^Z+ktdLwLchRF&#D2xve?>n(EtRs3U*7iWS>< z0$)fXQ9Yl7nt>Cjdck}h8h{Zv3Li&J`PZmT`Xh#7fmpj2!ZCvMWL$iKpnr?F1-!)#pEFN!mFs=91-UU{IJ>++mc?1E%1G3vG#Te+N1J)E`0>Mll}!` zl^@%|eoDsPj7?b#B+78s3N6z3*Xpyn=f7|BCG}e-}HTPB@eF zY}Cw|uJ*ms8+EF-Vo{y{ABcF#xQiM=rH5?8jZq!zg8GykiW>1e)O+DHssq0{OLp@F zeo(24+9Q2X9Zo@YI2&u?ChUo?qnGEK(%tRuY>N7#&>gk=*PuFd2sIODQ0M*<>XdkT z*sor7P*XYq^`Ob9sh^AeF$Y`X_ZWk9dfMlVLSGj$_7VxhUr@)&+sigM3pIkpsNMP; z>H#mh^eI#a-$gy}E7UQ&i`t~Yy=}*vqRQi(15q6cOGyw(sqmBX+j=^3bzyn!0IAGN9OV0(-hY6p^m8fh-7{H9CS8D`VN zu@BETIYdug?J)^>0Y_t0g2!aw zS{#MN6FnvcQ}AKDjENYNe-tq$`i} znAx}qS743t9y1MdQRR&$*iXrWs0Y-aXgBRH)b9TRbxMk**i9daf$#raiRk!cpdPRo zwZBxeYa<$Hq(cwo`z)F@=mB5W?&@lLA_e9V0&zuWgjpZH51RE_Q3b3nH)OV z6ZrL9DwZZa85`gNACV?Ra#3Hize0VQ6`NwedR0Q5iYU~pb~@@SS2k+K?xNlYg{Imy zuZwL+Z$~ZBHPiqrPP3<_H|p3fMlFeNHxYfa$;GNz@KM`9ZEQt40W~9=P{;8q7R0c} zYzHDy>2|1wySV%$tVKElgD?j*^}C%{keTwCGSh8OdgCA}3`4D1E=J%zjK_!>c9X6^ zFX=s~^M3|IvA|5bIm1yM?t)sH1vnhvLA76>C0F~iv4hV4IU<_kGPA5hP@8BoYU+N# z-B@R~UEA~6h;;EewxJl*UYU;*@d#?_YtOZx1w*k0>7}T8&!PtQx#amKXrAq9EP6<< z<)4eFeKF(#8Y2A=>f&gd3WUAH^_reY{&~`yh%*u9dBSqyPY|LhB195iB3vhb zDWR`xPtP|^NIXV(khs=TS2fZjTqUKa6TgE`5*{a%B5>NwlLTGiIGAwICe6>p|0a~? zzH3;3@C5P3uFaA-PwW3HH*k#2dcq1aM-lYe^x;!D0PkOXV+ve-aWUa(SMVHuN4f%a zkK-KDv)z47@iuvHkarVx9QUKHIu9`Z*+kBf5rz$2fePb@mnZZll%kQcgx-W(r03ur zJV`iB-C(?j+AnMm^D^$iQMi`y8S&2vVchp5K^t=**3|qLBk)2BY{Dftm;${%R}l9Q zLJ1F&m!Hs#xGw#dykG*~rp?!+kKqX{M&1Nmin_`W^s&8N33qj;ZYhG^H@<89vzWkp z!p!0(cVA$~HzrS40$~CLeC`CU2e2Qp2wX$RAbyPS1o1)C%TJuwMBu+%5)E7*kp79- zr!GAM$7}sRrJx@n?^TGztArTxZ@Ge1#48h?%Tu>AWzQ3m3HltkKpF3qz@@L)=LkDV zN6@MD#9ty*ygx$XL0W%ZmB?&Q#TIziW(EE|>l$m0ylG7q<(=|0P=#7G^Q85uR*S&L zhgpCvF`IDz`h>{qq-!HTmzZolKblA%TtkSWvB&c?*qgk?q^lEV5O$E(b;C6pPu_e& z8`3w)=c_~DB@<2jTUF%RM4tZFtgaq}C4m@wjy#{A#0o+Y5`6Xqu3wOsm>EM}0=6Uf z57c$UxeTk@EOP@Z5xSD64@pY$0*8lffk%q4Urlp#zd@L^*PQnm^oA^b`_@b@2m zi0IlvhOQS0TZvzB=|iNw#LE#T(~z#E#6Q4xI1-b|e;otwed6T^qbbwXi})W{iM0NY z@RUHV{R2h;jsIf`^vU!z_96@;Y#`|R6BnX~8~YP~gHWINRadS$-?})TV}ZYtjLcJ3 zg!m;wRqBo8K3%VpzDwY1r|}IX<9k8_!We?S3+S2^_}Bj7X(jRBsQf*l7NI{4?M7WM z<7m?Qqr#(vs-(N)Vah%x{6Km?mcg&^Q9>vojyina`2t@UOHz3MT1LTJBtlS^*LmC~ z&3~ME+2-!=K;6QGxp@m+JeN9SiFc#?U5q7NLHkc%pY*2{T`88pzfJRWDwOgJ!e4pH zA0T~!^kl-2Jatv2tV>sPj;C&0@_!-Jba~bAwASoRGE=E=7GqJ@-@pICx2=7s*zYYFFye;vE2=fU8NG~G)LE^f; zBZLQHy!Tx@ain92AH}b!H{I2J1xsuEueck!Iv2VMBXA#iQ(QwTP9!fAuMl#GSD~zx ztN%8>NvP}66Y(?ZrBSCOzDs($E31z!$lJlspMgKOt|sw~D{Sr__#1gzp2rAv$!kw& zExCmJ&16C_(d$J^S_d?mk>gxmvH~;!cD_m zqAdPS*yGZE>JKJf#HI66gZmnhQHMJBudj%=Afyo5Qm$(>!52nGT_P=&^RMe6(ygeR z?_c??$!oxUTgktir)(&BhB955#ETL?MSPmeQ~pPU{)*Vk?*B*=$kw_?-Sob=)sMt815Q) z1b32NL|9EjNu(19#fh&Y?>0eKJYhNcKL=8|8>8a#6^_qH9-S7So|yYt%l4k2@$so+ z)4UnuGLyXVi7De!bF0VH%3q*!dRj(CZo4+MON91F%gFRjN}H55F+SZpDLpMQDS9()3Nr%t}vnl~z{Em|iU*DFWlwGMglwd6m4AcRzudpq zzuVg(unak+8hhI1{&u=S!9v;o-88Tzx7zuv(p^^3#A^Re>T%C@q6!)#saQXsmS+g)eF4IK((?t(pJ^AP{jUjG`} zUS|jNzjZeHx6qY!{#{;5{@aGvzg}&7>ESv$O%q=AkJe}@JooLZQ4iFkuWE5KrF%7B zTZydTE+tuTFI89jpRS+#_ZN3OmHyS0joi#+sye$t5j1g+w>LUHw8kjq}?bcHh%ZlbS4)&B=x#Mb3&ga3NhHId4BQa$? HPfhqAoy{pi delta 13965 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "רק כתובות URL המתחילות ב-http(s):// מותרות" @@ -2645,6 +2645,67 @@ msgstr "צור קשר" msgid "About Us" msgstr "אודות" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "מנהל אתר Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "לוח מחוונים" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "הכנסה (ברוטו, 30 יום)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "הכנסות (נטו, 30 יום)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "החזרות (30 יום)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "הזמנות מעובדות (30 יום)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "מכירות לעומת החזרות (30 יום)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "גרוס" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "החזרות" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "אין מספיק נתונים כדי ליצור תרשים." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "קישורים מהירים" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "אין קישורים זמינים." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "המוצר המבוקש ביותר" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "אין עדיין נתונים." + +#: engine/core/templates/admin/index.html:135 +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 @@ -2847,7 +2908,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:73 +#: engine/core/views.py:77 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." @@ -2855,7 +2916,7 @@ msgstr "" "מטפל בבקשה לאינדקס מפת האתר ומחזיר תגובה בפורמט XML. הוא מבטיח שהתגובה תכלול" " את כותרת סוג התוכן המתאימה ל-XML." -#: engine/core/views.py:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2864,41 +2925,41 @@ msgstr "" "מטפל בתגובה לתצוגה מפורטת של מפת אתר. פונקציה זו מעבדת את הבקשה, משיגה את " "התגובה המתאימה לפרטי מפת האתר, וקובעת את כותרת Content-Type עבור XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "מחזיר רשימה של שפות נתמכות והמידע המתאים להן." -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "מחזיר את הפרמטרים של האתר כאובייקט JSON." -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" "מטפל בפעולות מטמון כגון קריאה והגדרת נתוני מטמון עם מפתח וזמן המתנה מוגדרים." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "מטפל בהגשת טפסי \"צור קשר\"." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "מטפל בבקשות לעיבוד ואימות כתובות URL מבקשות POST נכנסות." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "מטפל בשאילתות חיפוש גלובליות." -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "מטפל בהיגיון הרכישה כעסק ללא רישום." -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -2907,31 +2968,31 @@ msgstr "" "הדיגיטלי הנמצא בספריית האחסון של הפרויקט. אם הקובץ לא נמצא, מתקבלת שגיאת " "HTTP 404 המציינת שהמשאב אינו זמין." -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid נדרש" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "המוצר שהוזמן אינו קיים" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "ניתן להוריד את הנכס הדיגיטלי פעם אחת בלבד" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "יש לשלם את ההזמנה לפני הורדת הנכס הדיגיטלי" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "למוצר ההזמנה אין מוצר" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "לא נמצא סמל מועדף" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -2940,7 +3001,7 @@ msgstr "" "המועדף הנמצא בספרייה הסטטית של הפרויקט. אם קובץ הסמל המועדף לא נמצא, מתקבלת " "שגיאת HTTP 404 המציינת שהמשאב אינו זמין." -#: engine/core/views.py:398 +#: engine/core/views.py:402 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. " @@ -2950,10 +3011,14 @@ msgstr "" " אותן לדף האינדקס של ממשק המנהל של Django. היא משתמשת בפונקציית `redirect` " "של Django לטיפול בהפניה HTTP." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "מחזיר את הגרסה הנוכחית של eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "מחזיר משתנים מותאמים אישית עבור לוח המחוונים." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/hi_IN/LC_MESSAGES/django.po b/engine/core/locale/hi_IN/LC_MESSAGES/django.po index 1463c6e9..23915302 100644 --- a/engine/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/core/locale/hi_IN/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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -1049,7 +1049,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2526,6 +2526,67 @@ msgstr "" msgid "About Us" msgstr "" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "" + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "" + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "" + +#: engine/core/templates/admin/index.html:135 +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 @@ -2727,53 +2788,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:73 +#: engine/core/views.py:77 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:88 +#: engine/core/views.py:92 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:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:314 +#: engine/core/views.py:318 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 " @@ -2781,31 +2842,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "" -#: engine/core/views.py:386 +#: engine/core/views.py:390 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2813,17 +2874,21 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:398 +#: engine/core/views.py:402 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "" +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "" + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/hr_HR/LC_MESSAGES/django.po b/engine/core/locale/hr_HR/LC_MESSAGES/django.po index 07f0c955..8342cd77 100644 --- a/engine/core/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/core/locale/hr_HR/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1049,7 +1049,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2526,6 +2526,67 @@ msgstr "" msgid "About Us" msgstr "" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "" + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "" + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "" + +#: engine/core/templates/admin/index.html:135 +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 @@ -2727,53 +2788,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:73 +#: engine/core/views.py:77 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:88 +#: engine/core/views.py:92 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:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:314 +#: engine/core/views.py:318 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 " @@ -2781,31 +2842,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "" -#: engine/core/views.py:386 +#: engine/core/views.py:390 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2813,17 +2874,21 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:398 +#: engine/core/views.py:402 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "" +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "" + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/id_ID/LC_MESSAGES/django.mo b/engine/core/locale/id_ID/LC_MESSAGES/django.mo index 2dea875ca4279ab728f0d8b3f99d5eee90fb62d5..635fbbd7c54efd18fcce93d8cff21c8e4c5bc1d1 100644 GIT binary patch delta 14927 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 HZ{Ys`%|7=- delta 13945 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 mJ^BA!T;|DNe\n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Hanya URL yang dimulai dengan http(s):// yang diperbolehkan" @@ -2799,6 +2799,67 @@ msgstr "Hubungi Kami" msgid "About Us" msgstr "Tentang Kami" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Admin situs Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Dasbor" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Pendapatan (kotor, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Pendapatan (bersih, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Pengembalian (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Pesanan yang diproses (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Penjualan vs Pengembalian (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Kotor" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Pengembalian" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Belum cukup data untuk grafik." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Tautan Cepat" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Tidak ada tautan yang tersedia." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Produk yang paling diharapkan" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Belum ada data." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3016,7 +3077,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:73 +#: engine/core/views.py:77 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." @@ -3024,7 +3085,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3034,16 +3095,16 @@ msgstr "" "permintaan, mengambil respons detail peta situs yang sesuai, dan menetapkan " "header Jenis Konten untuk XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Mengembalikan daftar bahasa yang didukung dan informasi terkait." -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "Mengembalikan parameter situs web sebagai objek JSON." -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3051,11 +3112,11 @@ msgstr "" "Menangani operasi cache seperti membaca dan mengatur data cache dengan kunci" " dan batas waktu tertentu." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Menangani pengiriman formulir `hubungi kami`." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3063,15 +3124,15 @@ msgstr "" "Menangani permintaan untuk memproses dan memvalidasi URL dari permintaan " "POST yang masuk." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Menangani kueri penelusuran global." -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "Menangani logika pembelian sebagai bisnis tanpa registrasi." -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -3079,31 +3140,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid diperlukan" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "produk pesanan tidak ada" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Anda hanya dapat mengunduh aset digital sekali saja" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "pesanan harus dibayar sebelum mengunduh aset digital" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Produk pesanan tidak memiliki produk" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon tidak ditemukan" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3111,7 +3172,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:398 +#: engine/core/views.py:402 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. " @@ -3122,10 +3183,14 @@ msgstr "" "admin Django. Fungsi ini menggunakan fungsi `redirect` Django untuk " "menangani pengalihan HTTP." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Mengembalikan versi eVibes saat ini." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Mengembalikan variabel khusus untuk Dasbor." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/it_IT/LC_MESSAGES/django.mo b/engine/core/locale/it_IT/LC_MESSAGES/django.mo index 6158cab78fd8150dc807f0ef681e18e8c47f7b29..37b70222305c8a1c8408abeeecdd99ec853565f8 100644 GIT binary patch delta 14968 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 C$o}O3 diff --git a/engine/core/locale/it_IT/LC_MESSAGES/django.po b/engine/core/locale/it_IT/LC_MESSAGES/django.po index 3c104829..5450a3b1 100644 --- a/engine/core/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/core/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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Sono consentiti solo gli URL che iniziano con http(s)://" @@ -2800,6 +2800,67 @@ msgstr "Contatto" msgid "About Us" msgstr "Chi siamo" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Amministratore del sito Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Cruscotto" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Ricavi (lordi, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Ricavi (netti, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Restituzioni (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Ordini evasi (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Vendite e resi (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Restituzioni" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Non ci sono ancora dati sufficienti per un grafico." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Collegamenti rapidi" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Nessun link disponibile." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Il prodotto più desiderato" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Non ci sono ancora dati." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3019,7 +3080,7 @@ msgstr "" "Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height}" " pixel" -#: engine/core/views.py:73 +#: engine/core/views.py:77 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." @@ -3028,7 +3089,7 @@ msgstr "" "XML. Assicura che la risposta includa l'intestazione del tipo di contenuto " "appropriato per XML." -#: engine/core/views.py:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3038,17 +3099,17 @@ msgstr "" "funzione elabora la richiesta, recupera la risposta dettagliata della " "sitemap e imposta l'intestazione Content-Type per XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3056,11 +3117,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Gestisce l'invio del modulo `contatti`." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3068,15 +3129,15 @@ msgstr "" "Gestisce le richieste di elaborazione e validazione degli URL dalle " "richieste POST in arrivo." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Gestisce le query di ricerca globali." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3084,31 +3145,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid è obbligatorio" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "ordine prodotto non esistente" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "È possibile scaricare l'asset digitale una sola volta" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Il prodotto dell'ordine non ha un prodotto" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon non trovata" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3116,7 +3177,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:398 +#: engine/core/views.py:402 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. " @@ -3127,10 +3188,14 @@ msgstr "" "indice dell'interfaccia di amministrazione di Django. Utilizza la funzione " "`redirect` di Django per gestire il reindirizzamento HTTP." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Restituisce la versione corrente di eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Restituisce le variabili personalizzate per Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/ja_JP/LC_MESSAGES/django.mo b/engine/core/locale/ja_JP/LC_MESSAGES/django.mo index 97ab1d0cc42ba674e71b1597242cc51cff39134e..5b9177c38b32220ed172f4f128b35d4412fc9c3c 100644 GIT binary patch delta 15031 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 Ux4t{RlKHoHb8v7m&*m}z0|cPlTmS$7 delta 13950 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://で始まるURLのみが許可されます。" @@ -2578,6 +2578,67 @@ msgstr "お問い合わせ" msgid "About Us" msgstr "会社概要" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Djangoサイト管理者" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "ダッシュボード" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "収入(グロス、30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "収入(純額、30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "リターンズ(30日)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "処理済み注文 (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "売上対返品 (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "グロス" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "リターン" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "まだチャートには十分なデータがない。" + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "クイックリンク" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "リンクはありません。" + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "最も欲しい製品" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "まだデータはない。" + +#: engine/core/templates/admin/index.html:135 +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 @@ -2783,14 +2844,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:73 +#: engine/core/views.py:77 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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2799,40 +2860,40 @@ msgstr "" "サイトマップの詳細表示レスポンスを処理します。この関数はリクエストを処理し、適切なサイトマップ詳細レスポンスを取得し、XML の Content-" "Type ヘッダを設定します。" -#: engine/core/views.py:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "サポートされている言語の一覧と対応する情報を返します。" -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "ウェブサイトのパラメータをJSONオブジェクトとして返します。" -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "指定されたキーとタイムアウトで、キャッシュ・データの読み取りや設定などのキャッシュ操作を行う。" -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "お問い合わせフォームの送信を処理する。" -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "入ってくる POST リクエストからの URL の処理と検証のリクエストを処理します。" -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "グローバル検索クエリを処理する。" -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "登録なしでビジネスとして購入するロジックを扱う。" -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -2840,31 +2901,31 @@ msgstr "" "注文に関連付けられたデジタルアセットのダウンロードを処理します。\n" "この関数は、プロジェクトのストレージディレクトリにあるデジタルアセットファイルの提供を試みます。ファイルが見つからない場合、リソースが利用できないことを示すHTTP 404エラーが発生します。" -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuidは必須です。" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "注文商品が存在しない" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "デジタルアセットのダウンロードは1回限りです。" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "デジタル資産をダウンロードする前に、注文を支払う必要があります。" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "注文商品に商品がない" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "ファビコンが見つかりません" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -2872,7 +2933,7 @@ msgstr "" "ウェブサイトのファビコンへのリクエストを処理します。\n" "この関数は、プロジェクトの静的ディレクトリにあるファビコンファイルの提供を試みます。ファビコンファイルが見つからない場合、リソースが利用できないことを示す HTTP 404 エラーが発生します。" -#: engine/core/views.py:398 +#: engine/core/views.py:402 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. " @@ -2881,10 +2942,14 @@ msgstr "" "リクエストを admin インデックスページにリダイレクトします。この関数は、HTTP リクエストを処理し、 Django の admin " "インタフェースインデッ クスページにリダイレクトします。HTTP リダイレクトの処理には Django の `redirect` 関数を使います。" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "eVibes の現在のバージョンを返します。" +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "ダッシュボードのカスタム変数を返します。" + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/kk_KZ/LC_MESSAGES/django.po b/engine/core/locale/kk_KZ/LC_MESSAGES/django.po index 1463c6e9..23915302 100644 --- a/engine/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/core/locale/kk_KZ/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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -1049,7 +1049,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:67 engine/core/views.py:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2526,6 +2526,67 @@ msgstr "" msgid "About Us" msgstr "" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "" + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "" + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "" + +#: engine/core/templates/admin/index.html:135 +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 @@ -2727,53 +2788,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:73 +#: engine/core/views.py:77 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:88 +#: engine/core/views.py:92 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:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:314 +#: engine/core/views.py:318 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 " @@ -2781,31 +2842,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "" -#: engine/core/views.py:386 +#: engine/core/views.py:390 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2813,17 +2874,21 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:398 +#: engine/core/views.py:402 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "" +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "" + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/ko_KR/LC_MESSAGES/django.mo b/engine/core/locale/ko_KR/LC_MESSAGES/django.mo index aa9daa5062d5105ef07f6d72a0039974fc33d24c..d1e2f581fbda10c72aa7a72caba404aad068adb6 100644 GIT binary patch delta 15004 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 JFXpM3^M7zM1SbFh diff --git a/engine/core/locale/ko_KR/LC_MESSAGES/django.po b/engine/core/locale/ko_KR/LC_MESSAGES/django.po index 3dbaea1b..f8e97349 100644 --- a/engine/core/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/core/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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://로 시작하는 URL만 허용됩니다." @@ -2602,6 +2602,67 @@ msgstr "문의하기" msgid "About Us" msgstr "회사 소개" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "장고 사이트 관리자" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "대시보드" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "수익(총액, 30일)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "수익(순, 30일)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "반품 (30일)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "처리된 주문(30일)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "판매 대 반품(30일)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "반환" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "아직 차트에 넣을 데이터가 충분하지 않습니다." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "빠른 링크" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "사용할 수 있는 링크가 없습니다." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "가장 많이 원하는 제품" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "아직 데이터가 없습니다." + +#: engine/core/templates/admin/index.html:135 +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 @@ -2808,14 +2869,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:73 +#: engine/core/views.py:77 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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2824,40 +2885,40 @@ msgstr "" "사이트맵에 대한 상세 보기 응답을 처리합니다. 이 함수는 요청을 처리하고 적절한 사이트맵 상세 보기 응답을 가져온 다음 XML의 " "Content-Type 헤더를 설정합니다." -#: engine/core/views.py:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "지원되는 언어 목록과 해당 정보를 반환합니다." -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "웹사이트의 매개변수를 JSON 객체로 반환합니다." -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "지정된 키와 시간 초과로 캐시 데이터를 읽고 설정하는 등의 캐시 작업을 처리합니다." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "'문의하기' 양식 제출을 처리합니다." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "들어오는 POST 요청의 URL 처리 및 유효성 검사 요청을 처리합니다." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "글로벌 검색 쿼리를 처리합니다." -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "등록하지 않고 비즈니스로 구매하는 로직을 처리합니다." -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -2865,31 +2926,31 @@ msgstr "" "주문과 관련된 디지털 자산의 다운로드를 처리합니다.\n" "이 함수는 프로젝트의 저장소 디렉토리에 있는 디지털 자산 파일을 제공하려고 시도합니다. 파일을 찾을 수 없으면 HTTP 404 오류가 발생하여 리소스를 사용할 수 없음을 나타냅니다." -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "주문_제품_UUID는 필수입니다." -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "주문 제품이 존재하지 않습니다." -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "디지털 자산은 한 번만 다운로드할 수 있습니다." -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "디지털 자산을 다운로드하기 전에 주문을 결제해야 합니다." -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "주문 제품에 제품이 없습니다." -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "파비콘을 찾을 수 없습니다." -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -2897,7 +2958,7 @@ msgstr "" "웹사이트의 파비콘 요청을 처리합니다.\n" "이 함수는 프로젝트의 정적 디렉토리에 있는 파비콘 파일을 제공하려고 시도합니다. 파비콘 파일을 찾을 수 없는 경우 HTTP 404 오류가 발생하여 리소스를 사용할 수 없음을 나타냅니다." -#: engine/core/views.py:398 +#: engine/core/views.py:402 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. " @@ -2906,10 +2967,14 @@ msgstr "" "요청을 관리자 색인 페이지로 리디렉션합니다. 이 함수는 들어오는 HTTP 요청을 처리하여 Django 관리자 인터페이스 인덱스 페이지로 " "리디렉션합니다. HTTP 리디렉션을 처리하기 위해 Django의 `redirect` 함수를 사용합니다." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "현재 버전의 eVibes를 반환합니다." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "대시보드에 대한 사용자 지정 변수를 반환합니다." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/nl_NL/LC_MESSAGES/django.mo b/engine/core/locale/nl_NL/LC_MESSAGES/django.mo index c0ac67137ab3472d53fc49f6cb8fb0e876659e44..cfd3fbbf68c361c546947421dc902d2c8fdd980f 100644 GIT binary patch delta 14960 zcmZYF2Y6J)-pBD-AwcLggue6;Lg+1sgih!+NE4Q1NdlyhO=toOf;0i8C{-+gbOi&V zpn?S(f`AH0Qv^{F#jYso`~B?p zjhW63498x0w!JY-j*04MOkW&@zv6D(jaxbyQ-pRyI~zk6W=t0b7$oxy8BIx>u688x z7)jh8BXAsQ#1EimY7v&lm8cth4%L1yau4Ph9^^tLyD_W8#}kYhOkB6SF !}j+^ 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 Z9-KLG%-GC~(SuEww%zsz1$k!l{y$K~{89h_ diff --git a/engine/core/locale/nl_NL/LC_MESSAGES/django.po b/engine/core/locale/nl_NL/LC_MESSAGES/django.po index c71d7a14..b9c230ec 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Alleen URL's die beginnen met http(s):// zijn toegestaan" @@ -2811,6 +2811,67 @@ msgstr "Neem contact met ons op" msgid "About Us" msgstr "Over ons" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Django website beheerder" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Dashboard" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Inkomsten (bruto, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Inkomsten (netto, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Retourzendingen (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Verwerkte orders (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Verkoop vs Retourzendingen (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Bruto" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Geeft" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Nog niet genoeg gegevens voor een grafiek." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Snelle links" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Geen links beschikbaar." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Meest gewenste product" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Nog geen gegevens." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3030,7 +3091,7 @@ msgstr "" "Afbeeldingsafmetingen mogen niet groter zijn dan w{max_width} x " "h{max_height} pixels" -#: engine/core/views.py:73 +#: engine/core/views.py:77 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." @@ -3039,7 +3100,7 @@ msgstr "" "terug. Het zorgt ervoor dat het antwoord de juiste inhoudstype header voor " "XML bevat." -#: engine/core/views.py:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3049,16 +3110,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3066,11 +3127,11 @@ msgstr "" "Verwerkt cachebewerkingen zoals het lezen en instellen van cachegegevens met" " een opgegeven sleutel en time-out." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Handelt `contact met ons` formulier inzendingen af." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3078,15 +3139,15 @@ msgstr "" "Handelt verzoeken af voor het verwerken en valideren van URL's van inkomende" " POST-verzoeken." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Handelt globale zoekopdrachten af." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3094,33 +3155,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid is vereist" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "bestelproduct bestaat niet" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "U kunt het digitale goed maar één keer downloaden" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Het bestelde product heeft geen product" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon niet gevonden" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3128,7 +3189,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:398 +#: engine/core/views.py:402 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. " @@ -3139,10 +3200,14 @@ msgstr "" "Django admin-interface. Het gebruikt Django's `redirect` functie voor het " "afhandelen van de HTTP-omleiding." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Geeft als resultaat de huidige versie van eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Geeft aangepaste variabelen voor Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/no_NO/LC_MESSAGES/django.mo b/engine/core/locale/no_NO/LC_MESSAGES/django.mo index 980ea23003e3ab2986a8317e56ab54e7ec8bd62a..5e6d0bed92e7c3a52f0afbb46716bad55c2953ee 100644 GIT binary patch delta 14922 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 YJSj7kWr+3WXb;#i9=H_b88qmB0LT;pCjbBd delta 13949 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 McIQWdo~N?^54K|K>i_@% diff --git a/engine/core/locale/no_NO/LC_MESSAGES/django.po b/engine/core/locale/no_NO/LC_MESSAGES/django.po index 4196d84f..e409ec07 100644 --- a/engine/core/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/core/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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Bare nettadresser som begynner med http(s):// er tillatt" @@ -2773,6 +2773,67 @@ msgstr "Kontakt oss" msgid "About Us" msgstr "Om oss" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Django site admin" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Dashbord" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Inntekter (brutto, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Inntekter (netto, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Returnerer (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Behandlede bestillinger (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Salg vs. retur (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Retur" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Ikke nok data til å lage et diagram ennå." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Hurtigkoblinger" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Ingen lenker tilgjengelig." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Mest ønskede produkt" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Ingen data ennå." + +#: engine/core/templates/admin/index.html:135 +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 @@ -2990,7 +3051,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:73 +#: engine/core/views.py:77 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." @@ -2998,7 +3059,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3008,17 +3069,17 @@ msgstr "" "behandler forespørselen, henter det aktuelle detaljsvaret for områdekartet " "og angir overskriften Content-Type for XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerer nettstedets parametere som et JSON-objekt." -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3026,11 +3087,11 @@ msgstr "" "Håndterer cache-operasjoner som lesing og innstilling av cachedata med en " "spesifisert nøkkel og tidsavbrudd." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Håndterer innsendinger av `kontakt oss`-skjemaer." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3038,15 +3099,15 @@ msgstr "" "Håndterer forespørsler om behandling og validering av URL-er fra innkommende" " POST-forespørsler." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Håndterer globale søk." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3054,31 +3115,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid er påkrevd" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "ordreproduktet eksisterer ikke" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Du kan bare laste ned den digitale ressursen én gang" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Ordreproduktet har ikke et produkt" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon ble ikke funnet" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3086,7 +3147,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:398 +#: engine/core/views.py:402 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. " @@ -3097,10 +3158,14 @@ msgstr "" "administrasjonsgrensesnittet. Den bruker Djangos `redirect`-funksjon for å " "håndtere HTTP-omdirigeringen." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Returnerer gjeldende versjon av eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Returnerer egendefinerte variabler for Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/pl_PL/LC_MESSAGES/django.mo b/engine/core/locale/pl_PL/LC_MESSAGES/django.mo index d06ccd026c00a0f8f8ff34e1d0a08f0aed7a0ee7..ece54ca4fb59541a7aebfdd4f7b8094a5825e1d0 100644 GIT binary patch delta 14964 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 delta 13950 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 diff --git a/engine/core/locale/pl_PL/LC_MESSAGES/django.po b/engine/core/locale/pl_PL/LC_MESSAGES/django.po index 5084d3d3..98d101ab 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Dozwolone są tylko adresy URL zaczynające się od http(s)://" @@ -2784,6 +2784,67 @@ msgstr "Kontakt" msgid "About Us" msgstr "O nas" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Administrator strony Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Pulpit nawigacyjny" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Przychody (brutto, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Przychody (netto, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Zwroty (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Przetworzone zamówienia (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Sprzedaż a zwroty (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Zwroty" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Za mało danych na wykres." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Szybkie łącza" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Brak dostępnych linków." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Najbardziej pożądany produkt" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Brak danych." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3003,7 +3064,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:73 +#: engine/core/views.py:77 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." @@ -3011,7 +3072,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3021,16 +3082,16 @@ msgstr "" "przetwarza żądanie, pobiera odpowiednią szczegółową odpowiedź mapy witryny i" " ustawia nagłówek Content-Type dla XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "Zwraca parametry strony internetowej jako obiekt JSON." -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3038,11 +3099,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Obsługuje zgłoszenia formularzy `kontaktuj się z nami`." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3050,15 +3111,15 @@ msgstr "" "Obsługuje żądania przetwarzania i sprawdzania poprawności adresów URL z " "przychodzących żądań POST." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Obsługuje globalne zapytania wyszukiwania." -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "Obsługuje logikę zakupu jako firma bez rejestracji." -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -3066,31 +3127,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "Order_product_uuid jest wymagany" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "zamówiony produkt nie istnieje" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Zasób cyfrowy można pobrać tylko raz" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Produkt zamówienia nie ma produktu" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "nie znaleziono favicon" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3098,7 +3159,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:398 +#: engine/core/views.py:402 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. " @@ -3109,10 +3170,14 @@ msgstr "" "administratora Django. Używa funkcji `redirect` Django do obsługi " "przekierowania HTTP." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Zwraca aktualną wersję aplikacji eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Zwraca zmienne niestandardowe dla Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/pt_BR/LC_MESSAGES/django.mo b/engine/core/locale/pt_BR/LC_MESSAGES/django.mo index d23de866a44aecf9f0c1444dde5ff74b512867eb..3b614b5cca7067e398fa5b92564d23b1f1ed5389 100644 GIT binary patch delta 14992 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Somente URLs que começam com http(s):// são permitidos" @@ -2763,6 +2763,67 @@ msgstr "Entre em contato conosco" msgid "About Us" msgstr "Sobre nós" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Administrador do site Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Painel de controle" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Receita (bruta, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Receita (líquida, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Devoluções (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Pedidos processados (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Vendas versus devoluções (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Bruto" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Devoluções" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Ainda não há dados suficientes para o gráfico." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Links rápidos" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Não há links disponíveis." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Produto mais desejado" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Ainda não há dados." + +#: engine/core/templates/admin/index.html:135 +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 @@ -2979,7 +3040,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:73 +#: engine/core/views.py:77 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." @@ -2988,7 +3049,7 @@ msgstr "" "Ele garante que a resposta inclua o cabeçalho de tipo de conteúdo apropriado" " para XML." -#: engine/core/views.py:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2998,17 +3059,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3016,11 +3077,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Trata os envios de formulários \"entre em contato conosco\"." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3028,15 +3089,15 @@ msgstr "" "Trata as solicitações de processamento e validação de URLs de solicitações " "POST recebidas." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Trata as consultas de pesquisa global." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3044,31 +3105,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid é obrigatório" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "o produto do pedido não existe" -#: engine/core/views.py:335 +#: engine/core/views.py:339 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:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "O produto do pedido não tem um produto" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon não encontrado" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3076,7 +3137,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:398 +#: engine/core/views.py:402 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. " @@ -3087,10 +3148,14 @@ 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Retorna a versão atual do eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Retorna variáveis personalizadas para o Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/ro_RO/LC_MESSAGES/django.mo b/engine/core/locale/ro_RO/LC_MESSAGES/django.mo index 46e65b89d7c9be5148c46ea761968bc25da0d559..b076f8992dba2499e0db7409d125b8230acdc459 100644 GIT binary patch delta 14958 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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 8c030aaa..136c055d 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Sunt permise numai URL-urile care încep cu http(s)://" @@ -2799,6 +2799,67 @@ msgstr "Contactați-ne" msgid "About Us" msgstr "Despre noi" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Administratorul site-ului Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Tablou de bord" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Venituri (brute, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Venituri (nete, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Returnări (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Comenzi procesate (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Vânzări vs retururi (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Brut" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Returnări" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Nu există încă suficiente date pentru grafic." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Linkuri rapide" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Nu există legături disponibile." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Cel mai dorit produs" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Nu există încă date." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3017,7 +3078,7 @@ msgstr "" "Dimensiunile imaginii nu trebuie să depășească w{max_width} x h{max_height} " "pixeli" -#: engine/core/views.py:73 +#: engine/core/views.py:77 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." @@ -3025,7 +3086,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3035,17 +3096,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3053,11 +3114,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Gestionează trimiterea formularelor `contact us`." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3065,15 +3126,15 @@ msgstr "" "Gestionează cererile de procesare și validare a URL-urilor din cererile POST" " primite." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Gestionează interogările de căutare globală." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3081,31 +3142,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid este necesar" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "comanda produsul nu există" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Puteți descărca activul digital o singură dată" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Produsul de comandă nu are un produs" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon nu a fost găsit" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3113,7 +3174,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:398 +#: engine/core/views.py:402 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. " @@ -3124,10 +3185,14 @@ 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:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Returnează versiunea curentă a eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Returnează variabilele personalizate pentru tabloul de bord." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/ru_RU/LC_MESSAGES/django.mo b/engine/core/locale/ru_RU/LC_MESSAGES/django.mo index 2206585ac9119d9cec5b56de326a5b889d24dd83..ec455d60093e9ad22d682abce8ecfc19a67c394f 100644 GIT binary patch delta 15150 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¥HtSp`x6@fp$_&eO5p z|1Y0tn1k{buDqJlRh$1%H^-It%>W>IQ4&(*QcyJ=WU?;`fGK) zC^OXQh$Ekg{Ac9HxiXbsCUsTD9(Mm%Blun?bF9N}NJCv5h9BB0^C9`XE`Jsmx_o6U z$W40UI#)J>wj*AdTquG#oRo$9 zYRVpybcB%>Q~t;wC9bQ{Bz1-TcG0nM-jUHGWYn-&Z`kOt$l+lFhDWF@&KnUG9Y1)8Z8#`8#v48)EGEu> zO5(gWD?GWvBVuE@ZgkARh?rP!*=kh=mP;($ZlWi1r})V5Vcxd7X5#Ah3rc1)og?Dn zW1?K6gd(vMiiF3<#zl|tjt+~7)E#5Jxs2u2ed6*e+kS=#T`9#VzF1ILU^2*;6JbCh(sGp@zb@hP2OZli^Y`Fb%Dj{r_WZ-#Q+-OA8pOFNQ@HYx4Lap7xxTw?=vL)uxHYX}#_`fsP5z;BG)j2yX0DYJ>Uhqsd{)JiyV`tKfI;iVCzy-LG&|}) zmvO1kj_ZGS4)dTZ*-s?@?``V~Diz5G{a9~e}=dU&Y1K$|pF#rGn delta 13964 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Допускаются только URL-адреса, начинающиеся с http(s)://" @@ -2787,6 +2787,67 @@ msgstr "Свяжитесь с нами" msgid "About Us" msgstr "О нас" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Администратор сайта Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Приборная панель" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Выручка (брутто, 30д)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Выручка (нетто, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Возвращение (30 дней)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Обработанные заказы (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Продажи против возвратов (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Брутто" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Возвращает" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Пока недостаточно данных для построения графика." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Быстрые ссылки" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Ссылки недоступны." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Самый желанный продукт" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Данных пока нет." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3006,7 +3067,7 @@ msgstr "" "Размеры изображения не должны превышать w{max_width} x h{max_height} " "пикселей" -#: engine/core/views.py:73 +#: engine/core/views.py:77 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." @@ -3015,7 +3076,7 @@ msgstr "" "Он обеспечивает включение в ответ заголовка типа содержимого, " "соответствующего типу XML." -#: engine/core/views.py:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3025,17 +3086,17 @@ msgstr "" "обрабатывает запрос, извлекает соответствующий подробный ответ карты сайта и" " устанавливает заголовок Content-Type для XML." -#: engine/core/views.py:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Возвращает список поддерживаемых языков и соответствующую информацию о них." -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "Возвращает параметры сайта в виде объекта JSON." -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3043,26 +3104,26 @@ msgstr "" "Выполняет операции с кэшем, такие как чтение и установка данных кэша с " "заданным ключом и таймаутом." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Обрабатывает отправленные формы `contact us`." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" "Обрабатывает запросы на обработку и проверку URL из входящих POST-запросов." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Обрабатывает глобальные поисковые запросы." -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "Работает с логикой покупки как бизнеса без регистрации." -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -3070,31 +3131,31 @@ msgstr "" "Обрабатывает загрузку цифрового актива, связанного с заказом.\n" "Эта функция пытается обслужить файл цифрового актива, расположенный в каталоге хранения проекта. Если файл не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса." -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "требуется order_product_uuid" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "заказанный товар не существует" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Вы можете загрузить цифровой актив только один раз" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "заказ должен быть оплачен до загрузки цифрового актива" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "У заказанного продукта нет продукта" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon не найден" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3102,7 +3163,7 @@ msgstr "" "Обрабатывает запросы на фавикон веб-сайта.\n" "Эта функция пытается обслужить файл favicon, расположенный в статической директории проекта. Если файл favicon не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса." -#: engine/core/views.py:398 +#: engine/core/views.py:402 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. " @@ -3113,10 +3174,14 @@ msgstr "" "администратора Django. Для обработки HTTP-перенаправления используется " "функция Django `redirect`." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Возвращает текущую версию eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Возвращает пользовательские переменные для Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/sv_SE/LC_MESSAGES/django.mo b/engine/core/locale/sv_SE/LC_MESSAGES/django.mo index 47c9baf37aaf27b5762fa02e5cef852c7f00f884..e7f72087d94e6e9f7a2c61d89a2a442d1f434851 100644 GIT binary patch delta 14947 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 JLp-bd{~sMP4Nw38 delta 13944 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 Cj^Kp= diff --git a/engine/core/locale/sv_SE/LC_MESSAGES/django.po b/engine/core/locale/sv_SE/LC_MESSAGES/django.po index 5aa8ef10..fcc6f0d4 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Endast webbadresser som börjar med http(s):// är tillåtna" @@ -2752,6 +2752,67 @@ msgstr "Kontakta oss" msgid "About Us" msgstr "Om oss" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Django webbplatsadministratör" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Instrumentpanel" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Intäkter (brutto, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Intäkter (netto, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Avkastning (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Bearbetade order (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Försäljning vs returer (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Brutto" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Avkastning" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Inte tillräckligt med data för diagram ännu." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Snabblänkar" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Inga länkar tillgängliga." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Mest önskade produkt" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Inga uppgifter ännu." + +#: engine/core/templates/admin/index.html:135 +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 @@ -2968,7 +3029,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:73 +#: engine/core/views.py:77 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." @@ -2976,7 +3037,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2986,16 +3047,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerar webbplatsens parametrar som ett JSON-objekt." -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3003,11 +3064,11 @@ msgstr "" "Hanterar cacheoperationer som att läsa och ställa in cachedata med en " "angiven nyckel och timeout." -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Hanterar formulärinlämningar för `kontakta oss`." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3015,15 +3076,15 @@ msgstr "" "Hanterar förfrågningar om bearbetning och validering av URL:er från " "inkommande POST-förfrågningar." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Hanterar globala sökfrågor." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3031,31 +3092,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid är obligatoriskt" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "Beställ produkten finns inte" -#: engine/core/views.py:335 +#: engine/core/views.py:339 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:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Beställningens produkt har ingen produkt" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon hittades inte" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3063,7 +3124,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:398 +#: engine/core/views.py:402 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. " @@ -3074,10 +3135,14 @@ msgstr "" "admin-gränssnitt. Den använder Djangos `redirect`-funktion för att hantera " "HTTP-omdirigeringen." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "Returnerar aktuell version av eVibes." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Returnerar anpassade variabler för Dashboard." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/th_TH/LC_MESSAGES/django.mo b/engine/core/locale/th_TH/LC_MESSAGES/django.mo index ebf8345c7051b8f58581277c058d120ddeca0813..a5be9481c51b00b72bbe28a19188f5077c0a9dd8 100644 GIT binary patch delta 15238 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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 533e29b7..1553bfd9 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "อนุญาตเฉพาะ URL ที่ขึ้นต้นด้วย http(s):// เท่านั้น" @@ -2724,6 +2724,67 @@ msgstr "ติดต่อเรา" msgid "About Us" msgstr "เกี่ยวกับเรา" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "ผู้ดูแลระบบเว็บไซต์ Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "แดชบอร์ด" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "รายได้ (รวม, 30 วัน)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "รายได้ (สุทธิ, 30 วัน)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "การคืนสินค้า (30 วัน)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "คำสั่งซื้อที่ดำเนินการแล้ว (30 วัน)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "ยอดขายเทียบกับการคืนสินค้า (30 วัน)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "กรอส" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "การคืนสินค้า" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "ข้อมูลไม่เพียงพอสำหรับการสร้างแผนภูมิ" + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "ลิงก์ด่วน" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "ไม่มีลิงก์ให้ใช้" + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "สินค้าที่ลูกค้าต้องการมากที่สุด" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "ยังไม่มีข้อมูล" + +#: engine/core/templates/admin/index.html:135 +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 @@ -2932,7 +2993,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:73 +#: engine/core/views.py:77 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." @@ -2940,7 +3001,7 @@ msgstr "" "จัดการคำขอสำหรับดัชนีแผนผังเว็บไซต์และส่งคืนการตอบสนองในรูปแบบ XML " "โดยตรวจสอบให้แน่ใจว่าการตอบสนองมีหัวข้อประเภทเนื้อหาที่เหมาะสมสำหรับ XML" -#: engine/core/views.py:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2950,16 +3011,16 @@ msgstr "" " ดึงการตอบสนองรายละเอียดแผนผังเว็บไซต์ที่เหมาะสม และตั้งค่าส่วนหัว Content-" "Type สำหรับ XML" -#: engine/core/views.py:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "ส่งคืนรายการของภาษาที่รองรับและข้อมูลที่เกี่ยวข้อง" -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "ส่งคืนพารามิเตอร์ของเว็บไซต์ในรูปแบบอ็อบเจ็กต์ JSON" -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2967,11 +3028,11 @@ msgstr "" "จัดการการดำเนินการแคช เช่น " "การอ่านและการตั้งค่าข้อมูลแคชด้วยคีย์ที่กำหนดและเวลาหมดอายุ" -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "จัดการการส่งแบบฟอร์ม 'ติดต่อเรา'" -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2979,15 +3040,15 @@ msgstr "" "จัดการคำขอสำหรับการประมวลผลและตรวจสอบความถูกต้องของ URL จากคำขอ POST " "ที่เข้ามา" -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "จัดการคำค้นหาทั่วโลก" -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "จัดการตรรกะของการซื้อในฐานะธุรกิจโดยไม่ต้องจดทะเบียน" -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -2996,31 +3057,31 @@ msgstr "" "ฟังก์ชันนี้พยายามให้บริการไฟล์สินทรัพย์ดิจิทัลที่อยู่ในไดเรกทอรีจัดเก็บของโครงการ" " หากไม่พบไฟล์ จะเกิดข้อผิดพลาด HTTP 404 เพื่อระบุว่าทรัพยากรไม่พร้อมใช้งาน" -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid เป็นข้อมูลที่จำเป็น" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "คำสั่งซื้อสินค้าไม่มีอยู่" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "คุณสามารถดาวน์โหลดสินทรัพย์ดิจิทัลได้เพียงครั้งเดียวเท่านั้น" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "คำสั่งซื้อจะต้องชำระเงินก่อนดาวน์โหลดสินทรัพย์ดิจิทัล" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "สินค้าตามคำสั่งซื้อไม่มีสินค้า" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "ไม่พบไอคอนเว็บไซต์" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3029,7 +3090,7 @@ msgstr "" "favicon ที่อยู่ในไดเรกทอรีแบบคงที่ของโปรเจกต์ หากไม่พบไฟล์ favicon " "จะเกิดข้อผิดพลาด HTTP 404 เพื่อแสดงว่าทรัพยากรไม่พร้อมใช้งาน" -#: engine/core/views.py:398 +#: engine/core/views.py:402 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. " @@ -3039,10 +3100,14 @@ msgstr "" "ที่เข้ามาและเปลี่ยนเส้นทางไปยังหน้าดัชนีของอินเทอร์เฟซผู้ดูแลระบบ Django " "โดยใช้ฟังก์ชัน `redirect` ของ Django สำหรับการเปลี่ยนเส้นทาง HTTP" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "ส่งคืนเวอร์ชันปัจจุบันของ eVibes" +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "ส่งคืนตัวแปรที่กำหนดเองสำหรับแดชบอร์ด" + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/tr_TR/LC_MESSAGES/django.mo b/engine/core/locale/tr_TR/LC_MESSAGES/django.mo index d96958d592501c0772585ffd7629c5e149d6476a..3f2344469797f22b9866ee7b9b355cd0e849ec1e 100644 GIT binary patch delta 14949 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 delta 13955 zcmYk@2Yk)f|HtujNr*^n5i24QnTQ!Pi6nN7Xc2pl+G>@SYjzk_dykeX+FG$nDOFk& zrCP0)(qWWRwW_84zuxzp{2#yX<8eIC=bUrD-}61|-tzlRJ>x(3n7{W@5x<3oYf3I- z%3wk;$Grhbe{jagIE7>dkW*xh5yE({k!v#VDC2?>ARWfJmk}B%p)>-!%E4Bi)z-E~YMzMo-Vq(&qA=Etxw<)<)|=bOu9Lhv!>!$OVio0h^7#8K#v z4KNhbk!PAN_%RP!h3$#EH8rLK@lH&~;O6#znJuiHu{`biqNd31j}LP zXN*~nFJT@m(bAY83`31nJhtHhsi?Iuw-wWY%Wxy*<6EFl;^>~n+{27s z##Euab{`}jfPWG%>1#|U;+g%7X~zAo_U8qO69?K39vx)NaLR`dVf=Sfab*|_2A7U7 zhEX%+M%qO+5H;8HP;+)1wTgd0jm%|?!E0C<3yrcvn}Vv(aB&NyZ>9}u@$N)T`9tq$ z`+?vwc8-c*AQffsFb$(IH$A;MmIX@ropHv*V%hO_u{Ob~#6vL=*Py243~EDp2VgOTD0L!52`Rk}Pu?Y2|t1&-rM6Y_b(>1t^y73KEhwi&_zo~YvgHb~sff~Z9 zs0U`C9@N&w-7%ba2%K5!TH;K!&D z2$*Iqg=(LGn)8OJsp*fJ!WUir9MqJoLv?%)>bWPTG5+ew71!V{mL&F{ZY_tZuY>wv zGgODVU;_3*Ey}s52kv+AIn>E&Ua?<7bxR8oC~~U)Z_K28|+5C(J54qe?~p{ z5vs?5ui6fUqi&RlYL|xUczfq?RL5sv1TI6}XFqBUe2JQB?*%exWPZhJ81tH)iq2S* zcmV1Ft59#S9o6AO7=UL{Yv6m-qPl_Q@c{;4iP!CY!m%oGdsGKrLptU)^T?!9uoKne zhp0EpGsCXxP*hwFb;GJIu8aAIpTSsck4ZQQ-@!eo_T6UMk?W5&h$o;wZpYf%|9i;P zqu?&8hm~g8Iqr@z#Qjlk^d?rs?WhNRhdLJu&$dGwi<-Ln7>=2!^WX*43(UrrxEjac z@2Kw|)8`G_qqC?X{uUeKHPjnco?}O%HtI$xsHw?Bb?{Zpi(64svj^4g7^}jp z(|%i~pr&*fdYh4%N+uakq8=DD*Uo7OYSC1{T9|~Da41&C6_^{pM0MmG2IEsKjrr%< zI2yxJ_*$@12t4VQExs8)xqUh2;WBC zAR9yQGU|bkur}shYIj2_1`)Tz{MZY1|Dnhl@tT=rYEtknY878}{)!s1-!Tb2%k1K- zgEffzqsmuc2A)HWSjpw=46KiO;2T&Bm!U>#3+i0hiFvjE50KG=j-rO@0%}CAyYfe< zH^{%jzIiCBJ{I+W+Nk;rSD%S`KrbwbgIxJ^EJ3^owdOWskoNxtGJ$vvi{qcD8waek zLt6|(iQ`d=GXvGWJ!-r5M15`$s$-K~{hO#=vK+(l3)D9K9W_NEs~CUXur(QNo1WMQ zCu1C5#WGlUwSA+?sP;)%8JnRN<%^h(TTnN?huS3xYwVgCh3eo-s1DD?a=3gAmYzycmOVKStmQ)WLKc zyWoFV0K06l+j|iD6MIpgn~ss%|MSV@ppw5ftsNK*F z3*m4Kz{#$B1{NekVB+F?hk6UGrw!m{`t>N&^In?mL;8O?Roo%Y84u>$b|tdAd} z-uxkI2tB*(0hJfEJ&R%_R>IPli9t97^}z9{kzIoM@N?ASJ-dtX*NyYCpxn7HUgJY;SzK^X>P2RwKDQmUw!TBXNa%-*zd8{1 zp`GJc3?)v){MZbOV>?v4K^TT(uskkAz1eQei`Q@h-a*avkiE9u3d|rrfLbHD_u0i6 z_h3*3XX(C=gWfO=S#xF71xreOkRqaJ)2<1z3c$FzsfVlm?7 zhghJ*TTyGG`C&V<9gq?An%-n|f*O7ji$>;2ir=g}`BbLT*QH$z6YLPxgE!u#u?V=9D5aKA*3)IJ( zJm+Qf4xnJbdH$1|f-^WCH-2Y_uEO_rF;>Uwv}=I=I0CEUSX_u3u@0vEVE+bm9OfmC zzi97M9kr{{Q1|bQd5FKc#Q5JQbMX>ehl;a5vf6R)6^4#ie)tn}O8nlh{Eow;SMA^H zwY$z&HSyLPoc~z=CX0;rf8XL8lX$@$`}c$CcUhR+Kj|KemGV#?7Du~A5A1dv{)q9{ z-$?F!L~k+vF+Y>A!{01G8diA1v=E>Bmtn=##$(>5d}S_=@2}@l{XJ$c<$ifRzQ2O~ zIKboE6(RXNzHOS0W$C~xm>bujMsNdadvErV(Q5nw3t_=P+aMfu4phY9n25c2&|6rH z*e}TA`wxwhSd=&nHOJMkARTOm9k3${DxUIfg*?8K?;`4XWeR(IC#|poqse*Y&U_EwqbZ+-I!AV(7T--*A79MZ-fPmy zG^C<4YW1!}-w>hRY%{83pI{iCMy>YS*c%^VN9r{*RN{M#0ahFNuXE?9hIM#fcALemswb)ehCM2dEC`3$-^ahI&90YKoFkpMMsM z;PWni*~RlPkms9s$dtydSQ5X$@^}@?VL(Zb?@W(D4SiSC6wSq8Jb>D6U!acSbEpyg z7xiF2wvakp0@dMoRL5$eS3~&>89lfiM&K|P&qLkdebj?KMoqyLATA@ZD3-tosP#qhAW$<-W`}JkKb{`(3KtpmH^@e_BZG%W>1JvAhK)um$ z)D2%neQq^s3U{LR`x#e$$LSwtJ6am`dm#q3JF>iFG{=)L3D;m#{1&w<%9pcm&>Qu} zV^AHLj(YP|sE)jc>eylD1=J$E>&z2wKVKR(1#zhM-dbdI!q~I6)3aeGH ziziQ%o!cO+NqGdS=UMm+cE@)3zN^nw(SEKr>KsYN80?Gn@eOQ&C(ySY`6sY2?f-Z( z8mi`~?bijhO1&6~E3hvf#4%Vg#$$%yO4KUPA8Sv#!k9r^9yJ2}P;WjGwH790DlWn} zJdeKppDWG|Nq*FkSq2+p0%~qYqP`sO|IE#U(0vd_Seau>s|cQ2TZ&*1?s|^H`a`}7avDG?-AC*T2;L6TaAA`)R3%2&GjkN4gC`B4XUFSVP91FB2Kq6|y-;1$;!HZw+pHYkV9%>3hYTEnOKyBMh)OpesbssMl*Z$v4MyvHC>Sy%@)Ch#t zvgK7#9ZAM;Y>hgihojzX4r*H-N1gp=umFCKTD-rZ4y1BP_Pl6AMO9I$;41l zx3>L3(Hr$O`59_1&!UF-HfqT3qaOGaH8p;9>chYHIhO*2>qe z{ub&v|Djhs%2&_cs61*a60tfqKn?W>jKw!mQ?wU#!u^ZdHBt3FW<0h*jpPYb{e9F( zm2O~1C<4{K8aBnQ4cPy!$gFo253nt9c(VQANYqG-M-Aly)FNBsJdAqKRTl@R*!o20 zvzSW#7}N{wM!nz_9E`V9yjlc&Nu=5zjR&y@acDz30^?AN=mXTy|Af91GR+Qk0&1jE zQ1v6Rp4wv-yn#A^N~YWUv_Qp^Fcr6Z$*AEy)V__(u-l`fb1v!w$1nl^!D<-O$Ue9; zDxQNn(LO*|^Bb(TBz&n)8GZbvaRD6n>fxYoR*PwT% z-Bu$}XZ&2$2N$7Evh|o3KS!;RFR?xPx3%X*7u4$Sg<8DNqjtw=)HYp(#kK#pxdxx1 zR{K||ZTUND-}^snhqyfI_Bb5eW-)!^DOp%B$;0+&;#;yv?p5>mLpC?od<2ucO&dUyaV;ES-g`yprWw@abwhO zScN)h&Y(K<1miKTv;6_n9yKMyIP_ClVBCNK zxC`|HAG`AJQEzwy^(~pFt6hYpFq}9Ub^q>OGU~}P?2GGBLmt%4F0y*qinuEl!1u8j z?nAxNm#DM<32Jec>TZ7r#G!tm^v0I>7G~ld)H&0zhx-~HOGXFG7SwjRf@%=j(>|aT z&Ltj?Nf^}2u7M1!M?4tS;SD$l&!g5tdT;yr7f~HthgzJUphi4bAKzN@nkqJ9dZ34j zk4V=@|0&=K$i@1wSu+qj5$ADrwmr}#o5pK}$VKIh^LGn_xB zu`8=hp51KDk#t=reXP8m{}Y)2SJ90)jr=7%Kw3olh4^ohj%i(Qkv~KlLVf}dNFo1_ zd=1>B2JYI7n#!DuXGV@ABCmyOIN=YBPr`e*$brkt~`W1Un#yLTSZM>c}vPWda2OWm!LlRQRLYnzAM!E zH<7-8iqfVosT$=aNdLNeH6Bm?iZbr1PP=%L4ymuHD@%Tit4kpNs>^%lQ~5GUKNjwy zzRUZQZjc{E!x65bI8K>Pzntq=;;|&{cU`?{-v|4lt}@uzW_^D}myfuus|%u>FFF4H zpG-Fj^O6R*#^MM!zKu&UFDc7?a0~hBl($eLu2Q6ilzFJ%L4G^=eWar#U8_hhDdS>g zN7J?u?$!LSqoRjOxgL;)Q5mB$(p6GvQVQj_@JEuap0xQ7yA#hNbtbMrYDn3B*GBC| z{!f0r3b^`H_8KWd0nayneDFCeMd2NM(S0Zi%e#De+Ek=YR~Pa-aSwH$;5t&AYv+%@ zs}1UZ`5I07hj=pao0vqb>jMk_{!hU)7l=wUJWrZS(lx|=K>648hr62OWKcg^#?$Uk zKC_iHko;?u6(;FRs*$_LEb5Aq_zmj&XM6sG)oZ>X&^408?+o7+&Ijg@FX=wGpVHN& za+I~is;=E6^17Z9>)WrtYyTtpQ>0>)-$Y$gsB1+!OFoP8V!l$1KUWwPBPjfy)P;Bt zX$t8#;(F8_C9kUk@wcS&YE1<4tD4UAgh~FixA^#TXdD5SxoU6KPpQQai zk`I-qW-w_2aT!t|Wv>wbKsrp^grqBz^5W#DlYfZs;Rwnex%yD@YbhImIahP)0tg0C zHjMlOQamY=GH-qgZ{)OemZdT`sV`|IN!M2vGaD~Z_6AA+#dF$~ix5&U_shn=NHa($ z-RFxqDKfkC2iL!v|2kBxCoQ2M!}a>UuiF0cAv{lcMR$Wju8n>^t)*-#X_2e@6nB#R zX)_vclTOg?J9{hN50(w&i&1~sSH}G3ayQ&aV_jMjgUA=f{3_r|r_C~afwY&joBEoR z^}|1i-*%tPz&kEq00)rfQ14G_Px^wSt1^lIU^2Pf`tudO=sKd{UD7`^C{Ed3@>N`2 z1U^**ch#khF8y0iIsBN^K%c{jxQi4--B8pI)C^M2rJr@)SE$gHX)#S`ypQ}7(hAaI z()T1?O{x3LW_|z0tL!hN9+d0aZu$Q|3%h%(;AfW)CBMiX8=`~N$1 z;xj)HAHZs^T%01#MOx`AV@c#D^MrzQJVUBUJ`E?6Dv*9BUO~D^%DDo`ClDMXH6RUg z6{YA*8`478cBv~Dtw}M|MUr%Nl|0|PN#pyZ2+~jrt5Q~mr0XQ<4N_O?QmI>ol}X=` zbXCENq)bvAaW&d(CSS!@YybEe22*yKl&ptx6(X<8+g5*4_zfhHo~NP#@nF($^5aOY zDE|ocuemu_E#j968sR0y`J* z-jNa+Jg;SRcK?qb_gqWY_rVr`W|E;yjUyI|g}r WF1{b+NnhMK*b}jPS+M6ur~d;Ew*I^T diff --git a/engine/core/locale/tr_TR/LC_MESSAGES/django.po b/engine/core/locale/tr_TR/LC_MESSAGES/django.po index 97ad9f52..6133fae8 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "Yalnızca http(s):// ile başlayan URL'lere izin verilir" @@ -2765,6 +2765,67 @@ msgstr "Bize Ulaşın" msgid "About Us" msgstr "Hakkımızda" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Django site yöneticisi" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Gösterge Tablosu" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Gelir (brüt, 30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Gelir (net, 30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "İadeler (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "İşlenmiş siparişler (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Satışlar ve İadeler (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Brüt" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Geri dönüşler" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Grafik için henüz yeterli veri yok." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Hızlı Bağlantılar" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Bağlantı mevcut değil." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "En çok istenen ürün" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "No data yet." + +#: engine/core/templates/admin/index.html:135 +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 @@ -2981,7 +3042,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:73 +#: engine/core/views.py:77 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." @@ -2989,7 +3050,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2999,18 +3060,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3018,11 +3079,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Bize ulaşın` form gönderimlerini işler." -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3030,15 +3091,15 @@ msgstr "" "Gelen POST isteklerinden gelen URL'leri işleme ve doğrulama isteklerini " "işler." -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "Küresel arama sorgularını işler." -#: engine/core/views.py:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3046,31 +3107,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid gereklidir" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "sipariş ürünü mevcut değil" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "Dijital varlığı yalnızca bir kez indirebilirsiniz" -#: engine/core/views.py:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "Sipariş ürününün bir ürünü yok" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "favicon bulunamadı" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3078,7 +3139,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:398 +#: engine/core/views.py:402 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. " @@ -3089,10 +3150,14 @@ msgstr "" "yönlendirir. HTTP yönlendirmesini işlemek için Django'nun `redirect` " "fonksiyonunu kullanır." -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "eVibes'in geçerli sürümünü döndürür." +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Gösterge Tablosu için özel değişkenleri döndürür." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/vi_VN/LC_MESSAGES/django.mo b/engine/core/locale/vi_VN/LC_MESSAGES/django.mo index 47c4ec97a058017db264bc0dbe8a386f527be1e0..eb9a975907fd1b8f1a95bd9d6321dc33bd04384f 100644 GIT binary patch delta 15063 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 delta 13959 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 We0e~KCt>-_5Ko0YKZSVqjr%_@{Zak^ diff --git a/engine/core/locale/vi_VN/LC_MESSAGES/django.po b/engine/core/locale/vi_VN/LC_MESSAGES/django.po index 8da3e98b..d1da1ab4 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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 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,67 @@ 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/index.html:9 +msgid "Django site admin" +msgstr "Quản trị viên trang web Django" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "Bảng điều khiển" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "Doanh thu (tổng, 30 ngày)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "Doanh thu (ròng, 30 ngày)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "Hoàn trả (30 ngày)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "Đơn hàng đã xử lý (30 ngày)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "Doanh số bán hàng so với hàng trả lại (30 ngày)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "Gross" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "Trả hàng" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "Chưa có đủ dữ liệu để tạo biểu đồ." + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "Liên kết nhanh" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "Không có liên kết nào có sẵn." + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "Sản phẩm được mong đợi nhất" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "Chưa có dữ liệu." + +#: engine/core/templates/admin/index.html:135 +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 @@ -3011,7 +3072,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:73 +#: engine/core/views.py:77 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." @@ -3019,7 +3080,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:88 +#: engine/core/views.py:92 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3029,17 +3090,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:123 +#: engine/core/views.py:127 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:155 +#: engine/core/views.py:159 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:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3047,27 +3108,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:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "Xử lý các biểu mẫu liên hệ." -#: engine/core/views.py:222 +#: engine/core/views.py:226 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:262 +#: engine/core/views.py:266 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:277 +#: engine/core/views.py:281 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:314 +#: engine/core/views.py:318 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." @@ -3077,32 +3138,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:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid là trường bắt buộc." -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "Sản phẩm không tồn tại" -#: engine/core/views.py:335 +#: engine/core/views.py:339 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:338 +#: engine/core/views.py:342 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:344 +#: engine/core/views.py:348 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:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "Biểu tượng trang web không tìm thấy" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -3112,7 +3173,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:398 +#: engine/core/views.py:402 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. " @@ -3123,10 +3184,14 @@ 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:411 +#: engine/core/views.py:415 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:494 +msgid "Returns custom variables for Dashboard. " +msgstr "Trả về các biến tùy chỉnh cho Bảng điều khiển." + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/locale/zh_Hans/LC_MESSAGES/django.mo b/engine/core/locale/zh_Hans/LC_MESSAGES/django.mo index 9afa46910c1e0c3b390f6a98135e20d2f772056c..e58afefc80773070799c337d4b65af78b6af17f3 100644 GIT binary patch delta 14882 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 delta 13940 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 J{NBd2{{!pI<0}9F diff --git a/engine/core/locale/zh_Hans/LC_MESSAGES/django.po b/engine/core/locale/zh_Hans/LC_MESSAGES/django.po index 1bcbbe70..4fba80fb 100644 --- a/engine/core/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/core/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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -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:239 +#: engine/core/graphene/mutations.py:67 engine/core/views.py:243 msgid "only URLs starting with http(s):// are allowed" msgstr "只允许使用以 http(s):// 开头的 URL" @@ -2565,6 +2565,67 @@ msgstr "联系我们" msgid "About Us" msgstr "关于我们" +#: engine/core/templates/admin/index.html:9 +msgid "Django site admin" +msgstr "Django 网站管理员" + +#: engine/core/templates/admin/index.html:19 +msgid "Dashboard" +msgstr "仪表板" + +#: engine/core/templates/admin/index.html:25 +msgid "Revenue (gross, 30d)" +msgstr "收入(毛额,30d)" + +#: engine/core/templates/admin/index.html:34 +msgid "Revenue (net, 30d)" +msgstr "收入(净额,30d)" + +#: engine/core/templates/admin/index.html:43 +msgid "Returns (30d)" +msgstr "返回 (30d)" + +#: engine/core/templates/admin/index.html:52 +msgid "Processed orders (30d)" +msgstr "已处理订单 (30d)" + +#: engine/core/templates/admin/index.html:65 +msgid "Sales vs Returns (30d)" +msgstr "销售与退货 (30d)" + +#: engine/core/templates/admin/index.html:82 +msgid "Gross" +msgstr "毛额" + +#: engine/core/templates/admin/index.html:87 +msgid "Returns" +msgstr "返回" + +#: engine/core/templates/admin/index.html:94 +msgid "Not enough data for chart yet." +msgstr "图表数据尚不充足。" + +#: engine/core/templates/admin/index.html:103 +msgid "Quick Links" +msgstr "快速链接" + +#: engine/core/templates/admin/index.html:110 +msgid "No links available." +msgstr "没有链接。" + +#: engine/core/templates/admin/index.html:119 +msgid "Most wished product" +msgstr "最希望的产品" + +#: engine/core/templates/admin/index.html:128 +#: engine/core/templates/admin/index.html:144 +msgid "No data yet." +msgstr "尚无数据。" + +#: engine/core/templates/admin/index.html:135 +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 @@ -2770,53 +2831,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:73 +#: engine/core/views.py:77 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:88 +#: engine/core/views.py:92 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:123 +#: engine/core/views.py:127 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "返回支持语言及其相应信息的列表。" -#: engine/core/views.py:155 +#: engine/core/views.py:159 msgid "Returns the parameters of the website as a JSON object." msgstr "以 JSON 对象形式返回网站参数。" -#: engine/core/views.py:174 +#: engine/core/views.py:178 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "处理缓存操作,如使用指定的键和超时读取和设置缓存数据。" -#: engine/core/views.py:201 +#: engine/core/views.py:205 msgid "Handles `contact us` form submissions." msgstr "处理 \"联系我们 \"表单提交。" -#: engine/core/views.py:222 +#: engine/core/views.py:226 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "处理来自传入 POST 请求的处理和验证 URL 的请求。" -#: engine/core/views.py:262 +#: engine/core/views.py:266 msgid "Handles global search queries." msgstr "处理全局搜索查询。" -#: engine/core/views.py:277 +#: engine/core/views.py:281 msgid "Handles the logic of buying as a business without registration." msgstr "处理未注册企业的购买逻辑。" -#: engine/core/views.py:314 +#: engine/core/views.py:318 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." @@ -2824,31 +2885,31 @@ msgstr "" "处理与订单相关的数字资产的下载。\n" "此函数会尝试为位于项目存储目录中的数字资产文件提供服务。如果未找到文件,则会出现 HTTP 404 错误,表示资源不可用。" -#: engine/core/views.py:325 +#: engine/core/views.py:329 msgid "order_product_uuid is required" msgstr "order_product_uuid 为必填项" -#: engine/core/views.py:332 +#: engine/core/views.py:336 msgid "order product does not exist" msgstr "订单产品不存在" -#: engine/core/views.py:335 +#: engine/core/views.py:339 msgid "you can only download the digital asset once" msgstr "您只能下载一次数字资产" -#: engine/core/views.py:338 +#: engine/core/views.py:342 msgid "the order must be paid before downloading the digital asset" msgstr "在下载数字资产前必须支付订单费用" -#: engine/core/views.py:344 +#: engine/core/views.py:348 msgid "the order product does not have a product" msgstr "订单产品没有产品" -#: engine/core/views.py:381 +#: engine/core/views.py:385 msgid "favicon not found" msgstr "未找到 favicon" -#: engine/core/views.py:386 +#: engine/core/views.py:390 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." @@ -2856,7 +2917,7 @@ msgstr "" "处理网站的 favicon 请求。\n" "该函数会尝试为位于项目静态目录中的 favicon 文件提供服务。如果找不到 favicon 文件,就会出现 HTTP 404 错误,表示资源不可用。" -#: engine/core/views.py:398 +#: engine/core/views.py:402 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. " @@ -2865,10 +2926,14 @@ msgstr "" "将请求重定向到管理索引页面。该函数处理传入的 HTTP 请求并将其重定向到 Django 管理界面索引页面。它使用 Django 的 " "`redirect` 函数来处理 HTTP 重定向。" -#: engine/core/views.py:411 +#: engine/core/views.py:415 msgid "Returns current version of the eVibes. " msgstr "返回 eVibes 的当前版本。" +#: engine/core/views.py:494 +msgid "Returns custom variables for Dashboard. " +msgstr "返回 Dashboard 的自定义变量。" + #: engine/core/viewsets.py:136 msgid "" "Defines a viewset for managing Evibes-related operations. The EvibesViewSet " diff --git a/engine/core/templates/admin/index.html b/engine/core/templates/admin/index.html index 7f213e36..51f9dafc 100644 --- a/engine/core/templates/admin/index.html +++ b/engine/core/templates/admin/index.html @@ -1,6 +1,5 @@ {% extends 'admin/base.html' %} - -{% load i18n %} +{% load i18n unfold %} {% block title %} {% if subtitle %} @@ -15,38 +14,58 @@ {% endblock %} {% block content %} -

-

{% trans "Dashboard" %}

+ {% component "unfold/components/container.html" %} + {% component "unfold/components/title.html" %} + {% trans "Dashboard" %} + {% endcomponent %} -
-
-
{% trans "Revenue (gross, 30d)" %}
-
{{ revenue_gross_30|default:0 }}
-
-
-
{% trans "Revenue (net, 30d)" %}
-
{{ revenue_net_30|default:0 }}
-
-
-
{% trans "Returns (30d)" %}
-
{{ returns_30|default:0 }}
-
-
-
{% trans "Processed orders (30d)" %}
-
{{ processed_orders_30|default:0 }}
-
+
+ {% component "unfold/components/card.html" %} + {% component "unfold/components/text.html" %} + {% trans "Revenue (gross, 30d)" %} + {% endcomponent %} + {% component "unfold/components/title.html" %} + {{ revenue_gross_30|default:0 }} + {% endcomponent %} + {% endcomponent %} + + {% component "unfold/components/card.html" %} + {% component "unfold/components/text.html" %} + {% trans "Revenue (net, 30d)" %} + {% endcomponent %} + {% component "unfold/components/title.html" %} + {{ revenue_net_30|default:0 }} + {% endcomponent %} + {% endcomponent %} + + {% component "unfold/components/card.html" %} + {% component "unfold/components/text.html" %} + {% trans "Returns (30d)" %} + {% endcomponent %} + {% component "unfold/components/title.html" %} + {{ returns_30|default:0 }} + {% endcomponent %} + {% endcomponent %} + + {% component "unfold/components/card.html" %} + {% component "unfold/components/text.html" %} + {% trans "Processed orders (30d)" %} + {% endcomponent %} + {% component "unfold/components/title.html" %} + {{ processed_orders_30|default:0 }} + {% endcomponent %} + {% endcomponent %}
-
+
{% with gross=revenue_gross_30|default:0 returns=returns_30|default:0 %} {% with total=gross|add:returns %} - + +
+ {% component "unfold/components/card.html" %} + {% component "unfold/components/title.html" %} + {% trans "Most wished product" %} + {% endcomponent %} + {% if most_wished_product %} + + {{ most_wished_product.name }} + {{ most_wished_product.name }} + + {% else %} + {% component "unfold/components/text.html" %} + {% trans "No data yet." %} + {% endcomponent %} + {% endif %} + {% endcomponent %} + + {% component "unfold/components/card.html" %} + {% component "unfold/components/title.html" %} + {% trans "Most popular product" %} + {% endcomponent %} + {% if most_popular_product %} + + {{ most_popular_product.name }} + {{ most_popular_product.name }} + + {% else %} + {% component "unfold/components/text.html" %} + {% trans "No data yet." %} + {% endcomponent %} + {% endif %} + {% endcomponent %} +
+ + {% endcomponent %} {% endblock %} diff --git a/engine/core/views.py b/engine/core/views.py index 286fde27..1ab9528f 100644 --- a/engine/core/views.py +++ b/engine/core/views.py @@ -2,6 +2,7 @@ import logging import mimetypes import os import traceback +from contextlib import suppress import requests from django.conf import settings @@ -9,8 +10,10 @@ from django.contrib.sitemaps.views import index as _sitemap_index_view from django.contrib.sitemaps.views import sitemap as _sitemap_detail_view from django.core.cache import cache from django.core.exceptions import BadRequest +from django.db.models import Count, Sum from django.http import FileResponse, Http404, HttpRequest, HttpResponse, HttpResponseRedirect, JsonResponse from django.shortcuts import redirect +from django.urls import reverse from django.utils.decorators import method_decorator from django.utils.http import urlsafe_base64_decode from django.utils.translation import gettext_lazy as _ @@ -44,7 +47,7 @@ from engine.core.docs.drf.views import ( SEARCH_SCHEMA, ) from engine.core.elasticsearch import process_query -from engine.core.models import DigitalAssetDownload, Order, OrderProduct +from engine.core.models import DigitalAssetDownload, Order, OrderProduct, Product, Wishlist from engine.core.serializers import ( BuyAsBusinessOrderSerializer, CacheOperatorSerializer, @@ -52,8 +55,8 @@ from engine.core.serializers import ( LanguageSerializer, ) from engine.core.utils import get_project_parameters, is_url_safe -from engine.core.utils.commerce import get_revenue, get_returns, get_total_processed_orders from engine.core.utils.caching import web_cache +from engine.core.utils.commerce import get_returns, get_revenue, get_total_processed_orders from engine.core.utils.emailing import contact_us_email from engine.core.utils.languages import get_flag_by_language from engine.payments.serializers import TransactionProcessSerializer @@ -419,6 +422,58 @@ def dashboard_callback(request, context): returns_30 = get_returns() processed_orders_30 = get_total_processed_orders() + quick_links: list[dict[str, str]] = [] + with suppress(Exception): + quick_links_section = settings.UNFOLD.get("SIDEBAR", {}).get("navigation", [])[1] # type: ignore[assignment] + for item in quick_links_section.get("items", []): + title = item.get("title") + link = item.get("link") + if not title or not link: + continue + if str(title).lower() == "dashboard": + continue + url = str(link) + quick_links.append({"name": str(title), "href": url}) + + most_wished: dict[str, str | int | float | None] | None = None + with suppress(Exception): + wished = ( + Wishlist.objects.filter(user__is_active=True, user__is_staff=False) + .values("products") + .exclude(products__isnull=True) + .annotate(cnt=Count("products")) + .order_by("-cnt") + .first() + ) + if wished and wished.get("products"): + product = Product.objects.filter(pk=wished["products"]).first() + if product: + img = product.images.first().image_url if product.images.exists() else "" + most_wished = { + "name": product.name, + "image": img, + "admin_url": reverse("admin:core_product_change", args=[product.pk]), + } + + most_popular: dict[str, str | int | float | None] | None = None + with suppress(Exception): + popular = ( + OrderProduct.objects.filter(status="FINISHED", order__status="FINISHED", product__isnull=False) + .values("product") + .annotate(total_qty=Sum("quantity")) + .order_by("-total_qty") + .first() + ) + if popular and popular.get("product"): + product = Product.objects.filter(pk=popular["product"]).first() + if product: + img = product.images.first().image_url if product.images.exists() else "" + most_popular = { + "name": product.name, + "image": img, + "admin_url": reverse("admin:core_product_change", args=[product.pk]), + } + context.update( { "custom_variable": "value", @@ -426,6 +481,9 @@ def dashboard_callback(request, context): "revenue_net_30": revenue_net_30, "returns_30": returns_30, "processed_orders_30": processed_orders_30, + "quick_links": quick_links, + "most_wished_product": most_wished, + "most_popular_product": most_popular, } ) diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.mo b/evibes/locale/ar_AR/LC_MESSAGES/django.mo index e4dc80283f1599ff688eaf06700857f9b97692fe..18857fd2b73f1b553389751986a70d246b30af66 100644 GIT binary patch delta 1101 zcmX}rOKeP09LMqhbf$w*j2cS4E;SydW20ixZm_CW&7xFFBCShDUr8Sckr;~x>0%O! zL~KMCtu7?ZBuZjYiI}af+$Qyk1!*KCx?;iiH}}TLocp=woVoY>&;OiTI6mH-{ZJmc zXOtT1ChBm=tRBCYaG`t(o3+KvKI0nN^()Qdn8tP3j=S*+?!d>m3=0^=S>$o^g7%kS zd;wRRWo?n04g4Xx%4`KXxE52WiH@RP)Pj1^nV@|U576$#LpX+dejfGQ0!Hu;DsXi& zl_hX1R$-L+?MN`tfEyV&jZ1L|m*cg-5!A}=qb7P3w4Vm;=eUjjH@F191>--lh4$~D z{{+j{cq^7Nzn$aeENQ=h&j|5#x!HR9ukyCTco!@19oFKHz~pv+rEN%;bz>RkP%C|i z%H$+!VKd0j=DDQsFJ{$|s`CGkM&`C2)C#YoQl7(0_y9XG!bWpzJ*a?gqXI0TQvDGR z;xBB%>ZBjgWmF(HQDE7j=#RTm;7(xZBtDbX%xVsurQ*XnyUPN~w==V2fWw2@-Iz)Nm!6`ecelpPY)aS6RIC zQ>?VAgnf!v9cGK2a=SbFdR%9)&l&7=9rt9W-5qf9Z^OsRqRsv1-Tr~m%6M%oJ(TI_ zavC$eUHPW?Vj|{E&kcJM-nch8T9<50OwHZme!`n}yu3FxH{!kUp5$*NUxoewU2lFE delta 984 zcmZA0Pe_zO7{~Ev-E~dfbTijKxu#ifrIOOJMP!i#83ZM=6p1BXD)G`G@nFcFMEpY+ z@fJi7M2A3FEu(`VMg-ovbWqPBL68^0i{Ib8LkEYQ_p>vzJ2THS^SelNdW6c`jc zm|5O7_)^agw(%(LVG84w;X-NDL>EvKWqtbwW@-1}6?}>M{}O70YZ$|ysEz+ZrnW!W zg!`_YH*4V64Ro~O5$wTo>_tT~fSUM;Z@=*E2|PvrESBI$Kfa9jX|MYJ6k%$-5sNXv z$7H!3Kjqodbd^~h1KrGa6Z^3iU*jcQ^6nsWT60Ud@I_3}&Y>b3LS^nbDxgW^V{dtM z;JR<`qQ+}ZlYiE>3||!CEmVqgID&&Xj6aZ%WjJ7M=mBbjbEwq5!^^mWckwT3f$Kqd zr}|MFAHz)tAx6)J8+wF_>>0ko3Dm|D=R%vXnsx>wsC1Jo zw+Og3G_Inf)iEn`x_>TW-C#x7s6I+FRguN0x-5!T8&J_@ZKcMkC#g{?`~6>(aur3a zV^LvW?(NWh;@DkwiZOkSM-f%8-{Haqb)}6b0lUm7>JzS)M`0`aG%\n" "Language-Team: LANGUAGE \n" @@ -227,54 +227,62 @@ msgstr "" "## الإصدار\n" "إصدار API الحالي: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "قائمة الطعام" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "لوحة التحكم" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "الصحة" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "التكوين" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "المستخدمون" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "المجموعات" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "المنتجات" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "الفئات" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "العلامات التجارية" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "المدونات" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "المهام الدورية" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "لوحة المهام" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "الدعم" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "روابط سريعة" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "المستخدمون" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "المجموعات" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "الطلبات" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "المنتجات" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "الفئات" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "العلامات التجارية" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "المدونات" diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.mo b/evibes/locale/cs_CZ/LC_MESSAGES/django.mo index 201ab0f4321ab25b0edd55b2e4978b67e9f6eb5d..ce634bf7765ee545c2e1335e69b9701e139e84d3 100644 GIT binary patch delta 1095 zcmX}rJ4};N7{>9pf&l>jDqNios3pR^XJ0cui+c5!lX zXoOW^a&c*5T%0hvIH&_U7}U5BV$^|29sED-2`4%IeeXFv_j6wMS)--BiKnij>mBU)&4W8-71#jU)01^$WYdZyRi*} zjBh=z;v6WnxBL3sb2Uxc1ui!?; zx9fadW7}`y3?sg3Fk{kodRJ+S2T&^*!TmUc2XP)Xp|_|Gmt4Gzn)nJf;u_MWRkG}D z*n$jYotV>^pK%2-R7V*X-*xdrJVE&!p2QER4r{&AooPkw*eTRR&!Ps1pe8zon$R4o z-2&2uJ@?puHC&=VXY&QMwLeiS`-eL7Ap5Gg9(7lm@fdcYCY*5fw{e(w8nx1o&R?hr zRO~Sepz740?%#US)>2Qai~SOcOdx*5%qqK0HNTo`e?$xj7L5hEkjSz z--pab@vMd)+K;f=>?5-Sd`z5ZGK=9LKEXVuaT@z@8SC*Y*5NMly6w66&^Ox7>L?ft)axQ*}IpRrtfh(x@zo8O5!3dtC690uvZ8!KFZ-dx3 z>tu8%H-_*bPGSSTLG5G~HSwH_mt4Gx-Q53x53uZ>f5*4P$L@ZDZR&X!)?y0ZampE7 z@mXm-ZbmXz`>cAT2~@_z*pK5lhzqEMKB6Z4;^Go2;WD=30Wzii#5TM_*0O)7Pu#%v z6{peHM0t1P6)K*=JQh&3@EJAXIckDy)JcWCYNAopgdQr\n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Verze\n" "Aktuální verze API: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Nabídka" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Přístrojová deska" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Zdraví" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Konfigurace" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Uživatelé" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Skupiny" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produkty" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Kategorie" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Značky" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposty" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Pravidelné úkoly" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Taskboard" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Podpora" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Rychlé odkazy" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Uživatelé" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Skupiny" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Objednávky" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produkty" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Kategorie" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Značky" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogposty" diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.mo b/evibes/locale/da_DK/LC_MESSAGES/django.mo index a4c0d85d9426327759ff58410d902519229a3ce3..27a26682443543fd5feabd58248d74da3ef9c3b3 100644 GIT binary patch delta 1095 zcmX}rNoW&M9LMp$wv9EWO{{fET{4=w)z(v85PFFAATDSRaY2PHPGd++Aj_c$<{~0` z40`IJ>O~Q})I$#*T@GIK=Anopq81Uw1yMx5zs#eLy!p&~GkNpg@6Al5ex_=#I-0K= zrH{IXdTD{#0DfA?f%3Y^>{Qt74KAZS&~6sPAzXo@xCJM$8*kxae2O7_f&ATGy7pUl zeGZqJ)$BVbac&4j&Dzkz<+vU7ph46?Y1BZcT|0yQvNM#1PN7eeS{mT+M}(*oswLf)|}vQ7gNFdeD?>-*@d9Tu=WKT!bIo^)HyF{oC~) zW!buZ0$X^#4Rdma*vD~_B|hp1Rxq+Qn0X16$YoU2lbFQEs0n^V4fq3<&|g$yt?Pmb zN0BazJ9ptK+G(sQ`hx4Yf*R;1YM{HW{Q!5;eu#?t8+KwZIV#E&2Sq)C%-zP3wb%sm zvuhk8cn@`b29@-)1o{8;h4?^TLk<(%*N$Fie-*_(debTAS+QabCG%Jr_;j_^=5JC^efWed6K m!?9#Evez$HviW?rknv0PVq#C*{%Wa`&G;T&xpMtZ;@5xiZf%?Z delta 983 zcmZA0yGtBV6vy!s9~+IY^|8js>T2SykHyL*i6%sBED}U5tQNr(u@oUTCdeRypcWR3 zU?FI0p$I0hY9VY|Q^mr@{R>1$lL!&?`MDxb$!xQHrk7VGd2s&pZCDs2K8yCspy*n4ENF?W6zRoNx@N1`&T#44Mjji!%Avt$hRoTepF=wt1sspJ&I_%SR_dk76&p^0g>icVSwO;u2( zR26*-(Rb|hr|I{59IAw(hnApe%~b9tnjeRkh12Dk58>3|YPh{Bla2Lf?qdJ$0T%vF A>i_@% diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.po b/evibes/locale/da_DK/LC_MESSAGES/django.po index cb1699be..ee14bc77 100644 --- a/evibes/locale/da_DK/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Version\n" "Nuværende API-version: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Dashboard" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Sundhed" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Konfig" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Brugere" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Grupper" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produkter" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Kategorier" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Mærker" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogindlæg" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Periodiske opgaver" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Opgavetavle" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Støtte" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Hurtige links" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Brugere" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Grupper" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Bestillinger" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produkter" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Kategorier" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Mærker" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogindlæg" diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.mo b/evibes/locale/de_DE/LC_MESSAGES/django.mo index b14a8bb6324289ee2f707f82035ec687a7a82fc3..1292415d0c1af6c54c144ff5e7a73ed948646bf4 100644 GIT binary patch delta 1096 zcmX}rPi#z46vy#1opvytGODWT-y8L(WsnF7i!Nv-f=0Wj|3W%_+R2PJNoPh_FdGT6 zRJv@05({B52^N-85*s$sg@{IkG!`XR8j0_3=B6h(^Lh8(_wJu_-%NEsJ5c)ESbNuq zZRBe5ddRF3f7b9rdQI;1KfiTQ15?2y*GokIEPxeZZefM z;W})?2=iN)>o|m~=s1ZBv556}&3Oy8voX{}_gwp_Yrn(<_a|`y{&4-X*iZYfyWh*U z)qeu(nBUHGah9@Qz~9XHy0NaQvanYjsNUI(`X&;15YM4X`WSWQudoiMQAhV3RqB7p zkQSpXF-)SqnZ3wftT#dZRq7l!^ulHL;0@Hy?x0FN?%GdK3w@3|@h$4TIn;B}^=4PG z1+|ee=QwJfM;O8tq{i3xHy@k0qQ4T_oxTN~zjma-*N_@iCDt+MGEZ$U delta 984 zcmZA0KS&%w6vy#*{)_*ToW?W$IdgZ3dY&SPToM1Fh0!30SV#&HtE32|2wG`mNf)&V zNU9V85kXNDPD8{(JP<4_lr%!n(khKsfi!-9yJO?PyU)(@|$gB%ba`>VB$~7A=HrvA|^dpbV!kEHJ?8GJ<#d@5+ ze%~{zWpph!nz0ZEumnd?D;Y;k{MPlSTz?J|++V~8xapqn;u!q{cR#{1^}G)Au>mL8 zkh!c2^?Vqa(%xVk-y@5) zMby0CQR9E2r_7GI&_t)sKiEV63SVP=JV@{Zs>YvDD_KRAY6G>kS>zQvL!FIlBxfsR zo3yh@EX6idqCE-fudN+)H^xwzO=3HKL`}Sc8kfO2JVYhl`#f+E^??x#p`J0se+T?z zDs(|pX*E`f==}LBZ{qR=QKx&fIH5zM1Edu_CA3mC9o7_~5@>b&F|2{OYvkZJ%I_zy zPLj~hY1LYw&YN~H+RaZ6p*r7hs+n3d(MVJgs;g?~x6DQEyV9kha5}RPUJfsHB>FO6 H63NglDr!!E diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.po b/evibes/locale/de_DE/LC_MESSAGES/django.po index 7e059b87..16815035 100644 --- a/evibes/locale/de_DE/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -230,54 +230,62 @@ msgstr "" "## Version\n" "Aktuelle API-Version: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menü" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Dashboard" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Gesundheit" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Konfigurieren Sie" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Benutzer" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Gruppen" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produkte" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Kategorien" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Marken" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposts" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Regelmäßige Aufgaben" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Aufgabentafel" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Unterstützung" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Schnelle Links" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Benutzer" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Gruppen" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Bestellungen" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produkte" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Kategorien" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Marken" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.mo b/evibes/locale/en_GB/LC_MESSAGES/django.mo index 830b3e2180ef8066fca7e23cb44846ec35a6b9a1..b6239bb1a4b2528ecf8742cded626f3aebeb088b 100644 GIT binary patch delta 1086 zcmZvbO-NKx6vt1gQ%!!1W?x!)%RViGprDO0R1kd(COBqT5ZbdQOJUSS1i1-CW$vV}+@K}bPRP!vJG|9b~l9XRv5=bU->p7X!&jc4bxW3zSTL6p7;6! ztTh|6A1v1Mhg6MO6%24S+zWNkQK*gbP#c}|_!8VtJO~fM$57ADKs~nr%i$lW#+BqK ztA|an8KyYjj(Fh&Y@~1&E{CIVCA{gp12x%wsDmDQ{M6$~xS9MLxD0;w`Zt&-{_XkG zjIDY%tl)gRz@i)3`{5Nvd|8)t+_Ev5P8kcXZxTwIt;bZagRHpr0#)|`X1BJ?RVFp#;{7>&|tLGQ9^fU0XxEN~F~%EaPikG%0N9 zGtt$)p=(hX844qpqY!l!dZXbmF;#Z5GSyzZ7!`+04VeS!j?qHjKsZ$x9GJ*uCaeEn JD&;b>{{T^VXh;A6 delta 983 zcmZA0KS1LDjVjV7&)G1a726Pu{D{t1N+8PpbZF@sAG3<%=b7P{IFDsqEP5nLp= z1hN$z1i`i_B0^>-h0>uFp>z}6O2I+D&)w_d3-5jIcYoe{-{fgsq@{~g#9>6$~pY# zv81)OV1`%Z&pj6E4x&w~lHErw;1reY1?oBf z(9=MX=fOZRRNaY+Hj9e3gc@K2vsgt%dxVO%j*9jND%!uUZlX}K2~@JLQOS;?7BZRP z{cGT&J1~!`KcJ%hjEZi{ov)#y-FC-soRMr0Z7Y(je~<3hSZexE6aHQ>0Zk_A*Iux4 z#oR|H5x-^GYGqm_&#(@H# tHu}@_``vGRpne->`;z{Q&ZlBsbieKW4!w_VPQ~+k<@ooQb~elLU$>B>ORWF^ diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.po b/evibes/locale/en_GB/LC_MESSAGES/django.po index bdda740d..fd7251ea 100644 --- a/evibes/locale/en_GB/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -233,54 +233,62 @@ msgstr "" "## Version\n" "Current API version: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Dashboard" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Health" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Config" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Users" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Groups" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Products" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Categories" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Brands" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposts" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Periodic Tasks" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Taskboard" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Support" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Quick Links" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Users" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Groups" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Orders" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Products" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Categories" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Brands" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/en_US/LC_MESSAGES/django.mo b/evibes/locale/en_US/LC_MESSAGES/django.mo index e14386d7ca6b046d5709c2d0610def2b0862cd3f..ed21c9febb77d2cfb89529651cd98fd3fa9925f2 100644 GIT binary patch delta 1086 zcmZvbOGs2<6vvOLQ%z>0X%BnMSK2#WCA1Nwq(wH=AeQ!^(rz_b3O<51&8Af?rw8qN z>}}!3pjAZDA}DAP7*a%3(jp-UvPHlDy$4qvJoEd`Io|V~@BiI(h|d z_617m-%tmr*@*svK?2&wD-}l6o(! zB!3nnw5`U~U+>?7ZDqCDBb`DMYA7kBAy6&eOv>!Sb>c1fZoCnf?Z9v# zSP2A*l~@C1LHk$5%Va_=d12#w(igZ*39K2{o$DTDdJkl}wuX3>NUl#<#@D)FQrObR zqRah5SE4XF6h<#bAv#*8e&+qf|^vtPux$`rAAU0Qs8nhCEg#-}{Vv!<(SZbppTZ#xN6brFX zuu>2N6%+%aMJhW%MD(ga2-w+(Y5YICW8=W=Z{MBUxtV8o{|;;nc$rAfy3so5ar$hQ zSub8?bD*7s%*Kn%PO*|YT548~ZCH&x*ot4V3Fom8w=fTPk=yOS)n{(}5-ZF+yW*sV zA7roupD~JgWx*fCQ4@8dCQ7@yAJf!>*o_OQ`;Slyyu=*5MlJjnnc5yPiU0lDGppm* zbzEr20vyCJ4x@H5j+*#~t7lxji1l1w!F=3zqoTb)Mf)2S?HwxGf37a1P_i*pvT0PZpHUn6lH~bo z;t_Y@JF1>WMLUOzZqtqLprYM(*F&jbJdBFA5=qv-NB3(kHNB`+{#md9EvDG7yhOn++)?nDtQ6}3-vJwokTk4C9z!SOy0 s`qK3Iy>GmrerxC0LXXjTRjiiox5J0fWbxWiGQGBvyg!_*$dtSlulZ(8umAu6 diff --git a/evibes/locale/en_US/LC_MESSAGES/django.po b/evibes/locale/en_US/LC_MESSAGES/django.po index 307f0d88..ac841f70 100644 --- a/evibes/locale/en_US/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Version\n" "Current API version: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Dashboard" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Health" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Config" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Users" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Groups" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Products" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Categories" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Brands" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposts" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Periodic Tasks" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Taskboard" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Support" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Quick Links" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Users" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Groups" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Orders" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Products" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Categories" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Brands" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.mo b/evibes/locale/es_ES/LC_MESSAGES/django.mo index b6f036b2848670ab437855caa75a712a3bc5923e..cd452852d688e5a20bcf159c7feaba485c84f9fa 100644 GIT binary patch delta 1092 zcmX}rOKeP09LMqh^fA>@HEO)t;*Rkw9V8kO>7p^+ctpFXS2d~5TueG+eYNMtr_ns@{oQC1`(M2Iwqg%wTs{_dRgpE>in=iGbGCH5-hWeZu9`yPM6T*pDl51h?V@Zp1s-h|e*MuaVd7t*d`__vdh# zS=oMbv4#i2OU;&`hbu6N8YqS8XaLpGX;(jod#LAeAKpd1{~q<;9M<7q)Wp@uP!_}W zn7}aO+W~juAhvPiBrd{nT#T2U*HA0Fi5h6i)$h6b1B}!D3>)y9yZ;LZsQ+>8eJoq| zPhdUc+b|bHr2Q<;Gvd>h>IxpMtIqrluI9O~n8bg$1CuO66BP+m%6i%Qzp21!C3iX_pAA>L|Jx`43V`gF2kTCcKYopKF_xxko5x?YBW@`^Mg^w09ez7#!8tsbok7v`P-r;P1v~nam j8*S+GGucd`G}#{SY3|ME&ZK#%_~iD*Y^HK59t-^kyv%FC delta 984 zcmZA0KTK0m6vy#X{wWID0!4vV`mhyfkzmq+h$sUP0s|q$MA9^Ise_x5NkZO0AOR*o z*gjCKO}(sz?$w(L1Qh^djH1A-skY7{h1C zpDlCILRV20-#}N1_W7X%$EX?p#a`6g{cs_Sa^9IG(v_n$iKzY\n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Versión\n" "Versión actual de la API: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menú" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Cuadro de mandos" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Salud" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Configurar" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Usuarios" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Grupos" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Productos" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Categorías" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Marcas" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposts" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Tareas periódicas" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Taskboard" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Ayuda" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Enlaces rápidos" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Usuarios" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Grupos" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Pedidos" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Productos" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Categorías" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Marcas" + +#: evibes/settings/unfold.py:145 +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 70d0f492..413ef38b 100644 --- a/evibes/locale/fa_IR/LC_MESSAGES/django.po +++ b/evibes/locale/fa_IR/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -199,54 +199,62 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "" diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.mo b/evibes/locale/fr_FR/LC_MESSAGES/django.mo index a0d0a3d05a6f441fbfe6d3913ea08e56b855d1b3..4dbb7c1c5d175a6df5dfdb4d01e430ffe26b8678 100644 GIT binary patch delta 1092 zcmX}rOK1~O6vpwBri~^>O={IzUt?Nd)fRjeH(6CJ)P~wcdGF^DGDxJ6pQHp%M4yP^P77obMLulZpM4w^;F(B*55K( z2eFR08Zb-Z_c|`L4?(k25wnlDf_`$DSquko6=rZ7UdA?@#4x_V5WYfQx7U9ElmC1U z<7O56#myRi5L#}w6dhcNov4Klpe9PACOYl+&*NVD1>BGKQ18D*y*G#TxPVGrgDhoD zxDi`1#QN6lKj_7^JUD@iaSWH>72k2x&TgX?y6g8J`u!)kiSg&S2*3Hye`1>cZ-4v< z+t%~r*ueUBmYXw_{Tx1snmuduDsYK3xwUJ!8t>p9e2lyBD=ML8$D1&LO1K?Wu`Xou zmc%AZ;TFuG61|QU=CJ$R=o8GKGW&um^$*lU^QayC#gmxkZ6)>y^$Dg?rJhHX`VXqq z@q~9K98{tQQHk`U63Hg0ze;_B0hRP7w%{ZxfhnXY_7XM08`PoujJt6Gm2hXPw{RDZ z(C>3MvKnq1=n$p<}z;Csm=xuM??LktXnEiw8ZvB2F7wj!%knW nFkDT=rsCo5Vm?1u$hzf;aN!7f{3Ami&C5vaSBusEb_)$T`baB z=v4oKG!$&I_zCUiar}HNyLcx zfY|_^1o@%;2$@Zmnf=5^^rKZ~VeG_Oe2E?S23v6nAL1sK;1)97_FezbJtp%N%d6cUJ|UsrYARhPp-MFoA)<}=*T~Ip9KT-`b=nD4 zMw`@zb>DOsVz2lK5=r9!rn6M*B6N;*gpNTa^jkI`nyJ_r38%8F;lrAZbmDdPOJX2! E58RMYvj6}9 diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.po b/evibes/locale/fr_FR/LC_MESSAGES/django.po index f9f2507c..7c1b5f42 100644 --- a/evibes/locale/fr_FR/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -233,54 +233,62 @@ msgstr "" "## Version\n" "Version actuelle de l'API : {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Tableau de bord" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Santé" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Config" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Utilisateurs" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Groupes" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produits" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Catégories" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Marques" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposts" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Tâches périodiques" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Tableau des tâches" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Soutien" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Liens rapides" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Utilisateurs" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Groupes" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Commandes" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produits" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Catégories" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Marques" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/he_IL/LC_MESSAGES/django.mo b/evibes/locale/he_IL/LC_MESSAGES/django.mo index 7770c980d828d13aab1a8c0d7df054ed2ce25767..26901e1a0ae72717b69d54c6eacd2d76d20bbf33 100644 GIT binary patch delta 1108 zcmX}rOGs2v9LMp$I*vJ-O`|i_*yH9jy_KM(pj;V&mZX$D=s}E4HCP%xdO##bZK6%6 z11&1aMHbO!Hg1D3+U2I(A|k6rNYH~;<)ZIz=FlJReC|1C?)jhdKlgrWnQk5W5DAPK zQO~uU>t>Nz6Mie^hxk}xb}VEzi`BH7s?5UJfiXWo?ayv} z4i}pZ*>7%^@rU3dvxVqk6dO>9cB3ZhL``(uwa?-<+C8`fCs5D7M?E)(0sM(1M#on=vp#$EflYfs^7`lqoBzq;`s*h%}3>u+b< z8b5-i=5)xC!q#r%?aaT&aza5KERnt-G{rev(5gW;eCewm+{wkpsqm}F2lu*YI;LP-vkP z&^B^$qWOxgM7_+aj>1!ZRX|Z%AiraM5yf2VTwgu1sr+u#rB6_nl7n^^e5EjiHXgOjozJFVoYV vYYYF3RE+vr|A9a5kNHnWb|ntP9{czFC$uK`>z2|?<-5A?{;_t*G?~RdR zrkF26W<$7H!w=&}*erk9>?bCOlg(x^Oyf0tgtsw=y*Q5z_yOy%fV^&BUA*eITEuN1R8kyNFlu z9jc-qJ^HT&zHvd8-2>ZrhxjjQqXcQIhaLC|@1qj_;w+j+~gi?0>MGm#u{p^ z+N^|h{(=p3g4ru5i!OIDwPA#*!=kdQv>H0BX{HWk2Q$pnSN@;#XsTM#^teCw)iG?9A94Ya>ak%c<3D8 C*;29q diff --git a/evibes/locale/he_IL/LC_MESSAGES/django.po b/evibes/locale/he_IL/LC_MESSAGES/django.po index 02d18083..7d27509b 100644 --- a/evibes/locale/he_IL/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -193,54 +193,62 @@ msgstr "" "- ניתן לאחזר את השפות הזמינות מנקודת הקצה `/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:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "תפריט" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "לוח מחוונים" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "בריאות" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "תצורה" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "משתמשים" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "קבוצות" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "מוצרים" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "קטגוריות" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "מותגים" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "פוסטים בבלוג" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "משימות תקופתיות" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "לוח משימות" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "תמיכה" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "קישורים מהירים" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "משתמשים" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "קבוצות" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "הזמנות" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "מוצרים" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "קטגוריות" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "מותגים" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "פוסטים בבלוג" diff --git a/evibes/locale/hi_IN/LC_MESSAGES/django.po b/evibes/locale/hi_IN/LC_MESSAGES/django.po index 94d6de17..f2c03a59 100644 --- a/evibes/locale/hi_IN/LC_MESSAGES/django.po +++ b/evibes/locale/hi_IN/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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -199,54 +199,62 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "" diff --git a/evibes/locale/hr_HR/LC_MESSAGES/django.po b/evibes/locale/hr_HR/LC_MESSAGES/django.po index 70d0f492..413ef38b 100644 --- a/evibes/locale/hr_HR/LC_MESSAGES/django.po +++ b/evibes/locale/hr_HR/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -199,54 +199,62 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "" diff --git a/evibes/locale/id_ID/LC_MESSAGES/django.mo b/evibes/locale/id_ID/LC_MESSAGES/django.mo index b7d776ae172e040c46e71246d98c9f893c1d0c98..40b58cd9375280714be5a57f95a00264d23e2fa6 100644 GIT binary patch delta 1089 zcmX}rPe@cz6vy#1sbh{~PGM6Fyl zHP9xaR&CnYBHXwM+qB3<5D{TT6w<<=7U`z%Z@hSzJD+#opL_2)@7>vs!tvban$m|x zw9vNG?nTVn@z)yui1`w;i!rk=xPgBAI<%YRCoS(&V{OPVQVn6*QcfNph1m4fe4i(B+J3>2f4^7cRYozgs6rkmknXY%Sl%fd*|K6c3${~U3iKSY`z@^>PAhtA2s1&RHbsLOz)#6ID@L(GgM_? z`0*PIRH8B`3h)+{@kboSZOq{rD!>SJQ-FJ@_Z}ftv?7wM%_BbxIH+PPcnd42iS42$ zypQ_MVT$!vfMb8*7g7xSgB@6x4qq5TO>h*8nD^tdcO4b@D^gikZe^}XsA;3#aA#p0 zJ*!G;|GCV1IMoNKuxn|K+BC|Nx!6s*GFQ`P?WHRt3S;~+-12~HS~4|NM9ZLdhu%q7 z)-1c*Z`uoqaSr;YW$6DmRYt9k-c462Rh<^PYa2hRA4f`)vFygH*u!Y)BsEw{rhoqf Dh*?h6 diff --git a/evibes/locale/id_ID/LC_MESSAGES/django.po b/evibes/locale/id_ID/LC_MESSAGES/django.po index d564b7da..35ce6298 100644 --- a/evibes/locale/id_ID/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Versi\n" "Versi API saat ini: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Dasbor" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Kesehatan" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Konfigurasi" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Pengguna" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Grup" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produk" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Kategori" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Merek" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Posting blog" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Tugas Berkala" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Papan tugas" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Dukungan" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Tautan Cepat" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Pengguna" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Grup" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Pesanan" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produk" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Kategori" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Merek" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Posting blog" diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.mo b/evibes/locale/it_IT/LC_MESSAGES/django.mo index 5a304af4ef02aad0b887f46d46e0cb9f0e975ab3..21ac35000ebdceb6f546872569ee19d159f5e4e3 100644 GIT binary patch delta 1095 zcmX}rNoZ3+9LMp0+8S%DHl}rp+l#TTtrr(OSV3AZF4Tf`L9KRq#z)gc(o_(kxhRTw zk)q&1+-^OH5D-D|Afi_*2qGeih_;C2;6e1__m?+xVEUP*Z~im?nLO#dzNhplQFqfQ zZPew|OA)hn{8_^v%I8|M<1w=@*hIg5zF8c*aS`_8dc1&Z@Bz-j*BHe~4(4`G;tu**x@cA#O$m>O?KngIef>>t}E){T%MVhp6vAqQ0BPI{b&)xCRMj z&A1BF7$v@SxQV^EjEQ4dkE1vj$DG$tC%c6TbkFr4x&Bj3G5!i?;}17q!5;d5-S|O{ zt@)!ki}-e$#!1qC2EP&UWg^`1#LCd;s8qkj?Kp*7(Bl}|&>>WYdR^Z~oiy+IV@Pbf zin^-XZvF+9Sj#49EXE3Ip?WV&bt9^uM7@a=?#5H70QXUM{uq_&cc@ff=cxb)ZO1jon!(x;WO0t-%%;8U=IJFHker* zdLFfb%NRi&R_p8i&6KsYn6DOXMsGoz(PPvmR!|j08&PnbxP{tEO;c4iP<2%*%~bYb z8>!rA^~B1yHnN1O;wgSZwaH^}@?fjKh#Fky#@bM+RQgnOk1EPWvf2tys-Lh5zt)+e z3|Z`mpB=~#`(82c70>#fe>mv(N4)Zz+IrZJ{bsptV$_)fi)A43!XrkU&BR2~Le{WyC>UAm$DX1avWt zn&3df#-K5&7>R=k2^&l}xCj#tgg<};2EM<04+|$b{oLoCd(U~!b5Gw5{&?!`#v>n$ zmZvA_uR>-;+^XS+_A_i&x@@+N&BTdDvncl9RqVyvIF4O7gO_j_>u?o$-M+c_mmA-} zn3-o=T(t7QE;is1Ca|t4SSX2_=q_raf{XjHKs;(w8;?GQWh z*pEH4HlA+dMh-9H5MIGC)J{sMiOVj2>Ebt-=Kfo}fM4AB8a^Zb?d~VorpDW`7PI)A zD(7+EW2J?7kl~Atz&TWDKjB0CiVtufl~60`t0EaxoI~xb;Nk&fZ5u^>nn^c4k4#}7 z@fxn7r-`EZ)q3OhknHc7cu z*(@sY`)R(vN?YWH5*S8hK7n~Gqh5TED&Z1N;|glWv73P@RO0tAgnE`o{JFueW{WOp zNt( zyH=%i-gFj{kNK&gYq#ec2h?vles9sQ(>W@3gYLKLzwlIjWh7dtE=E5`D|gbx>TEg| FIt6s?OzQvu diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.po b/evibes/locale/it_IT/LC_MESSAGES/django.po index b7c4c822..ea44896d 100644 --- a/evibes/locale/it_IT/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Versione\n" "Versione attuale dell'API: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Cruscotto" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Salute" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Configurazione" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Utenti" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Gruppi" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Prodotti" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Categorie" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Marche" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposts" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Compiti periodici" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Lavagna" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Supporto" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Collegamenti rapidi" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Utenti" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Gruppi" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Ordini" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Prodotti" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Categorie" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Marche" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.mo b/evibes/locale/ja_JP/LC_MESSAGES/django.mo index 2cf57abb0b7df831530bb68ef3686b8418ce7e1e..2c6bfbffdb7e1d14b1fef4f17c25aa2a3adf95dc 100644 GIT binary patch delta 1103 zcmX}rOGs2v9LMqhI69eHjizOmbsc+Y8ZC@oxXO^;xzLIfV)Rynso-N#i-w#Q;iiRT z5EM}@qM(9-Xd6Ve>H#f+VyK2JB&0>OXf}O+_Z~XTxu5fx^SJ+W?v2huXF69^eAP&; zYV|Kg9;xU*H1#;rf4JH}$`+{RpqE z{$p6e`gW2+A7MX*QD%N#6-M9{+hp^W!wQ_oEm&~2cwv7Zs(;AU&pW43k-Uzp@v-v_ zD&q5)uBA}Qw)Mvb)I{5m%~}Trp~oH6d+`v?p#J|2`B{O7#?>dn2sNX|w;_AAJ*a*k zHEz^-IYIo@anm(CKwjRSp+fu~b#`A}{g0~`H-?d@MUCH!8rOpZm~!o}UHeB@pT`LO z%gH)Q-M{~7JtgK3k`~on(D`e}+DtuJ=cY@ziLA@Dj@&|K-XJyc)K{TYO;&W8$=aME zp<_@)6?G*~>+21aNzD22CMpRiIiBzWpFTiH?n zZ2!oR?~RXm<7a%&?@1;7F)#Zzy1ycJcyz!Y9h*@N+1W%-qB nv)Oy!r=HAaFHSclcGl!4ALS?S<}(=;GWYYDEQM?`u`BWqW2||) delta 984 zcmZA0J4hTs9LMqhdA>FA)SNMTzE+KTB8Xh!BcPQ+iikzh9Ae?47BndgvW<<3AQ-_$ zECfLz5ZDBwDWcYeD4*kI*jD2wKSx$5Qnh@M^P)uqFy}h>T|BXh)uMwVgbH)&p+Wy>R(-Zl4a_79p+&xj+5n1 zjQhNKxguKe8q;D@wu_}0U^gB+|G4K~WAwZS)ql`Aiptys*5hmEJ5+`Ptj2Gsem~IH zhyHTIWUYwhDAhIChfVkbv#0?F$j^?sXxud_L%&huZ;?4#u^07EJBLvHUmx7{zMJD!6__hj@oBY?TfCyjxp*=H**O;0^vb@q#KI1R@imU=N++1HR;M;fBcX}t0BJ>!31vVDWy41v=aA)Ifg|U(ScKGBlPc3w%GRY zyy+~Yo^i<`^!NL}Xm3^0#8X0hr`6UFVF@ndGo>5P6PaKoaZ$c8=k*3BUVrQ##F$Ve diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.po b/evibes/locale/ja_JP/LC_MESSAGES/django.po index 84e0b870..126bfc9b 100644 --- a/evibes/locale/ja_JP/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -227,54 +227,62 @@ msgstr "" "## バージョン\n" "現在のAPIバージョン:現在のAPIバージョン: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "メニュー" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "ダッシュボード" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "健康" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "コンフィグ" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "ユーザー" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "グループ" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "製品紹介" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "カテゴリー" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "ブランド" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "ブログ記事" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "定期的なタスク" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "タスクボード" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "サポート" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "クイックリンク" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "ユーザー" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "グループ" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "受注状況" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "製品紹介" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "カテゴリー" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "ブランド" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "ブログ記事" diff --git a/evibes/locale/kk_KZ/LC_MESSAGES/django.po b/evibes/locale/kk_KZ/LC_MESSAGES/django.po index 94d6de17..f2c03a59 100644 --- a/evibes/locale/kk_KZ/LC_MESSAGES/django.po +++ b/evibes/locale/kk_KZ/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-15 16:53+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -199,54 +199,62 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "" diff --git a/evibes/locale/ko_KR/LC_MESSAGES/django.mo b/evibes/locale/ko_KR/LC_MESSAGES/django.mo index 23b24e2cf1a439634eac82720bf85659a044d63d..695d489a083107e4ad79016bd21c942a271b6dce 100644 GIT binary patch delta 1089 zcmX}rOGs2v9LMqhG>>Z3oYczfb;}+;vLK3r7>IOJDdl2%P(kS2slifEhj8N{xrhi_ zNUet?W+N^df(Z&*NG_{gK}6CfoCaJ3Lbd4on>qN0GoO3znREWKV17V zZZ^x>ZyvVuhe*9y9eTJ0kDwCupax2y2D;(uxA8djVLXMisQzD3{gyF=e^C?HOHx@A z?!i`!kl(sp!+G36!!_K18LYuc=OfgYJwqkRx%#}T7jZA|-{X4x>DpH?LH&<=e~Hgl z`&A5+-)`}6lVwlgG#M8fs#|excXh@oRKg5)-~;D8>dU^MCRWB;Tt%%|h|g5L2FY#B z*n;h@-h){!NrDF@NTNE9qTWxq`a{%GKf#l@fcpPG+=WrE+OG}u{wS({95vxy)VTLi z?USg9KlWIEHRO1qhCFJIU!ewghb)SHKyAem>THzp5C&Oq_3uRWKZYqhgBmCAe2H42 zw-~@}6xDV9*5V*f`&>=4(^*hbCDh>hQtg`t?xg5&9iSYhv{Dr96x|9%6NP-06<|jz zhmM`8Ot={pp7Lvt6yYkyfvwyK-9UY%qKl&IrPWaA$|cg{d dN^`}T(_Tki>2(mmb{vd7t;ayZ7$7d*5ICebwJjN4Jbp zrsk;kLS~n6FU*Cq8!=m+Fnfhl#F>Oy5=(d-7qEzncnJTal`NwMUUPBF#Sife&mZGqeD2=&@D}k~_dLTg^*)b>uz)LM zxr~o|zSK^SQlFR^&9IF6-~!I!b!Q8;k|(H%?O+_=pfdEq#h;LG+W@C==;Cpftqe?~ z#xJ3-j#c;KGAh1-O6?L>v5o5R4)gdC)$WIT{tGp5*c(kag=$|zO}K$-zlz$zHB|e% z9{W!g%;$kpzKPoVZM=Y8RL8HV0l#4rf1(DuP5$K_R7Td3%m(S^Hs}MvK|Q7$ioT<5 zR_1j6f&p}b&r-EI6_2W!>j1GhJ3-aNRCHKNR85S`8b5{=sQ=5XyU`YCl`2|{{tiu2 z3)XqlS;*D6=uazC4;Bt+P;>^)Q%_PkD#4xt=@~?t@lGRI>24&4lO5kHc6(kr^bcCJ BP5}S_ diff --git a/evibes/locale/ko_KR/LC_MESSAGES/django.po b/evibes/locale/ko_KR/LC_MESSAGES/django.po index 786c5782..825c9451 100644 --- a/evibes/locale/ko_KR/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -227,54 +227,62 @@ msgstr "" "## 버전\n" "현재 API 버전입니다: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "메뉴" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "대시보드" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "건강" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "구성" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "사용자" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "그룹" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "제품" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "카테고리" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "브랜드" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "블로그 게시물" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "정기 작업" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "작업 보드" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "지원" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "빠른 링크" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "사용자" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "그룹" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "주문" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "제품" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "카테고리" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "브랜드" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "블로그 게시물" diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.mo b/evibes/locale/nl_NL/LC_MESSAGES/django.mo index f9b85f013ddbbbc9423f130649bf53d8f6d308f0..0e2c68404b2c1c1981256ae5341703f1a9c12f41 100644 GIT binary patch delta 1094 zcmX}rOK1~89LMp0Z5uU-HrA@O)@HT!Z9SbW@8S3`j3} z5~@9m9>j|vfg&D@=s}QpQ;^^TiWUzFp0tSHUo!MhCZBoi?(F<$=U(D_qEK$EyKh7% zrIj*KW7ds77V$@Xsx>i&Mi*0Sy7fPZsbP1z4LiP8fUMz*`A4l!wE!=@qsI8bmZCMG2@dK(q z!G6eI)cqHcM4J|^=j;1hh|SbCx|Sx)dL=u0kS5oPH&J#{+9`@{6rBo% zGQoVdouX_g6I!*lO533DG{07^sIO94u}*|epwg@8q;yb}c7=|dLg{R&)T&>%jYkA_Z;UhzkR$(GojaNk&ZFyr;4bD83a i*tLde!VmI(Hk;0+{M_VB{9q(U%lGKW1jYGybIpI2DsGSf delta 984 zcmZA0J1k^T9LMp$^?vLc!&uAUdOs$*34&xoA)&C@h)R@1frcnd+vOseX|;#uHix_ z7T_=z<9Adhlc<5GUA*YxRczq;Cg$UzyMKZc#J}D32x;nmE#_hiPEq9;-utAq9ya4= zbG4bwediALaQy(g@c}iV>bgutnz4j9=Hgz|{RAq35v;-q)N>2?6_ZHvmO@`M+v7x~ zJ#e04AMrUR@D-V?4N$i>97C0M87nY}N?;55*&YXyw@c(zyFpFtAL@VJTwLI>{+dbH z%iL&0tyLFlLk^-!KaX0PB+lX*>iS>j3u@p()`Q9h<<`>Z88vNGO;k;l(O9a8_FwQ~ zJEu)_DjYPAqb8y(nQTxtZAvw5)(*NhrLyD0uon7zYjh{7fHs_(s-~|)RZu0h-?SH^ v103|FDcg@tl~L=Yx6-wiDsweGXz4%MGbO3fP&~a6S}IKyd;RHguQKaD_2o?& diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.po b/evibes/locale/nl_NL/LC_MESSAGES/django.po index 77bd412e..2f0f4e83 100644 --- a/evibes/locale/nl_NL/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Versie\n" "Huidige API versie: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Dashboard" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Gezondheid" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Config" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Gebruikers" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Groepen" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Producten" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Categorieën" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Merken" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposts" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Periodieke taken" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Taakbord" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Ondersteuning" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Snelle links" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Gebruikers" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Groepen" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Bestellingen" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Producten" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Categorieën" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Merken" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/no_NO/LC_MESSAGES/django.mo b/evibes/locale/no_NO/LC_MESSAGES/django.mo index 372a13958221d6cbd85f1399d42290597679e423..feae483b4792cf9effd645e5e2ff71ee51104ae9 100644 GIT binary patch delta 1095 zcmX}rOK1~89LMp$ri~g?6XUC<)vRr`zUrYU2$F-Xh^VC&sn!=r(lsuL3FL9`VnM`% z*HBR}zAhf53cU!P6j6^A1ci!Nyp-y}gC`&0_m>R*$?RumW_M@iKa=P6g(4^i)bLcO)6&~+Tf4mwWZQmo-}yyCopTG>t1K=)jI%GICYCfZ-)5}bGaKX8=#FV}vI zWvhP-TN&TZb90WgU%(eE@l~QZ`Eu74xV}|4EU5rL^5^zSxCi$@)?4gQypWT>Ug^fN|7etD+`+8};0M%;FSk z;Mu!J-@K*I{m_C_Ig?nJbiPg;uD4g#LlO6h$9JE9QtaLgzrCY-tM>I^Ei5 zMW{*Rstj1Fo_`|9_!Vz@CUhhk9xjjjqfNEqO{o@ zvu?};I1oocv+*LcZ}^gaq|_{oEm(zJn8XomzwY>9(PzKN>r0jiSUk)qfy z*T0Fg{>tdiT?izy1BOtWDT;;lPTrrL0dW||UG6\n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Versjon\n" "Gjeldende API-versjon: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Meny" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Dashbord" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Helse" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Konfigurer" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Brukere" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Grupper" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produkter" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Kategorier" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Merkevarer" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogginnlegg" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Periodiske oppgaver" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Oppgavetavle" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Støtte" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Hurtigkoblinger" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Brukere" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Grupper" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Bestillinger" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produkter" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Kategorier" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Merkevarer" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogginnlegg" diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.mo b/evibes/locale/pl_PL/LC_MESSAGES/django.mo index 478e4c75fedaf0657b5d1ebe03a6388ea4e636d0..84e7e1b7b8b510851dfcdf744eb466d3c1ba9576 100644 GIT binary patch delta 1095 zcmX}rOGs2v9LMqh_?U9CoGg2&*)7vvI=JZJMu^5*R8|t2QG(8N%gf|U_#kxAP!vI{ zz;xY%Xj3klO@u*^)wWzjL`2~xET~1R-1Pm;9Q@;%&pqdO?m6dw&smJmwP(LpmP{Ja zOsS>Z2${9vuOfbkZ^dS3BWB-m4fVEFW>M_Kb(p{%IELHs0hZxA4C4o6xP5Z7%ZsPSJ=;})<47f}mWBU9O0 z+>G@YW`2vijw4t@#~ECXqqqXEI&Y(PHieq#o~uv0`g7bu`&(RwKV1JG?4th9wV!0$ z>hHl)=C?i`dP(~QoMFb)kxwYoxzr%)?@iZPtQ7W|1?P%Yaj#YR-U3CnRG@+ylX zueNSvhz+>@TbNx>!(ASC9d7;C)31PSENGW;mjcTgFdL^f;p zQ44*BYM)27|3+<)bY=6Yt|D)ICaXj3Am(gE4Ls=T$59LJL4Etns896>m7!_u!$Vm)wjY&|Ll{E6L-XkTEkz?w^yfndMrT2j>o6)in<&bL4&iQ!cHBT|qSR9qJ1M#q z3hj_}*e;4b1If#$Ux!(XQ+S$RD^n=-3S~k!qKLAcqG+b*dg-$$bmbIEXLbImkO5s` z1-Er6lp%|p_AezfgT6PC@kR!G&+iTr{;-#OUwpJYd}8RlKQug19o-x091W5w?^uvd rWz=!1vxi9hdSt@=&T4%3R(RAuE)hg&i$Ony(j*i0e%FMG<8jaj= zjpg`^AuOnT{i6tKp*U)xgzFDsf_@SQa256ZZ&ZLMn1|=6z%P-d?H)g1*6({}VeSqy z(2GTw#8R9@Ws*WIyx{s@UH?0_GX4__@t2!Fz-ju&ZahSqns3H@?8G^CIfh3b|FltU zR?9@P<#kI_s7RNv57)3C_fY}eq87Sy{YNaLpGB6kBGO}R3nN1oN6n98J$^wYw1}P- z@@VLRbyTF=IE*`(#2eHCT~RZBmf)hToks1{ERw9HQGqVI{w^x9L)6Zmp%S=o-bQ)< zTHwwNJfR{Cu&;Wzji?7FP&+b%^O(j4{D;cq1{L4~22e@R^yk1os0u_y|ED!|zs{e3 zsJdykQ=2tLiBffFlqJdgLFrJc=&<%sbttvHd>GbAeJgFQp&e1sDqU249m?K+HK?7B weCDDrEk=D`IG}#%<@%ATjP-t-sD8;@<)+Iv$AXE>k6\n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Wersja\n" "Aktualna wersja API: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Pulpit nawigacyjny" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Zdrowie" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Konfiguracja" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Użytkownicy" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Grupy" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produkty" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Kategorie" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Marki" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposts" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Zadania okresowe" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Tablica zadań" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Wsparcie" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Szybkie łącza" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Użytkownicy" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Grupy" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Zamówienia" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produkty" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Kategorie" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Marki" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogposts" diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.mo b/evibes/locale/pt_BR/LC_MESSAGES/django.mo index 7e2e2572b7577837304e8ec60b17010b1dbcf1ed..1d5847f59d6b497f846250cec08e639864f4de5c 100644 GIT binary patch delta 1090 zcmX}rOGs2v9LMqh=s4CmIg?qYz3yaI_OOjYn*kvs$|5D~K?O3-%`TP`GtMH2X43=Q zv>0*~(F1}uZf4^)CX6;w5MdBe6cG~CqKyU7_cwF!4`)92oHO@4{^#7c15XYXKemML z8nKtMk#Zwsmck!({1Bh&&CW*6KI0ndsb;eT4&ypZ<4(Ma+wc*t#1|OBH^}R@;Obvo z|01q7E81@!+WA8yZng?NT#G%Zi3U&uji3fP=j!9wOMMde<73qOA5iZtVi^CT7OqC7 zvR2%Jofu($JK#Ew;08L*;0i2Y6JB>tqjolfn&^S6&${{?CTX9?M*Qyjf8hxAKdya< zZL9w@HZZ@9@^GHCU%+t8?0JhBi?)}WYngbDt<-Fpq5p=OY6JiP delta 984 zcmZA0%S#(k6vy!s6RoY$j5wLsKn2asqH^L$6FWs zW)0lkz(6OK;|NyZ7-}Us)Wp+4{4t0ZF~#^QKER*B^(~wvJ_yF+EK}DTu@qbI9aT9B^w^|$Nt0Fz9iVUDuHj28Q!&-cg+LEPU{0H*0 zeGZzxfW9WWz+zFd#pm_I?37@e`_adq}nH7^mxMS)bz1-&{Zj|jz5N5HMm9&uCe`YTNJd> zwG~QI3(@zcZz0jgp@g2M-)}0FnkvysucK>!pV3{*Uxa6(>sc?8U-5o>>l3NI{6?xg FbO-q6PEr5> diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.po b/evibes/locale/pt_BR/LC_MESSAGES/django.po index d926a207..ba3d8342 100644 --- a/evibes/locale/pt_BR/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Versão\n" "Versão atual da API: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Painel de controle" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Saúde" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Configuração" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Usuários" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Grupos" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produtos" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Categorias" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Marcas" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Postagens em blogs" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Tarefas periódicas" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Quadro de tarefas" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Suporte" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Links rápidos" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Usuários" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Grupos" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Pedidos" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produtos" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Categorias" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Marcas" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Postagens em blogs" diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.mo b/evibes/locale/ro_RO/LC_MESSAGES/django.mo index f7d93126a99d62e05c69ca80981619eb416676f9..ac629c22aa7ec1cdfea4886229af79f3efd99632 100644 GIT binary patch delta 1090 zcmX}rOGs2v9LMqh_!w;(b<&=edT%~@T116zq@Z+>g}QJmGAQ+y7i*LmXVIo1h!znP zSgl$_Zh|0!S=6FM3(+<~Mhh2FMg%1VEn3;8?{DVdAC8}U&hfndbIy(K58b)XwPg>C zXs2wW+>DrY;ja?@5KE}9- z<2tjP{pDi|{}8P)t3nSq;6Bts$59gvq9z)0^~-pOdI~#n1~vW@YTPoG;Xl;I)yPt| z9-FWkqpWYoT*nFAO2=8O#4N7G>(1M#lRZQ&^w`y(yZS5iX`jOi{Neil;2`xC*WS;u z)qe)dS>G=3ah|ka!g$+8e{rBK0zExd>l+@S`doucQZ^eOb@6iRb_;j4IJJz)i}bv1OE zEp|G%GBR;B@TMlbsjAU{EEg?SK}oncj{f@NAwabJcuMFHfmvtplDJ^2r0C&5mbbPumrJC zyGX>&!ZZp2$tfrnf?%qv)WSv^(aJJKKm`BK-q<+Y>~CjwcJ_T|=Jvb3cljq3c|VPk zq{gV@A+uMQ$>BoT%rzUlYqo{=Xh%xTJZ!@I_!6IDFV^7~EW#x$z!l_mTXXGg_k0)2 z&3wyn^N;~2Sc3mCf(2#S55-UuJx5KHa_tUG(eB1J{EB*i9Tng%=HUS<@FQeuyTDq! z4BEa~l+jT-nz0bOu^8W>G8sfoJmlJAuKf)Y^v~fP{Oz7^-~jC%*B>EGJ+H=mtjCY6 zauUOS*leaE8{tBYStSEjQ4#Op3p~JQSWMUotPQmyou~lcy8Z!FhM!UMjH2F~Mm}MG zke}^wd4Ol=E3zwYw6yv0tR8Afqxc&8kznlyD&t?MO#Y(IKn6+HPEjBDhZu6MHHk; zBUS$nZI=?!dD9BU+PUOVlhoUV0~(ZOt_{>Gs`l{_H7M!h+~M$ikC#f%dVAjd`^1~{ Ia-t=44R)wbQvd(} diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.po b/evibes/locale/ro_RO/LC_MESSAGES/django.po index 5147fbb4..e41747e7 100644 --- a/evibes/locale/ro_RO/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Versiune\n" "Versiunea curentă a API: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Meniu" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Tablou de bord" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Sănătate" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Configurare" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Utilizatori" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Grupuri" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produse" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Categorii" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Mărci" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogposturi" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Sarcini periodice" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Tablou de sarcini" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Sprijin" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Linkuri rapide" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Utilizatori" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Grupuri" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Ordine" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produse" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Categorii" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Mărci" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogposturi" diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.mo b/evibes/locale/ru_RU/LC_MESSAGES/django.mo index f415534c4f0fd0a908fdaa9c71b4818ab2973bf3..5758d9dcbfcc4da23f1dedd4c74dc44be9057a45 100644 GIT binary patch delta 1108 zcmX}rOGs2v9LMp$sbh|2lUb>~Ze@?L2Q3nUFpz>ED|KNO6`13#2Fn2-3pYNhRYQxg z7qn=oO+iE;kuPXdwrDdKLR>@?ZA^+ z{sOKr8?xVYs(2u>+-wJgz zpRx+vh+8ni_wA6oaTM2b<1{YCek{R3=MB`#?xH@FapUK1JdT^VK7&O#@9zJ?R>ptb z^=6i>`=_vw?^`>abCmr8PL!LyAykpUtz?P!QHf1sBhFzn)@;jFq#sKe4 zyFP(oVz`&<^Qg*IZKwXVbWYIG0|Tgu9w52c6C`Py#1y{AYj}VS*Liu3NAL%#Vs-J{ zJO@!FZ%57Fhnn{xGKD?EUHBnR{dFUcr?kQ{)S;?HmAChHsEd4if2*t ze8Z>s2dgo&Gv^elBC|-LZ4FUO==?1S~kG+l0+ zrj-{8cpLv=1j}oS6Gc%2^`Zt!`SviTXpiD!e24me54FG}EX7}_h5tr|wllno7p@(c zwexm69SN+!QLMt}sGVd`1JC;QTi__wg0&@4i36Huby%%P@vhL^+B1 zpx*2wRS|d=Gkbtjs0FRy1a9FZo}wZ!@X)LpN03kLCAQ$K?_Wl@Fzlm0i;7eM6WGvQ zeEtLj4fL8D7GrbBqAkFA{DP~f1MY=29K&5yq|Q+jh2q5!$50dWBcIv~KEltadGe^7 z`H70?Nu2Z7#D9FpB`S%k809JUp?0`{8sGzN<5z6MA+lDcQ4v@`BJ0Afg=rEMP1@-0 zibt!(Ydqzj3n?3Mq3>{=W}T>{Q35GhnyE@k6&)4pbV+#!`7w->xi0tpog%4(Q&BXu zu}Z2otm7@CMu)iQPh;W#6%y1HHftQ6+o7VN9lMe{3B9S_7!Rj%pTbS88`=1DE}8gI Fas{!FQEC7H diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.po b/evibes/locale/ru_RU/LC_MESSAGES/django.po index 75d99626..72be4d00 100644 --- a/evibes/locale/ru_RU/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Версия\n" "Текущая версия API: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Меню" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Панель" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Здоровье" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Конфигурация" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Пользователи" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Группы" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Товары" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Категории" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Бренды" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Посты" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Периодические задачи" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Канбан" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Поддержка" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Быстрые ссылки" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Пользователи" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Группы" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Заказы" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Товары" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Категории" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Бренды" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Посты" diff --git a/evibes/locale/sv_SE/LC_MESSAGES/django.mo b/evibes/locale/sv_SE/LC_MESSAGES/django.mo index 2fe48c715cab851abe4419f85c260958367644d1..d8a6c3dbef55254a996de280f4f9f857da122e82 100644 GIT binary patch delta 1094 zcmX}rPi)I!9LMqRtm~+5s~Kb1e$1cwQzsG!%aY>4geHc?$lCeYn%1vL+Z}e%M8v_h znWHRJ;>2MWOWd|_aUc#HM2JYFL1)m#A2fSu01qu zM4YyncB8?pAHS~Pi+JB?b|GT+0oT&+Z#9cy64zrI`)~@k<6T^Z&oGQHk=N~w>wk35 zYq-X&Y`?hJ$PdD8W-aL9I^2(%=qPHSA=E%4u0M_k=m&TR@1fp*i+ZnyA*`bouA59{ z9oU1t7-oJu;vO8wO*|OJl{ks3@tX4%Dzn?DiDq2?q3b`!t=xZ#&G^|p|BgfS|G4|7 zNn6j)V-xe+C>Iwg`xRUy#f5e=KDMxBY2~j`{V%v1|6(upb(=+T5LKaJRE0)eKZ_)9 z1yo|!kyq^wYU`e0xr>WeT&U#VP%8^j9}N^m4cv(X*p0{V5_Vt}_u?F?)Sr+ft%l@c zb>w3$-csq~sP_(|7LxR+ze<|thBBE#?a@ut0;XMm2KBo~s7lP?PJE6{_!G4yzwrz< zvk%(35$6PIyb?BGCr#t&|F;|(aGUGt52KQ45LHHlYsIRL22$3_cn57CP1~W+_NcT9 zWy*ZEho(iV5)}A}V)BsrNG%X)*EAUk_9 lcE7DP;TKEu)m$#f1mmefVCkUPso>IfacEs!b#W3L?Duzby7Z8f&pr2Xa{j+_^Emo`)W53A+cR1(Jw{*6 zF&o5-T)t>0A+z}svoBc9I9g#A#%`>|0qnvT*p9EU7!R=kKOm1=+Ks=u>*p9T^X-Cz z25z{*a=gbV7F1?`D2AHoDQcpm8;@X;@i;!mH>l^2Q42iBJp6@P_$4y6-C#351Y_T< zk-Hl?(St=ej-@z_s$?ED@hdl8apQGt;ruQZ;wN|gGtM$Tb?2j$sq1mf#{@2raxXsm zl(b!C#>ckf*_9rk#%b)vZ`g*nScZ|NY$8plL=tY?hZJS~sDdVtN9-kPt2Xfo?xPaU zps$sE=RgzvKt=rJ3)JTCJK#*Gr=+DZ=XLicC!}tF}c+5s-!G3Hra*>JF5Qic{;Px6@Um zlG665u-Fh^`ll(@|C{zwt%t5O>gh^Hdl\n" "Language-Team: LANGUAGE \n" @@ -229,54 +229,62 @@ msgstr "" "## Version\n" "Aktuell API-version: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Meny" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Instrumentpanel" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Hälsa" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Konfig" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Användare" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Grupper" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Produkter" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Kategorier" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Brands" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blogginlägg" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Periodiska uppgifter" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Uppgiftstavla" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Stöd" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Snabblänkar" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Användare" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Grupper" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Beställningar" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Produkter" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Kategorier" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Brands" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blogginlägg" diff --git a/evibes/locale/th_TH/LC_MESSAGES/django.mo b/evibes/locale/th_TH/LC_MESSAGES/django.mo index bad5ee603e933ded37383aead11ee28e339302d7..7399a0f22d86a1192602ea124caa04e107365f4d 100644 GIT binary patch delta 1117 zcmX}rOGs5g9LMp$uUnet)vWCH@RYr*d}To!Yf(XDWp`m36@+?9(X_5gv`GY|h-{G+ zv?>Y-gbKMuN7@ub5^an&Eu@aPDQOYW$_V=Y&OJDA?q~ip_sq=s&&==EX}AAtVdh<< zl=H0N8B8;)#h>Z?Q2Y$DQ#occxQw`VsaX``xB{DTD_+5k_z1Ic5+nEtdELH*@od;X zhXrQ+_J_(U{t(GG%R>j3V+CrW1E_%-Py?L~dWq-CVCjg&%)Tl^|ZgoMfg4J|Ah_2^I`jO zK3n}wn8o~dmdY8@eh%NPG<#QQRzv&HHnU2cz$*NKjTqZ*)`+m*e0pnPPpHbudLoG1M*BrvKD)O(CCuoqjP={~~i*ORx;&d3#V<~ZdHQR(WsELMA z??1;G{D^t@bZ5%fs0Dn$G$hHvR_gpMl+DyOgpm%62GsuRFlsO@MEj;gNXCQ1wF${) zuqX(=R<}Y$AE3ptYr*6tsO;!4D+?-)=2z-evQh+Fpc|nZsC`l)^TG8h2%^-LQ#Hz? zty0nHR`yi5tqVnm*>W1)&X(>AuG8D?^tQQ8;{K`hnadM{AvB}g-ZFH>3q#}bzWERFOWC)Q6(uK6@YhmTAQF{duf0 z%h(1tbv&?(Rd|3QEUPYjD1sU&h8ig0;(kmJ4`3g@K)wGFHNiZV;3jI~Kainq52JYK z#Tl~(o^GI_1Iuv$EATFAB_pVT$6Wlx#jmi5_8B~e?_B>U9420K?ID(_{zfdtRvcxQ zJ8?a8%ItN}>@pq64zq5Y!Z^OiH2%g%c$G8K2bYjn>?@weZP&i<;@XR5L$t>*g)gxU zzvE5(i`uy>G4`KbunBJJaS}D~JkH_@E@E$2VS-!OPwZ!wm6*gcm_|+PIkw{hYGQdD z#Gj}gZedl*v0GS+qjAo^k(Ys3=kOL6r)sj#&#({&`8I4AzG=8I`kCC5;j&O68Qiqy#TnwMr$WR?m-Nt<CHJd%yfT{%By!V% SXVGjhK9!w|g>(6MebGNCPFBAF diff --git a/evibes/locale/th_TH/LC_MESSAGES/django.po b/evibes/locale/th_TH/LC_MESSAGES/django.po index 4d63b8cf..1263f64c 100644 --- a/evibes/locale/th_TH/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -194,54 +194,62 @@ msgstr "" "- ภาษาที่มีให้บริการสามารถดึงข้อมูลได้จากจุดสิ้นสุด `/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:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "เมนู" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "แดชบอร์ด" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "สุขภาพ" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "การกำหนดค่า" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "ผู้ใช้" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "กลุ่ม" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "ผลิตภัณฑ์" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "หมวดหมู่" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "แบรนด์" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "บทความบล็อก" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "งานประจำ" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "กระดานงาน" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "การสนับสนุน" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "ลิงก์ด่วน" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "ผู้ใช้" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "กลุ่ม" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "คำสั่ง" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "ผลิตภัณฑ์" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "หมวดหมู่" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "แบรนด์" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "บทความบล็อก" diff --git a/evibes/locale/tr_TR/LC_MESSAGES/django.mo b/evibes/locale/tr_TR/LC_MESSAGES/django.mo index 43f2d03c041fd7a03fe67a791e74f61c06a06299..db70dae6d8cc159df78e20882bdc52cc01403be2 100644 GIT binary patch delta 1102 zcmX}rOGs2v9LMqh_?T)mn{;|E(j(ef;I+YZ33%RizuayNQ;UfNQl0_nS*~g^Ev0_W(F7V8+d)tH5`8&_j5ZpT}=1s~%we2YQ+fIM!W-1wWj zKaVTTa`v0fI{pw`VYVDST!nj43$>#rilHXD=*HJ^KjRc0!Y8QbKck+T#|m6PC9aDs zWf9zjjTmHoJLYb5U;{ULa48O972bBS{vR}imtXQZmm3Dk%Df3szvo?)7rWt1q+hB9nib}W>m2eET(>OAv z4WKr52lf0zjNm)Wsr0jS*5CpvvpTO->IT%rO?U+NVHc)R6Hg+!*hj3ypQwfZpcV*H zj?LJBO6)M|C^}FHU5-+Jm2{X3I`a|KP9M1OQ&g#6<64|{*XQs6ARwXWX3#b~0({bDFfWvHx`m?qyqQ+4zb?xN}C+Dh9^YosZ5(DYR( zQ~~m{oit9g_|mCbN?4mwcv`=@*e#V%U7e|prHrkoPp@5@hC2Ty0N`kBGe`fziodnnP@?{y|p x{S&9cFTz!45(Du}VrneuXGY7SEs+z2{BW|6_m0L3W65|bTgWHl6D`q$f&YF}a^(O3 delta 984 zcmZA0J1k^T9LMqh7>`|R8INHx9^=hKwL`=b%_31O3WbQuBhjKFo2yZv61&+%BU_Lt zB$7dhO^B96p_yjU+if;mNHo5`J4fRr|M}c=&b{aS&;Q=J?)~@KyDdonZnPK?A?5>S zpYSS;AKG!yY%JUC1PkehbIn57jK$cAO*o8oxPWhQ3o~&SdEEA0|J2Q2V7{4WS6q~G z!!5qYM+{?TUTUKVYN1xtLUGsc!8rXs?7&6T^9QH|FEAZ%P>CmzrR@(^;gjF@%*wgD zoPid6gMIi82T>;(LoGbz`g5-T6{C!=VHWPW`9mC`f9A%+98>cZn1S^;PL*SL=dsgD zL8_E9m8ndZkZ0{1w&J$)21(iiq_0HtQHhqJPS${|X>F(j^`oAjz#?2nReA?Y@Ekp5 zmgGXEy+AJ1;$PSAXE%+Hpc0wD0P0ZO;?IHqp(;T&RZNG> zQHTBglQ(f$OH^o#R!!&x`hX~cUoK^=rV=(2N=((@k74!1OH&2ZbW$ay)=22zp(^MV zsVb^qq>G<4B1XJ!de>?#L<6A;@u^rD;kU%^;B?N$Kq#JA4IP9w2BMvb&1hTT8QZ~6 AaR2}S diff --git a/evibes/locale/tr_TR/LC_MESSAGES/django.po b/evibes/locale/tr_TR/LC_MESSAGES/django.po index dfe41e3d..19b70307 100644 --- a/evibes/locale/tr_TR/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -230,54 +230,62 @@ msgstr "" "## Sürüm\n" "Geçerli API sürümü: {EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Menü" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Gösterge Tablosu" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Sağlık" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Konfigürasyon" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Kullanıcılar" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Gruplar" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Ürünler" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Kategoriler" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Markalar" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Blog Yazıları" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Periyodik Görevler" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Görev Panosu" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Destek" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Hızlı Bağlantılar" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Kullanıcılar" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Gruplar" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Siparişler" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Ürünler" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Kategoriler" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Markalar" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Blog Yazıları" diff --git a/evibes/locale/vi_VN/LC_MESSAGES/django.mo b/evibes/locale/vi_VN/LC_MESSAGES/django.mo index 36701e6b338135604aa21e6963940d5492b3b2b3..9636c3caacb3745df3766d7564486c48aa89ef85 100644 GIT binary patch delta 1099 zcmX}rPe@cz6vy$Sj+2d(%}m-KvwS)BKO>?d2sagkWq(|l**{8~W`?OJ=(w;&5=2Fd z2qae#R*S$zMYf0#q7;KxDFjgw4Q)aSf?Cz4@9)i}!`%72`|i8%o_pSV*IEiKgP#+j zTShd|>S&is%$o6gDSyP5GP7e5vjQ%l-&|!D!!}%qUAP7Zuo3U!TzrjToJOYGd)NQ! z#%D2ZHfX;&Si%M2`DXLb!y4R(T4*=wM(wB@9e4dSZlUkvcD#?8{|Pm37DMeNC0=x1N9}AFwa|#`KXml zRdR(kLcweujVBtsbjvYJ(j1-D!oFP>x(F*sl19N8p#J$QeU5(LS?QEj*2_f zC#)zd68!6Bwn#_nTzAj;l$Y=E@|l#EI-KoF^?74&%l1XX2Yb(?di#cIV_PF_{n_rE y*P8WnWBX%Q5|xuTr|$Y*W@5xo56v_jh__}ZMtv_=c>W^q`I*yxW~@G$E%^s{l5yGq delta 984 zcmZ9~Pe@cz6vy#1&SZZaZ5*3YXSB(ercOb~1fqfIE*X10kn^b=KPF>J$|*oCb)ig)ofUd1&m$1lk5w(j~{?tKZX z&3xPCrj8E|u@e7c0?V(TO_V|n^Z+$b*7bWaOMd`6@eS(#Z>R)I7{NVM;`_+Zc7nI@ zU(ol>l6;-yK|5Z-0j$6g)Jk%wfhS#m#`WLg9iA`aW&G;if5#{Ef4JufmZ|p*cnO>fTweK(7$%sjGK`+yzz3HALRdU%TZ zzJ`t#m_{w&k;nckvwj|E1!Jg6JjZUFLnT&3?cp}g<8RaePdRaN8nw51457+R&Ovez zR7Df3X&!B}64Ln#CeR6HOl#0HTAI*=5rXR5EkcJ8U8GQ`EEm8rE8+DBD}qhj?$&\n" "Language-Team: LANGUAGE \n" @@ -196,54 +196,62 @@ msgstr "" "- 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:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "Thực đơn" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "Bảng điều khiển" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "Sức khỏe" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "Cấu hình" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "Người dùng" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "Nhóm" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "Sản phẩm" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "Các danh mục" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "Thương hiệu" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "Bài viết trên blog" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "Các tác vụ định kỳ" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "Bảng nhiệm vụ" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "Hỗ trợ" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "Liên kết nhanh" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "Người dùng" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "Nhóm" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "Đơn hàng" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "Sản phẩm" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "Các danh mục" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "Thương hiệu" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "Bài viết trên blog" diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.mo b/evibes/locale/zh_Hans/LC_MESSAGES/django.mo index 14ab8d9a814cd819c79e9c5bea4a5e1e00da2b95..41a136ab52f10dfebd4937d24b4a4279f746f2a7 100644 GIT binary patch delta 1088 zcmX}rOGs2v9LMp0sZ-s?noN6GGu^U>*_#Sl=qZd1j6HeLfG;RGHaX&+H>Er`)*2EP)wZf$dn21Go`GT!hashOdz3_QsVzyZRz7 zGaIzuysYMj*iy4f^sxqaq6RvI>Zldf(K%PXg!?FW;Q_plYX2V9u88IM4>fUpWGJh~ zby$Zn#ARKgRWZpTq??BEDh<@aex#^BgK-={P4K2Obl)dX5qj=??R<-x@D!?j5$W1y zonDgoGo~eZ(GR;&9Ua7KY;xr+>U^}}UK~dK{}i=VFHr5ixbNRk{r*9P+G7=}Z$P!% zgPKS>Mf_EfaTQryMLEDI^v)sYC~6Nw+>MV=?LVPbTEJ%fg*q!~Mwf?C|D8YrZ7a$8 zU*~TwZRTx*E9t-})S84=sQqR!(Y~p}ZDbv;P2}z5Iu+fds4cy|sDg3%#3agT?oDyfsYNNMOWZ2p$aa-q-4zqcuf-4=} zR|CJV+wZ#^_`%6sd(i8Tzbrcvj~(y15cKrsYZLpuOnKs3o2rFYVW8w7h aNd8B%K0f{AVd47SLVn`wod@}v)a-vBWN*0u delta 983 zcmZA0xl0^j7{~F)GsbwVnl&D~tMQ1(B2lu1L|HonrVte?3qdgc0kKkK3PFfk1cneu zk)%ip3sKNOLJ|aP!NNumEvy4JB4RB3{>I0~7oPddd(3;!QFb*OoK)t2FjAUG5VJXE zeYls)gY+}cY@*og7gmvvmzl+|1FP{Rw&Mu4;2b{0FIb3c$mh1{`QKi@ixp;p?eS7e zgA**pON?V-`RzanR7YK?jxwGfzzq38?8SN1_uHrm?qWV3peBBZbZ!5z0slw&z^tCu z^%Qhs5f0)b97e5V0@d-f=ihpM0iRO7f)8-r>wn-l`5iBhvrN?|u>f0fl3h;YyMPf^ zDsKmhv;Qd?G++s4Q4@RZ&UpDEYDeC?AKlNW34cd@zkzgZf82d!Ogr`Za}3l`PSWf# z7NPPhVcHCMao(Gfa4449T8@1!4SP~;;dJWa27lyCq5uE@ diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.po b/evibes/locale/zh_Hans/LC_MESSAGES/django.po index 41331168..26a4b480 100644 --- a/evibes/locale/zh_Hans/LC_MESSAGES/django.po +++ b/evibes/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-15 17:05+0300\n" +"POT-Creation-Date: 2025-11-16 15:38+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -227,54 +227,62 @@ msgstr "" "## 版本\n" "当前 API 版本:{EVIBES_VERSION}\n" -#: evibes/settings/unfold.py:62 +#: evibes/settings/unfold.py:53 msgid "Menu" msgstr "菜单" -#: evibes/settings/unfold.py:67 +#: evibes/settings/unfold.py:58 msgid "Dashboard" msgstr "仪表板" -#: evibes/settings/unfold.py:72 +#: evibes/settings/unfold.py:63 msgid "Health" msgstr "健康" -#: evibes/settings/unfold.py:77 +#: evibes/settings/unfold.py:68 msgid "Config" msgstr "配置" -#: evibes/settings/unfold.py:82 -msgid "Users" -msgstr "用户" - -#: evibes/settings/unfold.py:87 -msgid "Groups" -msgstr "组别" - -#: evibes/settings/unfold.py:92 -msgid "Products" -msgstr "产品" - -#: evibes/settings/unfold.py:97 -msgid "Categories" -msgstr "类别" - -#: evibes/settings/unfold.py:102 -msgid "Brands" -msgstr "品牌" - -#: evibes/settings/unfold.py:107 -msgid "Blogposts" -msgstr "博客文章" - -#: evibes/settings/unfold.py:112 +#: evibes/settings/unfold.py:73 msgid "Periodic Tasks" msgstr "定期任务" -#: evibes/settings/unfold.py:137 +#: evibes/settings/unfold.py:98 msgid "Taskboard" msgstr "任务板" -#: evibes/settings/unfold.py:142 +#: evibes/settings/unfold.py:103 msgid "Support" msgstr "支持" + +#: evibes/settings/unfold.py:110 +msgid "Quick Links" +msgstr "快速链接" + +#: evibes/settings/unfold.py:115 +msgid "Users" +msgstr "用户" + +#: evibes/settings/unfold.py:120 +msgid "Groups" +msgstr "组别" + +#: evibes/settings/unfold.py:125 +msgid "Orders" +msgstr "订单" + +#: evibes/settings/unfold.py:130 +msgid "Products" +msgstr "产品" + +#: evibes/settings/unfold.py:135 +msgid "Categories" +msgstr "类别" + +#: evibes/settings/unfold.py:140 +msgid "Brands" +msgstr "品牌" + +#: evibes/settings/unfold.py:145 +msgid "Blogposts" +msgstr "博客文章" diff --git a/evibes/settings/unfold.py b/evibes/settings/unfold.py index 41311357..83e4979d 100644 --- a/evibes/settings/unfold.py +++ b/evibes/settings/unfold.py @@ -69,36 +69,6 @@ UNFOLD = { "icon": "construction", "link": reverse_lazy("admin:core_config_changelist"), }, - { - "title": _("Users"), - "icon": "person", - "link": reverse_lazy("admin:vibes_auth_user_changelist"), - }, - { - "title": _("Groups"), - "icon": "people", - "link": reverse_lazy("admin:vibes_auth_group_changelist"), - }, - { - "title": _("Products"), - "icon": "storefront", - "link": reverse_lazy("admin:core_product_changelist"), - }, - { - "title": _("Categories"), - "icon": "category", - "link": reverse_lazy("admin:core_category_changelist"), - }, - { - "title": _("Brands"), - "icon": "copyright", - "link": reverse_lazy("admin:core_brand_changelist"), - }, - { - "title": _("Blogposts"), - "icon": "newspaper", - "link": reverse_lazy("admin:blog_post_changelist"), - }, { "title": _("Periodic Tasks"), "icon": "event_list", @@ -136,6 +106,48 @@ UNFOLD = { }, ], }, + { + "title": _("Quick Links"), + "separator": True, + "collapsible": False, + "items": [ + { + "title": _("Users"), + "icon": "person", + "link": reverse_lazy("admin:vibes_auth_user_changelist"), + }, + { + "title": _("Groups"), + "icon": "people", + "link": reverse_lazy("admin:vibes_auth_group_changelist"), + }, + { + "title": _("Orders"), + "icon": "package", + "link": reverse_lazy("admin:core_order_changelist"), + }, + { + "title": _("Products"), + "icon": "storefront", + "link": reverse_lazy("admin:core_product_changelist"), + }, + { + "title": _("Categories"), + "icon": "category", + "link": reverse_lazy("admin:core_category_changelist"), + }, + { + "title": _("Brands"), + "icon": "copyright", + "link": reverse_lazy("admin:core_brand_changelist"), + }, + { + "title": _("Blogposts"), + "icon": "newspaper", + "link": reverse_lazy("admin:blog_post_changelist"), + }, + ], + }, ], }, }