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 *.tsbuildinfo
# Environment file # 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 "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "تفاصيل المعالجة"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"يجب أن يتناسب مبلغ المعاملة مع {config.PAYMENT_GATEWAY_MINIMUM}-{config." "يجب أن يتناسب مبلغ المعاملة مع "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "الرصيد"
msgid "balances" msgid "balances"
msgstr "الموازين" msgstr "الموازين"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "تفعيل حسابك" msgstr "إيداع الرصيد"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "الشعار" msgstr "الشعار"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "مرحباً %(user.first_name)s," msgstr "مرحباً %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"شكرًا لك على تسجيلك في %(config.PROJECT_NAME)s. يرجى تفعيل حسابك بالنقر فوق " "لقد نجحنا في إيداع رصيد حسابك في %(amount)s. رصيدك الحالي\n"
"الزر أدناه:" " رصيدك الحالي هو %(balance)s__."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" 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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" msgid "a provider to get rates from is required"
@ -127,5 +116,7 @@ msgstr "مطلوب مزود للحصول على الأسعار من"
msgid "couldn't find provider {provider}" msgid "couldn't find provider {provider}"
msgstr "تعذّر العثور على الموفر {provider}" msgstr "تعذّر العثور على الموفر {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "محرك eVibes" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | إيداع الرصيد"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <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 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"Částka transakce se musí vejít do rozmezí {config.PAYMENT_GATEWAY_MINIMUM}-" "Částka transakce se musí vejít do rozmezí "
"{config.PAYMENT_GATEWAY_MAXIMUM}." "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Bilance"
msgid "balances" msgid "balances"
msgstr "Váhy" msgstr "Váhy"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Aktivace účtu" msgstr "Zůstatková záloha"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Hello %(user.first_name)s," msgstr "Ahoj %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Děkujeme, že jste se přihlásili k odběru %(config.PROJECT_NAME)s. Aktivujte " "Na váš účet jsme úspěšně připsali %(amount)s. Váš aktuální\n"
"prosím svůj účet kliknutím na tlačítko níže:" " je %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Všechna práva\n" "Pokud máte jakékoli dotazy, neváhejte kontaktovat naši podporu na adrese\n"
" vyhrazena." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Nepodařilo se najít poskytovatele {provider}" msgstr "Nepodařilo se najít poskytovatele {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "Motor eVibes" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Zůstatek vkladu"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Behandling af detaljer"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"Transaktionsbeløbet skal passe ind i {config.PAYMENT_GATEWAY_MINIMUM}-" "Transaktionsbeløbet skal passe ind i "
"{config.PAYMENT_GATEWAY_MAXIMUM}." "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Balance"
msgid "balances" msgid "balances"
msgstr "Vægte" msgstr "Vægte"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Aktivér din konto" msgstr "Saldoindbetaling"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Hej %(user.first_name)s," msgstr "Hej %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Tak, fordi du har tilmeldt dig %(config.PROJECT_NAME)s. Aktivér venligst din " "Vi har krediteret din konto med %(amount)s. Din nuværende\n"
"konto ved at klikke på knappen nedenfor:" " saldo er %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Alle rettigheder\n" "Hvis du har spørgsmål, er du velkommen til at kontakte vores support på\n"
" forbeholdt." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Kunne ikke finde udbyder {provider}" msgstr "Kunne ikke finde udbyder {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "eVibes-motor" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Saldoindbetaling"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Details zur Verarbeitung"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"Der Transaktionsbetrag muss zwischen {config.PAYMENT_GATEWAY_MINIMUM}-" "Der Transaktionsbetrag muss zwischen "
"{config.PAYMENT_GATEWAY_MAXIMUM} liegen" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM} liegen"
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Waage"
msgid "balances" msgid "balances"
msgstr "Waagen" msgstr "Waagen"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Aktivieren Sie Ihr Konto" msgstr "Balance Deposit"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Hallo %(user.first_name)s," msgstr "Hallo %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Vielen Dank, dass Sie sich für %(config.PROJECT_NAME)s angemeldet haben. " "Wir haben Ihrem Konto erfolgreich %(amount)s gutgeschrieben. Ihr aktuelles\n"
"Bitte aktivieren Sie Ihr Konto, indem Sie auf die Schaltfläche unten klicken:" " Saldo beträgt %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Alle Rechte\n" "Wenn Sie Fragen haben, wenden Sie sich bitte an unseren Support unter\n"
" vorbehalten." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Anbieter {provider} konnte nicht gefunden werden" msgstr "Anbieter {provider} konnte nicht gefunden werden"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "eVibes Motor" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Saldo Einzahlung"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -70,57 +70,46 @@ msgstr "Balance"
msgid "balances" msgid "balances"
msgstr "Balances" msgstr "Balances"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Activate Your Account" msgstr "Balance Deposit"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Hello %(user.first_name)s," msgstr "Hello %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " "We have successfully credited your account with %(amount)s. Your current\n"
"account by clicking the button below:" " balance is %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"All rights\n" "If you have any questions, feel free to contact our support at\n"
" reserved." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Couldn't find provider {provider}" msgstr "Couldn't find provider {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "eVibes Engine" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
#~ msgid "Activate Account" msgstr "{config.PROJECT_NAME} | Balance Deposit"
#~ msgstr "Activate Account"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Processing details"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"Transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "Transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Balance"
msgid "balances" msgid "balances"
msgstr "Scales" msgstr "Scales"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Activate Your Account" msgstr "Balance Deposit"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Hello %(user.first_name)s," msgstr "Hello %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " "We have successfully credited your account with %(amount)s. Your current\n"
"account by clicking the button below:" " balance is %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"All rights\n" "If you have any questions, feel free to contact our support at\n"
" reserved." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Couldn't find provider {provider}" msgstr "Couldn't find provider {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "eVibes Engine" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Balance Deposit"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Detalles del proceso"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"El importe de la transacción debe ajustarse a {config." "El importe de la transacción debe ajustarse a "
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Saldo"
msgid "balances" msgid "balances"
msgstr "Escalas" msgstr "Escalas"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Activar su cuenta" msgstr "Depósito de saldo"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logotipo" msgstr "Logotipo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Hola %(user.first_name)s," msgstr "Hola %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Gracias por registrarse en %(config.PROJECT_NAME)s. Por favor, active su " "Hemos ingresado correctamente %(amount)s en su cuenta. Su saldo\n"
"cuenta haciendo clic en el botón de abajo:" " actual es de %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Todos los derechos\n" "Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro servicio de asistencia en\n"
" reservados." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "No se ha podido encontrar el proveedor {provider}" msgstr "No se ha podido encontrar el proveedor {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "Motor eVibes" #, 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 "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <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 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"Le montant de la transaction doit être compris entre {config." "Le montant de la transaction doit être compris entre "
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,66 +66,58 @@ msgstr "Balance"
msgid "balances" msgid "balances"
msgstr "Balances" msgstr "Balances"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Activer votre compte" msgstr "Balance Deposit"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Bonjour %(user.first_name)s," msgstr "Bonjour %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Merci de vous être inscrit à %(config.PROJECT_NAME)s. Veuillez activer votre " "Nous avons crédité votre compte de %(amount)s. Votre solde\n"
"compte en cliquant sur le bouton ci-dessous :" " est de %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Tous les droits\n" "Si vous avez des questions, n'hésitez pas à contacter notre service d'assistance à l'adresse suivante\n"
" réservés." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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 #: payments/utils/__init__.py:15
#, python-brace-format #, python-brace-format
msgid "couldn't find provider {provider}" msgid "couldn't find provider {provider}"
msgstr "Impossible de trouver le fournisseur {provider}" msgstr "Impossible de trouver le fournisseur {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "Moteur eVibes" #, 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 "" msgstr ""
"Project-Id-Version: EVIBES 2.8.9\n" "Project-Id-Version: EVIBES 2.8.9\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n" "Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
@ -67,48 +67,41 @@ msgstr ""
msgid "balances" msgid "balances"
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your new\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgstr ""
#: payments/templates/balance_deposit_email.html:116 #: payments/templates/balance_deposit_email.html:107
msgid "" #, python-format
"All rights\n" msgid "best regards,<br>the %(project_name)s team"
" reserved." msgstr ""
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "" msgstr ""
#: payments/utils/__init__.py:8 #: payments/utils/__init__.py:8
@ -119,3 +112,8 @@ msgstr ""
#, python-brace-format #, python-brace-format
msgid "couldn't find provider {provider}" msgid "couldn't find provider {provider}"
msgstr "" msgstr ""
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr ""

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Dettagli di elaborazione"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"L'importo della transazione deve rientrare in {config." "L'importo della transazione deve rientrare in "
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Equilibrio"
msgid "balances" msgid "balances"
msgstr "Bilance" msgstr "Bilance"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Attivare il proprio account" msgstr "Saldo Deposito"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Ciao %(user.first_name)s," msgstr "Hello %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Grazie per esservi iscritti a %(config.PROJECT_NAME)s. Attivate il vostro " "Abbiamo accreditato il vostro conto con %(amount)s. Il suo saldo attuale\n"
"account facendo clic sul pulsante sottostante:" " saldo è %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Tutti i diritti\n" "In caso di domande, non esitate a contattare il nostro supporto all'indirizzo\n"
" riservati." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Impossibile trovare il fornitore {provider}" msgstr "Impossibile trovare il fornitore {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "Motore eVibes" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Deposito a saldo"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,10 @@ msgstr "加工内容"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"取引金額は{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}に" "取引金額は{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}に収まる必要があります。"
"収まる必要があります。"
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +65,46 @@ msgstr "バランス"
msgid "balances" msgid "balances"
msgstr "体重計" msgstr "体重計"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "アカウントの有効化" msgstr "預金残高"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "ロゴ" msgstr "ロゴ"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "こんにちは、%(user.first_name)sです、" msgstr "こんにちは%(user_first_name)s、"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"%(config.PROJECT_NAME)sにご登録いただきありがとうございます。下のボタンをク" "お客様の口座に%(amount)sが入金されました。あなたの現在の\n"
"リックしてアカウントを有効にしてください:" " 現在の残高は%(balance)sです。"
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" 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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" msgid "a provider to get rates from is required"
@ -127,5 +115,7 @@ msgstr "レートを取得するプロバイダーが必要"
msgid "couldn't find provider {provider}" msgid "couldn't find provider {provider}"
msgstr "{provider}プロバイダーが見つかりません。" msgstr "{provider}プロバイダーが見つかりません。"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "eVibesエンジン" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME}| 預金残高"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: EVIBES 2.8.9\n" "Project-Id-Version: EVIBES 2.8.9\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n" "Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
@ -67,48 +67,41 @@ msgstr ""
msgid "balances" msgid "balances"
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your new\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgstr ""
#: payments/templates/balance_deposit_email.html:116 #: payments/templates/balance_deposit_email.html:107
msgid "" #, python-format
"All rights\n" msgid "best regards,<br>the %(project_name)s team"
" reserved." msgstr ""
#: payments/templates/balance_deposit_email.html:113
msgid "all rights reserved"
msgstr "" msgstr ""
#: payments/utils/__init__.py:8 #: payments/utils/__init__.py:8
@ -119,3 +112,8 @@ msgstr ""
#, python-brace-format #, python-brace-format
msgid "couldn't find provider {provider}" msgid "couldn't find provider {provider}"
msgstr "" msgstr ""
#: payments/utils/emailing.py:27
#, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr ""

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Verwerkingsdetails"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"Het transactiebedrag moet passen binnen {config.PAYMENT_GATEWAY_MINIMUM}-" "Het transactiebedrag moet passen binnen "
"{config.PAYMENT_GATEWAY_MAXIMUM}." "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Saldo"
msgid "balances" msgid "balances"
msgstr "Weegschaal" msgstr "Weegschaal"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Uw account activeren" msgstr "Saldo Storting"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Hallo %(user.first_name)s," msgstr "Hallo %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Bedankt voor het aanmelden bij %(config.PROJECT_NAME)s. Activeer je account " "We hebben uw rekening succesvol gecrediteerd met %(amount)s. Uw huidige\n"
"door op de onderstaande knop te klikken:" " saldo is %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Alle rechten\n" "Als u vragen hebt, kunt u contact opnemen met onze klantenservice op\n"
" voorbehouden." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Kon provider {provider} niet vinden" msgstr "Kon provider {provider} niet vinden"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "eVibes motor" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Saldo storting"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Szczegóły przetwarzania"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"Kwota transakcji musi mieścić się w przedziale {config." "Kwota transakcji musi mieścić się w przedziale "
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}."
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Równowaga"
msgid "balances" msgid "balances"
msgstr "Wagi" msgstr "Wagi"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Aktywacja konta" msgstr "Saldo depozytu"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Witaj %(user.first_name)s," msgstr "Witaj %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Dziękujemy za zarejestrowanie się w %(config.PROJECT_NAME)s. Aktywuj swoje " "Twoje konto zostało pomyślnie zasilone kwotą %(amount)s. Aktualne\n"
"konto, klikając poniższy przycisk:" " wynosi %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Wszelkie prawa\n" "Jeśli masz jakiekolwiek pytania, skontaktuj się z naszym działem pomocy technicznej pod adresem\n"
" zastrzeżone." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Nie można znaleźć dostawcy {provider}." msgstr "Nie można znaleźć dostawcy {provider}."
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "Silnik eVibes" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Wpłata salda"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Detalhes do processamento"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"O valor da transação deve se enquadrar em {config.PAYMENT_GATEWAY_MINIMUM}-" "O valor da transação deve se enquadrar em "
"{config.PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Equilíbrio"
msgid "balances" msgid "balances"
msgstr "Balanças" msgstr "Balanças"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Ativar sua conta" msgstr "Depósito de saldo"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logotipo" msgstr "Logotipo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Olá %(user.first_name)s," msgstr "Olá %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Obrigado por se inscrever no %(config.PROJECT_NAME)s. Ative sua conta " "Creditamos sua conta com %(amount)s com sucesso. Seu saldo atual\n"
"clicando no botão abaixo:" " saldo atual é %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Todos os direitos\n" "Se tiver alguma dúvida, entre em contato com o nosso suporte em\n"
" reservados." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Não foi possível encontrar o provedor {provider}" msgstr "Não foi possível encontrar o provedor {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "Motor eVibes" #, 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 "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "Detalii de prelucrare"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"Valoarea tranzacției trebuie să se încadreze în {config." "Valoarea tranzacției trebuie să se încadreze în "
"PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,57 +66,46 @@ msgstr "Echilibru"
msgid "balances" msgid "balances"
msgstr "Balanță" msgstr "Balanță"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "Activați contul dvs." msgstr "Sold Depozit"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "Logo" msgstr "Logo"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "Bună ziua %(user.first_name)s," msgstr "Bună ziua %(user_first_name)s,"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "" msgstr ""
"Vă mulțumim pentru înscrierea la %(config.PROJECT_NAME)s. Vă rugăm să vă " "Am creditat cu succes contul dvs. cu %(amount)s. Soldul dvs. actual\n"
"activați contul făcând clic pe butonul de mai jos:" " actual este %(balance)s."
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" msgstr ""
"Toate drepturile\n" "Dacă aveți întrebări, nu ezitați să contactați asistența noastră la\n"
" rezervate." " %(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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" 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}" msgid "couldn't find provider {provider}"
msgstr "Nu am putut găsi furnizorul {provider}" msgstr "Nu am putut găsi furnizorul {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "Motorul eVibes" #, python-brace-format
msgid "{config.PROJECT_NAME} | balance deposit"
msgstr "{config.PROJECT_NAME} | Depozit sold"

View file

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

View file

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 1\n" "Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2025-01-30 03:27+0000\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n" "Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n" "Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
@ -52,11 +52,11 @@ msgstr "处理细节"
#: payments/models.py:39 #: payments/models.py:39
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config." "transaction amount must fit into "
"PAYMENT_GATEWAY_MAXIMUM}" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}"
msgstr "" msgstr ""
"交易金额必须符合 {config.PAYMENT_GATEWAY_MINIMUM}-{config." "交易金额必须符合 {config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM} "
"PAYMENT_GATEWAY_MAXIMUM} 的规定。" "的规定。"
#: payments/models.py:61 #: payments/models.py:61
msgid "balance" msgid "balance"
@ -66,53 +66,46 @@ msgstr "平衡"
msgid "balances" msgid "balances"
msgstr "天平" msgstr "天平"
#: payments/templates/balance_deposit_email.html:8 #: payments/templates/balance_deposit_email.html:7
#: payments/templates/balance_deposit_email.html:100 #: payments/templates/balance_deposit_email.html:100
msgid "Activate Your Account" msgid "balance deposit"
msgstr "激活账户" msgstr "余额存款"
#: payments/templates/balance_deposit_email.html:94 #: payments/templates/balance_deposit_email.html:95
msgid "Logo" msgid "logo"
msgstr "标志" msgstr "标志"
#: payments/templates/balance_deposit_email.html:101 #: payments/templates/balance_deposit_email.html:101
#, python-format #, python-format
msgid "Hello %(user.first_name)s," msgid "hello %(user_first_name)s,"
msgstr "您好 %(user.first_name)s、" msgstr "你好%(user_first_name)s_、"
#: payments/templates/balance_deposit_email.html:102 #: payments/templates/balance_deposit_email.html:102
#, python-format #, python-format
msgid "" msgid ""
"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" "we have successfully credited your account with %(amount)s. your current\n"
" account by clicking the button below:" " balance is %(balance)s."
msgstr "感谢您注册%(config.PROJECT_NAME)s_。请点击下面的按钮激活您的帐户" msgstr ""
"我们已成功地将 %(amount)s_记入您的账户。您目前的\n"
" 余额为%(balance)s_。"
#: payments/templates/balance_deposit_email.html:105 #: 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 #, 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 "" msgid ""
"All rights\n" "if you have any questions, feel free to contact our support at\n"
" reserved." " %(contact_email)s."
msgstr "" 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 #: payments/utils/__init__.py:8
msgid "a provider to get rates from is required" msgid "a provider to get rates from is required"
@ -123,5 +116,7 @@ msgstr "需要提供商提供费率"
msgid "couldn't find provider {provider}" msgid "couldn't find provider {provider}"
msgstr "找不到提供方 {provider}" msgstr "找不到提供方 {provider}"
#~ msgid "eVibes Engine" #: payments/utils/emailing.py:27
#~ msgstr "eVibes 引擎" #, 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 django.dispatch import receiver
from payments.models import Balance, Transaction from payments.models import Balance, Transaction
from payments.utils.emailing import balance_deposit_email
from vibes_auth.models import User from vibes_auth.models import User
@ -17,5 +18,10 @@ def process_transaction_changes(instance, created, **_kwargs):
try: try:
gateway = object() gateway = object()
gateway.process_transaction(instance) gateway.process_transaction(instance)
except Exception: # noqa: except Exception as e: # noqa:
instance.process = {"status": "NOGATEWAY"} 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> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
{% load static %}
{% load i18n %}
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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> <style>
/* Ensure responsiveness across devices */ * {
box-sizing: border-box;
}
body, table, td, a { body, table, td, a {
text-size-adjust: 100%; text-size-adjust: 100%;
-ms-text-size-adjust: 100%; -ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;
} }
table {
}
body { body {
margin: 0 !important; margin: 0 !important;
padding: 0 !important; padding: 0 !important;
width: 100% !important; width: 100% !important;
} }
/* Use fluid layout for images */
img { img {
max-width: 100%; max-width: 100%;
height: auto; height: auto;
} }
/* Style adjustments for different clients */
.email-container { .email-container {
max-width: 600px; max-width: 600px;
margin: 0 auto; margin: 0 auto;
@ -45,7 +49,7 @@
} }
.header img { .header img {
width: 120px; /* Adjust logo size */ width: 120px;
height: auto; height: auto;
} }
@ -57,18 +61,19 @@
color: #888; color: #888;
} }
.button { .order-table {
background-color: #000000; width: 100%;
color: white;
padding: 10px 20px;
text-decoration: none;
display: inline-block;
margin-top: 20px; margin-top: 20px;
transition: 0.2s; border-collapse: collapse;
} }
.button:hover { .order-table th, .order-table td {
background-color: #3a3a3a; border: 1px solid #ddd;
padding: 8px;
}
.order-table th {
background-color: #f4f4f4;
} }
@media only screen and (max-width: 600px) { @media only screen and (max-width: 600px) {
@ -77,44 +82,35 @@
} }
} }
</style> </style>
<!-- Avatar for email client display -->
<link rel="icon" href="{% static 'favicon.png' %}" sizes="192x192"> <link rel="icon" href="{% static 'favicon.png' %}" sizes="192x192">
</head> </head>
<body> <body>
<!-- Main container -->
<table> <table>
<tr> <tr>
<td> <td>
<!-- Email container for centering -->
<table class="email-container"> <table class="email-container">
<tr> <tr>
<td class="header"> <td class="header">
<!-- Logo area -->
<img src="{% static 'favicon.png' %}" <img src="{% static 'favicon.png' %}"
alt="{% blocktrans with msgid="logo_alt_text" %}Logo{% endblocktrans %}" width="120"> alt="{% blocktrans %}logo{% endblocktrans %}" width="120">
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="content-cell"> <td class="content-cell">
<!-- Email content area --> <h2>{% blocktrans %}balance deposit{% endblocktrans %}</h2>
<h2>{% blocktrans %}Activate Your Account{% endblocktrans %}</h2> <p>{% blocktrans %}hello {{ user_first_name }},{% endblocktrans %}</p>
<p>{% blocktrans %}Hello {{ user.first_name }},{% endblocktrans %}</p> <p>{% blocktrans %}we have successfully credited your account with {{ amount }}. your current
<p>{% blocktrans %}Thank you for signing up for {{ config.PROJECT_NAME }}. Please activate your balance is {{ balance }}.{% endblocktrans %}</p>
account by clicking the button below:{% endblocktrans %}</p>
<p> <p>{% blocktrans %}if you have any questions, feel free to contact our support at
<a href="{{ activation_link }}" class="button">{% blocktrans %}Activate {{ contact_email }}.{% endblocktrans %}</p>
Account{% endblocktrans %}</a> <p>{% blocktrans %}best regards,<br>the {{ project_name }} team{% endblocktrans %}</p>
</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>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="footer"> <td class="footer">
&copy; {{ current_year }} {{ config.PROJECT_NAME }}. {% blocktrans %}All rights &copy; {% now "Y" %} {{ project_name }}.
reserved.{% endblocktrans %} {% blocktrans %}all rights reserved{% endblocktrans %}.
</td> </td>
</tr> </tr>
</table> </table>

