From 888ff9b9aaaac741481e2949695aefd4adab4e87 Mon Sep 17 00:00:00 2001 From: lokses Date: Sat, 25 Jul 2026 12:02:08 +0300 Subject: [PATCH] =?UTF-8?q?i18n:=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D1=8B=20emp?= =?UTF-8?q?loyees=20(ru/uk/en)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Заголовки, фильтры, столбцы таблицы, статусы, пустое состояние помечены {% trans %}; переведены uk/en (часть msgid переиспользуется). fuzzy снят. Co-Authored-By: Claude Opus 4.8 --- locale/en/LC_MESSAGES/django.mo | Bin 3530 -> 4509 bytes locale/en/LC_MESSAGES/django.po | 75 +++++++++++++++++++++++++------- locale/uk/LC_MESSAGES/django.mo | Bin 4424 -> 5626 bytes locale/uk/LC_MESSAGES/django.po | 75 +++++++++++++++++++++++++------- templates/pages/employees.html | 43 +++++++++--------- 5 files changed, 142 insertions(+), 51 deletions(-) diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 5e5222c7ea1a861526f2877b564d54400dda73e4..e408fd97b14df0f1f1089eb50cefd358b46dea5b 100644 GIT binary patch delta 2335 zcmY+FTWl0n7{^bsm#u9VfpRN~gQeUpAP5z?*iyifR4OGwc#*Z8(hYm5yHiQUuq_}Y zNQ5|`@q!UCCWb_pOR-Senure)NoI^O@}MRd^+6N$fk%VC|8%PH%Y5@Ym+yR+bI$DE zm~px~_rt`(QwG_L-j6268Dqn1g}jiKVq@-uPs8!>IamQR@Lt#(&c6bu(0>P(!;2w5 zgOlmsgfrkzkjLERHOZKqDJ~f`sDckLu>{KTQ!om5z^Skk%26+@gs;OIcn)rbemFln zV$4MPt3ozI0-0Sk1VMBp2cc9kSMLB z7gXTGkRr`-sC92ae3=iR0-uLGrk|JWufqxOCX~M)p%VH9YW;6f_FoR~FhJ446_>+u zuDXt3I%LYMg<8-I<#;>Px?Qjc?g{6g59jxV{X=2@)sSz5d=Dy-k8(5?(D)dt(p!+n z{J~2*aThA{681~|C{*AnPzlX~`s@}$Ic$I`WK+misCCam-JRV~>-Rw=o;yr~#~kCO z%1(#;5GueYkjGr%rO)sNRG`~X^S?p`{0l14zr*oD_FaLZP?v8y)DhQ0tzQjEAZO}n zDDWmI2Q3gEW;;~Iosi!o^Ac1gxv+l(>hd0i+$mFwZbBELx|EHmL>E&DEK>)u(BP() zpYcw3SN#LtfOo+g@?Y_;xKoR&3-WGl(Z)*Sz2^6M{g#*aMlk93u6hG*vZ$&m7#xuU z?-EnJ-hh8xKK$eE!J-w-dD?l)8}jo05!McRdE=dAwvXm8PV)X?*=lguJCDT$x(EDY z78b)adi{g=9U>=e-5W*wC&+NnyUf_I-zQUdWAVv}L1zC?{@dc6m6u3s&{}L!*;v|n zcR|ULl6U<>%HrZPCEE(zHzRAyf}F^R!0!3Tl*ovGQ0{BpuOkf+(mbHPJHB*bT~MVG z9mKgZBlZaU*Q=COX;9iVi;Rc8YfR+>s{waq>BzXidu7EUi*=uBUk3b_FWxCl7DVgY z+cS1HYwFva_zSihE1Ox+{7dER&42#cd4ertH0=jdW&rEERt-=ETz} z_e|Ne>Q*O~ajf>3W1Gf!Hj!=%rVQRKJK2>;_t>_3y=+~iC7q22i^i4LN19Tx(WnjO zOP4p=UARcvDTj?~8I9XxwshGkt7)6%#M}1RPS$L-yV4oBrK2O>X1hnr&nz<=!T{O- zT2?xhh^Op-2dqRq>saxul5u)!-8B_6Yhq4!*0egA?lz}8W1Hq!Dz@8JeA8lQvguUH YPFP8|y`p2%SOwWdR=UG-I_;$S2LesassI20 delta 1447 zcmYk+TWm~09LMp0wc4&-yW3LMrM0wft^1w0YeGaL8j&;-QLCcTl(cnA#HI)d5n_Tw z;*#)yNC-mRJrJTVXCvYT4~+<3#Dn{b@2@)&lm5@=%=GMk=KN=NPnW+Klzvy7cid<* ziNVDC9JA$kC6^2BW1d+YKVb}iV{h!$)2tsRFoNT;1ZU$Qto8k7>_vYcM)3&t$1~X1 zEN!>Asb!!Om7px&tQe370)aPb~&A7FtnAV%GB^kSHQPgv)R^k%WA#6oSQN~sl)_AFY$lV ziP!JR0Af5bgHRil#YP}oneINp`kJX6YI^&zgvz9*AB%rYmCz5Bnoj&kVjQ8bt;(Au z#t>@SF13m*-RFVgnJq}QHEwH2RyVdZq}tq?{Ne6w{t(xhKP#3D9t01A>%qfJduC72 z;c5z|6?J6VgL{nL4X$PO2OXIsE-2XT>I;v#P-vCg8LGT-B~+W^io#WHQ+STM86M$E zBKL26i!|l9EzweUB3hQ0Y;M@@-bNGQ>c-Zl&8hmf#?8$x5u4}M#^$?Au?g-=Ea9T@ abMAJ$kL!w;hFZ3!+P1bdSdFVF+VB^00iE;! diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 691e9f5..7760d53 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-25 11:50+0300\n" +"POT-Creation-Date: 2026-07-25 12:01+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,9 +18,9 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps/ad_connector/models.py:10 apps/employees/models/base.py:186 -#: apps/employees/models/permissions.py:47 +#: apps/employees/models/permissions.py:47 templates/pages/employees.html:103 msgid "Сотрудник" -msgstr "" +msgstr "Employee" #: apps/ad_connector/models.py:13 apps/mail_connector/models.py:15 msgid "Действие" @@ -47,8 +47,9 @@ msgstr "" #: apps/it_manager/admin.py:352 apps/it_manager/admin.py:498 #: apps/locations/models/pharmacies.py:128 apps/mail_connector/models.py:24 #: apps/tasks/models.py:40 apps/visit_manager/admin.py:199 core/admin.py:32 +#: templates/pages/employees.html:107 msgid "Статус" -msgstr "" +msgstr "Status" #: apps/ad_connector/models.py:23 apps/mail_connector/models.py:25 msgid "Успех" @@ -183,9 +184,9 @@ msgid "Разрешает вход в Django admin. Только для IT-ад msgstr "" #: apps/employees/models/base.py:47 core/models/directories.py:29 -#: core/models/directories.py:121 +#: core/models/directories.py:121 templates/pages/employees.html:148 msgid "Активный" -msgstr "" +msgstr "Active" #: apps/employees/models/base.py:48 msgid "Работает ли сотрудник сейчас" @@ -244,9 +245,10 @@ msgstr "" #: apps/locations/admin.py:347 apps/locations/models/base.py:29 #: apps/locations/models/pharmacies.py:210 #: apps/locations/models/pharmacies.py:349 apps/mail_connector/models.py:12 -#: apps/utilities/models.py:17 +#: apps/utilities/models.py:17 templates/pages/employees.html:64 +#: templates/pages/employees.html:90 msgid "Аптека" -msgstr "" +msgstr "Pharmacy" #: apps/employees/models/base.py:82 apps/hiring/models.py:35 #: apps/locations/models/base.py:30 @@ -254,8 +256,9 @@ msgid "Склад" msgstr "" #: apps/employees/models/base.py:83 apps/locations/models/base.py:31 +#: templates/pages/employees.html:56 msgid "Офис" -msgstr "" +msgstr "Office" #: apps/employees/models/base.py:86 apps/locations/models/base.py:28 msgid "Тип локации" @@ -281,9 +284,9 @@ msgstr "" msgid "Заполняется для office / warehouse" msgstr "" -#: apps/employees/models/base.py:119 +#: apps/employees/models/base.py:119 templates/pages/employees.html:104 msgid "Должность" -msgstr "" +msgstr "Position" #: apps/employees/models/base.py:125 msgid "Руководитель" @@ -380,7 +383,8 @@ msgid "Обновляется автоматически при активнос msgstr "" #: apps/employees/models/base.py:187 templates/index.html:250 -#: templates/pages/dashboard.html:174 +#: templates/pages/dashboard.html:174 templates/pages/employees.html:8 +#: templates/pages/employees.html:24 msgid "Сотрудники" msgstr "Employees" @@ -828,8 +832,9 @@ msgid "Тип и регион" msgstr "" #: apps/locations/admin.py:99 apps/locations/admin.py:282 +#: templates/pages/employees.html:106 msgid "Адрес" -msgstr "" +msgstr "Address" #: apps/locations/admin.py:102 apps/locations/admin.py:139 #: apps/locations/admin.py:354 @@ -1695,7 +1700,7 @@ msgstr "IT Department" msgid "Active Directory" msgstr "Active Directory" -#: templates/index.html:494 +#: templates/index.html:494 templates/pages/employees.html:32 msgid "Поиск..." msgstr "Search..." @@ -1759,7 +1764,7 @@ msgstr "Employees online" msgid "из" msgstr "of" -#: templates/pages/dashboard.html:22 +#: templates/pages/dashboard.html:22 templates/pages/employees.html:25 msgid "активных" msgstr "active" @@ -1814,3 +1819,43 @@ msgstr "Useful links and tools" #: templates/pages/dashboard.html:163 msgid "Справочник" msgstr "Directory" + +#: templates/pages/employees.html:9 +msgid "Управление персоналом компании" +msgstr "Personnel management" + +#: templates/pages/employees.html:15 +msgid "Добавить сотрудника" +msgstr "Add employee" + +#: templates/pages/employees.html:25 +msgid "сотрудников, из них" +msgstr "employees, of them" + +#: templates/pages/employees.html:48 +msgid "Все" +msgstr "All" + +#: templates/pages/employees.html:73 +msgid "Все предприятия" +msgstr "All organizations" + +#: templates/pages/employees.html:86 +msgid "Все аптеки" +msgstr "All pharmacies" + +#: templates/pages/employees.html:105 +msgid "Отдел / Аптека" +msgstr "Department / Pharmacy" + +#: templates/pages/employees.html:108 +msgid "Дата начала" +msgstr "Start date" + +#: templates/pages/employees.html:150 +msgid "Не активный" +msgstr "Inactive" + +#: templates/pages/employees.html:157 +msgid "Список сотрудников пуст." +msgstr "Employee list is empty." diff --git a/locale/uk/LC_MESSAGES/django.mo b/locale/uk/LC_MESSAGES/django.mo index 44a435a082503449fe44887c0b2bb5bc96e3af17..44defba6f50c7eac6f3478e6c3b4b2e77413c63d 100644 GIT binary patch delta 2421 zcmai#TWl0%6vw~T?sjXpyGto;Sw%)DRwA3qw-6%uV$d2jpb27PNbK&m zh>1ubPAP&0l)jLV=+X;rFS|=(Ob{iRA;!o9CTe)nG{%G&@d1DT>8yf0c(P}H-{s6X z=R4=?^vt3w4T&ErOAZ)hJ$fs;wb+F@7>)yzMF zVL0mZG@Qr$9J~eo4EdR>JmwmcFu~GUgE(BkMiZ3d$6*9+f;I3ZC`UDEm04Tta+P&)|000~P2sSO@!{91Z*Hr=Sx2 z(qF&e^H->fT!o8aRk<ls04;#LIKjg!56Td`ShD#a2DzseFK%43oY)~WvKV7qx4^ws-B0~%7Z=A4P~$a z#$m6&p7gmFsuG8x68ID<(X;-#>+=#^$oij<;+Xk3Rbq8ecd9u?{WW-$1(oP|SP$QX z8{x-LJ^TZzQWbM%6SSZLFZbu`p!PRHOwG$sC*BE_=n<&Wk3jkR8tR}wCK%{a%|JP9 z#>*o31XRY`p-TQ11*p>h4)1~$l;?if3gz&1C)%&WdL>H6Trdboj zLb>0bv=QGt!cZB@sYKQ2LT}T=7iHdxuJ`9U!NaIpq|-fw-hsBDE77~rWhh^jUZNgKR-yNz51^`^Brpr_sXNqx>XXd(#uI(y zBx_K$RMp#rng{hj)PH^1=!@5T;Qdcn3)Px}=)#qvOHo}yiM|h#d(ivPh<&M~rFP6s zI^%B2IQyMRx8KP)BTm-c<4o8!fyG5>yD`vJWt{ijlrwHQX(x}#xHIWw>}`Q~+*{1c zfiuQd(#g2{VGkZi-sGOHSC@X9In6WH{xVVlC&UWNLQ>2P?hIu225E;O43^(weeXSe&eocG_NA z+EjYP-K8u>pDEo?WFHExDfej31LwnxJ)EB#L7DI1+&W6~YC zp%?B@p%-JGO-ALIiPjMQO1QuLsA|r6*tB<69Q#kzy zT4etc?T&mxd2|{4!p}sj?S-*mOi3nLq|3OPXtbMR?bkNJ>R>s`CKqS;-+mMp|Gyt( VanRlyn^Hdr8sp6odQ#|!`5Rl7R@MLj delta 1466 zcmZ9MOGs2v7{`xhj^k@)%t`H`lct$tKFVy0foHRhq8Yf`tffrGf+l7a38!2>2rd)h{Tjo0qBpUMz>Rb-lsg9K43=<$I`1 zmtYh81J%k#%BsX#q3qm*{AGsX>mwP|UlF}zK_!}na=Z+4p}goo9#k(&U?IE&6-Ymn zgNINKM;Mp_MobO`n@I!OrpD@U?pX!&hOR);Tps$rEw4q*YK#-45>!3A1k?nNJABzL}i!c zqsma(sxo`gDpcA1D=N3XCwXWk8bT$iwxk55nBiE~dd*Z0iTb|_<#P}dwP8(o17ja5 z&2{5\n" "Language-Team: LANGUAGE \n" @@ -21,9 +21,9 @@ msgstr "" "(n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" #: apps/ad_connector/models.py:10 apps/employees/models/base.py:186 -#: apps/employees/models/permissions.py:47 +#: apps/employees/models/permissions.py:47 templates/pages/employees.html:103 msgid "Сотрудник" -msgstr "" +msgstr "Співробітник" #: apps/ad_connector/models.py:13 apps/mail_connector/models.py:15 msgid "Действие" @@ -50,8 +50,9 @@ msgstr "" #: apps/it_manager/admin.py:352 apps/it_manager/admin.py:498 #: apps/locations/models/pharmacies.py:128 apps/mail_connector/models.py:24 #: apps/tasks/models.py:40 apps/visit_manager/admin.py:199 core/admin.py:32 +#: templates/pages/employees.html:107 msgid "Статус" -msgstr "" +msgstr "Статус" #: apps/ad_connector/models.py:23 apps/mail_connector/models.py:25 msgid "Успех" @@ -186,9 +187,9 @@ msgid "Разрешает вход в Django admin. Только для IT-ад msgstr "" #: apps/employees/models/base.py:47 core/models/directories.py:29 -#: core/models/directories.py:121 +#: core/models/directories.py:121 templates/pages/employees.html:148 msgid "Активный" -msgstr "" +msgstr "Активний" #: apps/employees/models/base.py:48 msgid "Работает ли сотрудник сейчас" @@ -247,9 +248,10 @@ msgstr "" #: apps/locations/admin.py:347 apps/locations/models/base.py:29 #: apps/locations/models/pharmacies.py:210 #: apps/locations/models/pharmacies.py:349 apps/mail_connector/models.py:12 -#: apps/utilities/models.py:17 +#: apps/utilities/models.py:17 templates/pages/employees.html:64 +#: templates/pages/employees.html:90 msgid "Аптека" -msgstr "" +msgstr "Аптека" #: apps/employees/models/base.py:82 apps/hiring/models.py:35 #: apps/locations/models/base.py:30 @@ -257,8 +259,9 @@ msgid "Склад" msgstr "" #: apps/employees/models/base.py:83 apps/locations/models/base.py:31 +#: templates/pages/employees.html:56 msgid "Офис" -msgstr "" +msgstr "Офіс" #: apps/employees/models/base.py:86 apps/locations/models/base.py:28 msgid "Тип локации" @@ -284,9 +287,9 @@ msgstr "" msgid "Заполняется для office / warehouse" msgstr "" -#: apps/employees/models/base.py:119 +#: apps/employees/models/base.py:119 templates/pages/employees.html:104 msgid "Должность" -msgstr "" +msgstr "Посада" #: apps/employees/models/base.py:125 msgid "Руководитель" @@ -383,7 +386,8 @@ msgid "Обновляется автоматически при активнос msgstr "" #: apps/employees/models/base.py:187 templates/index.html:250 -#: templates/pages/dashboard.html:174 +#: templates/pages/dashboard.html:174 templates/pages/employees.html:8 +#: templates/pages/employees.html:24 msgid "Сотрудники" msgstr "Співробітники" @@ -831,8 +835,9 @@ msgid "Тип и регион" msgstr "" #: apps/locations/admin.py:99 apps/locations/admin.py:282 +#: templates/pages/employees.html:106 msgid "Адрес" -msgstr "" +msgstr "Адреса" #: apps/locations/admin.py:102 apps/locations/admin.py:139 #: apps/locations/admin.py:354 @@ -1698,7 +1703,7 @@ msgstr "IT-відділ" msgid "Active Directory" msgstr "Active Directory" -#: templates/index.html:494 +#: templates/index.html:494 templates/pages/employees.html:32 msgid "Поиск..." msgstr "Пошук..." @@ -1762,7 +1767,7 @@ msgstr "Співробітників онлайн" msgid "из" msgstr "із" -#: templates/pages/dashboard.html:22 +#: templates/pages/dashboard.html:22 templates/pages/employees.html:25 msgid "активных" msgstr "активних" @@ -1817,3 +1822,43 @@ msgstr "Корисні посилання та інструменти" #: templates/pages/dashboard.html:163 msgid "Справочник" msgstr "Довідник" + +#: templates/pages/employees.html:9 +msgid "Управление персоналом компании" +msgstr "Управління персоналом компанії" + +#: templates/pages/employees.html:15 +msgid "Добавить сотрудника" +msgstr "Додати співробітника" + +#: templates/pages/employees.html:25 +msgid "сотрудников, из них" +msgstr "співробітників, з них" + +#: templates/pages/employees.html:48 +msgid "Все" +msgstr "Всі" + +#: templates/pages/employees.html:73 +msgid "Все предприятия" +msgstr "Всі підприємства" + +#: templates/pages/employees.html:86 +msgid "Все аптеки" +msgstr "Всі аптеки" + +#: templates/pages/employees.html:105 +msgid "Отдел / Аптека" +msgstr "Відділ / Аптека" + +#: templates/pages/employees.html:108 +msgid "Дата начала" +msgstr "Дата початку" + +#: templates/pages/employees.html:150 +msgid "Не активный" +msgstr "Не активний" + +#: templates/pages/employees.html:157 +msgid "Список сотрудников пуст." +msgstr "Список співробітників порожній." diff --git a/templates/pages/employees.html b/templates/pages/employees.html index 29a94eb..d3dd171 100644 --- a/templates/pages/employees.html +++ b/templates/pages/employees.html @@ -1,17 +1,18 @@ {% load common_tags %} +{% load i18n %}
{{ pharmacies_by_org|json_script:"emp-pharmacies-data" }}
-

Співробітники

-

Управління персоналом компанії

+

{% trans "Сотрудники" %}

+

{% trans "Управление персоналом компании" %}

@@ -20,15 +21,15 @@
-

Співробітники

-

{{ total_count }} співробітників, з них {{ active_count }} активних

+

{% trans "Сотрудники" %}

+

{{ total_count }} {% trans "сотрудников, из них" %} {{ active_count }} {% trans "активных" %}

- +
@@ -44,7 +45,7 @@ hx-push-url="/employees/" hx-indicator="#loader" style="display:inline-flex;align-items:center;padding:0.25rem 0.875rem;font-size:0.8125rem;border-radius:calc(var(--radius) - 2px);font-weight:500;text-decoration:none;cursor:pointer;transition:all 150ms; - {% if not filter_location_type %}background:var(--color-card);color:var(--color-card-foreground);box-shadow:0 1px 2px rgb(0 0 0/0.08);{% else %}color:var(--color-muted-foreground);{% endif %}">Всі + {% if not filter_location_type %}background:var(--color-card);color:var(--color-card-foreground);box-shadow:0 1px 2px rgb(0 0 0/0.08);{% else %}color:var(--color-muted-foreground);{% endif %}">{% trans "Все" %} Офіс + {% if filter_location_type == 'office' %}background:var(--color-card);color:var(--color-card-foreground);box-shadow:0 1px 2px rgb(0 0 0/0.08);{% else %}color:var(--color-muted-foreground);{% endif %}">{% trans "Офис" %} Аптека + {% if filter_location_type == 'pharmacy' %}background:var(--color-card);color:var(--color-card-foreground);box-shadow:0 1px 2px rgb(0 0 0/0.08);{% else %}color:var(--color-muted-foreground);{% endif %}">{% trans "Аптека" %}
{% if filter_location_type == 'pharmacy' %} @@ -69,7 +70,7 @@ class="input" style="font-size:0.8125rem;padding:0.3rem 0.75rem;height:auto;min-width:12rem;" onchange="empOrgChange()"> - + {% for org in organizations %} + {% for pharmacy in current_pharmacies %} + >{% trans "Аптека" %} №{{ pharmacy.pharmacy_number }} — {{ pharmacy.address }} {% endfor %} {% endif %} @@ -99,12 +100,12 @@ - - - - - - + + + + + + @@ -144,16 +145,16 @@ {% empty %} - + {% endfor %}
СпівробітникПосадаВідділ / АптекаАдресаСтатусДата початку{% trans "Сотрудник" %}{% trans "Должность" %}{% trans "Отдел / Аптека" %}{% trans "Адрес" %}{% trans "Статус" %}{% trans "Дата начала" %}
{% if employee.is_active %} - Активний + {% trans "Активный" %} {% else %} - Не активний + {% trans "Не активный" %} {% endif %} {{ employee.hire_date|date:"d.m.Y" }}
Список співробітників порожній.{% trans "Список сотрудников пуст." %}