Procházet zdrojové kódy

Added the ability to translate the SharixAdmin app into Russian

1Mike21 před 1 rokem
rodič
revize
7113cd216d
43 změnil soubory, kde provedl 1252 přidání a 76 odebrání
  1. 0 1
      .gitignore
  2. binární
      SharixAdmin/locale/ru/LC_MESSAGES/django.mo
  3. 412 0
      SharixAdmin/locale/ru/LC_MESSAGES/django.po
  4. 28 28
      SharixAdmin/tables.py
  5. 34 0
      SharixAdmin/templates/SharixAdmin/auth.html
  6. 57 0
      SharixAdmin/templates/SharixAdmin/balance.html
  7. 10 0
      SharixAdmin/templates/SharixAdmin/balance_success.html
  8. 17 0
      SharixAdmin/templates/SharixAdmin/base.html
  9. 163 0
      SharixAdmin/templates/SharixAdmin/index.html
  10. 38 0
      SharixAdmin/templates/SharixAdmin/main.html
  11. 22 0
      SharixAdmin/templates/SharixAdmin/partner_information_form.html
  12. 38 0
      SharixAdmin/templates/SharixAdmin/partners.html
  13. 38 0
      SharixAdmin/templates/SharixAdmin/provider.html
  14. 38 0
      SharixAdmin/templates/SharixAdmin/resource.html
  15. 10 0
      SharixAdmin/templates/SharixAdmin/schema.html
  16. 12 0
      SharixAdmin/templates/SharixAdmin/senderform.html
  17. 38 0
      SharixAdmin/templates/SharixAdmin/service.html
  18. 26 0
      SharixAdmin/templates/SharixAdmin/service_information_form.html
  19. 49 0
      SharixAdmin/templates/SharixAdmin/service_tariff.html
  20. 22 0
      SharixAdmin/templates/SharixAdmin/service_tariff_form.html
  21. 49 0
      SharixAdmin/templates/SharixAdmin/service_type.html
  22. 15 0
      SharixAdmin/templates/SharixAdmin/service_type_delete.html
  23. 22 0
      SharixAdmin/templates/SharixAdmin/service_type_form.html
  24. 10 0
      SharixAdmin/templates/SharixAdmin/test.html
  25. 26 0
      SharixAdmin/templates/SharixAdmin/trans_carried.html
  26. 16 0
      SharixAdmin/templates/SharixAdmin/transactions.html
  27. 6 5
      SharixAdmin/views/balance.py
  28. 20 19
      SharixAdmin/views/context.py
  29. 3 1
      SharixAdmin/views/index.py
  30. 4 3
      SharixAdmin/views/partner_info.py
  31. 3 1
      SharixAdmin/views/partners.py
  32. 2 1
      SharixAdmin/views/provider.py
  33. 2 1
      SharixAdmin/views/resource.py
  34. 2 1
      SharixAdmin/views/service.py
  35. 3 2
      SharixAdmin/views/service_info.py
  36. 4 3
      SharixAdmin/views/service_tariff.py
  37. 5 4
      SharixAdmin/views/service_type.py
  38. 2 1
      SharixAdmin/views/test.py
  39. 2 1
      SharixAdmin/views/trans_id.py
  40. 2 1
      SharixAdmin/views/transactions.py
  41. 2 1
      SharixAdmin/views/user_info.py
  42. 0 1
      install_unix.sh
  43. 0 1
      install_win.bat

+ 0 - 1
.gitignore

@@ -5,7 +5,6 @@ venv/
 tickets/
 metaservicesynced/
 openlocal/
-SharixAdmin/templates/SharixAdmin/
 staticfiles/
 core/config.py
 SharixAdmin/migrations/

binární
SharixAdmin/locale/ru/LC_MESSAGES/django.mo


+ 412 - 0
SharixAdmin/locale/ru/LC_MESSAGES/django.po