View file

@ -1,32 +1,46 @@
from datetime import datetime
from celery.app import shared_task from celery.app import shared_task
from constance import config from constance import config
from django.core import mail
from django.core.mail import EmailMessage from django.core.mail import EmailMessage
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.utils import timezone
from django.utils.translation import activate 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 @shared_task
def balance_email(user_pk: str) -> tuple[bool, str]: def balance_deposit_email(transaction_pk: str) -> tuple[bool, str]:
pass
try: try:
user = User.objects.get(pk=user_pk) transaction = Transaction.objects.get(pk=transaction_pk)
except User.DoesNotExist: except Transaction.DoesNotExist:
return False, f"Order not found with the given pk: {user_pk}" 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( email = EmailMessage(
"eVibes | Successful Order", _(f"{config.PROJECT_NAME} | balance deposit"),
render_to_string( 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}>", from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
connection=connection,
) )
email.content_subtype = "html" email.content_subtype = "html"
email.send() 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 #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
if [ ! -d "./evibes" ]; then source ./scripts/Unix/starter.sh
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" env_file=".env"
RESET="\e[0m" if [ ! -f "$env_file" ]; then
GRAY="\e[90m" echo ".env file not found in the current directory." >&2
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"
exit 1 exit 1
fi fi
declare -A env_vars declare -A env_vars
declare -a keys while IFS= read -r line; do
while IFS= read -r raw; do
line="${raw%%#*}"
line="${line%"${line##*[![:space:]]}"}"
line="${line#"${line%%[![:space:]]*}"}" line="${line#"${line%%[![:space:]]*}"}"
[ -z "$line" ] || [[ "$line" != *=* ]] && continue line="${line%"${line##*[![:space:]]}"}"
if [ -z "$line" ] || [[ "$line" == \#* ]] || [[ "$line" != *=* ]]; then
continue
fi
key="${line%%=*}" key="${line%%=*}"
value="${line#*=}" value="${line#*=}"
if [[ "${value:0:1}" == '"' && "${value: -1}" == '"' ]] || \ if [[ ( "$value" == \"*\" && "$value" == *\" ) || ( "$value" == \'*\' && "$value" == *\' ) ]]; then
[[ "${value:0:1}" == "'" && "${value: -1}" == "'" ]]; then
value="${value:1:-1}" value="${value:1:-1}"
fi fi
export "$key"="$value" export "$key=$value"
env_vars["$key"]="$value" env_vars["$key"]="$value"
keys+=("$key") done < "$env_file"
done < "$ENV_FILE"
if [ "${#keys[@]}" -gt 0 ]; then if [ "${#env_vars[@]}" -gt 0 ]; then
# shellcheck disable=SC2207 IFS=$'\n' sorted=($(for k in "${!env_vars[@]}"; do echo "${k}=${env_vars[$k]}"; done | sort))
IFS=$'\n' sorted=($(sort <<<"${keys[*]}")) printf "%s" "${sorted[0]}"
unset IFS for entry in "${sorted[@]:1}"; do
formatted="" printf ";%s" "$entry"
for k in "${sorted[@]}"; do
[ -z "$formatted" ] && formatted="$k=${env_vars[$k]}" \
|| formatted="$formatted;$k=${env_vars[$k]}"
done done
printf "%s\n" "$formatted" echo
fi fi

View file

@ -1,145 +1,81 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
if [ ! -d "./evibes" ]; then source ./scripts/Unix/starter.sh
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" get_random_hex() {
RESET="\e[0m" hexdump -v -e '/1 "%02x"' -n "$1" /dev/urandom
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}"
} }
# prompt for a value, auto-generate hex if blank prompt_default() {
prompt_autogen() { printf "Enter %s [%s]: " "$1" "$2"
local name="$1" bytes="$2" result read -r response
read -rp "Enter $name (leave blank to auto-generate): " result if [ -z "${response//[[:space:]]/}" ]; then
if [ -z "$result" ]; then echo "$2"
# generate $bytes random bytes as hex else
result="$(head -c "$bytes" /dev/urandom | od -An -tx1 | tr -d ' \n')" 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 fi
printf '%s\n' "$result"
} }
if [ -f .env ]; then if [ -f .env ]; then
printf "\e[33m.env already exists and will be overwritten.\e[0m\n" echo ".env already exists and will be overwritten." >&2
read -rp "Press Enter to continue or Ctrl+C to abort" printf "Press Enter to continue or Ctrl+C to abort"
read -r
fi fi
PROJECT_NAME=$(prompt_default 'EVIBES_PROJECT_NAME' 'eVibes') PROJECT_NAME=$(prompt_default EVIBES_PROJECT_NAME eVibes)
FRONTEND_DOMAIN=$(prompt_default 'EVIBES_FRONTEND_DOMAIN' 'evibes.com') FRONTEND_DOMAIN=$(prompt_default EVIBES_FRONTEND_DOMAIN evibes.com)
BASE_DOMAIN=$(prompt_default 'EVIBES_BASE_DOMAIN' 'evibes.com') BASE_DOMAIN=$(prompt_default EVIBES_BASE_DOMAIN evibes.com)
SENTRY_DSN=$(prompt_default 'SENTRY_DSN' '') SENTRY_DSN=$(prompt_default SENTRY_DSN "")
DEBUG=$(prompt_default 'DEBUG' '1') DEBUG=$(prompt_default DEBUG 1)
SECRET_KEY=$(prompt_autogen 'SECRET_KEY' 32) SECRET_KEY=$(prompt_autogen SECRET_KEY 32)
JWT_SIGNING_KEY=$(prompt_autogen 'JWT_SIGNING_KEY' 64) JWT_SIGNING_KEY=$(prompt_autogen JWT_SIGNING_KEY 64)
ALLOWED_HOSTS=$(prompt_default 'ALLOWED_HOSTS' 'evibes.com api.evibes.com b2b.evibes.com') 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') 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" CORS_ALLOWED_ORIGINS=$CSRF_TRUSTED_ORIGINS
POSTGRES_DB=$(prompt_default 'POSTGRES_DB' 'evibes') POSTGRES_DB=$(prompt_default POSTGRES_DB evibes)
POSTGRES_USER=$(prompt_default 'POSTGRES_USER' 'evibes_user') POSTGRES_USER=$(prompt_default POSTGRES_USER evibes_user)
POSTGRES_PASSWORD=$(prompt_autogen 'POSTGRES_PASSWORD' 16) POSTGRES_PASSWORD=$(prompt_autogen POSTGRES_PASSWORD 16)
DBBACKUP_SFTP_HOST=$(prompt_default 'DBBACKUP_SFTP_HOST' 'Your SFTP backup 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_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_PASS=$(prompt_default DBBACKUP_SFTP_PASS "The password to use to log in to that host")
ELASTIC_PASSWORD=$(prompt_autogen 'ELASTIC_PASSWORD' 16) ELASTIC_PASSWORD=$(prompt_autogen ELASTIC_PASSWORD 16)
REDIS_PASSWORD=$(prompt_autogen 'REDIS_PASSWORD' 16) REDIS_PASSWORD=$(prompt_autogen REDIS_PASSWORD 16)
PROMETHEUS_USER=$(prompt_default 'PROMETHEUS_USER' 'evibes') PROMETHEUS_USER=$(prompt_default PROMETHEUS_USER evibes)
PROMETHEUS_PASSWORD=$(prompt_autogen 'PROMETHEUS_PASSWORD' 16) PROMETHEUS_PASSWORD=$(prompt_autogen PROMETHEUS_PASSWORD 16)
EMAIL_BACKEND=$(prompt_default 'EMAIL_BACKEND' 'django.core.mail.backends.smtp.EmailBackend') EMAIL_BACKEND=$(prompt_default EMAIL_BACKEND django.core.mail.backends.smtp.EmailBackend)
EMAIL_HOST=$(prompt_default 'EMAIL_HOST' 'smtp.whatever.evibes.com') EMAIL_HOST=$(prompt_default EMAIL_HOST smtp.whatever.evibes.com)
EMAIL_PORT=$(prompt_default 'EMAIL_PORT' '465') EMAIL_PORT=$(prompt_default EMAIL_PORT 465)
EMAIL_USE_TLS=$(prompt_default 'EMAIL_USE_TLS' '0') EMAIL_USE_TLS=$(prompt_default EMAIL_USE_TLS 0)
EMAIL_USE_SSL=$(prompt_default 'EMAIL_USE_SSL' '1') EMAIL_USE_SSL=$(prompt_default EMAIL_USE_SSL 1)
EMAIL_HOST_USER=$(prompt_default 'EMAIL_HOST_USER' 'your-email-user@whatever.evibes.com') EMAIL_HOST_USER=$(prompt_default EMAIL_HOST_USER your-email-user@whatever.evibes.com)
EMAIL_FROM="$EMAIL_HOST_USER" EMAIL_FROM=$EMAIL_HOST_USER
EMAIL_HOST_PASSWORD=$(prompt_default 'EMAIL_HOST_PASSWORD' 'SUPERSECRETEMAILHOSTPASSWORD') EMAIL_HOST_PASSWORD=$(prompt_default EMAIL_HOST_PASSWORD SUPERSECRETEMAILHOSTPASSWORD)
COMPANY_NAME=$(prompt_default 'COMPANY_NAME' 'eVibes, Inc.') COMPANY_NAME=$(prompt_default COMPANY_NAME "eVibes, Inc.")
COMPANY_PHONE_NUMBER=$(prompt_default 'COMPANY_PHONE_NUMBER' '+888888888888') COMPANY_PHONE_NUMBER=$(prompt_default COMPANY_PHONE_NUMBER "+888888888888")
COMPANY_ADDRESS=$(prompt_default 'COMPANY_ADDRESS' 'The place that does not exist') COMPANY_ADDRESS=$(prompt_default COMPANY_ADDRESS "The place that does not exist")
OPENAI_API_KEY=$(prompt_default 'OPENAI_API_KEY' 'Haha, really?') OPENAI_API_KEY=$(prompt_default OPENAI_API_KEY "Haha, really?")
ABSTRACT_API_KEY=$(prompt_default 'ABSTRACT_API_KEY' 'Haha, really? x2') ABSTRACT_API_KEY=$(prompt_default ABSTRACT_API_KEY "Haha, really? x2")
DEEPL_AUTH_KEY=$(prompt_default 'DEEPL_AUTH_KEY' 'Haha, really? x3') DEEPL_AUTH_KEY=$(prompt_default DEEPL_AUTH_KEY "Haha, really? x3")
# Write to .env cat > .env <<EOF
{ EVIBES_PROJECT_NAME="$PR
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"

View file

@ -1,63 +1,44 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
if [ ! -d "./evibes" ]; then source ./scripts/Unix/starter.sh
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"
if [ ! -f .env ]; then 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 exit 0
fi fi
CPU_COUNT=$(nproc 2>/dev/null || sysctl -n hw.ncpu) cpu_count=$(getconf _NPROCESSORS_ONLN)
if [ "$CPU_COUNT" -lt 4 ]; then if [ "$cpu_count" -lt 4 ]; then
printf "\e[31mInsufficient CPU cores: %d detected. Minimum 4 required.\e[0m\n" "$CPU_COUNT"
exit 1 exit 1
fi fi
if [ -f /proc/meminfo ]; then if [ -f /proc/meminfo ]; then
MEM_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo) mem_kb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
MEM_GB=$(awk "BEGIN {printf \"%.2f\", ${MEM_KB}/1024/1024}") total_mem_gb=$(awk "BEGIN {printf \"%.2f\", $mem_kb/1024/1024}")
else else
MEM_BYTES=$(vm_stat | awk '/Pages free/ {print $3 * 4096}') total_mem_bytes=$(sysctl -n hw.memsize)
MEM_GB=$(awk "BEGIN {printf \"%.2f\", ${MEM_BYTES}/1024/1024/1024}") total_mem_gb=$(awk "BEGIN {printf \"%.2f\", $total_mem_bytes/1024/1024/1024}")
fi fi
if ! awk "BEGIN {exit !($total_mem_gb >= 6)}"; then
if (( $(echo "$MEM_GB < 6" | bc -l) )); then
printf "\e[31mInsufficient RAM: %.2fGB detected. Minimum 6 GB required.\e[0m\n" "$MEM_GB"
exit 1 exit 1
fi fi
FREE_GB=$(df -BG . | awk 'NR==2 {gsub("G","",$4); print $4}') avail_kb=$(df -k . | tail -1 | awk '{print $4}')
if [ "$FREE_GB" -lt 20 ]; then free_gb=$(awk "BEGIN {printf \"%.2f\", $avail_kb/1024/1024}")
printf "\e[31mInsufficient free disk space: %dGB available. Minimum 20 GB required.\e[0m\n" "$FREE_GB" if ! awk "BEGIN {exit !($free_gb >= 20)}"; then
exit 1 exit 1
fi 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 docker compose pull
echo "Images pulled successfully"
printf "\e[36mBuilding the project's images…\e[0m\n" echo "Building images"
docker compose build 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 #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
if [ ! -d "./evibes" ]; then source ./scripts/Unix/starter.sh
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" echo "Shutting down..."
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"
docker compose down docker compose down
echo "Services were shut down successfully!"
printf "%bRebuilding services…%b\n" "$CYAN" "$RESET" echo "Spinning services up..."
docker compose build docker compose up -d --build --wait
echo "Services are up and healthy!"
printf "%bStarting services…%b\n" "$CYAN" "$RESET" echo "Applying migrations..."
docker compose up -d
printf "%bApplying database migrations…%b\n" "$CYAN" "$RESET"
docker compose exec app poetry run python manage.py migrate --no-input --verbosity 0 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 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 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 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 #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
if [ ! -d "./evibes" ]; then source ./scripts/Unix/starter.sh
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')
echo "Verifying all images are present…"
images=$(docker compose config --format json | jq -r '.services[].image // empty')
for image in $images; do for image in $images; do
if ! docker image inspect "$image" >/dev/null 2>&1; then if ! docker image inspect "$image" > /dev/null 2>&1; then
printf "\e[31mRequired images not found. Please run install.sh first.\e[0m\n" echo "Required images not found. Please run install.sh first." >&2
exit 1 exit 1
fi fi
printf " • Found image: %s\n" "$image" echo " • Found image: $image"
done done
printf "\e[36mStarting services…\e[0m\n" echo "Spinning services up…"
docker compose up --no-build --detach --wait 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 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 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 docker compose exec app poetry run python manage.py set_default_caches
echo "Default caches set successfully!"
printf "\e[36mCleaning up…\e[0m\n" echo "Cleaning unused Docker data…"
docker compose exec app poetry run python manage.py set_default_caches 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 #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
if [ ! -d "./evibes" ]; then source ./scripts/Unix/starter.sh
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" echo "Shutting down..."
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"
docker compose down docker compose down
echo "Services were shut down successfully!"
printf "%bCleaning up Docker data…%b\n" "$CYAN" "$RESET" echo "Removing volumes..."
docker system prune -f 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 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 Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container)) .\scripts\Windows\starter.ps1
{
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
Write-Host "Starting database backup process..." -ForegroundColor Magenta Write-Host "Starting database backup process..." -ForegroundColor Magenta
docker compose exec app poetry run python manage.py dbbackup docker compose exec app poetry run python manage.py dbbackup

View file

@ -2,28 +2,7 @@
Set-StrictMode -Version Latest Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container)) .\scripts\Windows\starter.ps1
{
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
$envFile = '.env' $envFile = '.env'

View file

@ -1,29 +1,7 @@
#!/usr/bin/env pwsh
Set-StrictMode -Version Latest Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container)) .\scripts\Windows\starter.ps1
{
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
function Get-RandomHex function Get-RandomHex
{ {

View file

@ -1,25 +1,7 @@
#!/usr/bin/env pwsh
Set-StrictMode -Version Latest Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container)) .\scripts\Windows\starter.ps1
{
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
if (-not (Test-Path '.env')) if (-not (Test-Path '.env'))
{ {

View file

@ -1,27 +1,7 @@
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container)) .\scripts\Windows\starter.ps1
{
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
Write-Host "Shutting down..." -ForegroundColor Magenta Write-Host "Shutting down..." -ForegroundColor Magenta

View file

@ -1,29 +1,7 @@
#!/usr/bin/env pwsh
Set-StrictMode -Version Latest Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container)) .\scripts\Windows\starter.ps1
{
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
Write-Host "Verifying all images are present…" -ForegroundColor Green 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 Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path ".\evibes" -PathType Container)) .\scripts\Windows\starter.ps1
{
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
Write-Host "Shutting down..." -ForegroundColor Magenta Write-Host "Shutting down..." -ForegroundColor Magenta
docker compose down docker compose down