Features: 1) Add new email content translations for ru_RU, zh_Hans, and ro_RO locales; 2) Update "balance deposit" and general email-related translations across multiple languages;

Fixes: 1) Correct inconsistent formatting in translation strings; 2) Fix placeholders in email templates for better accuracy;

Extra: Update `.gitignore` to include `.env` file exclusion.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-06-22 20:18:19 +03:00
parent d9e50c04c1
commit b92e7e28f1
88 changed files with 5339 additions and 5796 deletions

5
.gitignore vendored
View file

@ -160,4 +160,7 @@ cypress/screenshots/
*.tsbuildinfo
# Environment file
.env
.env
# Development stuff
test.ipynb

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "تفاصيل المعالجة"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"يجب أن يتناسب مبلغ المعاملة مع {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"يجب أن يتناسب مبلغ المعاملة مع "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "الرصيد"
msgid "balances"
msgstr "الموازين"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "تفعيل حسابك"
msgid "balance deposit"
msgstr "إيداع الرصيد"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "الشعار"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "مرحباً %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "مرحباً %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"شكرًا لك على تسجيلك في %(config.PROJECT_NAME)s. يرجى تفعيل حسابك بالنقر فوق "
"الزر أدناه:"
"لقد نجحنا في إيداع رصيد حسابك في %(amount)s. رصيدك الحالي\n"
" رصيدك الحالي هو %(balance)s__."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"تفعيل\n"
" الحساب"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"إذا كان الزر أعلاه لا يعمل، يرجى نسخ عنوان URL التالي ولصقه في متصفح الويب "
"الخاص بك:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "مع أطيب التحيات,<br>فريق %(config.PROJECT_NAME)s"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"جميع الحقوق\n"
" محفوظة."
"إذا كان لديك أي أسئلة، فلا تتردد في الاتصال بدعمنا على\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "مع أطيب تحياتي، <br>فريق%(project_name)s"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "جميع الحقوق محفوظة"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "مطلوب مزود للحصول على الأسعار من"
msgid "couldn't find provider {provider}"
msgstr "تعذّر العثور على الموفر {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "محرك eVibes"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | إيداع الرصيد"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Podrobnosti o zpracování"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"Částka transakce se musí vejít do rozmezí {config.PAYMENT_GATEWAY_MINIMUM}-"
"{config.PAYMENT_GATEWAY_MAXIMUM}."
"Částka transakce se musí vejít do rozmezí "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Bilance"
msgid "balances"
msgstr "Váhy"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Aktivace účtu"
msgid "balance deposit"
msgstr "Zůstatková záloha"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Hello %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Ahoj %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Děkujeme, že jste se přihlásili k odběru %(config.PROJECT_NAME)s. Aktivujte "
"prosím svůj účet kliknutím na tlačítko níže:"
"Na váš účet jsme úspěšně připsali %(amount)s. Váš aktuální\n"
" je %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Aktivace\n"
" Účet"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Pokud výše uvedené tlačítko nefunguje, zkopírujte a vložte do webového "
"prohlížeče následující adresu URL:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "S pozdravem,<br>Tým %(config.PROJECT_NAME)s"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Všechna práva\n"
" vyhrazena."
"Pokud máte jakékoli dotazy, neváhejte kontaktovat naši podporu na adrese\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "S pozdravem,<br>tým %(project_name)s"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Všechna práva vyhrazena"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "Je třeba mít poskytovatele, od kterého lze získat sazby"
msgid "couldn't find provider {provider}"
msgstr "Nepodařilo se najít poskytovatele {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "Motor eVibes"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Zůstatek vkladu"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Behandling af detaljer"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"Transaktionsbeløbet skal passe ind i {config.PAYMENT_GATEWAY_MINIMUM}-"
"{config.PAYMENT_GATEWAY_MAXIMUM}."
"Transaktionsbeløbet skal passe ind i "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Balance"
msgid "balances"
msgstr "Vægte"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Aktivér din konto"
msgid "balance deposit"
msgstr "Saldoindbetaling"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Hej %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Hej %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Tak, fordi du har tilmeldt dig %(config.PROJECT_NAME)s. Aktivér venligst din "
"konto ved at klikke på knappen nedenfor:"
"Vi har krediteret din konto med %(amount)s. Din nuværende\n"
" saldo er %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Aktiver\n"
" Konto"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Hvis ovenstående knap ikke virker, bedes du kopiere og sætte følgende URL "
"ind i din webbrowser:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Med venlig hilsen,<br>%(config.PROJECT_NAME)s Team"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Alle rettigheder\n"
" forbeholdt."
"Hvis du har spørgsmål, er du velkommen til at kontakte vores support på\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Med venlig hilsen,<br>teamet %(project_name)s."
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Alle rettigheder forbeholdes"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "Der er brug for en udbyder at få priser fra"
msgid "couldn't find provider {provider}"
msgstr "Kunne ikke finde udbyder {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "eVibes-motor"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Saldoindbetaling"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Details zur Verarbeitung"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"Der Transaktionsbetrag muss zwischen {config.PAYMENT_GATEWAY_MINIMUM}-"
"{config.PAYMENT_GATEWAY_MAXIMUM} liegen"
"Der Transaktionsbetrag muss zwischen "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM} liegen"
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Waage"
msgid "balances"
msgstr "Waagen"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Aktivieren Sie Ihr Konto"
msgid "balance deposit"
msgstr "Balance Deposit"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Hallo %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Hallo %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Vielen Dank, dass Sie sich für %(config.PROJECT_NAME)s angemeldet haben. "
"Bitte aktivieren Sie Ihr Konto, indem Sie auf die Schaltfläche unten klicken:"
"Wir haben Ihrem Konto erfolgreich %(amount)s gutgeschrieben. Ihr aktuelles\n"
" Saldo beträgt %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Aktivieren Sie\n"
" Konto"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Wenn die obige Schaltfläche nicht funktioniert, kopieren Sie bitte die "
"folgende URL und fügen Sie sie in Ihren Webbrowser ein:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Mit freundlichen Grüßen,<br>Das %(config.PROJECT_NAME)s Team"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Alle Rechte\n"
" vorbehalten."
"Wenn Sie Fragen haben, wenden Sie sich bitte an unseren Support unter\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Mit freundlichen Grüßen,<br>das %(project_name)s-Team"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Alle Rechte vorbehalten"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "Sie benötigen einen Anbieter, bei dem Sie die Preise erfragen können."
msgid "couldn't find provider {provider}"
msgstr "Anbieter {provider} konnte nicht gefunden werden"
#~ msgid "eVibes Engine"
#~ msgstr "eVibes Motor"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Saldo Einzahlung"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -70,57 +70,46 @@ msgstr "Balance"
msgid "balances"
msgstr "Balances"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Activate Your Account"
msgid "balance deposit"
msgstr "Balance Deposit"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Hello %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Hello %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your "
"account by clicking the button below:"
"We have successfully credited your account with %(amount)s. Your current\n"
" balance is %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Activate\n"
" Account"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"If the button above does not work, please copy and paste the following URL "
"into your web browser:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Best regards,<br>The %(config.PROJECT_NAME)s Team"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"All rights\n"
" reserved."
"If you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Best regards,<br>the %(project_name)s team"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "All rights reserved"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -131,8 +120,7 @@ msgstr "A provider to get rates from is required"
msgid "couldn't find provider {provider}"
msgstr "Couldn't find provider {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "eVibes Engine"
#~ msgid "Activate Account"
#~ msgstr "Activate Account"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Balance Deposit"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Processing details"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"Transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"Transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Balance"
msgid "balances"
msgstr "Scales"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Activate Your Account"
msgid "balance deposit"
msgstr "Balance Deposit"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Hello %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Hello %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your "
"account by clicking the button below:"
"We have successfully credited your account with %(amount)s. Your current\n"
" balance is %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Activate\n"
" Account"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"If the button above does not work, please copy and paste the following URL "
"into your web browser:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Best regards,<br>The %(config.PROJECT_NAME)s Team"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"All rights\n"
" reserved."
"If you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Best regards,<br>the %(project_name)s team"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "All rights reserved"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "A provider to get rates from is required"
msgid "couldn't find provider {provider}"
msgstr "Couldn't find provider {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "eVibes Engine"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Balance Deposit"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Detalles del proceso"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"El importe de la transacción debe ajustarse a {config."
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
"El importe de la transacción debe ajustarse a "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Saldo"
msgid "balances"
msgstr "Escalas"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Activar su cuenta"
msgid "balance deposit"
msgstr "Depósito de saldo"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logotipo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Hola %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Hola %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Gracias por registrarse en %(config.PROJECT_NAME)s. Por favor, active su "
"cuenta haciendo clic en el botón de abajo:"
"Hemos ingresado correctamente %(amount)s en su cuenta. Su saldo\n"
" actual es de %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Activar\n"
" Cuenta"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Si el botón anterior no funciona, copie y pegue la siguiente URL en su "
"navegador:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Saludos cordiales,<br>El equipo de %(config.PROJECT_NAME)s"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Todos los derechos\n"
" reservados."
"Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro servicio de asistencia en\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Saludos cordiales,<br>el equipo %(project_name)s"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Todos los derechos reservados"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "Se necesita un proveedor del que obtener tarifas"
msgid "couldn't find provider {provider}"
msgstr "No se ha podido encontrar el proveedor {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "Motor eVibes"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Depósito de saldo"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Détails du traitement"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"Le montant de la transaction doit être compris entre {config."
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
"Le montant de la transaction doit être compris entre "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61
msgid "balance"
@ -66,66 +66,58 @@ msgstr "Balance"
msgid "balances"
msgstr "Balances"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Activer votre compte"
msgid "balance deposit"
msgstr "Balance Deposit"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Bonjour %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Bonjour %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Merci de vous être inscrit à %(config.PROJECT_NAME)s. Veuillez activer votre "
"compte en cliquant sur le bouton ci-dessous :"
"Nous avons crédité votre compte de %(amount)s. Votre solde\n"
" est de %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Activer\n"
" Compte"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Si le bouton ci-dessus ne fonctionne pas, veuillez copier et coller l'URL "
"suivante dans votre navigateur web :"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Meilleures salutations,<br>L'équipe %(config.PROJECT_NAME)s"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Tous les droits\n"
" réservés."
"Si vous avez des questions, n'hésitez pas à contacter notre service d'assistance à l'adresse suivante\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Meilleures salutations, <br>l'équipe %(project_name)s"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Tous droits réservés"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
msgstr "Il est nécessaire de disposer d'un fournisseur pour obtenir des tarifs"
msgstr ""
"Il est nécessaire de disposer d'un fournisseur pour obtenir des tarifs"
#: payments/utils/__init__.py:15
#, python-brace-format
msgid "couldn't find provider {provider}"
msgstr "Impossible de trouver le fournisseur {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "Moteur eVibes"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Dépôt de solde"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 2.8.9\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
@ -67,48 +67,41 @@ msgstr ""
msgid "balances"
msgstr ""
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgid "balance deposit"
msgstr ""
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr ""
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr ""
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your new\n"
" balance is %(balance)s."
msgstr ""
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgid ""
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr ""
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr ""
#: payments/utils/__init__.py:8
@ -119,3 +112,8 @@ msgstr ""
#, python-brace-format
msgid "couldn't find provider {provider}"
msgstr ""
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr ""

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Dettagli di elaborazione"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"L'importo della transazione deve rientrare in {config."
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
"L'importo della transazione deve rientrare in "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Equilibrio"
msgid "balances"
msgstr "Bilance"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Attivare il proprio account"
msgid "balance deposit"
msgstr "Saldo Deposito"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Ciao %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Hello %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Grazie per esservi iscritti a %(config.PROJECT_NAME)s. Attivate il vostro "
"account facendo clic sul pulsante sottostante:"
"Abbiamo accreditato il vostro conto con %(amount)s. Il suo saldo attuale\n"
" saldo è %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Attivare\n"
" Conto"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Se il pulsante qui sopra non funziona, copiate e incollate il seguente URL "
"nel vostro browser web:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Cordiali saluti,<br>Il team %(config.PROJECT_NAME)s"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Tutti i diritti\n"
" riservati."
"In caso di domande, non esitate a contattare il nostro supporto all'indirizzo\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Cordiali saluti,<br>il team %(project_name)s"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Tutti i diritti riservati"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "È necessario un fornitore da cui ottenere le tariffe"
msgid "couldn't find provider {provider}"
msgstr "Impossibile trovare il fornitore {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "Motore eVibes"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Deposito a saldo"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,10 @@ msgstr "加工内容"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"取引金額は{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}に"
"収まる必要があります。"
"取引金額は{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}に収まる必要があります。"
#: payments/models.py:61
msgid "balance"
@ -66,57 +65,46 @@ msgstr "バランス"
msgid "balances"
msgstr "体重計"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "アカウントの有効化"
msgid "balance deposit"
msgstr "預金残高"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "ロゴ"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "こんにちは、%(user.first_name)sです、"
msgid "hello %(user_first_name)s,"
msgstr "こんにちは%(user_first_name)s、"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"%(config.PROJECT_NAME)sにご登録いただきありがとうございます。下のボタンをク"
"リックしてアカウントを有効にしてください:"
"お客様の口座に%(amount)sが入金されました。あなたの現在の\n"
" 現在の残高は%(balance)sです。"
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"アクティベート\n"
" アカウント"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"上記のボタンが機能しない場合は、以下のURLをコピーしてウェブブラウザに貼り付け"
"てください:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "よろしくお願いします、<br>%(config.PROJECT_NAME)sチーム"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"無断転載を禁じます。\n"
" 予約済み"
"ご不明な点がございましたら、お気軽に下記までお問い合わせください。\n"
" %(contact_email)s。"
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "よろしくお願いします、<br>%(project_name)sチーム"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "無断複写・転載を禁じます。"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +115,7 @@ msgstr "レートを取得するプロバイダーが必要"
msgid "couldn't find provider {provider}"
msgstr "{provider}プロバイダーが見つかりません。"
#~ msgid "eVibes Engine"
#~ msgstr "eVibesエンジン"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME}| 預金残高"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 2.8.9\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
@ -67,48 +67,41 @@ msgstr ""
msgid "balances"
msgstr ""
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgid "balance deposit"
msgstr ""
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr ""
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr ""
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your new\n"
" balance is %(balance)s."
msgstr ""
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgid ""
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr ""
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr ""
#: payments/utils/__init__.py:8
@ -119,3 +112,8 @@ msgstr ""
#, python-brace-format
msgid "couldn't find provider {provider}"
msgstr ""
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr ""

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Verwerkingsdetails"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"Het transactiebedrag moet passen binnen {config.PAYMENT_GATEWAY_MINIMUM}-"
"{config.PAYMENT_GATEWAY_MAXIMUM}."
"Het transactiebedrag moet passen binnen "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Saldo"
msgid "balances"
msgstr "Weegschaal"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Uw account activeren"
msgid "balance deposit"
msgstr "Saldo Storting"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Hallo %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Hallo %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Bedankt voor het aanmelden bij %(config.PROJECT_NAME)s. Activeer je account "
"door op de onderstaande knop te klikken:"
"We hebben uw rekening succesvol gecrediteerd met %(amount)s. Uw huidige\n"
" saldo is %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Activeer\n"
" Account"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Als de bovenstaande knop niet werkt, kopieer en plak dan de volgende URL in "
"je webbrowser:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Vriendelijke groeten,<br>Het %(config.PROJECT_NAME)s Team"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Alle rechten\n"
" voorbehouden."
"Als u vragen hebt, kunt u contact opnemen met onze klantenservice op\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Vriendelijke groeten,<br>het %(project_name)s team"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Alle rechten voorbehouden"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "Een provider om tarieven van te krijgen is vereist"
msgid "couldn't find provider {provider}"
msgstr "Kon provider {provider} niet vinden"
#~ msgid "eVibes Engine"
#~ msgstr "eVibes motor"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Saldo storting"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Szczegóły przetwarzania"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"Kwota transakcji musi mieścić się w przedziale {config."
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
"Kwota transakcji musi mieścić się w przedziale "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Równowaga"
msgid "balances"
msgstr "Wagi"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Aktywacja konta"
msgid "balance deposit"
msgstr "Saldo depozytu"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Witaj %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Witaj %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Dziękujemy za zarejestrowanie się w %(config.PROJECT_NAME)s. Aktywuj swoje "
"konto, klikając poniższy przycisk:"
"Twoje konto zostało pomyślnie zasilone kwotą %(amount)s. Aktualne\n"
" wynosi %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Aktywuj\n"
" Konto"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Jeśli powyższy przycisk nie działa, skopiuj i wklej poniższy adres URL do "
"przeglądarki internetowej:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Z wyrazami szacunku,<br>Zespół %(config.PROJECT_NAME)s"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Wszelkie prawa\n"
" zastrzeżone."
"Jeśli masz jakiekolwiek pytania, skontaktuj się z naszym działem pomocy technicznej pod adresem\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Najlepsze pozdrowienia,<br>zespół %(project_name)s"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Wszelkie prawa zastrzeżone"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "Wymagany jest dostawca, od którego można uzyskać stawki"
msgid "couldn't find provider {provider}"
msgstr "Nie można znaleźć dostawcy {provider}."
#~ msgid "eVibes Engine"
#~ msgstr "Silnik eVibes"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Wpłata salda"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Detalhes do processamento"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"O valor da transação deve se enquadrar em {config.PAYMENT_GATEWAY_MINIMUM}-"
"{config.PAYMENT_GATEWAY_MAXIMUM}"
"O valor da transação deve se enquadrar em "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Equilíbrio"
msgid "balances"
msgstr "Balanças"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Ativar sua conta"
msgid "balance deposit"
msgstr "Depósito de saldo"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logotipo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Olá %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Olá %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Obrigado por se inscrever no %(config.PROJECT_NAME)s. Ative sua conta "
"clicando no botão abaixo:"
"Creditamos sua conta com %(amount)s com sucesso. Seu saldo atual\n"
" saldo atual é %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Ativar\n"
" Conta"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Se o botão acima não funcionar, copie e cole o seguinte URL em seu navegador "
"da Web:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Com os melhores cumprimentos,<br>A equipe de %(config.PROJECT_NAME)s"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Todos os direitos\n"
" reservados."
"Se tiver alguma dúvida, entre em contato com o nosso suporte em\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Atenciosamente,<br>a equipe %(project_name)s"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Todos os direitos reservados"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "É necessário um provedor para obter as tarifas"
msgid "couldn't find provider {provider}"
msgstr "Não foi possível encontrar o provedor {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "Motor eVibes"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Depósito de saldo"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Detalii de prelucrare"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"Valoarea tranzacției trebuie să se încadreze în {config."
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
"Valoarea tranzacției trebuie să se încadreze în "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Echilibru"
msgid "balances"
msgstr "Balanță"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Activați contul dvs."
msgid "balance deposit"
msgstr "Sold Depozit"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Bună ziua %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Bună ziua %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Vă mulțumim pentru înscrierea la %(config.PROJECT_NAME)s. Vă rugăm să vă "
"activați contul făcând clic pe butonul de mai jos:"
"Am creditat cu succes contul dvs. cu %(amount)s. Soldul dvs. actual\n"
" actual este %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Activare\n"
" Cont"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Dacă butonul de mai sus nu funcționează, vă rugăm să copiați și să lipiți "
"următoarea adresă URL în browserul dvs. web:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "Salutări,<br>Echipa %(config.PROJECT_NAME)s"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Toate drepturile\n"
" rezervate."
"Dacă aveți întrebări, nu ezitați să contactați asistența noastră la\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "Cele mai bune salutări,<br>echipa %(project_name)s"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Toate drepturile rezervate"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "Este necesar un furnizor de la care să se obțină tarife"
msgid "couldn't find provider {provider}"
msgstr "Nu am putut găsi furnizorul {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "Motorul eVibes"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Depozit sold"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Детали обработки"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"Сумма транзакции должна вписываться в {config.PAYMENT_GATEWAY_MINIMUM}-"
"{config.PAYMENT_GATEWAY_MAXIMUM}"
"Сумма транзакции должна вписываться в "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61
msgid "balance"
@ -66,57 +66,46 @@ msgstr "Баланс"
msgid "balances"
msgstr "Весы"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "Активируйте свою учетную запись"
msgid "balance deposit"
msgstr "Балансовый депозит"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "Логотип"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "Здравствуйте %(user.first_name)s,"
msgid "hello %(user_first_name)s,"
msgstr "Привет %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"Благодарим вас за регистрацию в %(config.PROJECT_NAME)s. Пожалуйста, "
"активируйте свой аккаунт, нажав на кнопку ниже:"
"Мы успешно зачислили на ваш счет %(amount)s. Ваш текущий\n"
" баланс составляет %(balance)s."
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"Активировать\n"
" Учетная запись"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr ""
"Если кнопка выше не работает, скопируйте и вставьте следующий URL-адрес в "
"свой веб-браузер:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "С наилучшими пожеланиями,<br>Команда %(config.PROJECT_NAME)s"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"Все права\n"
" зарезервировано."
"Если у вас возникнут вопросы, обращайтесь в нашу службу поддержки по адресу\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "С наилучшими пожеланиями, <br>команда %(project_name)s"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "Все права защищены"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "Требуется поставщик, у которого можно п
msgid "couldn't find provider {provider}"
msgstr "Не удалось найти провайдера {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "Движок eVibes"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Депозит баланса"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-21 22:42+0100\n"
"POT-Creation-Date: 2025-06-22 18:07+0100\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "处理细节"
#: payments/models.py:39
#, python-brace-format
msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM}"
"transaction amount must fit into "
"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr ""
"交易金额必须符合 {config.PAYMENT_GATEWAY_MINIMUM}-{config."
"PAYMENT_GATEWAY_MAXIMUM} 的规定。"
"交易金额必须符合 {config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM} "
"的规定。"
#: payments/models.py:61
msgid "balance"
@ -66,53 +66,46 @@ msgstr "平衡"
msgid "balances"
msgstr "天平"
#: payments/templates/balance_deposit_email.html:8
#: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account"
msgstr "激活账户"
msgid "balance deposit"
msgstr "余额存款"
#: payments/templates/balance_deposit_email.html:94
msgid "Logo"
#: payments/templates/balance_deposit_email.html:95
msgid "logo"
msgstr "标志"
#: payments/templates/balance_deposit_email.html:101
#, python-format
msgid "Hello %(user.first_name)s,"
msgstr "您好 %(user.first_name)s、"
msgid "hello %(user_first_name)s,"
msgstr "你好%(user_first_name)s_、"
#: payments/templates/balance_deposit_email.html:102
#, python-format
msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n"
" account by clicking the button below:"
msgstr "感谢您注册%(config.PROJECT_NAME)s_。请点击下面的按钮激活您的帐户"
"we have successfully credited your account with %(amount)s. your current\n"
" balance is %(balance)s."
msgstr ""
"我们已成功地将 %(amount)s_记入您的账户。您目前的\n"
" 余额为%(balance)s_。"
#: payments/templates/balance_deposit_email.html:105
msgid ""
"Activate\n"
" Account"
msgstr ""
"激活\n"
" 账户"
#: payments/templates/balance_deposit_email.html:108
msgid ""
"If the button above does not work, please copy and paste the following URL\n"
" into your web browser:"
msgstr "如果上面的按钮不起作用,请将以下 URL 复制并粘贴到您的浏览器中:"
#: payments/templates/balance_deposit_email.html:111
#, python-format
msgid "Best regards,<br>The %(config.PROJECT_NAME)s Team"
msgstr "致以最诚挚的问候,<br>%(config.PROJECT_NAME)s团队"
#: payments/templates/balance_deposit_email.html:116
msgid ""
"All rights\n"
" reserved."
"if you have any questions, feel free to contact our support at\n"
" %(contact_email)s."
msgstr ""
"保留所有权利。\n"
" 保留所有权利。"
"如果您有任何问题,请随时通过以下方式联系我们的支持人员\n"
" %(contact_email)s."
#: payments/templates/balance_deposit_email.html:107
#, python-format
msgid "best regards,<br>the %(project_name)s team"
msgstr "致以最诚挚的问候,<br>%(project_name)s_团队"
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "保留所有权利"
#: payments/utils/__init__.py:8
msgid "a provider to get rates from is required"
@ -123,5 +116,7 @@ msgstr "需要提供商提供费率"
msgid "couldn't find provider {provider}"
msgstr "找不到提供方 {provider}"
#~ msgid "eVibes Engine"
#~ msgstr "eVibes 引擎"
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME}| 余额存款"

View file

@ -2,6 +2,7 @@ from django.db.models.signals import post_save
from django.dispatch import receiver
from payments.models import Balance, Transaction
from payments.utils.emailing import balance_deposit_email
from vibes_auth.models import User
@ -17,5 +18,10 @@ def process_transaction_changes(instance, created, **_kwargs):
try:
gateway = object()
gateway.process_transaction(instance)
except Exception: # noqa:
instance.process = {"status": "NOGATEWAY"}
except Exception as e: # noqa:
instance.process = {"status": "NOGATEWAY", "error": str(e)}
if not created:
if "success" in str(instance.process).lower() and "notify" in str(instance.process).lower():
balance_deposit_email.delay(instance.uuid)
if "fail" in str(instance.process).lower() and "notify" in str(instance.process).lower():
pass

View file

@ -1,32 +1,36 @@
{% load tz static i18n filters conditions %}
<!DOCTYPE html>
<html lang="en">
<head>
{% load static %}
{% load i18n %}
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% blocktrans with msgid="activate_account_title" %}Activate Your Account{% endblocktrans %}</title>
<title>{% blocktrans %}balance deposit{% endblocktrans %}</title>
<style>
/* Ensure responsiveness across devices */
* {
box-sizing: border-box;
}
body, table, td, a {
text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
table {
}
body {
margin: 0 !important;
padding: 0 !important;
width: 100% !important;
}
/* Use fluid layout for images */
img {
max-width: 100%;
height: auto;
}
/* Style adjustments for different clients */
.email-container {
max-width: 600px;
margin: 0 auto;
@ -45,7 +49,7 @@
}
.header img {
width: 120px; /* Adjust logo size */
width: 120px;
height: auto;
}
@ -57,18 +61,19 @@
color: #888;
}
.button {
background-color: #000000;
color: white;
padding: 10px 20px;
text-decoration: none;
display: inline-block;
.order-table {
width: 100%;
margin-top: 20px;
transition: 0.2s;
border-collapse: collapse;
}
.button:hover {
background-color: #3a3a3a;
.order-table th, .order-table td {
border: 1px solid #ddd;
padding: 8px;
}
.order-table th {
background-color: #f4f4f4;
}
@media only screen and (max-width: 600px) {
@ -77,44 +82,35 @@
}
}
</style>
<!-- Avatar for email client display -->
<link rel="icon" href="{% static 'favicon.png' %}" sizes="192x192">
</head>
<body>
<!-- Main container -->
<table>
<tr>
<td>
<!-- Email container for centering -->
<table class="email-container">
<tr>
<td class="header">
<!-- Logo area -->
<img src="{% static 'favicon.png' %}"
alt="{% blocktrans with msgid="logo_alt_text" %}Logo{% endblocktrans %}" width="120">
alt="{% blocktrans %}logo{% endblocktrans %}" width="120">
</td>
</tr>
<tr>
<td class="content-cell">
<!-- Email content area -->
<h2>{% blocktrans %}Activate Your Account{% endblocktrans %}</h2>
<p>{% blocktrans %}Hello {{ user.first_name }},{% endblocktrans %}</p>
<p>{% blocktrans %}Thank you for signing up for {{ config.PROJECT_NAME }}. Please activate your
account by clicking the button below:{% endblocktrans %}</p>
<p>
<a href="{{ activation_link }}" class="button">{% blocktrans %}Activate
Account{% endblocktrans %}</a>
</p>
<p>{% blocktrans %}If the button above does not work, please copy and paste the following URL
into your web browser:{% endblocktrans %}</p>
<p>{{ activation_link }}</p>
<p>{% blocktrans %}Best regards,<br>The {{ config.PROJECT_NAME }} Team{% endblocktrans %}</p>
<h2>{% blocktrans %}balance deposit{% endblocktrans %}</h2>
<p>{% blocktrans %}hello {{ user_first_name }},{% endblocktrans %}</p>
<p>{% blocktrans %}we have successfully credited your account with {{ amount }}. your current
balance is {{ balance }}.{% endblocktrans %}</p>
<p>{% blocktrans %}if you have any questions, feel free to contact our support at
{{ contact_email }}.{% endblocktrans %}</p>
<p>{% blocktrans %}best regards,<br>the {{ project_name }} team{% endblocktrans %}</p>
</td>
</tr>
<tr>
<td class="footer">
&copy; {{ current_year }} {{ config.PROJECT_NAME }}. {% blocktrans %}All rights
reserved.{% endblocktrans %}
&copy; {% now "Y" %} {{ project_name }}.
{% blocktrans %}all rights reserved{% endblocktrans %}.
</td>
</tr>
</table>

View file

@ -1,32 +1,46 @@
from datetime import datetime
from celery.app import shared_task
from constance import config
from django.core import mail
from django.core.mail import EmailMessage
from django.template.loader import render_to_string
from django.utils import timezone
from django.utils.translation import activate
from vibes_auth.models import User
from core.utils.constance import set_email_settings
from payments.models import Transaction
@shared_task
def balance_email(user_pk: str) -> tuple[bool, str]:
pass
def balance_deposit_email(transaction_pk: str) -> tuple[bool, str]:
try:
user = User.objects.get(pk=user_pk)
except User.DoesNotExist:
return False, f"Order not found with the given pk: {user_pk}"
transaction = Transaction.objects.get(pk=transaction_pk)
except Transaction.DoesNotExist:
return False, f"Transaction not found with the given pk: {transaction_pk}"
activate(user.language)
activate(transaction.balance.user.language) # type: ignore
set_email_settings()
connection = mail.get_connection()
email = EmailMessage(
"eVibes | Successful Order",
_(f"{config.PROJECT_NAME} | balance deposit"),
render_to_string(
"balance_deposit_email.html", {"user": user, "current_year": timezone.now().year, "config": config}
template_name="balance_deposit_email.html",
context={
"amount": transaction.amount,
"balance": transaction.balance.amount,
"user_first_name": transaction.balance.user.first_name, # type: ignore
"project_name": config.PROJECT_NAME,
"contact_email": config.EMAIL_FROM,
"today": datetime.today(),
},
),
to=[user.email],
to=[transaction.balance.user.email], # type: ignore
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
connection=connection,
)
email.content_subtype = "html"
email.send()
return True, user.uuid
return True, str(order.uuid)

12
scripts/Unix/backup.sh Normal file
View file

@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -euo pipefail
source ./scripts/Unix/starter.sh
echo "Starting database backup process..."
docker compose exec app poetry run python manage.py dbbackup
echo "Database backup created under ./dbbackup"
echo "Starting media backup process..."
docker compose exec app poetry run python manage.py mediabackup
echo "Media backup created under ./dbbackup"

View file

@ -1,63 +1,35 @@
#!/usr/bin/env bash
set -euo pipefail
if [ ! -d "./evibes" ]; then
printf "\e[31m❌ Please run this script from the project's root (where the 'evibes' directory lives).\e[0m\n"
exit 1
fi
source ./scripts/Unix/starter.sh
PURPLE="\e[38;2;121;101;209m"
RESET="\e[0m"
GRAY="\e[90m"
SOURCE="${BASH_SOURCE[0]:-$0}"
SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
ART_PATH="$SCRIPT_DIR/../ASCII_ART_EVIBES"
if [ ! -f "$ART_PATH" ]; then
printf "\e[31m❌ Could not find ASCII art at %s\e[0m\n" "$ART_PATH"
exit 1
fi
while IFS= read -r line; do
printf "%b%s%b\n" "$PURPLE" "$line" "$RESET"
done < "$ART_PATH"
printf "\n%b by WISELESS TEAM%b\n\n" "$GRAY" "$RESET"
ENV_FILE=".env"
if [ ! -f "$ENV_FILE" ]; then
printf "\e[31m.env file not found in the current directory.\e[0m\n"
env_file=".env"
if [ ! -f "$env_file" ]; then
echo ".env file not found in the current directory." >&2
exit 1
fi
declare -A env_vars
declare -a keys
while IFS= read -r raw; do
line="${raw%%#*}"
line="${line%"${line##*[![:space:]]}"}"
while IFS= read -r line; do
line="${line#"${line%%[![:space:]]*}"}"
[ -z "$line" ] || [[ "$line" != *=* ]] && continue
line="${line%"${line##*[![:space:]]}"}"
if [ -z "$line" ] || [[ "$line" == \#* ]] || [[ "$line" != *=* ]]; then
continue
fi
key="${line%%=*}"
value="${line#*=}"
if [[ "${value:0:1}" == '"' && "${value: -1}" == '"' ]] || \
[[ "${value:0:1}" == "'" && "${value: -1}" == "'" ]]; then
if [[ ( "$value" == \"*\" && "$value" == *\" ) || ( "$value" == \'*\' && "$value" == *\' ) ]]; then
value="${value:1:-1}"
fi
export "$key"="$value"
export "$key=$value"
env_vars["$key"]="$value"
keys+=("$key")
done < "$ENV_FILE"
done < "$env_file"
if [ "${#keys[@]}" -gt 0 ]; then
# shellcheck disable=SC2207
IFS=$'\n' sorted=($(sort <<<"${keys[*]}"))
unset IFS
formatted=""
for k in "${sorted[@]}"; do
[ -z "$formatted" ] && formatted="$k=${env_vars[$k]}" \
|| formatted="$formatted;$k=${env_vars[$k]}"
if [ "${#env_vars[@]}" -gt 0 ]; then
IFS=$'\n' sorted=($(for k in "${!env_vars[@]}"; do echo "${k}=${env_vars[$k]}"; done | sort))
printf "%s" "${sorted[0]}"
for entry in "${sorted[@]:1}"; do
printf ";%s" "$entry"
done
printf "%s\n" "$formatted"
echo
fi

View file

@ -1,145 +1,81 @@
#!/usr/bin/env bash
set -euo pipefail
if [ ! -d "./evibes" ]; then
printf "\e[31m❌ Please run this script from the project's root (where the 'evibes' directory lives).\e[0m\n"
exit 1
fi
source ./scripts/Unix/starter.sh
PURPLE="\e[38;2;121;101;209m"
RESET="\e[0m"
GRAY="\e[90m"
SOURCE="${BASH_SOURCE[0]:-$0}"
SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
ART_PATH="$SCRIPT_DIR/../ASCII_ART_EVIBES"
if [ ! -f "$ART_PATH" ]; then
printf "\e[31m❌ Could not find ASCII art at %s\e[0m\n" "$ART_PATH"
exit 1
fi
while IFS= read -r line; do
printf "%b%s%b\n" "$PURPLE" "$line" "$RESET"
done < "$ART_PATH"
printf "\n%b by WISELESS TEAM%b\n\n" "$GRAY" "$RESET"
# prompt for a value with default
prompt_default() {
local name="$1" default="$2" result
read -rp "Enter $name [$default]: " result
printf '%s\n' "${result:-$default}"
get_random_hex() {
hexdump -v -e '/1 "%02x"' -n "$1" /dev/urandom
}
# prompt for a value, auto-generate hex if blank
prompt_autogen() {
local name="$1" bytes="$2" result
read -rp "Enter $name (leave blank to auto-generate): " result
if [ -z "$result" ]; then
# generate $bytes random bytes as hex
result="$(head -c "$bytes" /dev/urandom | od -An -tx1 | tr -d ' \n')"
prompt_default() {
printf "Enter %s [%s]: " "$1" "$2"
read -r response
if [ -z "${response//[[:space:]]/}" ]; then
echo "$2"
else
echo "$response"
fi
}
prompt_autogen() {
printf "Enter %s (leave blank to auto-generate): " "$1"
read -r response
if [ -z "${response//[[:space:]]/}" ]; then
get_random_hex "$2"
else
echo "$response"
fi
printf '%s\n' "$result"
}
if [ -f .env ]; then
printf "\e[33m.env already exists and will be overwritten.\e[0m\n"
read -rp "Press Enter to continue or Ctrl+C to abort"
echo ".env already exists and will be overwritten." >&2
printf "Press Enter to continue or Ctrl+C to abort"
read -r
fi
PROJECT_NAME=$(prompt_default 'EVIBES_PROJECT_NAME' 'eVibes')
FRONTEND_DOMAIN=$(prompt_default 'EVIBES_FRONTEND_DOMAIN' 'evibes.com')
BASE_DOMAIN=$(prompt_default 'EVIBES_BASE_DOMAIN' 'evibes.com')
SENTRY_DSN=$(prompt_default 'SENTRY_DSN' '')
DEBUG=$(prompt_default 'DEBUG' '1')
PROJECT_NAME=$(prompt_default EVIBES_PROJECT_NAME eVibes)
FRONTEND_DOMAIN=$(prompt_default EVIBES_FRONTEND_DOMAIN evibes.com)
BASE_DOMAIN=$(prompt_default EVIBES_BASE_DOMAIN evibes.com)
SENTRY_DSN=$(prompt_default SENTRY_DSN "")
DEBUG=$(prompt_default DEBUG 1)
SECRET_KEY=$(prompt_autogen 'SECRET_KEY' 32)
JWT_SIGNING_KEY=$(prompt_autogen 'JWT_SIGNING_KEY' 64)
SECRET_KEY=$(prompt_autogen SECRET_KEY 32)
JWT_SIGNING_KEY=$(prompt_autogen JWT_SIGNING_KEY 64)
ALLOWED_HOSTS=$(prompt_default 'ALLOWED_HOSTS' 'evibes.com api.evibes.com b2b.evibes.com')
CSRF_TRUSTED_ORIGINS=$(prompt_default 'CSRF_TRUSTED_ORIGINS' 'https://evibes.com https://api.evibes.com https://www.evibes.com https://b2b.evibes.com')
CORS_ALLOWED_ORIGINS="$CSRF_TRUSTED_ORIGINS"
ALLOWED_HOSTS=$(prompt_default ALLOWED_HOSTS "evibes.com api.evibes.com b2b.evibes.com")
CSRF_TRUSTED_ORIGINS=$(prompt_default CSRF_TRUSTED_ORIGINS "https://evibes.com https://api.evibes.com https://www.evibes.com https://b2b.evibes.com")
CORS_ALLOWED_ORIGINS=$CSRF_TRUSTED_ORIGINS
POSTGRES_DB=$(prompt_default 'POSTGRES_DB' 'evibes')
POSTGRES_USER=$(prompt_default 'POSTGRES_USER' 'evibes_user')
POSTGRES_PASSWORD=$(prompt_autogen 'POSTGRES_PASSWORD' 16)
POSTGRES_DB=$(prompt_default POSTGRES_DB evibes)
POSTGRES_USER=$(prompt_default POSTGRES_USER evibes_user)
POSTGRES_PASSWORD=$(prompt_autogen POSTGRES_PASSWORD 16)
DBBACKUP_SFTP_HOST=$(prompt_default 'DBBACKUP_SFTP_HOST' 'Your SFTP backup host')
DBBACKUP_SFTP_USER=$(prompt_default 'DBBACKUP_SFTP_USER' 'The username to use to log in to that host')
DBBACKUP_SFTP_PASS=$(prompt_default 'DBBACKUP_SFTP_PASS' 'The password to use to log in to that host')
DBBACKUP_SFTP_HOST=$(prompt_default DBBACKUP_SFTP_HOST "Your SFTP backup host")
DBBACKUP_SFTP_USER=$(prompt_default DBBACKUP_SFTP_USER "The username to use to log in to that host")
DBBACKUP_SFTP_PASS=$(prompt_default DBBACKUP_SFTP_PASS "The password to use to log in to that host")
ELASTIC_PASSWORD=$(prompt_autogen 'ELASTIC_PASSWORD' 16)
REDIS_PASSWORD=$(prompt_autogen 'REDIS_PASSWORD' 16)
ELASTIC_PASSWORD=$(prompt_autogen ELASTIC_PASSWORD 16)
REDIS_PASSWORD=$(prompt_autogen REDIS_PASSWORD 16)
PROMETHEUS_USER=$(prompt_default 'PROMETHEUS_USER' 'evibes')
PROMETHEUS_PASSWORD=$(prompt_autogen 'PROMETHEUS_PASSWORD' 16)
PROMETHEUS_USER=$(prompt_default PROMETHEUS_USER evibes)
PROMETHEUS_PASSWORD=$(prompt_autogen PROMETHEUS_PASSWORD 16)
EMAIL_BACKEND=$(prompt_default 'EMAIL_BACKEND' 'django.core.mail.backends.smtp.EmailBackend')
EMAIL_HOST=$(prompt_default 'EMAIL_HOST' 'smtp.whatever.evibes.com')
EMAIL_PORT=$(prompt_default 'EMAIL_PORT' '465')
EMAIL_USE_TLS=$(prompt_default 'EMAIL_USE_TLS' '0')
EMAIL_USE_SSL=$(prompt_default 'EMAIL_USE_SSL' '1')
EMAIL_HOST_USER=$(prompt_default 'EMAIL_HOST_USER' 'your-email-user@whatever.evibes.com')
EMAIL_FROM="$EMAIL_HOST_USER"
EMAIL_HOST_PASSWORD=$(prompt_default 'EMAIL_HOST_PASSWORD' 'SUPERSECRETEMAILHOSTPASSWORD')
EMAIL_BACKEND=$(prompt_default EMAIL_BACKEND django.core.mail.backends.smtp.EmailBackend)
EMAIL_HOST=$(prompt_default EMAIL_HOST smtp.whatever.evibes.com)
EMAIL_PORT=$(prompt_default EMAIL_PORT 465)
EMAIL_USE_TLS=$(prompt_default EMAIL_USE_TLS 0)
EMAIL_USE_SSL=$(prompt_default EMAIL_USE_SSL 1)
EMAIL_HOST_USER=$(prompt_default EMAIL_HOST_USER your-email-user@whatever.evibes.com)
EMAIL_FROM=$EMAIL_HOST_USER
EMAIL_HOST_PASSWORD=$(prompt_default EMAIL_HOST_PASSWORD SUPERSECRETEMAILHOSTPASSWORD)
COMPANY_NAME=$(prompt_default 'COMPANY_NAME' 'eVibes, Inc.')
COMPANY_PHONE_NUMBER=$(prompt_default 'COMPANY_PHONE_NUMBER' '+888888888888')
COMPANY_ADDRESS=$(prompt_default 'COMPANY_ADDRESS' 'The place that does not exist')
COMPANY_NAME=$(prompt_default COMPANY_NAME "eVibes, Inc.")
COMPANY_PHONE_NUMBER=$(prompt_default COMPANY_PHONE_NUMBER "+888888888888")
COMPANY_ADDRESS=$(prompt_default COMPANY_ADDRESS "The place that does not exist")
OPENAI_API_KEY=$(prompt_default 'OPENAI_API_KEY' 'Haha, really?')
ABSTRACT_API_KEY=$(prompt_default 'ABSTRACT_API_KEY' 'Haha, really? x2')
DEEPL_AUTH_KEY=$(prompt_default 'DEEPL_AUTH_KEY' 'Haha, really? x3')
OPENAI_API_KEY=$(prompt_default OPENAI_API_KEY "Haha, really?")
ABSTRACT_API_KEY=$(prompt_default ABSTRACT_API_KEY "Haha, really? x2")
DEEPL_AUTH_KEY=$(prompt_default DEEPL_AUTH_KEY "Haha, really? x3")
# Write to .env
{
printf 'EVIBES_PROJECT_NAME="%s"\n' "$PROJECT_NAME"
printf 'EVIBES_FRONTEND_DOMAIN="%s"\n' "$FRONTEND_DOMAIN"
printf 'EVIBES_BASE_DOMAIN="%s"\n' "$BASE_DOMAIN"
printf 'SENTRY_DSN="%s"\n' "$SENTRY_DSN"
printf 'DEBUG=%s\n\n' "$DEBUG"
printf 'SECRET_KEY="%s"\n' "$SECRET_KEY"
printf 'JWT_SIGNING_KEY="%s"\n\n' "$JWT_SIGNING_KEY"
printf 'ALLOWED_HOSTS="%s"\n' "$ALLOWED_HOSTS"
printf 'CSRF_TRUSTED_ORIGINS="%s"\n' "$CSRF_TRUSTED_ORIGINS"
printf 'CORS_ALLOWED_ORIGINS="%s"\n\n' "$CORS_ALLOWED_ORIGINS"
printf 'POSTGRES_DB="%s"\n' "$POSTGRES_DB"
printf 'POSTGRES_USER="%s"\n' "$POSTGRES_USER"
printf 'POSTGRES_PASSWORD="%s"\n\n' "$POSTGRES_PASSWORD"
printf 'DBBACKUP_SFTP_HOST="%s"\n' "$DBBACKUP_SFTP_HOST"
printf 'DBBACKUP_SFTP_USER="%s"\n' "$DBBACKUP_SFTP_USER"
printf 'DBBACKUP_SFTP_PASS="%s"\n\n' "$DBBACKUP_SFTP_PASS"
printf 'ELASTIC_PASSWORD="%s"\n\n' "$ELASTIC_PASSWORD"
printf 'REDIS_PASSWORD="%s"\n' "$REDIS_PASSWORD"
printf 'CELERY_BROKER_URL="redis://:%s@redis:6379/0"\n' "$REDIS_PASSWORD"
printf 'CELERY_RESULT_BACKEND="redis://:%s@redis:6379/0"\n\n' "$REDIS_PASSWORD"
printf 'PROMETHEUS_USER="%s"\n' "$PROMETHEUS_USER"
printf 'PROMETHEUS_PASSWORD="%s"\n\n' "$PROMETHEUS_PASSWORD"
printf 'EMAIL_BACKEND="%s"\n' "$EMAIL_BACKEND"
printf 'EMAIL_HOST="%s"\n' "$EMAIL_HOST"
printf 'EMAIL_PORT="%s"\n' "$EMAIL_PORT"
printf 'EMAIL_USE_TLS=%s\n' "$EMAIL_USE_TLS"
printf 'EMAIL_USE_SSL=%s\n' "$EMAIL_USE_SSL"
printf 'EMAIL_HOST_USER="%s"\n' "$EMAIL_HOST_USER"
printf 'EMAIL_HOST_PASSWORD="%s"\n' "$EMAIL_HOST_PASSWORD"
printf 'EMAIL_FROM="%s"\n\n' "$EMAIL_FROM"
printf 'COMPANY_NAME="%s"\n' "$COMPANY_NAME"
printf 'COMPANY_PHONE_NUMBER="%s"\n' "$COMPANY_PHONE_NUMBER"
printf 'COMPANY_ADDRESS="%s"\n\n' "$COMPANY_ADDRESS"
printf 'OPENAI_API_KEY="%s"\n\n' "$OPENAI_API_KEY"
printf 'ABSTRACT_API_KEY="%s"\n\n' "$ABSTRACT_API_KEY"
printf 'DEEPL_AUTH_KEY="%s"\n' "$DEEPL_AUTH_KEY"
} > .env
printf "\e[32m.env file generated with fresh values.\e[0m\n"
cat > .env <<EOF
EVIBES_PROJECT_NAME="$PR

View file

@ -1,63 +1,44 @@
#!/usr/bin/env bash
set -euo pipefail
if [ ! -d "./evibes" ]; then
printf "\e[31m❌ Please run this script from the project's root (where the 'evibes' directory lives).\e[0m\n"
exit 1
fi
PURPLE="\e[38;2;121;101;209m"
RESET="\e[0m"
GRAY="\e[90m"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ART_PATH="$SCRIPT_DIR/../ASCII_ART_EVIBES"
if [ ! -f "$ART_PATH" ]; then
printf "\e[31m❌ Could not find ASCII art at %s\e[0m\n" "$ART_PATH"
exit 1
fi
while IFS= read -r line; do
printf "%b%s%b\n" "$PURPLE" "$line" "$RESET"
done < "$ART_PATH"
printf "\n%b by WISELESS TEAM%b\n\n" "$GRAY" "$RESET"
source ./scripts/Unix/starter.sh
if [ ! -f .env ]; then
printf "\e[33m.env file not found. Exiting without running Docker steps.\e[0m\n"
echo ".env file not found. Exiting without running Docker steps." >&2
exit 0
fi
CPU_COUNT=$(nproc 2>/dev/null || sysctl -n hw.ncpu)
if [ "$CPU_COUNT" -lt 4 ]; then
printf "\e[31mInsufficient CPU cores: %d detected. Minimum 4 required.\e[0m\n" "$CPU_COUNT"
cpu_count=$(getconf _NPROCESSORS_ONLN)
if [ "$cpu_count" -lt 4 ]; then
exit 1
fi
if [ -f /proc/meminfo ]; then
MEM_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
MEM_GB=$(awk "BEGIN {printf \"%.2f\", ${MEM_KB}/1024/1024}")
mem_kb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
total_mem_gb=$(awk "BEGIN {printf \"%.2f\", $mem_kb/1024/1024}")
else
MEM_BYTES=$(vm_stat | awk '/Pages free/ {print $3 * 4096}')
MEM_GB=$(awk "BEGIN {printf \"%.2f\", ${MEM_BYTES}/1024/1024/1024}")
total_mem_bytes=$(sysctl -n hw.memsize)
total_mem_gb=$(awk "BEGIN {printf \"%.2f\", $total_mem_bytes/1024/1024/1024}")
fi
if (( $(echo "$MEM_GB < 6" | bc -l) )); then
printf "\e[31mInsufficient RAM: %.2fGB detected. Minimum 6 GB required.\e[0m\n" "$MEM_GB"
if ! awk "BEGIN {exit !($total_mem_gb >= 6)}"; then
exit 1
fi
FREE_GB=$(df -BG . | awk 'NR==2 {gsub("G","",$4); print $4}')
if [ "$FREE_GB" -lt 20 ]; then
printf "\e[31mInsufficient free disk space: %dGB available. Minimum 20 GB required.\e[0m\n" "$FREE_GB"
avail_kb=$(df -k . | tail -1 | awk '{print $4}')
free_gb=$(awk "BEGIN {printf \"%.2f\", $avail_kb/1024/1024}")
if ! awk "BEGIN {exit !($free_gb >= 20)}"; then
exit 1
fi
printf "\e[32mSystem requirements met: CPU cores=%d, RAM=%.2fGB, FreeDisk=%dGB\e[0m\n" "$CPU_COUNT" "$MEM_GB" "$FREE_GB"
echo "System requirements met: CPU cores=$cpu_count, RAM=${total_mem_gb}GB, FreeDisk=${free_gb}GB"
printf "\e[36mPulling related images…\e[0m\n"
echo "Pulling images"
docker compose pull
echo "Images pulled successfully"
printf "\e[36mBuilding the project's images…\e[0m\n"
echo "Building images"
docker compose build
echo "Images built successfully"
echo
echo "You can now use run.sh script."

View file

@ -1,50 +1,30 @@
#!/usr/bin/env bash
set -euo pipefail
if [ ! -d "./evibes" ]; then
printf "\e[31m❌ Please run this script from the project's root (where the 'evibes' directory lives).\e[0m\n"
exit 1
fi
source ./scripts/Unix/starter.sh
PURPLE="\e[38;2;121;101;209m"
RESET="\e[0m"
GRAY="\e[90m"
CYAN="\e[36m"
SOURCE="${BASH_SOURCE[0]:-$0}"
SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
ART_PATH="$SCRIPT_DIR/../ASCII_ART_EVIBES"
if [ ! -f "$ART_PATH" ]; then
printf "\e[31m❌ Could not find ASCII art at %s\e[0m\n" "$ART_PATH"
exit 1
fi
while IFS= read -r line; do
printf "%b%s%b\n" "$PURPLE" "$line" "$RESET"
done < "$ART_PATH"
printf "\n%b by WISELESS TEAM%b\n\n" "$GRAY" "$RESET"
printf "%bStopping services…%b\n" "$CYAN" "$RESET"
echo "Shutting down..."
docker compose down
echo "Services were shut down successfully!"
printf "%bRebuilding services…%b\n" "$CYAN" "$RESET"
docker compose build
echo "Spinning services up..."
docker compose up -d --build --wait
echo "Services are up and healthy!"
printf "%bStarting services…%b\n" "$CYAN" "$RESET"
docker compose up -d
printf "%bApplying database migrations…%b\n" "$CYAN" "$RESET"
echo "Applying migrations..."
docker compose exec app poetry run python manage.py migrate --no-input --verbosity 0
echo "Migrations applied successfully!"
printf "%bCollecting static files…%b\n" "$CYAN" "$RESET"
echo "Collecting static files..."
docker compose exec app poetry run python manage.py collectstatic --no-input --verbosity 0
echo "Static files collected successfully!"
printf "%bSetting default caches…%b\n" "$CYAN" "$RESET"
echo "Setting default caches..."
docker compose exec app poetry run python manage.py set_default_caches
echo "Default caches set successfully!"
printf "%bCleaning up unused Docker data…%b\n" "$CYAN" "$RESET"
echo "Cleaning up unused Docker data..."
docker system prune -f
echo "Unused Docker data cleaned successfully!"
printf "\n\e[37mAll done! eVibes is up and running.\e[0m\n"
echo "All done! eVibes is up and running!"

View file

@ -1,60 +1,36 @@
#!/usr/bin/env bash
set -euo pipefail
if [ ! -d "./evibes" ]; then
printf "\e[31m❌ Please run this script from the project's root (where the 'evibes' directory lives).\e[0m\n"
exit 1
fi
PURPLE="\e[38;2;121;101;209m"
RESET="\e[0m"
GRAY="\e[90m"
SOURCE="${BASH_SOURCE[0]:-$0}"
SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
ART_PATH="$SCRIPT_DIR/../ASCII_ART_EVIBES"
if [ ! -f "$ART_PATH" ]; then
printf "\e[31m❌ Could not find ASCII art at %s\e[0m\n" "$ART_PATH"
exit 1
fi
while IFS= read -r line; do
printf "%b%s%b\n" "$PURPLE" "$line" "$RESET"
done < "$ART_PATH"
printf "\n%b by WISELESS TEAM%b\n\n" "$GRAY" "$RESET"
printf "\e[32mVerifying all images are present…\e[0m\n"
if ! command -v jq >/dev/null 2>&1; then
printf "\e[31mjq is required for verifying images. Please install jq.\e[0m\n"
exit 1
fi
images=$(docker compose config --format json | jq -r '.services[]?.image // empty')
source ./scripts/Unix/starter.sh
echo "Verifying all images are present…"
images=$(docker compose config --format json | jq -r '.services[].image // empty')
for image in $images; do
if ! docker image inspect "$image" >/dev/null 2>&1; then
printf "\e[31mRequired images not found. Please run install.sh first.\e[0m\n"
if ! docker image inspect "$image" > /dev/null 2>&1; then
echo "Required images not found. Please run install.sh first." >&2
exit 1
fi
printf " • Found image: %s\n" "$image"
echo " • Found image: $image"
done
printf "\e[36mStarting services…\e[0m\n"
echo "Spinning services up…"
docker compose up --no-build --detach --wait
echo "Services are up and healthy!"
printf "\e[36mApplying migrations…\e[0m\n"
echo "Applying migrations…"
docker compose exec app poetry run python manage.py migrate --no-input
echo "Migrations applied successfully!"
printf "\e[36mCollecting static files…\e[0m\n"
echo "Collecting static files…"
docker compose exec app poetry run python manage.py collectstatic --no-input
echo "Static files collected successfully!"
printf "\e[36mSetting default caches…\e[0m\n"
echo "Setting default caches…"
docker compose exec app poetry run python manage.py set_default_caches
echo "Default caches set successfully!"
printf "\e[36mCleaning up…\e[0m\n"
docker compose exec app poetry run python manage.py set_default_caches
echo "Cleaning unused Docker data…"
docker system prune -f
echo "Unused Docker data cleaned successfully!"
printf "\e[32mAll done! eVibes is up and running.\e[0m\n"
echo "All done! eVibes is up and running!"

24
scripts/Unix/starter.sh Normal file
View file

@ -0,0 +1,24 @@
#!/usr/bin/env bash
set -euo pipefail
if [ -n "${BASH_VERSION-}" ]; then script_path="${BASH_SOURCE[0]}"
elif [ -n "${ZSH_VERSION-}" ]; then script_path="${(%):-%x}"
else script_path="$0"
fi
script_dir="$(cd "$(dirname "$script_path")" && pwd -P)"
if [ ! -d "./evibes" ]; then
echo "❌ Please run this script from the project's root (where the 'evibes' directory lives)." >&2
exit 1
fi
art_path="$script_dir/../ASCII_ART_EVIBES"
if [ ! -f "$art_path" ]; then
echo "❌ Could not find ASCII art at $art_path" >&2
exit 1
fi
cat "$art_path"
echo
echo " by WISELESS TEAM"
echo

View file

@ -1,39 +1,23 @@
#!/usr/bin/env bash
set -euo pipefail
if [ ! -d "./evibes" ]; then
printf "\e[31m❌ Please run this script from the project's root (where the 'evibes' directory lives).\e[0m\n"
exit 1
fi
source ./scripts/Unix/starter.sh
PURPLE="\e[38;2;121;101;209m"
RESET="\e[0m"
GRAY="\e[90m"
CYAN="\e[36m"
RED="\e[31m"
SOURCE="${BASH_SOURCE[0]:-$0}"
SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
ART_PATH="$SCRIPT_DIR/../ASCII_ART_EVIBES"
if [ ! -f "$ART_PATH" ]; then
printf "%b❌ Could not find ASCII art at %s%b\n" "$RED" "$ART_PATH" "$RESET"
exit 1
fi
while IFS= read -r line; do
printf "%b%s%b\n" "$PURPLE" "$line" "$RESET"
done < "$ART_PATH"
printf "\n%b by WISELESS TEAM%b\n\n" "$GRAY" "$RESET"
printf "%bKilling services…%b\n" "$CYAN" "$RESET"
echo "Shutting down..."
docker compose down
echo "Services were shut down successfully!"
printf "%bCleaning up Docker data…%b\n" "$CYAN" "$RESET"
docker system prune -f
echo "Removing volumes..."
docker volume rm -f evibes_prometheus-data
docker volume rm -f evibes_es-data
echo "Volumes were removed successfully!"
printf "%bRemoving related files…%b\n" "$CYAN" "$RESET"
echo "Cleaning up unused Docker data..."
docker system prune -a -f --volumes
echo "Unused Docker data cleaned successfully!"
echo "Removing related files..."
rm -rf ./services_data ./media ./static
echo "Related files removed successfully!"
printf "%bBye-bye, hope you return later!%b\n" "$RED" "$RESET"
echo "Bye-bye, hope you return later!"

View file

@ -2,28 +2,7 @@
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container))
{
Write-Host "❌ Please run this script from the project's root (where the 'evibes' directory lives)." -ForegroundColor Red
exit 1
}
$purple = "`e[38;2;121;101;209m"
$reset = "`e[0m"
$artPath = Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) '..\ASCII_ART_EVIBES'
if (-not (Test-Path $artPath))
{
Write-Host "❌ Could not find ASCII art at $artPath" -ForegroundColor Red
exit 1
}
$art = Get-Content -Raw -Path $artPath
$art -split "`r?`n" | ForEach-Object {
Write-Host "$purple$_$reset"
}
Write-Host "`n by WISELESS TEAM`n" -ForegroundColor Gray
.\scripts\Windows\starter.ps1
Write-Host "Starting database backup process..." -ForegroundColor Magenta
docker compose exec app poetry run python manage.py dbbackup

View file

@ -2,28 +2,7 @@
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container))
{
Write-Host "❌ Please run this script from the project's root (where the 'evibes' directory lives)." -ForegroundColor Red
exit 1
}
$purple = "`e[38;2;121;101;209m"
$reset = "`e[0m"
$artPath = Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) '..\ASCII_ART_EVIBES'
if (-not (Test-Path $artPath))
{
Write-Host "❌ Could not find ASCII art at $artPath" -ForegroundColor Red
exit 1
}
$art = Get-Content -Raw -Path $artPath
$art -split "`r?`n" | ForEach-Object {
Write-Host "$purple$_$reset"
}
Write-Host "`n by WISELESS TEAM`n" -ForegroundColor Gray
.\scripts\Windows\starter.ps1
$envFile = '.env'

View file

@ -1,29 +1,7 @@
#!/usr/bin/env pwsh
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container))
{
Write-Host "❌ Please run this script from the project's root (where the 'evibes' directory lives)." -ForegroundColor Red
exit 1
}
$purple = "`e[38;2;121;101;209m"
$reset = "`e[0m"
$artPath = Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) '..\ASCII_ART_EVIBES'
if (-not (Test-Path $artPath))
{
Write-Host "❌ Could not find ASCII art at $artPath" -ForegroundColor Red
exit 1
}
$art = Get-Content -Raw -Path $artPath
$art -split "`r?`n" | ForEach-Object {
Write-Host "$purple$_$reset"
}
Write-Host "`n by WISELESS TEAM`n" -ForegroundColor Gray
.\scripts\Windows\starter.ps1
function Get-RandomHex
{

View file

@ -1,25 +1,7 @@
#!/usr/bin/env pwsh
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container))
{
Write-Host "❌ Please run this script from the project's root (where the 'evibes' directory lives)." -ForegroundColor Red
exit 1
}
$purple = "`e[38;2;121;101;209m"
$reset = "`e[0m"
$artPath = Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) '..\ASCII_ART_EVIBES'
if (-not (Test-Path $artPath))
{
Write-Host "❌ Could not find ASCII art at $artPath" -ForegroundColor Red
exit 1
}
Get-Content -Raw -Path $artPath | ForEach-Object { Write-Host "$purple$_$reset" }
Write-Host "`n by WISELESS TEAM`n" -ForegroundColor Gray
.\scripts\Windows\starter.ps1
if (-not (Test-Path '.env'))
{

View file

@ -1,27 +1,7 @@
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container))
{
Write-Host "❌ Please run this script from the project's root (where the 'evibes' directory lives)." -ForegroundColor Red
exit 1
}
$purple = "`e[38;2;121;101;209m"
$reset = "`e[0m"
$artPath = Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) '..\ASCII_ART_EVIBES'
if (-not (Test-Path $artPath))
{
Write-Host "❌ Could not find ASCII art at $artPath" -ForegroundColor Red
exit 1
}
$art = Get-Content -Raw -Path $artPath
$art -split "`r?`n" | ForEach-Object {
Write-Host "$purple$_$reset"
}
Write-Host "`n by WISELESS TEAM`n" -ForegroundColor Gray
.\scripts\Windows\starter.ps1
Write-Host "Shutting down..." -ForegroundColor Magenta