@@ -0,0 +1,412 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-06-01 22:28+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
+"%100>=11 && n%100<=14)? 2 : 3);\n"
+
+#: .\tables.py:11
+msgid "Owner"
+msgstr "Владелец"
+
+#: .\tables.py:12 .\views\trans_id.py:9
+msgid "Service"
+msgstr "Услуга"
+
+#: .\tables.py:13
+msgid "Points"
+msgstr "Баллы"
+
+#: .\tables.py:14
+msgid "Registration date"
+msgstr "Дата оформления"
+
+#: .\tables.py:15 .\tables.py:34 .\tables.py:56 .\tables.py:76
+msgid "Status"
+msgstr "Статус"
+
+#: .\tables.py:15
+msgid "Successful, not successful"
+msgstr "Успешно, не успешно"
+
+#: .\tables.py:30 .\tables.py:53 .\tables.py:73 .\tables.py:94 .\tables.py:117
+#: .\tables.py:139 .\tables.py:166
+msgid "ID"
+msgstr "ИД"
+
+#: .\tables.py:31
+msgid "Legal entity"
+msgstr "Юрлицо"
+
+#: .\tables.py:32 .\tables.py:55
+msgid "Responsible"
+msgstr "Ответственный"
+
+#: .\tables.py:74
+msgid "Full Name"
+msgstr "ФИО"
+
+#: .\tables.py:95
+msgid "Name of the tariff"
+msgstr "Название тарифа"
+
+#: .\tables.py:97
+msgid "Name of the service scheme"
+msgstr "Название схемы услуги"
+
+#: .\tables.py:98
+msgid "Activity"
+msgstr "Активность"
+
+#: .\tables.py:140
+msgid "Description of the service"
+msgstr "Описание услуги (сервиса)"
+
+#: .\tables.py:147
+msgid "Cost km."
+msgstr "Стоимость км."
+
+#: .\tables.py:148
+msgid "Cost min."
+msgstr "Стоимость мин."
+
+#: .\tables.py:149
+msgid "Cost of service"
+msgstr "Стоимость услуги"
+
+#: .\templates\SharixAdmin\auth.html:10
+msgid "Log in"
+msgstr "Авторизуйтесь"
+
+#: .\templates\SharixAdmin\auth.html:26
+msgid "Please, enter the correct phone number and password."
+msgstr "Пожалуйста, введите правильный номер телефона и пароль."
+
+#: .\templates\SharixAdmin\auth.html:29
+msgid "Login"
+msgstr "Войти"
+
+#: .\templates\SharixAdmin\balance.html:11
+msgid ""
+"Payment by card and bank details is available. When paying for an order with "
+"a bank card, <br> payment processing takes place on the page of the PAYMO "
+"payment provider."
+msgstr ""
+"Доступна оплата картой и банковскими реквизитами. При оплате заказа с "
+"помощью банковская карта, <br> обработка платежа происходит на странице "
+"PAYMO поставщик платежей."
+
+#: .\templates\SharixAdmin\balance.html:14
+msgid ""
+"You will need to enter your bank card details: MIR; VISA International; <br> "
+"Mastercard Worldwide."
+msgstr ""
+"Вам нужно будет ввести данные вашей банковской карты: MIR; VISA "
+"International; <br> Mastercard Worldwide."
+
+#: .\templates\SharixAdmin\balance.html:17
+msgid "3D-Secure maps only."
+msgstr "Только защищенные 3D-карты."
+
+#: .\templates\SharixAdmin\balance.html:21
+#: .\templates\SharixAdmin\balance.html:22
+msgid "Enter the required amount"
+msgstr "Введите требуемую сумму"
+
+#: .\templates\SharixAdmin\balance.html:25
+msgid ""
+"After replenishment, the funds can be used to pay for the services of "
+"subsidiary services."
+msgstr ""
+"После пополнения средства могут быть использованы для оплаты услуг "
+"вспомогательных служб."
+
+#: .\templates\SharixAdmin\balance.html:34
+msgid "Replenish"
+msgstr "Пополнить"
+
+#: .\templates\SharixAdmin\balance.html:36
+msgid "Back"
+msgstr "Назад"
+
+#: .\templates\SharixAdmin\balance.html:40
+msgid "Requisites"
+msgstr "Реквизиты"
+
+#: .\templates\SharixAdmin\balance.html:42
+msgid ""
+"<p>Legal address:<b>199155, the city of St. Petersburg, Zheleznovodskaya "
+"street, house 32 letter d, room 22-n office 1-8</b></p> <p>Email: "
+"<b>info@sharix-app.org </b></p> <p>TIN: <b>7801685119</b></p> <p>Bank: "
+"<b>Moscow branch of AKB MKPB (JSC)</b></p> <p>Bic: <b>044525610</b></p> "
+"<p>Current account: <b>40702810800400000025</b></p> <p>Correspondent "
+"account: <b>30101810645250000610</b></p>"
+msgstr ""
+"<p>Юридический адрес:<b>199155, город Санкт-Петербург, Железноводская улица, "
+"дом 32, литера d, комната 22-n, офис 1-8</b></p> <p>Электронная почта: "
+"<b>info@sharix-app.org </b></p> <p>НОМЕР: <b>7801685119</b></p> <p>Банк: "
+"<b>Московский филиал АКБ МКПБ (АО)</b></p> <p>Бик: <b>044525610</b></p> "
+"<p>Текущий счет: <b>40702810800400000025</b></p> <p>Корреспондент учетная "
+"запись: <b>30101810645250000610</b></p>"
+
+#: .\templates\SharixAdmin\index.html:17
+msgid "ShariX Menu"
+msgstr "Sharix Меню"
+
+#: .\templates\SharixAdmin\index.html:32
+msgid "Change"
+msgstr ""
+
+#: .\templates\SharixAdmin\index.html:84
+msgid "Contacts"
+msgstr "Контакты"
+
+#: .\templates\SharixAdmin\index.html:85
+msgid "Terms of use"
+msgstr "Условия использования"
+
+#: .\templates\SharixAdmin\index.html:86 .\templates\SharixAdmin\main.html:12
+msgid "Privacy policy"
+msgstr "Политика конфиденциальности"
+
+#: .\templates\SharixAdmin\index.html:88
+msgid "Log out"
+msgstr "Выйти"
+
+#: .\templates\SharixAdmin\main.html:11
+msgid "Documentation"
+msgstr "Документация"
+
+#: .\templates\SharixAdmin\main.html:13
+msgid "Rules for the provision of services"
+msgstr "Правила предоставления услуг"
+
+#: .\templates\SharixAdmin\main.html:14
+msgid "Procedure for the provision of services"
+msgstr "Порядок предоставления услуг"
+
+#: .\templates\SharixAdmin\main.html:15
+msgid "List of services"
+msgstr "Перечень предоставляемых услуг"
+
+#: .\templates\SharixAdmin\main.html:16
+msgid "Scheme 1"
+msgstr "Схема 1"
+
+#: .\templates\SharixAdmin\main.html:16
+msgid "Scheme 2"
+msgstr "Схема 2"
+
+#: .\templates\SharixAdmin\main.html:16
+msgid "Scheme 3"
+msgstr "Схема 3"
+
+#: .\templates\SharixAdmin\main.html:16
+msgid "API Docs"
+msgstr "Документация по API"
+
+#: .\templates\SharixAdmin\main.html:21
+#, python-format
+msgid "<p>User: <b>%(user)s</b></p>"
+msgstr "<p>Пользователь: <b>%(user)s</b></p>"
+
+#: .\templates\SharixAdmin\main.html:24
+#, python-format
+msgid "<p>Phone number: <b>%(phone)s</b></p>"
+msgstr "<p>Номер телефона: <b>%(phone)s</b></p>"
+
+#: .\templates\SharixAdmin\main.html:27
+#, python-format
+msgid "<p>Date of registration: <b>%(date)s</b></p>"
+msgstr "<p>Дата регистрации: <b>%(date)s</b></p>"
+
+#: .\templates\SharixAdmin\main.html:30
+#, python-format
+msgid "<p>Balance: <b>%(balance)s points</b></p>"
+msgstr "<p>Баланс: <b>%(balance)s баллов</b></p>"
+
+#: .\templates\SharixAdmin\main.html:33
+msgid "Buy points"
+msgstr "Купить баллы"
+
+#: .\templates\SharixAdmin\partner_information_form.html:19
+#: .\templates\SharixAdmin\senderform.html:10
+#: .\templates\SharixAdmin\service_information_form.html:23
+#: .\templates\SharixAdmin\service_tariff_form.html:19
+#: .\templates\SharixAdmin\service_type_form.html:19
+msgid "Submit"
+msgstr "Отправить"
+
+#: .\templates\SharixAdmin\senderform.html:7
+msgid "The message will be sent to the following users:"
+msgstr "Сообщение будет отправлено следующим пользователям:"
+
+#: .\templates\SharixAdmin\senderform.html:9
+msgid "send_phone"
+msgstr "Отправить телефон"
+
+#: .\templates\SharixAdmin\service_tariff.html:48
+#: .\templates\SharixAdmin\service_type.html:48
+msgid "Add"
+msgstr "Добавить"
+
+#: .\templates\SharixAdmin\service_type_delete.html:9
+#, python-format
+msgid "Are you sure you want to delete \\\"%%(object.caption)s\\\"?"
+msgstr "Вы уверены, что хотите удалить \\\"%%(object.caption)s\\\"?"
+
+#: .\templates\SharixAdmin\service_type_delete.html:12
+msgid "Delete"
+msgstr "Удалить"
+
+#: .\templates\SharixAdmin\test.html:7
+msgid "These pages are under development"
+msgstr "Данные страницы находятся в разработке"
+
+#: .\templates\SharixAdmin\trans_carried.html:6
+#: .\templates\SharixAdmin\transactions.html:7
+msgid "User: "
+msgstr "Пользователь: "
+
+#: .\templates\SharixAdmin\trans_carried.html:7
+msgid "Balance: "
+msgstr "Баланс: "
+
+#: .\templates\SharixAdmin\trans_carried.html:15
+msgid "Price: "
+msgstr "Цена: "
+
+#: .\templates\SharixAdmin\trans_carried.html:16
+msgid "Owner: "
+msgstr "Владелец: "
+
+#: .\templates\SharixAdmin\trans_carried.html:17
+msgid "Date of service: "
+msgstr "Дата предоставления услуги: "
+
+#: .\templates\SharixAdmin\trans_carried.html:18
+msgid "Conducted: "
+msgstr "Проведен: "
+
+#: .\templates\SharixAdmin\trans_carried.html:23
+msgid "Spend"
+msgstr "Потратить"
+
+#: .\templates\SharixAdmin\transactions.html:8
+#, python-format
+msgid "Balance: %(wallet.balance)s points"
+msgstr "Баланс: %(wallet.balance)s баллов"
+
+#: .\templates\SharixAdmin\transactions.html:11
+#: .\templates\SharixAdmin\transactions.html:12
+msgid "Search"
+msgstr "Поиск"
+
+#: .\views\balance.py:9 .\views\balance.py:14 .\views\balance.py:20
+msgid "Top up your balance"
+msgstr "Пополните свой баланс"
+
+#: .\views\balance.py:15
+msgid "The payment was successful ;)"
+msgstr "the payment was successful ;)"
+
+#: .\views\balance.py:21
+msgid "Payment failed ;("
+msgstr "Платеж не прошел ;("
+
+#: .\views\context.py:5 .\views\index.py:14
+msgid "Home/Balance"
+msgstr "Главная/Баланс"
+
+#: .\views\context.py:6
+msgid "Payment information"
+msgstr "Платежная информация"
+
+#: .\views\context.py:7 .\views\transactions.py:10
+msgid "Payment history"
+msgstr "История платежей"
+
+#: .\views\context.py:8
+msgid "Courses"
+msgstr "Курсы"
+
+#: .\views\context.py:9
+msgid "Personal information"
+msgstr "Личная информация"
+
+#: .\views\context.py:10
+msgid "Service management"
+msgstr "Управление сервисами"
+
+#: .\views\context.py:11
+msgid "My connections"
+msgstr "Мои связи"
+
+#: .\views\context.py:12
+msgid "Partnership"
+msgstr "Сотрудничество"
+
+#: .\views\context.py:13
+msgid "Techsupport"
+msgstr "Техподдержка"
+
+#: .\views\context.py:14
+msgid "My tickets"
+msgstr "Мои заявки"
+
+#: .\views\context.py:15 .\views\provider.py:19 .\views\service_tariff.py:41
+msgid "Performers"
+msgstr "Исполнители"
+
+#: .\views\context.py:17 .\views\service_tariff.py:19
+#: .\views\service_tariff.py:61
+msgid "Service rates"
+msgstr "Тарифы услуг"
+
+#: .\views\context.py:19 .\views\partners.py:20
+msgid "Partners"
+msgstr "Партнеры"
+
+#: .\views\context.py:21 .\views\resource.py:19
+msgid "Resources"
+msgstr "Ресурсы"
+
+#: .\views\context.py:23 .\views\service_type.py:19
+msgid "Service services"
+msgstr "Услуги сервиса"
+
+#: .\views\context.py:25 .\views\service_info.py:17
+msgid "Information about the service"
+msgstr "Информация о сервисе"
+
+#: .\views\context.py:27 .\views\partner_info.py:19 .\views\partner_info.py:41
+#: .\views\partner_info.py:57
+msgid "Partner Information"
+msgstr "Информация о партнере"
+
+#: .\views\context.py:29 .\views\service.py:18
+msgid "Rates"
+msgstr "Тарифы"
+
+#: .\views\context.py:31 .\views\user_info.py:17
+msgid "User Management"
+msgstr "Управление пользователями"
+
+#: .\views\test.py:7
+msgid "Page in development"
+msgstr "Страница в разработке"

+ 28 - 28
SharixAdmin/tables.py

@@ -3,16 +3,16 @@ from metaservicesynced.models import *
 from .models import *
 from django.utils.html import format_html
 from metaservicesynced.models import *
-
+from django.utils.translation import gettext_lazy as _
 
 class TransactionsWalletTable(tables.Table):
     # id = tables.Column(order_by=True)
     id = tables.Column(verbose_name='#', orderable=False,                                       attrs={"td":{"width":"5%"}})
