iobroker.time-tracker 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +386 -0
- package/admin/i18n/de.json +34 -0
- package/admin/i18n/en.json +1 -0
- package/admin/i18n/es.json +34 -0
- package/admin/i18n/fr.json +34 -0
- package/admin/i18n/it.json +34 -0
- package/admin/i18n/nl.json +34 -0
- package/admin/i18n/pl.json +34 -0
- package/admin/i18n/pt.json +34 -0
- package/admin/i18n/ru.json +34 -0
- package/admin/i18n/uk.json +34 -0
- package/admin/i18n/zh-cn.json +34 -0
- package/admin/jsonConfig.json +266 -0
- package/admin/time-tracker.png +0 -0
- package/build/lib/adapter/automation.js +100 -0
- package/build/lib/adapter/automation.js.map +7 -0
- package/build/lib/adapter/commands.js +160 -0
- package/build/lib/adapter/commands.js.map +7 -0
- package/build/lib/adapter/messages.js +207 -0
- package/build/lib/adapter/messages.js.map +7 -0
- package/build/lib/adapter/presence.js +129 -0
- package/build/lib/adapter/presence.js.map +7 -0
- package/build/lib/adapter/states.js +330 -0
- package/build/lib/adapter/states.js.map +7 -0
- package/build/lib/adapter/triggers.js +92 -0
- package/build/lib/adapter/triggers.js.map +7 -0
- package/build/lib/db/database.js +96 -0
- package/build/lib/db/database.js.map +7 -0
- package/build/lib/db/migrations.js +603 -0
- package/build/lib/db/migrations.js.map +7 -0
- package/build/lib/db/repositories/absences.js +432 -0
- package/build/lib/db/repositories/absences.js.map +7 -0
- package/build/lib/db/repositories/audit.js +90 -0
- package/build/lib/db/repositories/audit.js.map +7 -0
- package/build/lib/db/repositories/automations.js +326 -0
- package/build/lib/db/repositories/automations.js.map +7 -0
- package/build/lib/db/repositories/entries.js +335 -0
- package/build/lib/db/repositories/entries.js.map +7 -0
- package/build/lib/db/repositories/holidays.js +156 -0
- package/build/lib/db/repositories/holidays.js.map +7 -0
- package/build/lib/db/repositories/payouts.js +221 -0
- package/build/lib/db/repositories/payouts.js.map +7 -0
- package/build/lib/db/repositories/rfid.js +264 -0
- package/build/lib/db/repositories/rfid.js.map +7 -0
- package/build/lib/db/repositories/rules.js +356 -0
- package/build/lib/db/repositories/rules.js.map +7 -0
- package/build/lib/db/repositories/settings.js +91 -0
- package/build/lib/db/repositories/settings.js.map +7 -0
- package/build/lib/db/repositories/terminals.js +243 -0
- package/build/lib/db/repositories/terminals.js.map +7 -0
- package/build/lib/db/repositories/triggers.js +240 -0
- package/build/lib/db/repositories/triggers.js.map +7 -0
- package/build/lib/db/repositories/users.js +491 -0
- package/build/lib/db/repositories/users.js.map +7 -0
- package/build/lib/db/seed.js +180 -0
- package/build/lib/db/seed.js.map +7 -0
- package/build/lib/domain/avatar.js +63 -0
- package/build/lib/domain/avatar.js.map +7 -0
- package/build/lib/domain/breaks.js +70 -0
- package/build/lib/domain/breaks.js.map +7 -0
- package/build/lib/domain/calculation.js +150 -0
- package/build/lib/domain/calculation.js.map +7 -0
- package/build/lib/domain/holidays.js +113 -0
- package/build/lib/domain/holidays.js.map +7 -0
- package/build/lib/domain/punch.js +99 -0
- package/build/lib/domain/punch.js.map +7 -0
- package/build/lib/domain/target.js +89 -0
- package/build/lib/domain/target.js.map +7 -0
- package/build/lib/errors.js +56 -0
- package/build/lib/errors.js.map +7 -0
- package/build/lib/reports/labels.js +358 -0
- package/build/lib/reports/labels.js.map +7 -0
- package/build/lib/reports/pdf.js +308 -0
- package/build/lib/reports/pdf.js.map +7 -0
- package/build/lib/reports/types.js +32 -0
- package/build/lib/reports/types.js.map +7 -0
- package/build/lib/reports/xls.js +211 -0
- package/build/lib/reports/xls.js.map +7 -0
- package/build/lib/services/aggregation.js +495 -0
- package/build/lib/services/aggregation.js.map +7 -0
- package/build/lib/services/auth.js +381 -0
- package/build/lib/services/auth.js.map +7 -0
- package/build/lib/services/backup.js +372 -0
- package/build/lib/services/backup.js.map +7 -0
- package/build/lib/services/closing.js +106 -0
- package/build/lib/services/closing.js.map +7 -0
- package/build/lib/services/sessionSecret.js +100 -0
- package/build/lib/services/sessionSecret.js.map +7 -0
- package/build/lib/services/sync.js +278 -0
- package/build/lib/services/sync.js.map +7 -0
- package/build/lib/util/time.js +125 -0
- package/build/lib/util/time.js.map +7 -0
- package/build/lib/web/api.js +2589 -0
- package/build/lib/web/api.js.map +7 -0
- package/build/lib/web/cookies.js +80 -0
- package/build/lib/web/cookies.js.map +7 -0
- package/build/lib/web/events.js +50 -0
- package/build/lib/web/events.js.map +7 -0
- package/build/lib/web/pin-guard.js +86 -0
- package/build/lib/web/pin-guard.js.map +7 -0
- package/build/lib/web/problem.js +129 -0
- package/build/lib/web/problem.js.map +7 -0
- package/build/lib/web/rate-limit.js +65 -0
- package/build/lib/web/rate-limit.js.map +7 -0
- package/build/lib/web/router.js +274 -0
- package/build/lib/web/router.js.map +7 -0
- package/build/lib/web/server.js +189 -0
- package/build/lib/web/server.js.map +7 -0
- package/build/lib/web/static.js +151 -0
- package/build/lib/web/static.js.map +7 -0
- package/build/lib/web/stream.js +135 -0
- package/build/lib/web/stream.js.map +7 -0
- package/build/main.js +986 -0
- package/build/main.js.map +7 -0
- package/io-package.json +221 -0
- package/package.json +131 -0
- package/src-pwa/src/i18n/de.json +359 -0
- package/src-pwa/src/i18n/en.json +359 -0
- package/src-pwa/src/i18n/es.json +359 -0
- package/src-pwa/src/i18n/fr.json +359 -0
- package/src-pwa/src/i18n/index.ts +96 -0
- package/src-pwa/src/i18n/it.json +359 -0
- package/src-pwa/src/i18n/nl.json +359 -0
- package/src-pwa/src/i18n/pl.json +359 -0
- package/src-pwa/src/i18n/pt.json +359 -0
- package/src-pwa/src/i18n/ru.json +359 -0
- package/src-pwa/src/i18n/uk.json +359 -0
- package/src-pwa/src/i18n/zh-cn.json +359 -0
- package/www/assets/index-QI3wrEvW.js +119 -0
- package/www/assets/index-QI3wrEvW.js.map +1 -0
- package/www/assets/workbox-window.prod.es5-Bd17z0YL.js +3 -0
- package/www/assets/workbox-window.prod.es5-Bd17z0YL.js.map +1 -0
- package/www/favicon.svg +16 -0
- package/www/icon-192.png +0 -0
- package/www/icon-512.png +0 -0
- package/www/index.html +38 -0
- package/www/manifest.webmanifest +1 -0
- package/www/person.png +0 -0
- package/www/sw.js +3 -0
- package/www/sw.js.map +1 -0
- package/www/workbox-9c191d2f.js +3 -0
- package/www/workbox-9c191d2f.js.map +1 -0
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
{
|
|
2
|
+
"absences.create": "Запросить отсутствие",
|
|
3
|
+
"absences.created": "Запрос на отсутствие.",
|
|
4
|
+
"absences.empty": "В этом году пропусков нет.",
|
|
5
|
+
"absences.from": "От",
|
|
6
|
+
"absences.portion": "Доля дня",
|
|
7
|
+
"absences.status": "Статус",
|
|
8
|
+
"absences.title": "Отсутствие",
|
|
9
|
+
"absences.to": "К",
|
|
10
|
+
"absences.type": "Тип",
|
|
11
|
+
"absences.typeHint": "Код типа отсутствия, напр. F для отпуска",
|
|
12
|
+
"admin.backup": "Резервные копии",
|
|
13
|
+
"admin.backup.create": "Создать резервную копию сейчас",
|
|
14
|
+
"admin.backup.upload": "Загрузить резервную копию",
|
|
15
|
+
"admin.backup.uploadHint": "Выберите скачанную копию (.sqlite) - она будет проверена и применена при следующем запуске.",
|
|
16
|
+
"admin.backup.delete": "Удалить",
|
|
17
|
+
"admin.backup.deleteTitle": "Удалить резервную копию",
|
|
18
|
+
"admin.backup.deleteConfirm": "Копия {{name}} будет удалена. Это нельзя отменить.",
|
|
19
|
+
"admin.backup.done": "Резервная копия {{name}} записана, старые файлы {{removed}} удалены.",
|
|
20
|
+
"admin.backup.empty": "Резервных копий пока нет.",
|
|
21
|
+
"admin.backup.retention": "Резервные копии старше {{days}} дней удаляются, всегда сохраняется самая новая.",
|
|
22
|
+
"admin.forbidden": "Вам не разрешено открывать администрацию.",
|
|
23
|
+
"admin.title": "Администрация",
|
|
24
|
+
"admin.user.active": "Активный",
|
|
25
|
+
"admin.user.create": "Добавить сотрудника",
|
|
26
|
+
"admin.user.empty": "Сотрудников пока нет.",
|
|
27
|
+
"admin.user.inactive": "Деактивирован",
|
|
28
|
+
"admin.user.login": "Логин",
|
|
29
|
+
"admin.user.name": "Имя",
|
|
30
|
+
"admin.user.newPin": "Новый PIN-код",
|
|
31
|
+
"admin.user.password": "Пароль",
|
|
32
|
+
"admin.user.passwordHint": "Не менее 8 символов верхнего и нижнего регистра и цифр.",
|
|
33
|
+
"admin.user.pin": "PIN-код",
|
|
34
|
+
"admin.user.pinHint": "От 4 до 8 цифр для терминала",
|
|
35
|
+
"admin.user.pinTitle": "PIN-код бейджа для {{name}}",
|
|
36
|
+
"admin.user.roles": "Роли",
|
|
37
|
+
"admin.users": "Сотрудники",
|
|
38
|
+
"app.offline": "Оффлайн – отметки в очереди",
|
|
39
|
+
"app.online": "Подключено",
|
|
40
|
+
"app.title": "Учет времени",
|
|
41
|
+
"common.cancel": "Отмена",
|
|
42
|
+
"common.close": "Закрывать",
|
|
43
|
+
"common.loading": "Загрузка…",
|
|
44
|
+
"common.none": "–",
|
|
45
|
+
"common.refresh": "Обновить",
|
|
46
|
+
"common.retry": "Повторить попытку",
|
|
47
|
+
"common.save": "Сохранять",
|
|
48
|
+
"error.bad_request": "Ввод не был принят.",
|
|
49
|
+
"error.conflict": "Изменение противоречит существующим данным.",
|
|
50
|
+
"error.csrf_rejected": "Запрос отклонен по соображениям безопасности. Повторите попытку.",
|
|
51
|
+
"error.invalid_credentials": "Имя пользователя или пароль неверны.",
|
|
52
|
+
"error.locked_out": "Слишком много неудачных попыток. Пожалуйста, повторите попытку позже.",
|
|
53
|
+
"error.network_error": "Сервер недоступен.",
|
|
54
|
+
"error.no_session": "Срок действия вашей сессии истек, пожалуйста, войдите снова.",
|
|
55
|
+
"error.not_found": "Не найдено.",
|
|
56
|
+
"error.permission_denied": "Вам не разрешено это делать.",
|
|
57
|
+
"error.report_font_missing": "Для этого отчета требуется шрифт Unicode (report_font_path).",
|
|
58
|
+
"error.revision_conflict": "Тем временем отметка была изменена, пожалуйста, перезагрузите.",
|
|
59
|
+
"error.session_expired": "Срок действия вашей сессии истек, пожалуйста, войдите снова.",
|
|
60
|
+
"error.unknown_error": "Неожиданная ошибка.",
|
|
61
|
+
"error.user_inactive": "Эта учетная запись деактивирована.",
|
|
62
|
+
"login.failed": "Войти не удалось",
|
|
63
|
+
"login.login": "Имя пользователя",
|
|
64
|
+
"login.password": "Пароль",
|
|
65
|
+
"login.submit": "Войти",
|
|
66
|
+
"login.title": "Войти",
|
|
67
|
+
"month.absence": "Отсутствие",
|
|
68
|
+
"month.balance": "Баланс",
|
|
69
|
+
"error.edit_window_closed": "Вне окна редактирования",
|
|
70
|
+
"admin.profile.pauseRules": "Свои правила перерывов",
|
|
71
|
+
"admin.profile.pauseRulesHint": "Правила только для этого сотрудника: они заменяют правило компании с тем же «с минут». Без своих правил действует шкала компании.",
|
|
72
|
+
"report.csv": "Исходные данные (CSV)",
|
|
73
|
+
"month.edit": "Исправить",
|
|
74
|
+
"month.editTitle": "Исправить отбивки · {{date}}",
|
|
75
|
+
"month.editHint": "Только внутри окна редактирования - более старые дни меняет администрация.",
|
|
76
|
+
"month.time": "Время",
|
|
77
|
+
"month.direction": "Направление",
|
|
78
|
+
"month.directionIn": "Приход",
|
|
79
|
+
"month.directionOut": "Уход",
|
|
80
|
+
"month.addPunch": "Добавить отбивку",
|
|
81
|
+
"month.pause": "Перерыв",
|
|
82
|
+
"month.paidBreak": "из них оплачено",
|
|
83
|
+
"month.empty": "Нет дней в этом месяце.",
|
|
84
|
+
"month.holiday": "Праздничный день",
|
|
85
|
+
"month.months": "Месяцы года",
|
|
86
|
+
"month.next": "В следующем месяце",
|
|
87
|
+
"month.open": "открыт",
|
|
88
|
+
"month.previous": "Предыдущий месяц",
|
|
89
|
+
"month.target": "Цель",
|
|
90
|
+
"month.title": "Месяц",
|
|
91
|
+
"month.worked": "Работал",
|
|
92
|
+
"nav.absences": "Отсутствие",
|
|
93
|
+
"nav.dashboard": "Отметка",
|
|
94
|
+
"nav.logout": "выход",
|
|
95
|
+
"nav.menu": "Меню",
|
|
96
|
+
"nav.month": "Месяц",
|
|
97
|
+
"nav.profile": "Профиль",
|
|
98
|
+
"nav.reports": "Отчеты",
|
|
99
|
+
"nav.sync": "Синхронизация",
|
|
100
|
+
"profile.changePassword": "Изменить пароль",
|
|
101
|
+
"profile.changed": "Пароль изменен, пожалуйста, войдите снова.",
|
|
102
|
+
"profile.language": "Язык",
|
|
103
|
+
"profile.newPassword": "Новый пароль",
|
|
104
|
+
"profile.roles": "Разрешения",
|
|
105
|
+
"profile.title": "Профиль",
|
|
106
|
+
"profile.user": "Пользователь",
|
|
107
|
+
"punch.balance": "Сальдо сегодня",
|
|
108
|
+
"punch.closed": "Не отмечено",
|
|
109
|
+
"punch.in": "Приход",
|
|
110
|
+
"punch.last": "Последняя отметка {{time}}",
|
|
111
|
+
"punch.note": "Примечание",
|
|
112
|
+
"punch.now": "Отметиться",
|
|
113
|
+
"punch.open": "Отметка с {{time}}",
|
|
114
|
+
"punch.out": "Уход",
|
|
115
|
+
"punch.queued": "Сохранено оффлайн – будет отправлено автоматически.",
|
|
116
|
+
"punch.quick": "Быстрая отметка",
|
|
117
|
+
"punch.sent": "Отметка сохранена ({{time}})",
|
|
118
|
+
"punch.target": "План сегодня",
|
|
119
|
+
"punch.worked": "Отработано сегодня",
|
|
120
|
+
"report.failed": "Не удалось создать заявление.",
|
|
121
|
+
"report.pdf": "PDF",
|
|
122
|
+
"report.xls": "Эксель",
|
|
123
|
+
"reports.empty": "Данных за этот период нет.",
|
|
124
|
+
"reports.monthTotals": "Итоги месяца",
|
|
125
|
+
"reports.overtime": "Переработка",
|
|
126
|
+
"reports.paidOut": "Выплачено: {{minutes}}",
|
|
127
|
+
"reports.title": "Отчеты",
|
|
128
|
+
"reports.vacation": "Отпуск (взятый/право)",
|
|
129
|
+
"reports.year": "Год",
|
|
130
|
+
"reports.yearTotals": "Итоги года",
|
|
131
|
+
"sync.accept": "Сохраняйте ценность сервера",
|
|
132
|
+
"sync.conflictOf": "{{date}} · {{time}}",
|
|
133
|
+
"sync.conflicts": "Открытые конфликты",
|
|
134
|
+
"sync.dismiss": "Отказаться",
|
|
135
|
+
"sync.done": "Отправлено: {{accepted}}, дубликаты: {{duplicates}}, конфликты: {{conflicts}}",
|
|
136
|
+
"sync.empty": "Никаких открытых конфликтов.",
|
|
137
|
+
"sync.flush": "Отправить сейчас",
|
|
138
|
+
"sync.none": "Нечего отправлять.",
|
|
139
|
+
"sync.pending": "{{count}} отметок в очереди",
|
|
140
|
+
"sync.permission": "Вам не разрешено разрешать конфликты.",
|
|
141
|
+
"sync.resolved": "Конфликт разрешен.",
|
|
142
|
+
"sync.title": "Синхронизация",
|
|
143
|
+
"terminal.title": "Терминал",
|
|
144
|
+
"terminal.deviceToken": "Токен устройства",
|
|
145
|
+
"terminal.connect": "Подключить",
|
|
146
|
+
"terminal.badge": "Пропуск",
|
|
147
|
+
"terminal.noPin": "На этом терминале PIN не нужен.",
|
|
148
|
+
"terminal.pin": "PIN-код",
|
|
149
|
+
"terminal.select": "Выберите имя",
|
|
150
|
+
"terminal.disabled": "Терминал отключён в настройках адаптера.",
|
|
151
|
+
"admin.terminals": "Терминалы",
|
|
152
|
+
"admin.terminal.name": "Название",
|
|
153
|
+
"admin.terminal.location": "Местоположение",
|
|
154
|
+
"admin.terminal.pinRequired": "Сотрудникам нужен их PIN-код",
|
|
155
|
+
"admin.terminal.create": "Создать терминал",
|
|
156
|
+
"admin.terminal.tokenOnce": "Скопируйте токен устройства сейчас — он хранится только как хеш и показывается один раз:",
|
|
157
|
+
"admin.terminal.url": "Откройте этот адрес на устройстве киоска:",
|
|
158
|
+
"admin.terminal.revoke": "Отозвать",
|
|
159
|
+
"admin.terminal.revoked": "отозван",
|
|
160
|
+
"admin.terminal.users": "Сотрудники",
|
|
161
|
+
"admin.terminal.usersHint": "Если ничего не выбрать, на терминале будут показаны все сотрудники.",
|
|
162
|
+
"admin.terminal.usersAll": "все сотрудники",
|
|
163
|
+
"admin.terminal.empty": "Терминал ещё не создан.",
|
|
164
|
+
"admin.terminal.confirmRevoke": "Отозвать «{{name}}»? Токен устройства перестанет работать сразу.",
|
|
165
|
+
"admin.settings": "Настройки",
|
|
166
|
+
"admin.settings.fontPath": "Файл шрифта Unicode для PDF-отчётов (.ttf/.otf)",
|
|
167
|
+
"admin.user.profile": "Рабочий профиль",
|
|
168
|
+
"admin.user.profileTitle": "Рабочий профиль · {{name}}",
|
|
169
|
+
"admin.profile.percent": "Занятость (%)",
|
|
170
|
+
"admin.profile.weeklyHours": "Часов в неделю при 100 %",
|
|
171
|
+
"admin.profile.workdays": "Рабочие дни",
|
|
172
|
+
"admin.profile.overtimeModel": "Модель переработок",
|
|
173
|
+
"admin.profile.model.monthly": "Помесячно",
|
|
174
|
+
"admin.profile.model.yearly": "За год",
|
|
175
|
+
"admin.profile.model.cumulative": "Накопительно",
|
|
176
|
+
"admin.profile.vacationPerYear": "Дней отпуска в год",
|
|
177
|
+
"admin.profile.vacationCarryover": "Перенос отпуска (дни)",
|
|
178
|
+
"admin.profile.overtimeCarryover": "Перенос переработок (часы)",
|
|
179
|
+
"admin.profile.vorholzeitPerYear": "«Vorholzeit» в год (часы)",
|
|
180
|
+
"admin.profile.pausePaid": "Оплачиваемых минут перерыва в день",
|
|
181
|
+
"admin.profile.pausePaidHint": "Столько минут перерыва входят в рабочее время (0 = перерыв не оплачивается).",
|
|
182
|
+
"admin.settings.pauseMode": "Перерывы",
|
|
183
|
+
"admin.settings.pauseModeTitle": "Правило перерывов",
|
|
184
|
+
"admin.settings.pauseModeHint": "Как определяется перерыв за день.",
|
|
185
|
+
"admin.settings.pauseRules": "Шкала перерывов",
|
|
186
|
+
"admin.settings.pauseRulesHint": "Действует для дней без отбитого перерыва: начиная с указанной длины блока (от первого до последнего отбития в блоке) минуты вычитаются.",
|
|
187
|
+
"admin.settings.pauseFrom": "с минут",
|
|
188
|
+
"admin.settings.pauseTo": "до минут (пусто = без ограничения)",
|
|
189
|
+
"admin.settings.pauseMinutes": "минут перерыва",
|
|
190
|
+
"admin.settings.pauseActive": "Правило активно",
|
|
191
|
+
"admin.settings.pauseAdd": "Добавить правило",
|
|
192
|
+
"admin.settings.pauseSave": "Сохранить шкалу перерывов",
|
|
193
|
+
"admin.settings.pauseMode.auto": "Отбитый перерыв, иначе шкала",
|
|
194
|
+
"admin.settings.pauseMode.punched": "Только отбитые перерывы",
|
|
195
|
+
"admin.settings.pauseMode.staffel": "Только шкала перерывов",
|
|
196
|
+
"admin.settings.fontPathHint": "Нужен для русского, украинского и китайского; пусто = встроенные шрифты, покрывающие только Latin-1.",
|
|
197
|
+
"admin.settings.advanced": "Все настройки экземпляра (технические имена, 1/0 для переключателей)",
|
|
198
|
+
"admin.settings.setting.edit_window_days": "Окно правки (дней)",
|
|
199
|
+
"admin.settings.setting.quick_round_minutes": "Округление (мин)",
|
|
200
|
+
"admin.settings.setting.absence_calc_until_today": "Отсутствия до сегодня",
|
|
201
|
+
"admin.settings.setting.absence_deduct_worktime": "Вычитать отсутствия",
|
|
202
|
+
"admin.settings.setting.print_limit_days": "Ограничение печати (дней)",
|
|
203
|
+
"admin.settings.setting.holiday_country": "Страна праздников",
|
|
204
|
+
"admin.settings.setting.default_language": "Язык по умолчанию",
|
|
205
|
+
"admin.settings.setting.session_ttl_minutes": "Сессия (минуты)",
|
|
206
|
+
"admin.settings.setting.backup_retention_days": "Копии (дней)",
|
|
207
|
+
"admin.settings.setting.attendance_list_visible": "Список присутствия",
|
|
208
|
+
"admin.settings.setting.timezone": "Часовой пояс",
|
|
209
|
+
"admin.settings.saved": "Настройки сохранены.",
|
|
210
|
+
"admin.holidays": "Праздничные дни",
|
|
211
|
+
"admin.holiday.date": "Дата (ГГГГ-ММ-ДД)",
|
|
212
|
+
"admin.holiday.name": "Название",
|
|
213
|
+
"holiday.newYear": "Новый год",
|
|
214
|
+
"holiday.epiphany": "Богоявление",
|
|
215
|
+
"holiday.goodFriday": "Страстная пятница",
|
|
216
|
+
"holiday.easterMonday": "Пасхальный понедельник",
|
|
217
|
+
"holiday.labourDay": "День труда",
|
|
218
|
+
"holiday.ascension": "Вознесение",
|
|
219
|
+
"holiday.whitMonday": "Духов понедельник",
|
|
220
|
+
"holiday.corpusChristi": "Праздник Тела Христова",
|
|
221
|
+
"holiday.nationalDay": "Национальный праздник",
|
|
222
|
+
"holiday.germanUnity": "День германского единства",
|
|
223
|
+
"holiday.assumption": "Успение Богородицы",
|
|
224
|
+
"holiday.allSaints": "День всех святых",
|
|
225
|
+
"holiday.immaculateConception": "Непорочное зачатие",
|
|
226
|
+
"holiday.christmas": "Рождество",
|
|
227
|
+
"holiday.boxingDay": "Второй день Рождества",
|
|
228
|
+
"admin.holiday.add": "Добавить праздничный день",
|
|
229
|
+
"admin.holiday.year": "Год",
|
|
230
|
+
"admin.holiday.region": "Регион (необязательно)",
|
|
231
|
+
"admin.holiday.empty": "За этот год праздничные дни не занесены.",
|
|
232
|
+
"admin.tags": "Пропуска (RFID/NFC)",
|
|
233
|
+
"admin.tag.label": "Метка",
|
|
234
|
+
"admin.tag.user": "Сотрудник",
|
|
235
|
+
"admin.tag.create": "Создать пропуск",
|
|
236
|
+
"admin.tag.linkOnce": "Запишите эту ссылку на метку или откройте её на телефоне:",
|
|
237
|
+
"admin.tag.delete": "Удалить",
|
|
238
|
+
"admin.tag.active": "активен",
|
|
239
|
+
"admin.tag.expired": "истёк",
|
|
240
|
+
"admin.tag.revoked": "отозван",
|
|
241
|
+
"admin.tag.lastUsed": "последнее использование",
|
|
242
|
+
"admin.tag.remove": "Удалить окончательно",
|
|
243
|
+
"admin.tag.edit": "Изменить",
|
|
244
|
+
"admin.tag.reissue": "Новая ссылка",
|
|
245
|
+
"admin.tag.editTitle": "Изменение пропуска",
|
|
246
|
+
"admin.tag.editHint": "Другой сотрудник или новый срок действия выпускает новую ссылку — выданная ранее ссылка сразу перестаёт работать.",
|
|
247
|
+
"admin.tag.validityDays": "Срок действия (дней)",
|
|
248
|
+
"admin.tag.oldLinkDead": "Выданная ранее ссылка больше не работает.",
|
|
249
|
+
"admin.tag.qrAlt": "QR-код ссылки пропуска",
|
|
250
|
+
"admin.tag.empty": "Пропуск ещё не создан.",
|
|
251
|
+
"nav.statistics": "Статистика",
|
|
252
|
+
"statistics.from": "С",
|
|
253
|
+
"statistics.to": "По",
|
|
254
|
+
"statistics.employee": "Сотрудник",
|
|
255
|
+
"statistics.worked": "Отработано",
|
|
256
|
+
"statistics.target": "План",
|
|
257
|
+
"statistics.balance": "Баланс",
|
|
258
|
+
"statistics.openDays": "Открытые дни",
|
|
259
|
+
"statistics.totals": "Все сотрудники",
|
|
260
|
+
"scan.title": "Пропуск",
|
|
261
|
+
"scan.done": "Отметка для {{name}} в {{time}}",
|
|
262
|
+
"scan.failed": "Пропуск не удалось использовать: {{reason}}",
|
|
263
|
+
"presence.title": "Присутствие",
|
|
264
|
+
"presence.present": "На рабочем месте",
|
|
265
|
+
"presence.absent": "Отсутствует",
|
|
266
|
+
"presence.tapPin": "Введите ПИН-код, чтобы отметиться",
|
|
267
|
+
"presence.cancel": "Отмена",
|
|
268
|
+
"presence.updated": "{{name}}: {{state}}",
|
|
269
|
+
"presence.disabled": "Киоск-терминал отключён в настройках экземпляра.",
|
|
270
|
+
"admin.user.photo": "Фото",
|
|
271
|
+
"admin.user.photoTitle": "Фото {{name}}",
|
|
272
|
+
"admin.user.photoChoose": "Выбрать изображение",
|
|
273
|
+
"admin.user.photoRemove": "Удалить изображение",
|
|
274
|
+
"admin.user.photoHint": "PNG, JPEG, WEBP или GIF до 256 КБ. Без изображения показывается заполнитель.",
|
|
275
|
+
"admin.corrections": "Корректировка времени",
|
|
276
|
+
"corrections.employee": "Сотрудник",
|
|
277
|
+
"corrections.previous": "Предыдущий месяц",
|
|
278
|
+
"corrections.next": "Следующий месяц",
|
|
279
|
+
"corrections.reason": "Причина",
|
|
280
|
+
"corrections.reasonHint": "Сохраняется в журнале (аудите)",
|
|
281
|
+
"corrections.add": "Добавить отметку или день",
|
|
282
|
+
"corrections.addTitle": "Добавить отметку",
|
|
283
|
+
"corrections.addHint": "Оставьте «уход» пустым, если не хватает одной отметки",
|
|
284
|
+
"corrections.editTitle": "Изменить отметку",
|
|
285
|
+
"corrections.remove": "Удалить отметку",
|
|
286
|
+
"corrections.date": "Дата",
|
|
287
|
+
"corrections.from": "Приход",
|
|
288
|
+
"corrections.to": "Уход",
|
|
289
|
+
"corrections.direction": "Направление",
|
|
290
|
+
"corrections.note": "Заметка",
|
|
291
|
+
"corrections.empty": "В этом месяце отметок нет",
|
|
292
|
+
"corrections.byAdmin": "добавлено администрацией",
|
|
293
|
+
"corrections.history": "История",
|
|
294
|
+
"corrections.actor": "Кто",
|
|
295
|
+
"corrections.actionCreate": "Добавлено",
|
|
296
|
+
"corrections.actionUpdate": "Изменено",
|
|
297
|
+
"corrections.actionDelete": "Удалено",
|
|
298
|
+
"keypad.backspace": "Удалить",
|
|
299
|
+
"admin.settings.branding": "Брендинг компании",
|
|
300
|
+
"admin.settings.brandingHint": "Логотип, фоновое изображение и цвет фона этой установки. Экран входа и экраны киоска тоже их показывают.",
|
|
301
|
+
"admin.settings.brandLogo": "Выбрать логотип",
|
|
302
|
+
"admin.settings.brandBackground": "Выбрать фон",
|
|
303
|
+
"admin.brand.imageResized": "Уменьшено для отображения ({{size}}).",
|
|
304
|
+
"admin.brand.imageTooLarge": "Даже в уменьшенном виде изображение слишком большое.",
|
|
305
|
+
"admin.brand.imageType": "Возможны только PNG, JPEG, WEBP или GIF.",
|
|
306
|
+
"admin.brand.imageUnreadable": "Не удалось прочитать изображение.",
|
|
307
|
+
"admin.settings.brandColor": "Цвет фона",
|
|
308
|
+
"admin.settings.brandColorHint": "Значение в формате Hex, например #1a2b3c; пусто — значение по умолчанию",
|
|
309
|
+
"admin.settings.brandColorPresets": "Готовые цвета",
|
|
310
|
+
"admin.settings.brandColorDefault": "По умолчанию",
|
|
311
|
+
"admin.backup.download": "Скачать",
|
|
312
|
+
"admin.backup.restore": "Восстановить",
|
|
313
|
+
"admin.backup.restoreTitle": "Восстановить резервную копию",
|
|
314
|
+
"admin.backup.restoreConfirm": "Резервная копия {{name}} будет применена при следующем запуске адаптера; текущая база данных сохранится рядом в виде файла. После этого перезапустите инстанс.",
|
|
315
|
+
"admin.backup.pendingHint": "{{name}} будет применена при следующем запуске ({{users}} сотрудников, {{entries}} отметок) - перезапустите инстанс.",
|
|
316
|
+
"error.backup_invalid": "Этот файл не является резервной копией этого адаптера.",
|
|
317
|
+
"admin.settings.brandImageRemove": "Удалить изображение",
|
|
318
|
+
"admin.settings.brandColorDefaultHint": "Сбрасывает цвет и изображение фона",
|
|
319
|
+
"admin.triggers": "Действия (ioBroker)",
|
|
320
|
+
"admin.triggersHint": "Состояние другого адаптера выполняет отметку или меняет присутствие — например, сканер отпечатка, кнопка или дверной контакт. Срабатывает только при изменении значения. В поле значения можно указать `toggle` — тогда срабатывает любое изменение (например, включение и выключение).",
|
|
321
|
+
"admin.trigger.label": "Название",
|
|
322
|
+
"admin.trigger.sourceState": "Состояние",
|
|
323
|
+
"admin.trigger.mode": "Условие",
|
|
324
|
+
"admin.trigger.modeCondition": "Состояние содержит значение",
|
|
325
|
+
"admin.trigger.modeUser": "Значение — это сотрудник",
|
|
326
|
+
"admin.trigger.condition": "Значение",
|
|
327
|
+
"admin.trigger.user": "Сотрудник",
|
|
328
|
+
"admin.trigger.action": "Действие",
|
|
329
|
+
"admin.trigger.actionPunch": "Отметиться (вход или выход)",
|
|
330
|
+
"admin.trigger.actionQuickPunch": "Отметиться с быстрым округлением",
|
|
331
|
+
"admin.trigger.actionPresent": "Сделать присутствующим",
|
|
332
|
+
"admin.trigger.actionAbsent": "Сделать отсутствующим",
|
|
333
|
+
"admin.trigger.cooldown": "Задержка (секунды)",
|
|
334
|
+
"admin.trigger.active": "Активно",
|
|
335
|
+
"admin.trigger.add": "Добавить действие",
|
|
336
|
+
"admin.trigger.lastFired": "Последнее срабатывание",
|
|
337
|
+
"admin.trigger.empty": "Действий пока нет.",
|
|
338
|
+
"admin.trigger.conditionHint": "Значение или `toggle` — тогда срабатывает любое изменение",
|
|
339
|
+
"admin.settings.automations": "Правила (автоматика)",
|
|
340
|
+
"admin.settings.automationsHint": "Что адаптер делает сам: отмечает выход в заданное местное время, сообщает об отсутствующей отметке выхода или напоминает о паузе после слишком долгой работы. Правило срабатывает не чаще одного раза в день на сотрудника.",
|
|
341
|
+
"admin.automation.kind": "Тип",
|
|
342
|
+
"admin.automation.kindClockIn": "Автоматически отметить приход",
|
|
343
|
+
"admin.automation.kindClockOut": "Автоматически отметить выход",
|
|
344
|
+
"admin.automation.kindMissingPunch": "Сообщить об отсутствии выхода",
|
|
345
|
+
"admin.automation.kindBreakReminder": "Напоминание о паузе",
|
|
346
|
+
"admin.automation.at": "Время",
|
|
347
|
+
"admin.automation.atHint": "Местное время сотрудника",
|
|
348
|
+
"admin.automation.after": "Через (минуты)",
|
|
349
|
+
"admin.automation.user": "Сотрудник",
|
|
350
|
+
"admin.automation.allUsers": "все сотрудники",
|
|
351
|
+
"admin.automation.add": "Добавить правило",
|
|
352
|
+
"admin.automation.empty": "Правил пока нет.",
|
|
353
|
+
"admin.automation.runs": "Последние срабатывания",
|
|
354
|
+
"admin.automation.weekdays": "Дни недели",
|
|
355
|
+
"admin.automation.repeat": "Повтор",
|
|
356
|
+
"admin.automation.repeatDay": "раз в день",
|
|
357
|
+
"admin.automation.repeatWeek": "раз в неделю",
|
|
358
|
+
"admin.settings.setting.report_font_path": "Шрифт для PDF"
|
|
359
|
+
}
|