View file

@ -1,29 +1,7 @@
#!/usr/bin/env pwsh
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container))
{
Write-Host "❌ Please run this script from the project's root (where the 'evibes' directory lives)." -ForegroundColor Red
exit 1
}
$purple = "`e[38;2;121;101;209m"
$reset = "`e[0m"
$artPath = Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) '..\ASCII_ART_EVIBES'
if (-not (Test-Path $artPath))
{
Write-Host "❌ Could not find ASCII art at $artPath" -ForegroundColor Red
exit 1
}
$art = Get-Content -Raw -Path $artPath
$art -split "`r?`n" | ForEach-Object {
Write-Host "$purple$_$reset"
}
Write-Host "`n by WISELESS TEAM`n" -ForegroundColor Gray
.\scripts\Windows\starter.ps1
Write-Host "Verifying all images are present…" -ForegroundColor Green

View file

@ -0,0 +1,21 @@
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container))
{
Write-Host "❌ Please run this script from the project's root (where the 'evibes' directory lives)." -ForegroundColor Red
exit 1
}
$purple = "`e[38;2;121;101;209m"
$reset = "`e[0m"
$artPath = Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) '..\ASCII_ART_EVIBES'
if (-not (Test-Path $artPath))
{
Write-Host "❌ Could not find ASCII art at $artPath" -ForegroundColor Red
exit 1
}
Get-Content -Raw -Path $artPath | ForEach-Object { Write-Host "$purple$_$reset" }
Write-Host "`n by WISELESS TEAM`n" -ForegroundColor Gray

View file

@ -1,29 +1,7 @@
#!/usr/bin/env pwsh
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container))
{
Write-Host "❌ Please run this script from the project's root (where the 'evibes' directory lives)." -ForegroundColor Red
exit 1
}
$purple = "`e[38;2;121;101;209m"
$reset = "`e[0m"
$artPath = Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) '..\ASCII_ART_EVIBES'
if (-not (Test-Path $artPath))
{
Write-Host "❌ Could not find ASCII art at $artPath" -ForegroundColor Red
exit 1
}
$art = Get-Content -Raw -Path $artPath
$art -split "`r?`n" | ForEach-Object {
Write-Host "$purple$_$reset"
}
Write-Host "`n by WISELESS TEAM`n" -ForegroundColor Gray
.\scripts\Windows\starter.ps1
Write-Host "Shutting down..." -ForegroundColor Magenta
docker compose down