-    wallet = tables.Column(verbose_name='Владелец', orderable=False,                            attrs={"td":{"width":"15%"}})
-    name_operation = tables.Column(verbose_name='Услуга', attrs={'th':{'scope':'col'},          "td":{"width":"20%"}}) 
-    price = tables.Column(verbose_name='Баллы', attrs={"class":"row",                           "td":{"width":"10%"}})
-    date_operation = tables.Column(verbose_name='Дата оформления',                              attrs={"td":{"width":"30%"}})
-    is_carried_out = tables.BooleanColumn(verbose_name='Статус', orderable=False, yesno="Успешно,Не успешно", attrs={"td":{"width":"20%"}})
+    wallet = tables.Column(verbose_name=_('Owner'), orderable=False,                            attrs={"td":{"width":"15%"}})
+    name_operation = tables.Column(verbose_name=_('Service'), attrs={'th':{'scope':'col'},          "td":{"width":"20%"}}) 
+    price = tables.Column(verbose_name=_('Points'), attrs={"class":"row",                           "td":{"width":"10%"}})
+    date_operation = tables.Column(verbose_name=_('Registration date'),                              attrs={"td":{"width":"30%"}})
+    is_carried_out = tables.BooleanColumn(verbose_name=_('Status'), orderable=False, yesno=_("Successful, not successful"), attrs={"td":{"width":"20%"}})
     
     class Meta:
         #model = TransactionsWallets
@@ -27,11 +27,11 @@ class TransactionsWalletTable(tables.Table):
         return format_html("<a href='{}'>{}</a>", record.get_absolute_url(), value)
         
 class PartnersTable(tables.Table):
