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.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +386 -0
  3. package/admin/i18n/de.json +34 -0
  4. package/admin/i18n/en.json +1 -0
  5. package/admin/i18n/es.json +34 -0
  6. package/admin/i18n/fr.json +34 -0
  7. package/admin/i18n/it.json +34 -0
  8. package/admin/i18n/nl.json +34 -0
  9. package/admin/i18n/pl.json +34 -0
  10. package/admin/i18n/pt.json +34 -0
  11. package/admin/i18n/ru.json +34 -0
  12. package/admin/i18n/uk.json +34 -0
  13. package/admin/i18n/zh-cn.json +34 -0
  14. package/admin/jsonConfig.json +266 -0
  15. package/admin/time-tracker.png +0 -0
  16. package/build/lib/adapter/automation.js +100 -0
  17. package/build/lib/adapter/automation.js.map +7 -0
  18. package/build/lib/adapter/commands.js +160 -0
  19. package/build/lib/adapter/commands.js.map +7 -0
  20. package/build/lib/adapter/messages.js +207 -0
  21. package/build/lib/adapter/messages.js.map +7 -0
  22. package/build/lib/adapter/presence.js +129 -0
  23. package/build/lib/adapter/presence.js.map +7 -0
  24. package/build/lib/adapter/states.js +330 -0
  25. package/build/lib/adapter/states.js.map +7 -0
  26. package/build/lib/adapter/triggers.js +92 -0
  27. package/build/lib/adapter/triggers.js.map +7 -0
  28. package/build/lib/db/database.js +96 -0
  29. package/build/lib/db/database.js.map +7 -0
  30. package/build/lib/db/migrations.js +603 -0
  31. package/build/lib/db/migrations.js.map +7 -0
  32. package/build/lib/db/repositories/absences.js +432 -0
  33. package/build/lib/db/repositories/absences.js.map +7 -0
  34. package/build/lib/db/repositories/audit.js +90 -0
  35. package/build/lib/db/repositories/audit.js.map +7 -0
  36. package/build/lib/db/repositories/automations.js +326 -0
  37. package/build/lib/db/repositories/automations.js.map +7 -0
  38. package/build/lib/db/repositories/entries.js +335 -0
  39. package/build/lib/db/repositories/entries.js.map +7 -0
  40. package/build/lib/db/repositories/holidays.js +156 -0
  41. package/build/lib/db/repositories/holidays.js.map +7 -0
  42. package/build/lib/db/repositories/payouts.js +221 -0
  43. package/build/lib/db/repositories/payouts.js.map +7 -0
  44. package/build/lib/db/repositories/rfid.js +264 -0
  45. package/build/lib/db/repositories/rfid.js.map +7 -0
  46. package/build/lib/db/repositories/rules.js +356 -0
  47. package/build/lib/db/repositories/rules.js.map +7 -0
  48. package/build/lib/db/repositories/settings.js +91 -0
  49. package/build/lib/db/repositories/settings.js.map +7 -0
  50. package/build/lib/db/repositories/terminals.js +243 -0
  51. package/build/lib/db/repositories/terminals.js.map +7 -0
  52. package/build/lib/db/repositories/triggers.js +240 -0
  53. package/build/lib/db/repositories/triggers.js.map +7 -0
  54. package/build/lib/db/repositories/users.js +491 -0
  55. package/build/lib/db/repositories/users.js.map +7 -0
  56. package/build/lib/db/seed.js +180 -0
  57. package/build/lib/db/seed.js.map +7 -0
  58. package/build/lib/domain/avatar.js +63 -0
  59. package/build/lib/domain/avatar.js.map +7 -0
  60. package/build/lib/domain/breaks.js +70 -0
  61. package/build/lib/domain/breaks.js.map +7 -0
  62. package/build/lib/domain/calculation.js +150 -0
  63. package/build/lib/domain/calculation.js.map +7 -0
  64. package/build/lib/domain/holidays.js +113 -0
  65. package/build/lib/domain/holidays.js.map +7 -0
  66. package/build/lib/domain/punch.js +99 -0
  67. package/build/lib/domain/punch.js.map +7 -0
  68. package/build/lib/domain/target.js +89 -0
  69. package/build/lib/domain/target.js.map +7 -0
  70. package/build/lib/errors.js +56 -0
  71. package/build/lib/errors.js.map +7 -0
  72. package/build/lib/reports/labels.js +358 -0
  73. package/build/lib/reports/labels.js.map +7 -0
  74. package/build/lib/reports/pdf.js +308 -0
  75. package/build/lib/reports/pdf.js.map +7 -0
  76. package/build/lib/reports/types.js +32 -0
  77. package/build/lib/reports/types.js.map +7 -0
  78. package/build/lib/reports/xls.js +211 -0
  79. package/build/lib/reports/xls.js.map +7 -0
  80. package/build/lib/services/aggregation.js +495 -0
  81. package/build/lib/services/aggregation.js.map +7 -0
  82. package/build/lib/services/auth.js +381 -0
  83. package/build/lib/services/auth.js.map +7 -0
  84. package/build/lib/services/backup.js +372 -0
  85. package/build/lib/services/backup.js.map +7 -0
  86. package/build/lib/services/closing.js +106 -0
  87. package/build/lib/services/closing.js.map +7 -0
  88. package/build/lib/services/sessionSecret.js +100 -0
  89. package/build/lib/services/sessionSecret.js.map +7 -0
  90. package/build/lib/services/sync.js +278 -0
  91. package/build/lib/services/sync.js.map +7 -0
  92. package/build/lib/util/time.js +125 -0
  93. package/build/lib/util/time.js.map +7 -0
  94. package/build/lib/web/api.js +2589 -0
  95. package/build/lib/web/api.js.map +7 -0
  96. package/build/lib/web/cookies.js +80 -0
  97. package/build/lib/web/cookies.js.map +7 -0
  98. package/build/lib/web/events.js +50 -0
  99. package/build/lib/web/events.js.map +7 -0
  100. package/build/lib/web/pin-guard.js +86 -0
  101. package/build/lib/web/pin-guard.js.map +7 -0
  102. package/build/lib/web/problem.js +129 -0
  103. package/build/lib/web/problem.js.map +7 -0
  104. package/build/lib/web/rate-limit.js +65 -0
  105. package/build/lib/web/rate-limit.js.map +7 -0
  106. package/build/lib/web/router.js +274 -0
  107. package/build/lib/web/router.js.map +7 -0
  108. package/build/lib/web/server.js +189 -0
  109. package/build/lib/web/server.js.map +7 -0
  110. package/build/lib/web/static.js +151 -0
  111. package/build/lib/web/static.js.map +7 -0
  112. package/build/lib/web/stream.js +135 -0
  113. package/build/lib/web/stream.js.map +7 -0
  114. package/build/main.js +986 -0
  115. package/build/main.js.map +7 -0
  116. package/io-package.json +221 -0
  117. package/package.json +131 -0
  118. package/src-pwa/src/i18n/de.json +359 -0
  119. package/src-pwa/src/i18n/en.json +359 -0
  120. package/src-pwa/src/i18n/es.json +359 -0
  121. package/src-pwa/src/i18n/fr.json +359 -0
  122. package/src-pwa/src/i18n/index.ts +96 -0
  123. package/src-pwa/src/i18n/it.json +359 -0
  124. package/src-pwa/src/i18n/nl.json +359 -0
  125. package/src-pwa/src/i18n/pl.json +359 -0
  126. package/src-pwa/src/i18n/pt.json +359 -0
  127. package/src-pwa/src/i18n/ru.json +359 -0
  128. package/src-pwa/src/i18n/uk.json +359 -0
  129. package/src-pwa/src/i18n/zh-cn.json +359 -0
  130. package/www/assets/index-QI3wrEvW.js +119 -0
  131. package/www/assets/index-QI3wrEvW.js.map +1 -0
  132. package/www/assets/workbox-window.prod.es5-Bd17z0YL.js +3 -0
  133. package/www/assets/workbox-window.prod.es5-Bd17z0YL.js.map +1 -0
  134. package/www/favicon.svg +16 -0
  135. package/www/icon-192.png +0 -0
  136. package/www/icon-512.png +0 -0
  137. package/www/index.html +38 -0
  138. package/www/manifest.webmanifest +1 -0
  139. package/www/person.png +0 -0
  140. package/www/sw.js +3 -0
  141. package/www/sw.js.map +1 -0
  142. package/www/workbox-9c191d2f.js +3 -0
  143. 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": "{{name}} 的徽章 PIN 码",
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": "Excel",
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": "PDF 报表使用的 Unicode 字体文件(.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": "日期(YYYY-MM-DD)",
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": "证件链接的二维码",
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": "输入 PIN 码进行打卡",
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 KB。没有图片时显示占位图。",
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": "十六进制值,例如 #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
+ }