-    id = tables.Column(verbose_name='ID', attrs={"td":{"width":"5%"}})
-    legal_name = tables.Column(verbose_name='Юрлицо', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
-    repr_id = tables.Column(accessor='repr_id.full_name', order_by=('repr_id.first_name', 'repr_id.last_name'), verbose_name='Ответственный', attrs={"td":{"width":"15%"}})
+    id = tables.Column(verbose_name=_('ID'), attrs={"td":{"width":"5%"}})
+    legal_name = tables.Column(verbose_name=_('Legal entity'), attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
+    repr_id = tables.Column(accessor='repr_id.full_name', order_by=('repr_id.first_name', 'repr_id.last_name'), verbose_name=_('Responsible'), attrs={"td":{"width":"15%"}})
    
-    status = tables.Column(verbose_name='Статус', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}}) 
+    status = tables.Column(verbose_name=_('Status'), attrs={'th':{'scope':'col'}, "td":{"width":"20%"}}) 
     check = tables.BooleanColumn(verbose_name='', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
     # paginate_by = 10
     class Meta:
@@ -50,10 +50,10 @@ class PartnersTable(tables.Table):
 
 class ResourceTable(tables.Table):
 
-    id = tables.Column(verbose_name='ID', attrs={"td":{"width":"5%"}})
+    id = tables.Column(verbose_name=_('ID'), attrs={"td":{"width":"5%"}})
     #В user_id ссылка LinkColumn на страницу Аси "Информация о партнере" страница partner_information_form
-    user_id = tables.Column(accessor='user_id.full_name', order_by=('user_id.first_name', 'user_id.last_name'), verbose_name='Ответственный', attrs={"td":{"width":"15%"}})
-    status = tables.Column(verbose_name='Статус', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}}) 
+    user_id = tables.Column(accessor='user_id.full_name', order_by=('user_id.first_name', 'user_id.last_name'), verbose_name=_('Responsible'), attrs={"td":{"width":"15%"}})
+    status = tables.Column(verbose_name=_('Status'), attrs={'th':{'scope':'col'}, "td":{"width":"20%"}}) 
     check = tables.BooleanColumn(verbose_name='', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
     # paginate_by = 10
     class Meta:
@@ -70,10 +70,10 @@ class ResourceTable(tables.Table):
 
 class ProviderTable(tables.Table):
 
-    id = tables.Column(verbose_name='ID', attrs={"td":{"width":"5%"}})
-    user_id = tables.Column(accessor='user_id.full_name', order_by=('user_id.first_name', 'user_id.last_name'), verbose_name='ФИО', attrs={"td":{"width":"15%"}})
+    id = tables.Column(verbose_name=_('ID'), attrs={"td":{"width":"5%"}})
+    user_id = tables.Column(accessor='user_id.full_name', order_by=('user_id.first_name', 'user_id.last_name'), verbose_name=_('Full Name'), attrs={"td":{"width":"15%"}})
 
-    status = tables.Column(verbose_name='Статус', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}}) 
+    status = tables.Column(verbose_name=_('Status'), attrs={'th':{'scope':'col'}, "td":{"width":"20%"}}) 
     check = tables.BooleanColumn(verbose_name='', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
     paginate_by = 10
     class Meta:
@@ -91,11 +91,11 @@ class ProviderTable(tables.Table):
 
 class ServiceTariffTable(tables.Table):
 
-    id = tables.Column(verbose_name='ID', attrs={"td":{"width":"5%"}})
-    servicetype_id = tables.LinkColumn('service_tariff/edit/', verbose_name='Название тарифа', text = lambda record: record.servicetype_id.caption,
+    id = tables.Column(verbose_name=_('ID'), attrs={"td":{"width":"5%"}})
+    servicetype_id = tables.LinkColumn('service_tariff/edit/', verbose_name=_('Name of the tariff'), text = lambda record: record.servicetype_id.caption,
         args=[tables.A('pk')], attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
-    ticket_status = tables.Column(verbose_name='Название схемы услуги', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}}) 
-    check = tables.BooleanColumn(verbose_name='Активность', orderable=False, attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
+    ticket_status = tables.Column(verbose_name=_('Name of the service scheme'), attrs={'th':{'scope':'col'}, "td":{"width":"20%"}}) 
+    check = tables.BooleanColumn(verbose_name=_('Activity'), orderable=False, attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
 
 
     class Meta:
@@ -114,7 +114,7 @@ class ServiceTariffTable(tables.Table):
 
 class ServiceTypeTable(tables.Table):
 
-    id = tables.Column(verbose_name='ID', attrs={"td":{"width":"5%"}})
+    id = tables.Column(verbose_name=_('ID'), attrs={"td":{"width":"5%"}})
     caption = tables.LinkColumn('service_type/edit/', verbose_name='Название услуги', text = lambda record: record.caption,
         args=[tables.A('pk')], attrs={'th':{'scope':'col'}, "td":{"width":"100%"},})
     deletee = tables.LinkColumn('service_type/delete/', verbose_name='', text = "Удалить",
@@ -129,24 +129,24 @@ class ServiceTypeTable(tables.Table):
                    'is_global', 'is_visible',)
 
     def render_delete(self, value, record):
-        return format_html('<a href="/service_type/delete" class="btn btn-outline-danger">Удалить</a>')
+        return format_html('<a href="/service_type/delete" class="btn btn-outline-danger">_(Delete)</a>')
         
     def render_name_operation(self, value, record):
         return format_html("<a href='{}'>{}</a>", record.get_absolute_url(), value)
    
 class ServiceTable(tables.Table):
 
-    id = tables.Column(verbose_name='ID', attrs={"td":{"width":"5%"}})
-    servicetype_id = tables.Column(verbose_name='Описание услуги (сервиса)', accessor = 'servicetype_id.caption',
+    id = tables.Column(verbose_name=_('ID'), attrs={"td":{"width":"5%"}})
+    servicetype_id = tables.Column(verbose_name=_('Description of the service'), accessor = 'servicetype_id.caption',
         attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
     
     # description = tables.Column(verbose_name='Название тарифа', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
     # description = tables.Column(verbose_name='Описание строки тарифов', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
     # price_type = tables.Column(verbose_name='Тип тарифа', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
     
-    price_km = tables.Column(verbose_name='Стоимость км.', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
-    price_min = tables.Column(verbose_name='Стоимость мин.', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
-    price_amount = tables.Column(verbose_name='Стоимость услуги', attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
+    price_km = tables.Column(verbose_name=_('Cost km.'), attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
+    price_min = tables.Column(verbose_name=_('Cost min.'), attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
+    price_amount = tables.Column(verbose_name=_('Cost of service'), attrs={'th':{'scope':'col'}, "td":{"width":"20%"}})
 
     class Meta:
         model = Service
@@ -163,7 +163,7 @@ class ServiceTable(tables.Table):
 
 class UserInfoTable(tables.Table):
 
-    id = tables.Column(verbose_name='ID', attrs={"td":{"width":"5%"}})
+    id = tables.Column(verbose_name=_('ID'), attrs={"td":{"width":"5%"}})
 
     class Meta:
         model = SharixUser

+ 34 - 0
SharixAdmin/templates/SharixAdmin/auth.html

@@ -0,0 +1,34 @@
+{% extends 'SharixAdmin/base.html' %}
+{% load i18n %}
+{% load static %}
+
+{% block content %}
+<div class="text-center" style="margin-top: 150px;">
+    <div class="form-signin" style="width: 100%; max-width:330px; margin: auto; display:block;">
+        <form class="m-2 p-2" method="post">
+            <img class="mb-4" src="{% static 'SharixAdmin/img/logo.svg' %}" alt="" width="72" >
+            <h1 class="h3 mb-3 fw-normal">{% trans 'Log in' %}</h1>
+            {% csrf_token %}
+            
+            {% for item in form %}
+                <div class="form-floating my-3">
+                    {{item}}
+                    <label for="{{ item.id_for_label }}">{{ item.label }}</label>
+                </div>
+                {% if item.errors %}
+                    <div class="alert alert-danger" role="alert">
+                        {{ item.errors }}
+                    </div>
+                {% endif %}
+            {% endfor %}
+            {% if form.non_field_errors %}
+                <div class="alert alert-danger" role="alert">
+                    {% trans 'Please, enter the correct phone number and password.' %}
+                </div>
+            {% endif %}
+            <button class="w-100 btn btn-lg" type="submit" style="background-color: #479FF8; color: white;">{% trans 'Login' %}</button>
+            <p class="mt-5 mb-3 text-muted">© 2022</p>
+          </form>
+    </div>
+</div>
+{% endblock %}

+ 57 - 0
SharixAdmin/templates/SharixAdmin/balance.html

@@ -0,0 +1,57 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+{% load static %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+    <div class="container" style="overflow: auto; width: 100%; height: 650px;">
+        <div class="row" >
+            <div class="col-12 text-center" >
+                <br>
+                <p>{% blocktrans trimmed %}Payment by card and bank details is available. When paying for an order with a bank card, 
+                    <br> payment processing takes place on the page of the PAYMO payment provider.{% endblocktrans %}</p>
+                <br>
+                <p>{% blocktrans trimmed %}You will need to enter your bank card details: MIR; VISA International; 
+                    <br> Mastercard Worldwide.{% endblocktrans %}</p>
+                <br>
+                <p>{% trans '3D-Secure maps only.' %}</p>
+                <form method="post" >
+                    {% csrf_token %}
+                    <div class="form-floating mb-3 w-50 m-auto">
+                        <input type="number" class="form-control" name="price" placeholder="{% trans 'Enter the required amount' %}" step="100">
+                        <label for="floatingInput">{% trans 'Enter the required amount' %}</label>
+                    </div>
+                    <br>
+                    <p>{% trans 'After replenishment, the funds can be used to pay for the services of subsidiary services.' %}</p>
+                    <br>
+                    <div>
+                        <img src="{% static 'SharixAdmin/img/visa.png' %}" alt="">
+                        <img src="{% static 'SharixAdmin/img/mc.png' %}" alt="">
+                        <img src="{% static 'SharixAdmin/img/mir.png' %}" alt="">
+                        <br>
+                        <img src="{% static 'SharixAdmin/img/paymo.png' %}" alt="">
+                    </div>
+                    <button class="btn btn-primary mt-5 mb-3">{% trans 'Replenish' %}</button>
+                    <br>
+                    <a href="" >{% trans 'Back' %}</a>
+                </form>
+            </div>
+            <div class="col-12 mt-5">
+                <h3>{% trans 'Requisites' %}</h3>
+                <div class="p-5" style="border-radius: 15px; border: solid 1px gray;">
+                  {% blocktrans trimmed %}
+                  <p>Legal address:<b>199155, the city of St. Petersburg, Zheleznovodskaya street, house 32 letter d, room 22-n office 1-8</b></p>
+                  <p>Email: <b>info@sharix-app.org </b></p>
+                  <p>TIN: <b>7801685119</b></p>
+                  <p>Bank: <b>Moscow branch of AKB MKPB (JSC)</b></p>
+                  <p>Bic: <b>044525610</b></p>
+                  <p>Current account: <b>40702810800400000025</b></p>
+                  <p>Correspondent account: <b>30101810645250000610</b></p>
+                  {% endblocktrans %}
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    
+{% endblock contenthome %}

+ 10 - 0
SharixAdmin/templates/SharixAdmin/balance_success.html

@@ -0,0 +1,10 @@
+{% extends 'SharixAdmin/index.html' %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+    <div class="container text-center" style="width: 100%; height: 650px; margin-top: 250px;">
+        <h3>{{ msg }}</h3> 
+    </div>
+    
+    
+{% endblock contenthome %}

+ 17 - 0
SharixAdmin/templates/SharixAdmin/base.html

@@ -0,0 +1,17 @@
+{% load static %}
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <link rel="shortcut icon" href="{% static 'SharixAdmin/img/logo.svg' %}"/>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
+    <title>{{ title }}</title>
+</head>
+<body style="min-width: 1050px;">
+    {% block content %}
+    {% endblock %}
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
+</body>
+</html>

+ 163 - 0
SharixAdmin/templates/SharixAdmin/index.html

@@ -0,0 +1,163 @@
+{% extends 'SharixAdmin/base.html' %}
+{% load i18n %}
+{% load static %}
+
+{% block content %}
+<input type="checkbox" name="" style="display: none;" checked id="hideMenuCheckBox">
+<div class="container-fluid">
+    <div class="row">
+        <div class="col-3" id="leftmainpage">
+            <div class="d-flex flex-column p-2" style="width: 100%; min-width: 80px; height: 800px;  border-radius: 15px; box-shadow: 4px 5px 40px #cfcfcf; margin-top: 50px;">
+                <a class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-decoration-none" 
+                onclick="barMenuHide()" 
+                style="cursor: pointer;">
+                  <img src="{% static 'SharixAdmin/img/menu/arrow-right.svg' %}" 
+                  style="width: 30px; height: 30px; rotate: 180deg; color: #0081ff; transition-duration: 0.4s;" 
+                  class="mx-3 my-2" id="row-bar-menu" alt="">
+                  <span class="fs-4" id="sharix-menu-row">{% trans 'ShariX Menu' %}</span>
+                </a>
+                <hr>
+                <form action="{% url 'set_language' %}" method="post">{% csrf_token %}
+                  <input name="next" type="hidden" value="{{ redirect_to }}">
+                  <select name="language">
+                      {% get_current_language as LANGUAGE_CODE %}
+                      {% get_available_languages as LANGUAGES %}
+                      {% get_language_info_list for LANGUAGES as languages %}
+                      {% for language in languages %}
+                          <option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected{% endif %}>
+                              {{ language.name_local }} ({{ language.code }})
+                          </option>
+                      {% endfor %}
+                  </select>
+                  <input type="submit" value="{% trans 'Change' %}">
+              </form>
+              <hr>
+                <ul class="nav nav-pills flex-column mb-auto">
+                  {% for item in menu %}
+                  {% if item.link == url_path %}
+                  <li class="nav-item">
+                    <a class="nav-link active" >
+                      {% with 'SharixAdmin/img/menu/'|add:item.sel|add:'_w.svg' as image_static %}
+                        <img  src="{% static image_static %}" alt="" style="width: 30px; height: 30px; "> 
+                      {% endwith %}
+                      
+                      <span class="hidemenu">{{ item.title }}</span>
+                    </a>
+                  </li>
+                  {% elif item.link == 'tickets' %}
+                  <li class="nav-item">
+                    <a href="{% url 'tickets:lists' %}" class="nav-link" >
+                      {% with 'SharixAdmin/img/menu/'|add:item.sel|add:'.svg' as image_static %}
+                        <img  src="{% static image_static %}" alt="" style="width: 30px; height: 30px;"> 
+                      {% endwith %}
+                      <span class="hidemenu">{{ item.title }}</span>
+                    </a>
+                  </li>
+                  {% elif item.link == 'course' %}
+                  <li class="nav-item">
+                    <a href="http://study.reversea.net/" class="nav-link" >
+                      {% with 'SharixAdmin/img/menu/'|add:item.sel|add:'.svg' as image_static %}
+                        <img  src="{% static image_static %}" alt="" style="width: 30px; height: 30px;"> 
+                      {% endwith %}
+                      <span class="hidemenu">{{ item.title }}</span>
+                    </a>
+                  </li>
+                  {% else %}
+                  <li class="nav-item">
+                    <a href="{% url item.link %}" class="nav-link" >
+                      {% with 'SharixAdmin/img/menu/'|add:item.sel|add:'.svg' as image_static %}
+                        <img  src="{% static image_static %}" alt="" style="width: 30px; height: 30px; "> 
+                      {% endwith %}
+                      <span class="hidemenu">{{ item.title }}</span>
+                    </a>
+                  </li>
+                  {% endif%}
+                  {% endfor %}
+                </ul>
+                <hr>
+                <div class="dropdown">
+                  <a href="#" class="d-flex align-items-center link-dark text-decoration-none dropdown-toggle" id="dropdownUser2" data-bs-toggle="dropdown" aria-expanded="false">
+                    <img alt="" width="32" height="32" class="rounded-circle me-2">
+                    <strong id="user-name-exit">{{ request.user.username }}</strong>
+                  </a>
+                  <ul class="dropdown-menu text-small shadow" aria-labelledby="dropdownUser2">
+                    <li><a class="dropdown-item" href="#">{% trans 'Contacts' %}Контакты</a></li>
+                    <li><a class="dropdown-item" href="#">{% trans 'Terms of use' %}</a></li>
+                    <li><a class="dropdown-item" href="#">{% trans 'Privacy policy' %}</a></li>
+                    <li><hr class="dropdown-divider"></li>
+                    <li><a class="btn btn-danger mx-2" href="{% url 'logoutweb' %}">{% trans 'Log out' %}</a></li>
+                  </ul>
+                </div>
+              </div>      
+        </div>
+        <div class="col-9" id="rightmainpage">
+            <div class="d-flex flex-column p-4" 
+            style="
+            width: 100%; 
+            height: 800px; 
+            border-radius: 15px; 
+            background-color:white;
+            box-shadow: 4px 5px 40px #cfcfcf; 
+            margin-top: 50px;">
+            {% block contenthome %}
+            {% endblock contenthome%}
+        </div>
+            
+        </div>
+    </div>
+</div>
+
+<script>
+  hidemenu = document.getElementsByClassName('hidemenu')
+  shMenuRow = document.getElementById('sharix-menu-row')
+  usNameExit = document.getElementById('user-name-exit')
+  rightmainpage = document.getElementById('rightmainpage')
+  leftmainpage = document.getElementById('leftmainpage')
+  hideCheck = document.getElementById('hideMenuCheckBox')
+  rowBarMenu = document.getElementById('row-bar-menu')
+
+  function show(){
+    rowBarMenu.style.transform = 'rotate(0deg)';
+    shMenuRow.style.display = "inline"
+      usNameExit.style.display = "inline"
+      leftmainpage.style.maxWidth = "unset"
+      leftmainpage.classList.remove("col-1")
+      leftmainpage.classList.add("col-3")
+      rightmainpage.classList.remove("col-11")
+      rightmainpage.classList.add("col-9")
+      for(var i = 0; i < hidemenu.length; i++){
+       hidemenu[i].style.display = "inline"; // depending on what you're doing
+      }
+  }
+  function hide(){
+    rowBarMenu.style.transform = 'rotate(180deg)';
+    shMenuRow.style.display = "none"
+    usNameExit.style.display = "none"
+    leftmainpage.style.maxWidth = "100px"
+    leftmainpage.classList.remove("col-3")
+    leftmainpage.classList.add("col-1")
+    rightmainpage.classList.remove("col-9")
+    rightmainpage.classList.add("col-11")
+    for(var i = 0; i < hidemenu.length; i++){
+      hidemenu[i].style.display = "none"; // depending on what you're doing
+    }
+  }
+  function barMenuHide(){
+    if(hideCheck.checked == true){
+      hideCheck.checked = false
+      hide()
+    } else {
+      hideCheck.checked = true
+      show()
+    }
+  }
+  if(hideCheck.checked == true){
+      show()
+    } else {
+      hide()
+    }
+  
+  
+</script>
+
+{% endblock %}

+ 38 - 0
SharixAdmin/templates/SharixAdmin/main.html

@@ -0,0 +1,38 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+    <div class="container" style="padding: 2px;">
+        <div class="row fs-6">
+            
+            <div class="col-6 ">
+                <ul class="list-group">
+                    <li class="list-group-item light"><strong>{% trans 'Documentation' %}</strong> </li>
+                    <li class="list-group-item"><a  href="https://wiki.sharix-app.org/doku.php/sharix/legal/politika_konfidencialnosti_platformy_sharix">{% trans 'Privacy policy' %}</a></li>
+                    <li class="list-group-item"><a  href="https://wiki.sharix-app.org/doku.php/sharix/legal/pravila_okazanija_uslug">{% trans 'Rules for the provision of services' %}</a></li>
+                    <li class="list-group-item"><a  href="https://wiki.sharix-app.org/doku.php/sharix/legal/porjadok_okazanija_uslug">{% trans 'Procedure for the provision of services' %}</a></li>
+                    <li class="list-group-item"><a  href="https://wiki.sharix-app.org/doku.php/sharix/legal/perechen_uslug_platformy">{% trans 'List of services' %}</a></li>
+                    <li class="list-group-item"><a  href="{% url 'schemav1' %}">{% trans 'Scheme 1' %}</a> / <a  href="{% url 'schemav2' %}">{% trans 'Scheme 2' %}</a> / <a  href="{% url 'schema' %}">{% trans 'Scheme 3' %}</a> / <a  href="{% url 'schema-redoc' %}">{% trans 'API Docs' %}</a></li>
+                
+                  </ul>
+            </div>
+            <div class="col-6 text-end">
+              {% blocktrans trimmed with request.user.username as user %}
+              <p>User: <b>{{ user }}</b></p>
+              {% endblocktrans %}
+              {% blocktrans trimmed %}
+              <p>Phone number: <b>{{ phone }}</b></p>
+              {% endblocktrans %}
+              {% blocktrans trimmed with request.user.date_joined as date %}
+              <p>Date of registration: <b>{{ date }}</b></p>
+              {% endblocktrans %}
+              {% blocktrans trimmed with wallet.balance as balance %}
+              <p>Balance: <b>{{ balance }} points</b></p>
+              {% endblocktrans %}
+                <a href="{% url 'balance' %}" class="btn btn-success">{% trans 'Buy points' %}</a>
+            </div>
+        </div>
+    </div>
+    
+{% endblock contenthome %}

+ 22 - 0
SharixAdmin/templates/SharixAdmin/partner_information_form.html

@@ -0,0 +1,22 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+
+{% block contenthome %}
+<h1 class="mb-4">{{ title }}</h1>
+<form method="post" style="overflow: auto">
+    {% csrf_token %}
+    <div class="container m-2">
+        {% for field in form %}
+        {{field.errors}}
+        <div class="row">
+            {{field.label_tag}}
+            {{field}}
+            <p class="fs-6 fst-italic">{{field.help_text|truncatewords:20}}</p>
+        </div>
+        {% endfor %}
+    </div>
+    <div class="text-center mt-2 mb-5">
+        <input class="btn btn-primary center" type="submit" name="apply" value="{% trans 'Submit' %}" />
+    </div>
+</form>
+{% endblock %}

+ 38 - 0
SharixAdmin/templates/SharixAdmin/partners.html

@@ -0,0 +1,38 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load render_table from django_tables2 %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+
+    <div class="container text-center mt-2">
+      {% render_table table %}
+    </div>
+    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
+    <script>
+      // Запрос на изменения статуса партнера
+      $('.status-toggle').change(function() {
+        var partners_id = $(this).data('partners-id');
+        var new_status = $(this).prop('checked') ? 'active' : 'deactivated';
+        $.ajax({
+          url: '{% url "partners/change_status" %}',
+          type: 'POST',
+          data: {
+            'partners_id': partners_id,
+            'new_status': new_status,
+            'csrfmiddlewaretoken': '{{ csrf_token }}'
+          },
+          success: function(response) {
+            var scrollTop = window.pageYOffset;
+            location.reload();
+            window.scrollTo(0, scrollTop);
+          },
+          error: function(xhr, status, error) {
+            console.log(xhr.responseText);
+          }
+        });
+      });
+    </script> 
+    
+
+    
+{% endblock contenthome %}

+ 38 - 0
SharixAdmin/templates/SharixAdmin/provider.html

@@ -0,0 +1,38 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load render_table from django_tables2 %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+
+    <div class="container text-center mt-2">
+      {% render_table table %}
+    </div>
+    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
+    <script>
+      // Запрос на изменения статуса исполнителя
+      $('.status-toggle').change(function() {
+        var provider_id = $(this).data('provider-id');
+        var new_status = $(this).prop('checked') ? 'active' : 'deactivated';
+        $.ajax({
+          url: '{% url "provider/change_status" %}',
+          type: 'POST',
+          data: {
+            'provider_id': provider_id,
+            'new_status': new_status,
+            'csrfmiddlewaretoken': '{{ csrf_token }}'
+          },
+          success: function(response) {
+            var scrollTop = window.pageYOffset;
+            location.reload();
+            window.scrollTo(0, scrollTop);
+          },
+          error: function(xhr, status, error) {
+            console.log(xhr.responseText);
+          }
+        });
+      });
+    </script>
+    
+
+    
+{% endblock contenthome %}

+ 38 - 0
SharixAdmin/templates/SharixAdmin/resource.html

@@ -0,0 +1,38 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load render_table from django_tables2 %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+
+    <div class="container text-center mt-2">
+      {% render_table table %}
+    </div>
+    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
+    <script>
+      // Запрос на изменения статуса ресурса
+      $('.status-toggle').change(function() {
+        var resource_id = $(this).data('resource-id');
+        var new_status = $(this).prop('checked') ? 'active' : 'deactivated';
+        $.ajax({
+          url: '{% url "resource/change_status" %}',
+          type: 'POST',
+          data: {
+            'resource_id': resource_id,
+            'new_status': new_status,
+            'csrfmiddlewaretoken': '{{ csrf_token }}'
+          },
+          success: function(response) {
+            var scrollTop = window.pageYOffset;
+            location.reload();
+            window.scrollTo(0, scrollTop);
+          },
+          error: function(xhr, status, error) {
+            console.log(xhr.responseText);
+          }
+        });
+      });
+    </script> 
+    
+
+    
+{% endblock contenthome %}

+ 10 - 0
SharixAdmin/templates/SharixAdmin/schema.html

@@ -0,0 +1,10 @@
+{% extends 'SharixAdmin/base.html' %}
+{% load static %}
+
+{% block content %}
+    
+     <div class="container-fluid" style="width: 100%;" >
+        <img src="{% static 'SharixAdmin/img/schemav3.png' %}" /> 
+    </div> 
+    
+{% endblock content %}

+ 12 - 0
SharixAdmin/templates/SharixAdmin/senderform.html

@@ -0,0 +1,12 @@
+{% extends "admin/base_site.html" %}
+{% load i18n %}
+
+{% block content %}
+<form action="" method="post">{% csrf_token %}
+    {{ form }}
+    <p>{% trans 'The message will be sent to the following users:' %}</p>
+    <ul>{{ items|unordered_list }}</ul>
+    <input type="hidden" name="action" value="{% trans 'send_phone' %}" />
+    <input type="submit" name="apply" value="{% trans 'Submit' %}" />
+</form>
+{% endblock %}

+ 38 - 0
SharixAdmin/templates/SharixAdmin/service.html

@@ -0,0 +1,38 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load render_table from django_tables2 %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+
+    <div class="container text-center mt-2">
+      {% render_table table %}
+    </div>
+    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
+    <script>
+      // Запрос на изменения статуса исполнителя
+      $('.status-toggle').change(function() {
+        var service_id = $(this).data('service-id');
+        var new_status = $(this).prop('checked') ? 'active' : 'deactivated';
+        $.ajax({
+          url: '{% url "service/change_status" %}',
+          type: 'POST',
+          data: {
+            'service_id': service_id,
+            'new_status': new_status,
+            'csrfmiddlewaretoken': '{{ csrf_token }}'
+          },
+          success: function(response) {
+            var scrollTop = window.pageYOffset;
+            location.reload();
+            window.scrollTo(0, scrollTop);
+          },
+          error: function(xhr, status, error) {
+            console.log(xhr.responseText);
+          }
+        });
+      });
+    </script>
+    
+
+    
+{% endblock contenthome %}

+ 26 - 0
SharixAdmin/templates/SharixAdmin/service_information_form.html

@@ -0,0 +1,26 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+
+{% block contenthome %}
+<h1 class="mb-4">{{ title }}</h1>
+{{object.servicetype_id.caption}}
+{{object.id_provider.company_id.address}}
+{{object.id_provider.company_id.repr_id}}
+{{object.servicetype_id.description}}
+<form method="post" style="overflow: auto">
+    {% csrf_token %}
+    <div class="container m-2">
+        {% for field in form %}
+        {{field.errors}}
+        <div class="row">
+            {{field.label_tag}}
+            {{field}}
+            <p class="fs-6 fst-italic">{{field.help_text|truncatewords:20}}</p>
+        </div>
+        {% endfor %}
+    </div>
+    <div class="text-center mt-2 mb-5">
+        <input class="btn btn-primary center" type="submit" name="apply" value="{% trans 'Submit' %}" />
+    </div>
+</form>
+{% endblock %}

+ 49 - 0
SharixAdmin/templates/SharixAdmin/service_tariff.html

@@ -0,0 +1,49 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load render_table from django_tables2 %}
+{% load i18n %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+    <div class="container text-center mt-2">
+          {% render_table table %}
+
+          {% comment %} {% if table.page %}
+            <nav aria-label="...">
+              <ul class="pagination">
+                {% if table.page.has_previous %}
+                <li class="page-item">
+                  <a class="page-link" href="?page={{ table.page.previous_page_number }}" tabindex="-1">{% trans 'Previous' %}</a>
+                </li>
+                {% else %}
+                <li class="page-item disabled">
+                  <span class="page-link">{% trans 'Previous' %}</span>
+                </li>
+                {% endif %}
+                {% for page in table.page_range %}
+                  {% if page == table.page.number %}
+                  <li class="page-item active">
+                    <span class="page-link">{{ page }} <span class="sr-only">{% trans '(current)' %}</span></span>
+                  </li>
+                  {% else %}
+                  <li class="page-item">
+                    <a class="page-link" href="?page={{page }}">{{ page }}</a>
+                  </li>
+                  {% endif %}
+                {% endfor %}
+                {% if table.page.has_next %}
+                <li class="page-item">
+                  <a class="page-link" href="?page={{ table.page.next_page_number }}">{% trans 'Next' %}</a>
+                </li>
+                {% else %}
+                <li class="page-item disabled">
+                  <span class="page-link">{% trans 'Next' %}</span>
+                </li>
+                {% endif %}
+              </ul>
+            </nav>
+          {% endif %} {% endcomment %}
+    </div>
+    <div class="container text-end mt-2">
+      <a class="btn btn-primary" href="/service_tariff/add">{% trans 'Add' %}</a>
+    </div>
+{% endblock contenthome %}

+ 22 - 0
SharixAdmin/templates/SharixAdmin/service_tariff_form.html

@@ -0,0 +1,22 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+
+{% block contenthome %}
+<h1 class="mb-4">{{ title }}</h1>
+<form method="post" style="overflow: auto">
+    {% csrf_token %}
+    <div class="container m-2">
+        {% for field in form %}
+        {{field.errors}}
+        <div class="row">
+            {{field.label_tag}}
+            {{field}}
+            <p class="fs-6 fst-italic">{{field.help_text|truncatewords:20}}</p>
+        </div>
+        {% endfor %}
+    </div>
+    <div class="text-center mt-2 mb-5">
+        <input class="btn btn-primary center" type="submit" name="apply" value="{% trans 'Submit' %}" />
+    </div>
+</form>
+{% endblock %}

+ 49 - 0
SharixAdmin/templates/SharixAdmin/service_type.html

@@ -0,0 +1,49 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load render_table from django_tables2 %}
+{% load i18n %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+    <div class="container text-center mt-2">
+          {% render_table table %}
+
+          {% comment %} {% if table.page %}
+            <nav aria-label="...">
+              <ul class="pagination">
+                {% if table.page.has_previous %}
+                <li class="page-item">
+                  <a class="page-link" href="?page={{ table.page.previous_page_number }}" tabindex="-1">{% trans 'Previous' %}</a>
+                </li>
+                {% else %}
+                <li class="page-item disabled">
+                  <span class="page-link">{% trans 'Previous' %}</span>
+                </li>
+                {% endif %}
+                {% for page in table.page_range %}
+                  {% if page == table.page.number %}
+                  <li class="page-item active">
+                    <span class="page-link">{{ page }} <span class="sr-only">{% trans '(current)' %}</span></span>
+                  </li>
+                  {% else %}
+                  <li class="page-item">
+                    <a class="page-link" href="?page={{page }}">{{ page }}</a>
+                  </li>
+                  {% endif %}
+                {% endfor %}
+                {% if table.page.has_next %}
+                <li class="page-item">
+                  <a class="page-link" href="?page={{ table.page.next_page_number }}">{% trans 'Next' %}</a>
+                </li>
+                {% else %}
+                <li class="page-item disabled">
+                  <span class="page-link">{% trans 'Next' %}</span>
+                </li>
+                {% endif %}
+              </ul>
+            </nav>
+          {% endif %} {% endcomment %}
+    </div>
+    <div class="container text-end mt-2">
+      <a class="btn btn-primary" href="/service_type/add">{% trans 'Add' %}</a>
+    </div>
+{% endblock contenthome %}

+ 15 - 0
SharixAdmin/templates/SharixAdmin/service_type_delete.html

@@ -0,0 +1,15 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+
+{% block contenthome %}
+<h1 class="mb-4">{{ title }}</h1>
+<form method="post">
+    {% csrf_token %}
+    <div class="container m-2">
+        <p>{% blocktrans %}Are you sure you want to delete \"%(object.caption)s\"?{% endblocktrans %}</p>
+    </div>
+    <div class="text-center mt-2 mb-5">
+        <input class="btn btn-primary center" type="submit" name="apply" value="{% trans 'Delete' %}"/>
+    </div>
+</form>
+{% endblock %}

+ 22 - 0
SharixAdmin/templates/SharixAdmin/service_type_form.html

@@ -0,0 +1,22 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+
+{% block contenthome %}
+<h1 class="mb-4">{{ title }}</h1>
+<form method="post" style="overflow: auto">
+    {% csrf_token %}
+    <div class="container m-2">
+        {% for field in form %}
+        {{field.errors}}
+        <div class="row">
+            {{field.label_tag}}
+            {{field}}
+            <p class="fs-6 fst-italic">{{field.help_text|truncatewords:20}}</p>
+        </div>
+        {% endfor %}
+    </div>
+    <div class="text-center mt-2 mb-5">
+        <input class="btn btn-primary center" type="submit" name="apply" value="{% trans 'Submit' %}"/>
+    </div>
+</form>
+{% endblock %}

+ 10 - 0
SharixAdmin/templates/SharixAdmin/test.html

@@ -0,0 +1,10 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+    <div class="container text-center" style="width: 100%; height: 650px; margin-top: 250px;">
+        <h3>{% trans 'These pages are under development' %}</h3> 
+    </div>
+    
+{% endblock contenthome %}

+ 26 - 0
SharixAdmin/templates/SharixAdmin/trans_carried.html

@@ -0,0 +1,26 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+    <h3 >{% trans 'User: ' %}{{ request.user.username }}</h3>
+    <h3 >{% trans 'Balance: ' %}{{ wallet.balance }} р.</h3>
+    {% if balance_err %}
+    <div class="alert alert-danger" role="alert">
+        {{ balance_err }}
+    </div>
+    {% endif %}
+    <ul class="list-group">
+        <li class="list-group-item active">{{ model.name_operation }}</li>
+        <li class="list-group-item">{% trans 'Price: ' %}{{ model.price }}</li>
+        <li class="list-group-item">{% trans 'Owner: ' %}{{ model.wallet.user.username }}</li>
+        <li class="list-group-item">{% trans 'Date of service: ' %}{{ model.date_operation }}</li>
+        <li class="list-group-item">{% trans 'Conducted: ' %}{{ model.is_carried_out }}</li>
+    </ul>
+    {% if not model.is_carried_out %}
+    <form method="post">
+        {% csrf_token %}
+        <button class="btn btn-success my-3" type="submit">{% trans 'Spend' %}</button>
+    </form>
+    {% endif %}
+{% endblock contenthome %}

+ 16 - 0
SharixAdmin/templates/SharixAdmin/transactions.html

@@ -0,0 +1,16 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load render_table from django_tables2 %}
+{% load i18n %}
+
+{% block contenthome %}
+    <h1 >{{ title }}</h1>
+    <h3 >{% trans 'User: ' %}{{ request.user.username }}</h3>
+    <h3 >{% blocktrans %}Balance: {{ wallet.balance }} points{% endblocktrans %}</h3>
+    <form class="d-flex" method="post">
+        {% csrf_token %}
+        <input class="form-control me-2" name="search" type="search" placeholder="{% trans 'Search' %}" aria-label="Search">
+        <button class="btn btn-outline-success" type="submit">{% trans 'Search' %}</button>
+      </form>
+      {% comment %} {% render_table  table %} {% endcomment %}
+{% endblock contenthome %} 
+

+ 6 - 5
SharixAdmin/views/balance.py

@@ -1,23 +1,24 @@
 from django.shortcuts import render
 from django.contrib.auth.decorators import login_required
 from SharixAdmin.views.context import get_context
+from django.utils.translation import gettext as _
 
 @login_required
 def balance(request):
     context = get_context(request, {
-        'title':'Пополнить баланс'
+        'title':_('Top up your balance')
         })
     if request.method == 'POST':
         if float(request.POST['price']) > 0:
             context = get_context(request, {
-                'title':'Пополнить баланс',
-                'msg':'Оплата прошла успешно ;)'
+                'title':_('Top up your balance'),
+                'msg':_('The payment was successful ;)')
                 })
             return render(request, "SharixAdmin/balance_success.html", context)
         else:
             context = get_context(request, {
-                'title':'Пополнить баланс',
-                'msg':'Оплата не прошла ;('
+                'title':_('Top up your balance'),
+                'msg':_('Payment failed ;(')
                 })
             return render(request, "SharixAdmin/balance_success.html", context)
 

+ 20 - 19
SharixAdmin/views/context.py

@@ -1,33 +1,34 @@
 from django.urls import resolve
+from django.utils.translation import gettext_lazy as _
 
 menu = [
-    {'title':'Главная/баланс',          'link':'home', 'sel':'house'},
-    {'title':'Платежная информация',    'link':'test-page', 'sel':'credit-card'},
-    {'title':'История платежей',        'link':'trans','sel':'clock-history'},
-    {'title':'Курсы',                   'link':'course', 'sel':'education'},
-    {'title':'Личная информация',       'link':'test-page', 'sel':'person'},
-    {'title':'Управление сервисами',    'link':'test-page', 'sel':'hdd-network'},
-    {'title':'Мои связи',               'link':'test-page', 'sel':'people'},
-    {'title':'Сотрудничество',          'link':'test-page', 'sel':'sotrud'},
-    {'title':'Техподдержка',            'link':'test-page', 'sel':'gear'},
-    {'title':'Мои заявки',              'link':'tickets', 'sel':'tikets'},
-    {'title':'Исполнители',             'link':'provider', 'sel':'people', 
+    {'title':_('Home/Balance'),          'link':'home', 'sel':'house'},
+    {'title':_('Payment information'),    'link':'test-page', 'sel':'credit-card'},
+    {'title':_('Payment history'),        'link':'trans','sel':'clock-history'},
+    {'title':_('Courses'),                   'link':'course', 'sel':'education'},
+    {'title':_('Personal information'),       'link':'test-page', 'sel':'person'},
+    {'title':_('Service management'),    'link':'test-page', 'sel':'hdd-network'},
+    {'title':_('My connections'),               'link':'test-page', 'sel':'people'},
+    {'title':_('Partnership'),          'link':'test-page', 'sel':'sotrud'},
+    {'title':_('Techsupport'),            'link':'test-page', 'sel':'gear'},
+    {'title':_('My tickets'),              'link':'tickets', 'sel':'tikets'},
+    {'title':_('Performers'),             'link':'provider', 'sel':'people', 
      'roles':['METASERVICE-ADMIN']},
-    {'title':'Тарифы услуг',            'link':'service_tariff', 'sel':'person',
+    {'title':_('Service rates'),            'link':'service_tariff', 'sel':'person',
      'roles':['PARTNER-ADMIN']},
-    {'title':'Партнеры',                'link':'partners', 'sel':'people',
+    {'title':_('Partners'),                'link':'partners', 'sel':'people',
      'roles':['METASERVICE-ADMIN']},
-    {'title':'Ресурсы',                 'link':'resource', 'sel':'sotrud',
+    {'title':_('Resources'),                 'link':'resource', 'sel':'sotrud',
      'roles':['PARTNER-ADMIN']},
-    {'title':'Услуги сервиса',          'link':'service_type', 'sel':'hdd-network',
+    {'title':_('Service services'),          'link':'service_type', 'sel':'hdd-network',
      'roles':['METASERVICE-ADMIN']},
-    {'title':'Информация о сервисе',    'link':'service_information/add/', 'sel':'hdd-network',
+    {'title':_('Information about the service'),    'link':'service_information/add/', 'sel':'hdd-network',
      'roles':['METASERVICE-ADMIN']},
-    {'title':'Информация о партнере',   'link':'partner_information/add/', 'sel':'person',
+    {'title':_('Partner Information'),   'link':'partner_information/add/', 'sel':'person',
      'roles':['PARTNER-ADMIN']},
-    {'title':'Тарифы',                  'link':'service', 'sel':'tikets',
+    {'title':_('Rates'),                  'link':'service', 'sel':'tikets',
      'roles':['PARTNER-ADMIN']},
-    {'title':'Управление пользователями','link':'user_information', 'sel':'person'}
+    {'title':_('User Management'),'link':'user_information', 'sel':'person'}
 ]
 
 def get_context(request, page_context) -> dict:

+ 3 - 1
SharixAdmin/views/index.py

@@ -1,6 +1,8 @@
 from django.contrib.auth.decorators import login_required
 from SharixAdmin.views.context import get_context
 from django.shortcuts import render
+from django.utils.translation import gettext as _
+
 
 @login_required
 def index(request):
@@ -9,7 +11,7 @@ def index(request):
     convert_ph_num = f"+{ph_num[:1]} ({ph_num[1:4]}) {ph_num[4:7]}-{ph_num[7:9]}-{ph_num[9:11]}"
     #print(convert_ph_num)
     context = get_context(request, {
-        'title':'Главная/баланс',
+        'title':_('Home/Balance'),
         'phone':convert_ph_num
     })
     

+ 4 - 3
SharixAdmin/views/partner_info.py

@@ -6,6 +6,7 @@ from django.contrib.auth.mixins import UserPassesTestMixin
 from django.views.generic.edit import UpdateView, CreateView
 from SharixAdmin.views.context import get_context
 from django.urls import reverse
+from django.utils.translation import gettext as _
 
 class PartnerInformationCreate(UserPassesTestMixin, CreateView):
     model = Company
@@ -15,7 +16,7 @@ class PartnerInformationCreate(UserPassesTestMixin, CreateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Информация о партнере',
+            'title': _('Partner Information'),
             'object': self.object,
         }))
         return context
@@ -37,7 +38,7 @@ class PartnerInformationUpdateView(UserPassesTestMixin, UpdateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Информация о партнере',
+            'title': _('Partner Information'),
             'object': self.object,
         }))
         return context
@@ -53,7 +54,7 @@ class PartnerInformationUpdateView(UserPassesTestMixin, UpdateView):
     
 def partner_information(request):
     context = get_context(request, {
-        'title':'Информация о партнере',
+        'title':_('Partner Information'),
         })
     
     return render(request, 'SharixAdmin/partner_information.html', context)

+ 3 - 1
SharixAdmin/views/partners.py

@@ -6,6 +6,8 @@ from django.contrib.auth.decorators import login_required
 from metaservicesynced.models import Company
 from SharixAdmin.views.context import get_context
 from django.http import JsonResponse
+from django.utils.translation import gettext as _
+
 
 class PartnersListView(UserPassesTestMixin, SingleTableView):
     table_class = PartnersTable
@@ -15,7 +17,7 @@ class PartnersListView(UserPassesTestMixin, SingleTableView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Партнеры',
+            'title': _('Partners'),
             'object_list': context['object_list'],
         }))
         return context

+ 2 - 1
SharixAdmin/views/provider.py

@@ -6,6 +6,7 @@ from django.contrib.auth.decorators import login_required
 from SharixAdmin.views.context import get_context
 from django.http import JsonResponse
 from django.contrib.auth.mixins import UserPassesTestMixin
+from django.utils.translation import gettext as _
 
 class ProviderListView(UserPassesTestMixin, SingleTableView):
     table_class = ProviderTable
@@ -15,7 +16,7 @@ class ProviderListView(UserPassesTestMixin, SingleTableView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Исполнители',
+            'title': _('Performers'),
             'object_list': context['object_list'],
         }))
         return context

+ 2 - 1
SharixAdmin/views/resource.py

@@ -6,6 +6,7 @@ from django.contrib.auth.decorators import login_required
 from metaservicesynced.models import Resource
 from SharixAdmin.views.context import get_context
 from django.http import JsonResponse
+from django.utils.translation import gettext as _
 
 class ResourceListView(UserPassesTestMixin, SingleTableView):
     table_class = ResourceTable
@@ -15,7 +16,7 @@ class ResourceListView(UserPassesTestMixin, SingleTableView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Ресурсы',
+            'title': _('Resources'),
             'object_list': context['object_list'],
         }))
         return context

+ 2 - 1
SharixAdmin/views/service.py

@@ -5,6 +5,7 @@ from metaservicesynced.models import Service
 from django.contrib.auth.decorators import login_required
 from SharixAdmin.views.context import get_context
 from django.contrib.auth.mixins import UserPassesTestMixin
+from django.utils.translation import gettext as _
 
 class ServiceListView(UserPassesTestMixin, SingleTableView):
     table_class = ServiceTable
@@ -14,7 +15,7 @@ class ServiceListView(UserPassesTestMixin, SingleTableView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Тарифы',
+            'title': _('Rates'),
             'object_list': context['object_list'],
         }))
         return context

+ 3 - 2
SharixAdmin/views/service_info.py

@@ -4,6 +4,7 @@ from django.views.generic.edit import CreateView, UpdateView
 from metaservicesynced.models import Service
 from SharixAdmin.views.context import get_context
 from django.urls import reverse
+from django.utils.translation import gettext as _
 
 class ServiceInformationCreate(UserPassesTestMixin, CreateView):
     model = Service
@@ -13,7 +14,7 @@ class ServiceInformationCreate(UserPassesTestMixin, CreateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Информация о сервисе',
+            'title': _('Information about the service'),
             'object': self.object,
             
         }))
@@ -36,7 +37,7 @@ class ServiceInformationUpdateView(UserPassesTestMixin, UpdateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Информация о сервисе',
+            'title': 'Information about the service',
             'object': self.object,
         }))
         return context

+ 4 - 3
SharixAdmin/views/service_tariff.py

@@ -6,6 +6,7 @@ from SharixAdmin.forms import ServiceTariffCreateForm, ServiceTariffUpdateForm
 from metaservicesynced.models import Service
 from django.urls import reverse
 from SharixAdmin.views.context import get_context
+from django.utils.translation import gettext as _
 
 class ServiceTariffCreate(UserPassesTestMixin, CreateView):
     model = Service
@@ -15,7 +16,7 @@ class ServiceTariffCreate(UserPassesTestMixin, CreateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Тарифы услуг',
+            'title': _('Service rates'),
             'object': self.object,
         }))
         return context
@@ -37,7 +38,7 @@ class ServiceTariffListView(UserPassesTestMixin, SingleTableView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Исполнители',
+            'title': _('Performers'),
             'object_list': context['object_list'],
         }))
         return context
@@ -57,7 +58,7 @@ class ServiceTariffUpdateView(UserPassesTestMixin, UpdateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Тарифы услуг',
+            'title': _('Service rates'),
             'object': self.object,
         }))
         return context

+ 5 - 4
SharixAdmin/views/service_type.py

@@ -6,6 +6,7 @@ from SharixAdmin.forms import ServiceTypeCreateForm, ServiceTypeUpdateForm
 from metaservicesynced.models import ServiceType
 from django.urls import reverse
 from SharixAdmin.views.context import get_context
+from django.utils.translation import gettext as _
 
 class ServiceTypeCreate(UserPassesTestMixin, CreateView):
     model = ServiceType
@@ -15,7 +16,7 @@ class ServiceTypeCreate(UserPassesTestMixin, CreateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Услуги сервиса',
+            'title': _('Service services'),
             'object': self.object,
         }))
         return context
@@ -38,7 +39,7 @@ class ServiceTypeListView(UserPassesTestMixin, SingleTableView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Услуги сервиса',
+            'title': 'Service services',
             'object_list': context['object_list'],
         }))
         return context
@@ -57,7 +58,7 @@ class ServiceTypeUpdateView(UserPassesTestMixin, UpdateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Услуги сервиса',
+            'title': 'Service services',
             'object_list': context['object_list'],
         }))
         return context
@@ -76,7 +77,7 @@ class ServiceTypeDelete(UserPassesTestMixin, DeleteView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Услуги сервиса',
+            'title': 'Service services',
             'object': self.object,
         }))
         return context

+ 2 - 1
SharixAdmin/views/test.py

@@ -1,8 +1,9 @@
 from SharixAdmin.views.context import get_context
 from django.shortcuts import render
+from django.utils.translation import gettext as _
 
 def testPage(request):
     context = get_context(request, {
-        'title':'Страница в разработке'
+        'title':_('Page in development')
         })
     return render(request, "SharixAdmin/test.html", context)

+ 2 - 1
SharixAdmin/views/trans_id.py

@@ -1,10 +1,11 @@
 from django.shortcuts import render
 from SharixAdmin.views.context import get_context
 from django.contrib.auth.decorators import login_required
+from django.utils.translation import gettext as _
 
 @login_required
 def trans_id(request, trans_id):
     context = get_context(request, {
-        'title':'Услуга'
+        'title':_('Service')
         })
     return render(request, 'SharixAdmin/trans_carried.html', context)

+ 2 - 1
SharixAdmin/views/transactions.py

@@ -1,12 +1,13 @@
 from django.contrib.auth.decorators import login_required
 from SharixAdmin.views.context import get_context
 from django.shortcuts import render
+from django.utils.translation import gettext as _
 
 @login_required
 def transactions(request):
     
     context = get_context(request, {
-        'title':'История платежей',
+        'title':_('Payment history'),
         })
         
     return render(request, 'SharixAdmin/transactions.html', context)

+ 2 - 1
SharixAdmin/views/user_info.py

@@ -4,6 +4,7 @@ from SharixAdmin.models import SharixUser
 from SharixAdmin.views.context import get_context
 from django.contrib.auth.mixins import UserPassesTestMixin
 from django.contrib.auth.models import Group
+from django.utils.translation import gettext as _
 
 class UserListView(UserPassesTestMixin, SingleTableView):
     table_class = UserInfoTable
@@ -13,7 +14,7 @@ class UserListView(UserPassesTestMixin, SingleTableView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context.update(get_context(self.request, {
-            'title': 'Управление пользователями',
+            'title': _('User Management'),
             'object_list': context['object_list'],
             'groups': Group.objects.all()
         }))

+ 0 - 1
install_unix.sh

@@ -1,7 +1,6 @@
 #!/bin/bash
 git clone -b unstable https://git.sharix-app.org/ShariX_Open/sharix-open-tickets.git tickets
 git clone -b metasynced_module https://git.sharix-app.org/ShariX_Open/sharix-open-backend.git metaservicesynced
-git clone -b webinterface https://git.sharix-app.org/ShariX_Open/sharix-open-webadmin.git SharixAdmin/templates/SharixAdmin
 git clone -b master https://git.sharix-app.org/ShariX_Open/sharix-open-local.git openlocal
 git clone -b master https://git.sharix-app.org/ShariX_Open/sharix-open-config.git conf
 python3 -m venv env

+ 0 - 1
install_win.bat

@@ -2,7 +2,6 @@
 git clone -b unstable https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-design-template.git design_template 
 git clone -b unstable http://git.sharix-app.org/ShariX_Open/sharix-open-tickets.git tickets
 git clone -b metasynced_module http://git.sharix-app.org/ShariX_Open/sharix-open-backend.git metaservicesynced
-git clone -b webinterface https://git.sharix-app.org/ShariX_Open/sharix-open-webadmin.git SharixAdmin/templates/SharixAdmin
 git clone -b master https://git.sharix-app.org/ShariX_Open/sharix-open-local.git openlocal
 
 python -m venv env