iobroker.time-tracker 0.3.4 → 0.4.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/io-package.json CHANGED
@@ -1,9 +1,22 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "time-tracker",
4
- "version": "0.3.4",
4
+ "version": "0.4.0",
5
5
  "nogit": true,
6
6
  "news": {
7
+ "0.4.0": {
8
+ "en": "new: the administration decides about absences now. A request of an employee waits as “requested” and counts for nothing until somebody approves or rejects it — the new tab “Abwesenheiten” shows the open requests with a reason for the decision, lets the administration enter dates for an employee (approved right away) and answers “who is away”. Only approved days reach the working time and the vacation balance, and a rejected request carries its reason back to the employee (migration 21)",
9
+ "de": "neu: die Verwaltung entscheidet jetzt über Abwesenheiten. Ein Antrag eines Mitarbeiters wartet als „beantragt“ und zählt für nichts, bis jemand ihn genehmigt oder ablehnt — der neue Reiter „Abwesenheiten“ zeigt die offenen Anträge mit einer Begründung zur Entscheidung, lässt die Verwaltung Daten für einen Mitarbeiter eintragen (sofort genehmigt) und beantwortet „wer ist abwesend“. Nur genehmigte Tage erreichen Arbeitszeit und Urlaubssaldo, und ein abgelehnter Antrag trägt seinen Grund zum Mitarbeiter zurück (Migration 21)",
10
+ "ru": "новое: теперь об отсутствиях решает администрация. Заявка сотрудника ждёт как «запрошено» и ничего не значит, пока её не одобрят или не отклонят — новый раздел «Отсутствия» показывает открытые заявки с причиной решения, позволяет администрации внести даты для сотрудника (сразу одобрено) и отвечает «кто отсутствует». Только одобренные дни попадают в рабочее время и отпускной баланс, а отклонённая заявка возвращает сотруднику свою причину (миграция 21)",
11
+ "pt": "novo: a administração decide agora sobre as ausências. Um pedido de um funcionário espera como «pedido» e não conta para nada até alguém o aprovar ou rejeitar — o novo separador «Ausências» mostra os pedidos abertos com um motivo para a decisão, deixa a administração registar datas para um funcionário (aprovado de imediato) e responde «quem está ausente». Só dias aprovados chegam ao tempo de trabalho e ao saldo de férias, e um pedido rejeitado devolve o motivo ao funcionário (migração 21)",
12
+ "nl": "nieuw: het beheer beslist nu over afwezigheden. Een aanvraag van een medewerker wacht als “aangevraagd” en telt voor niets tot iemand haar goedkeurt of afwijst — het nieuwe tabblad “Afwezigheden” toont de openstaande aanvragen met een reden voor de beslissing, laat het beheer data voor een medewerker invoeren (meteen goedgekeurd) en beantwoordt “wie is afwezig”. Alleen goedgekeurde dagen bereiken de werktijd en het vakantiesaldo, en een afgewezen aanvraag draagt de reden terug naar de medewerker (migratie 21)",
13
+ "fr": "nouveau : l'administration décide désormais des absences. Une demande d'un employé attend comme « demandé » et ne compte pour rien jusqu'à ce que quelqu'un l'approuve ou la refuse — le nouvel onglet « Absences » montre les demandes en attente avec un motif pour la décision, laisse l'administration saisir des dates pour un employé (approuvées aussitôt) et répond à « qui est absent ». Seuls les jours approuvés arrivent dans le temps de travail et le solde de vacances, et une demande refusée ramène son motif à l'employé (migration 21)",
14
+ "it": "novità: l'amministrazione decide ora delle assenze. Una richiesta di un dipendente attende come «richiesto» e non conta nulla finché qualcuno non l'approva o la rifiuta — la nuova scheda «Assenze» mostra le richieste aperte con un motivo per la decisione, lascia che l'amministrazione inserisca date per un dipendente (approvate subito) e risponde a «chi è assente». Solo i giorni approvati arrivano al tempo di lavoro e al saldo ferie, e una richiesta rifiutata riporta il motivo al dipendente (migrazione 21)",
15
+ "es": "novedad: la administración decide ahora sobre las ausencias. Una solicitud de un empleado espera como «solicitado» y no cuenta para nada hasta que alguien la apruebe o la rechace — la nueva pestaña «Ausencias» muestra las solicitudes abiertas con un motivo para la decisión, deja que la administración registre fechas para un empleado (aprobadas al momento) y responde a «quién está ausente». Solo los días aprobados llegan al tiempo de trabajo y al saldo de vacaciones, y una solicitud rechazada devuelve su motivo al empleado (migración 21)",
16
+ "pl": "nowość: administracja decyduje teraz o nieobecnościach. Wniosek pracownika czeka jako „złożony” i nic nie znaczy, dopóki ktoś go nie zatwierdzi lub nie odrzuci — nowa karta „Nieobecności” pokazuje otwarte wnioski z powodem decyzji, pozwala administracji wpisać daty dla pracownika (od razu zatwierdzone) i odpowiada „kto jest nieobecny”. Tylko zatwierdzone dni trafiają do czasu pracy i salda urlopu, a odrzucony wniosek zwraca pracownikowi swój powód (migracja 21)",
17
+ "uk": "новинка: адміністрація тепер вирішує щодо відсутностей. Заявка працівника чекає як «запитано» і нічого не значить, доки хтось не схвалить або не відхилить її — нова вкладка «Відсутності» показує відкриті заявки з причиною рішення, дає адміністрації внести дати для працівника (схвалено одразу) і відповідає «хто відсутній». Лише схвалені дні потрапляють до робочого часу й балансу відпустки, а відхилена заявка повертає працівникові свою причину (міграція 21)",
18
+ "zh-cn": "新功能:现在由管理方审批缺勤。员工的申请以「已申请」等待,在有人批准或拒绝之前不计入任何数值 —— 新的「缺勤」标签页显示待审批申请并可填写决定原因,允许管理方为员工登记日期(立即批准),并回答「谁缺勤」。只有已批准的日期才计入工作时间与休假余额,被拒绝的申请会把原因带回给员工(迁移 21)"
19
+ },
7
20
  "0.3.4": {
8
21
  "en": "feat: the absence types can be maintained in the administration now — code, name, paid, factor and the vacation deduction, as a row per type with the form in a dialog. The type that uses up the vacation allowance is marked in the lists and in the picker, so “F – Ferien” reads as vacation at one glance",
9
22
  "de": "feat: die Abwesenheitsarten lassen sich jetzt in der Verwaltung pflegen — Kürzel, Bezeichnung, bezahlt, Faktor und Urlaubsabzug, als Zeile je Art mit dem Formular in einem Dialog. Die Art, die vom Urlaubskontingent abzieht, ist in den Listen und in der Auswahl gekennzeichnet, sodass „F – Ferien“ auf einen Blick als Urlaub lesbar ist",
@@ -81,19 +94,6 @@
81
94
  "pl": "poprawka: teraz każda droga rejestracji dociera do `events.*` i aplikacji web. Poza stanem obecności (0.2.6) przyciski `commands.punch`/`quickPunch`, wiadomość `sendTo` (`punch`, `present`) oraz reguły wyzwalające zapisywały wpis, ale nie publikowały zdarzenia — stany zdarzeń zostawały przy poprzednim wpisie. Reguły automatyki przekazują teraz kierunek w swoim zdarzeniu `automation.*`",
82
95
  "uk": "виправлення: тепер кожен шлях відмітки доходить до `events.*` і веб-застосунку. Крім стану присутності (0.2.6), кнопки `commands.punch`/`quickPunch`, повідомлення `sendTo` (`punch`, `present`) і правила-тригери записували відмітку, але не публікували подію — стани подій залишалися від попередньої відмітки. Правила автоматики тепер передають напрямок у своїй події `automation.*`",
83
96
  "zh-cn": "修复:现在每个打卡路径都会到达 `events.*` 和 Web 应用。除在岗状态(0.2.6)外,`commands.punch`/`quickPunch` 按钮、`sendTo` 消息(`punch`、`present`)和触发规则虽然写入了打卡,却从未发布事件 —— 事件状态一直停留在上一次打卡。自动化规则现在会在其 `automation.*` 事件中带上方向"
84
- },
85
- "0.2.6": {
86
- "en": "fix: a punch from the presence state (`users.<id>.present`) is published into the event stream now — it appears in `events.lastType`, `lastUser`, `lastDirection` and `lastSource` and reaches the web app live. The punch was stored in the database, but the event was never sent to the bus, so the event states kept the previous punch",
87
- "de": "fix: ein Stempel über den Anwesenheits-State (`users.<id>.present`) wird jetzt in den Ereignisstrom veröffentlicht — er erscheint in `events.lastType`, `lastUser`, `lastDirection` und `lastSource` und erreicht die Web-App live. Die Buchung landete zwar in der Datenbank, das Ereignis wurde aber nie auf den Bus gegeben, deshalb blieben die Ereignis-States beim vorigen Stempel stehen",
88
- "ru": "исправление: отметка через состояние присутствия (`users.<id>.present`) теперь публикуется в поток событий — она появляется в `events.lastType`, `lastUser`, `lastDirection` и `lastSource` и сразу доходит до веб-приложения. Отметка сохранялась в базе, но событие не отправлялось в шину, поэтому состояния событий оставались от предыдущей отметки",
89
- "pt": "correção: uma marcação através do estado de presença (`users.<id>.present`) passa a ser publicada no fluxo de eventos — aparece em `events.lastType`, `lastUser`, `lastDirection` e `lastSource` e chega à aplicação web em direto. A marcação era gravada na base de dados, mas o evento nunca era enviado para o bus, por isso os estados de evento ficavam na marcação anterior",
90
- "nl": "fix: een stempeling via de aanwezigheidsstate (`users.<id>.present`) wordt nu in de gebeurtenissenstroom gepubliceerd — hij verschijnt in `events.lastType`, `lastUser`, `lastDirection` en `lastSource` en bereikt de webapp live. De stempeling kwam wel in de database, maar de gebeurtenis werd nooit op de bus gezet, daarom bleven de gebeurtenisstates bij de vorige stempeling staan",
91
- "fr": "correctif : un pointage via l'état de présence (`users.<id>.present`) est désormais publié dans le flux d'événements — il apparaît dans `events.lastType`, `lastUser`, `lastDirection` et `lastSource` et arrive en direct dans l'application web. Le pointage était enregistré en base, mais l'événement n'était jamais envoyé au bus, les états d'événement restaient donc sur le pointage précédent",
92
- "it": "correzione: una timbratura tramite lo stato di presenza (`users.<id>.present`) viene ora pubblicata nel flusso di eventi — compare in `events.lastType`, `lastUser`, `lastDirection` e `lastSource` e raggiunge l'app web in diretta. La timbratura finiva nel database, ma l'evento non veniva mai inviato al bus, quindi gli stati degli eventi restavano sulla timbratura precedente",
93
- "es": "corrección: un fichaje a través del estado de presencia (`users.<id>.present`) ahora se publica en el flujo de eventos — aparece en `events.lastType`, `lastUser`, `lastDirection` y `lastSource` y llega a la aplicación web en directo. El fichaje se guardaba en la base, pero el evento nunca se enviaba al bus, así que los estados de evento se quedaban en el fichaje anterior",
94
- "pl": "poprawka: rejestracja przez stan obecności (`users.<id>.present`) jest teraz publikowana w strumieniu zdarzeń — pojawia się w `events.lastType`, `lastUser`, `lastDirection` i `lastSource` i dociera do aplikacji web na żywo. Wpis trafiał do bazy, ale zdarzenie nigdy nie było wysyłane na magistralę, dlatego stany zdarzeń zostawały przy poprzednim wpisie",
95
- "uk": "виправлення: відмітка через стан присутності (`users.<id>.present`) тепер публікується в потоці подій — вона з'являється в `events.lastType`, `lastUser`, `lastDirection` і `lastSource` і одразу доходить до веб-застосунку. Відмітка зберігалася в базі, але подія ніколи не надсилалася до шини, тому стани подій залишалися від попередньої відмітки",
96
- "zh-cn": "修复:通过在岗状态(`users.<id>.present`)的打卡现在会发布到事件流 —— 会出现在 `events.lastType`、`lastUser`、`lastDirection` 和 `lastSource`,并实时到达 Web 应用。打卡已写入数据库,但事件从未发送到总线,因此这些事件状态一直停留在上一次打卡"
97
97
  }
98
98
  },
99
99
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.time-tracker",
3
- "version": "0.3.4",
3
+ "version": "0.4.0",
4
4
  "description": "Time tracking (clock-in/out) for ioBroker with web app, badge terminal and reports",
5
5
  "author": {
6
6
  "name": "Alex",
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Art bearbeiten",
378
378
  "admin.absenceTypes.newTitle": "Neue Art",
379
379
  "admin.absenceTypes.empty": "Keine Abwesenheitsart angelegt.",
380
- "admin.absenceTypes.note": "Bestehende Abwesenheiten behalten ihre Art — eine geänderte Bezeichnung wirkt sofort in der ganzen Oberfläche."
380
+ "admin.absenceTypes.note": "Bestehende Abwesenheiten behalten ihre Art — eine geänderte Bezeichnung wirkt sofort in der ganzen Oberfläche.",
381
+ "admin.absences.title": "Abwesenheiten",
382
+ "admin.absences.pending": "Offene Anträge",
383
+ "admin.absences.pendingEmpty": "Keine offenen Anträge — alles entschieden.",
384
+ "admin.absences.approve": "Genehmigen",
385
+ "admin.absences.reject": "Ablehnen",
386
+ "admin.absences.approveTitle": "Antrag genehmigen",
387
+ "admin.absences.rejectTitle": "Antrag ablehnen",
388
+ "admin.absences.reason": "Begründung",
389
+ "admin.absences.reasonOptional": "Begründung (optional)",
390
+ "admin.absences.add": "Für Mitarbeiter erfassen",
391
+ "admin.absences.addTitle": "Abwesenheit erfassen",
392
+ "admin.absences.employee": "Mitarbeiter",
393
+ "admin.absences.type": "Art",
394
+ "admin.absences.from": "Von",
395
+ "admin.absences.to": "Bis",
396
+ "admin.absences.note": "Notiz (optional)",
397
+ "admin.absences.away": "Wer ist abwesend ({{date}})",
398
+ "admin.absences.awayEmpty": "Heute ist niemand abwesend.",
399
+ "admin.absences.all": "Alle Abwesenheiten",
400
+ "admin.absences.allEmpty": "Keine Abwesenheiten im Zeitraum.",
401
+ "admin.absences.portion": "Anteil: {{portion}}",
402
+ "absences.state.requested": "beantragt",
403
+ "absences.state.approved": "genehmigt",
404
+ "absences.state.rejected": "abgelehnt",
405
+ "absences.reason": "Begründung"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Edit type",
378
378
  "admin.absenceTypes.newTitle": "New type",
379
379
  "admin.absenceTypes.empty": "No absence type yet.",
380
- "admin.absenceTypes.note": "Existing absences keep their type — a changed name shows up everywhere right away."
380
+ "admin.absenceTypes.note": "Existing absences keep their type — a changed name shows up everywhere right away.",
381
+ "admin.absences.title": "Absences",
382
+ "admin.absences.pending": "Open requests",
383
+ "admin.absences.pendingEmpty": "No open request — everything is decided.",
384
+ "admin.absences.approve": "Approve",
385
+ "admin.absences.reject": "Reject",
386
+ "admin.absences.approveTitle": "Approve the request",
387
+ "admin.absences.rejectTitle": "Reject the request",
388
+ "admin.absences.reason": "Reason",
389
+ "admin.absences.reasonOptional": "Reason (optional)",
390
+ "admin.absences.add": "Enter for an employee",
391
+ "admin.absences.addTitle": "Enter an absence",
392
+ "admin.absences.employee": "Employee",
393
+ "admin.absences.type": "Type",
394
+ "admin.absences.from": "From",
395
+ "admin.absences.to": "To",
396
+ "admin.absences.note": "Note (optional)",
397
+ "admin.absences.away": "Who is away ({{date}})",
398
+ "admin.absences.awayEmpty": "Nobody is away today.",
399
+ "admin.absences.all": "All absences",
400
+ "admin.absences.allEmpty": "No absences in that period.",
401
+ "admin.absences.portion": "Portion: {{portion}}",
402
+ "absences.state.requested": "requested",
403
+ "absences.state.approved": "approved",
404
+ "absences.state.rejected": "rejected",
405
+ "absences.reason": "Reason"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Editar tipo",
378
378
  "admin.absenceTypes.newTitle": "Nuevo tipo",
379
379
  "admin.absenceTypes.empty": "Ningún tipo de ausencia definido.",
380
- "admin.absenceTypes.note": "Las ausencias existentes mantienen su tipo — una denominación modificada aparece enseguida en toda la interfaz."
380
+ "admin.absenceTypes.note": "Las ausencias existentes mantienen su tipo — una denominación modificada aparece enseguida en toda la interfaz.",
381
+ "admin.absences.title": "Ausencias",
382
+ "admin.absences.pending": "Solicitudes abiertas",
383
+ "admin.absences.pendingEmpty": "No hay solicitudes abiertas — todo decidido.",
384
+ "admin.absences.approve": "Aprobar",
385
+ "admin.absences.reject": "Rechazar",
386
+ "admin.absences.approveTitle": "Aprobar la solicitud",
387
+ "admin.absences.rejectTitle": "Rechazar la solicitud",
388
+ "admin.absences.reason": "Motivo",
389
+ "admin.absences.reasonOptional": "Motivo (opcional)",
390
+ "admin.absences.add": "Registrar para un empleado",
391
+ "admin.absences.addTitle": "Registrar una ausencia",
392
+ "admin.absences.employee": "Empleado",
393
+ "admin.absences.type": "Tipo",
394
+ "admin.absences.from": "Desde",
395
+ "admin.absences.to": "Hasta",
396
+ "admin.absences.note": "Nota (opcional)",
397
+ "admin.absences.away": "Quién está ausente ({{date}})",
398
+ "admin.absences.awayEmpty": "Hoy no falta nadie.",
399
+ "admin.absences.all": "Todas las ausencias",
400
+ "admin.absences.allEmpty": "No hay ausencias en ese periodo.",
401
+ "admin.absences.portion": "Parte: {{portion}}",
402
+ "absences.state.requested": "solicitado",
403
+ "absences.state.approved": "aprobado",
404
+ "absences.state.rejected": "rechazado",
405
+ "absences.reason": "Motivo"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Modifier le type",
378
378
  "admin.absenceTypes.newTitle": "Nouveau type",
379
379
  "admin.absenceTypes.empty": "Aucun type d'absence défini.",
380
- "admin.absenceTypes.note": "Les absences existantes gardent leur type — un libellé modifié apparaît aussitôt partout."
380
+ "admin.absenceTypes.note": "Les absences existantes gardent leur type — un libellé modifié apparaît aussitôt partout.",
381
+ "admin.absences.title": "Absences",
382
+ "admin.absences.pending": "Demandes en attente",
383
+ "admin.absences.pendingEmpty": "Aucune demande en attente — tout est décidé.",
384
+ "admin.absences.approve": "Approuver",
385
+ "admin.absences.reject": "Refuser",
386
+ "admin.absences.approveTitle": "Approuver la demande",
387
+ "admin.absences.rejectTitle": "Refuser la demande",
388
+ "admin.absences.reason": "Motif",
389
+ "admin.absences.reasonOptional": "Motif (facultatif)",
390
+ "admin.absences.add": "Saisir pour un employé",
391
+ "admin.absences.addTitle": "Saisir une absence",
392
+ "admin.absences.employee": "Employé",
393
+ "admin.absences.type": "Type",
394
+ "admin.absences.from": "Du",
395
+ "admin.absences.to": "Au",
396
+ "admin.absences.note": "Note (facultatif)",
397
+ "admin.absences.away": "Qui est absent ({{date}})",
398
+ "admin.absences.awayEmpty": "Personne n'est absent aujourd'hui.",
399
+ "admin.absences.all": "Toutes les absences",
400
+ "admin.absences.allEmpty": "Aucune absence sur cette période.",
401
+ "admin.absences.portion": "Part : {{portion}}",
402
+ "absences.state.requested": "demandé",
403
+ "absences.state.approved": "approuvé",
404
+ "absences.state.rejected": "refusé",
405
+ "absences.reason": "Motif"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Modifica tipo",
378
378
  "admin.absenceTypes.newTitle": "Nuovo tipo",
379
379
  "admin.absenceTypes.empty": "Nessun tipo di assenza definito.",
380
- "admin.absenceTypes.note": "Le assenze esistenti mantengono il loro tipo — una denominazione modificata appare subito ovunque."
380
+ "admin.absenceTypes.note": "Le assenze esistenti mantengono il loro tipo — una denominazione modificata appare subito ovunque.",
381
+ "admin.absences.title": "Assenze",
382
+ "admin.absences.pending": "Richieste aperte",
383
+ "admin.absences.pendingEmpty": "Nessuna richiesta aperta — è tutto deciso.",
384
+ "admin.absences.approve": "Approva",
385
+ "admin.absences.reject": "Rifiuta",
386
+ "admin.absences.approveTitle": "Approva la richiesta",
387
+ "admin.absences.rejectTitle": "Rifiuta la richiesta",
388
+ "admin.absences.reason": "Motivo",
389
+ "admin.absences.reasonOptional": "Motivo (facoltativo)",
390
+ "admin.absences.add": "Inserisci per un dipendente",
391
+ "admin.absences.addTitle": "Inserisci un'assenza",
392
+ "admin.absences.employee": "Dipendente",
393
+ "admin.absences.type": "Tipo",
394
+ "admin.absences.from": "Dal",
395
+ "admin.absences.to": "Al",
396
+ "admin.absences.note": "Nota (facoltativa)",
397
+ "admin.absences.away": "Chi è assente ({{date}})",
398
+ "admin.absences.awayEmpty": "Oggi non è assente nessuno.",
399
+ "admin.absences.all": "Tutte le assenze",
400
+ "admin.absences.allEmpty": "Nessuna assenza nel periodo.",
401
+ "admin.absences.portion": "Quota: {{portion}}",
402
+ "absences.state.requested": "richiesto",
403
+ "absences.state.approved": "approvato",
404
+ "absences.state.rejected": "rifiutato",
405
+ "absences.reason": "Motivo"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Type bewerken",
378
378
  "admin.absenceTypes.newTitle": "Nieuw type",
379
379
  "admin.absenceTypes.empty": "Nog geen afwezigheidstype.",
380
- "admin.absenceTypes.note": "Bestaande afwezigheden houden hun type — een gewijzigde naam is direct overal zichtbaar."
380
+ "admin.absenceTypes.note": "Bestaande afwezigheden houden hun type — een gewijzigde naam is direct overal zichtbaar.",
381
+ "admin.absences.title": "Afwezigheden",
382
+ "admin.absences.pending": "Openstaande aanvragen",
383
+ "admin.absences.pendingEmpty": "Geen openstaande aanvraag — alles is beslist.",
384
+ "admin.absences.approve": "Goedkeuren",
385
+ "admin.absences.reject": "Afwijzen",
386
+ "admin.absences.approveTitle": "De aanvraag goedkeuren",
387
+ "admin.absences.rejectTitle": "De aanvraag afwijzen",
388
+ "admin.absences.reason": "Reden",
389
+ "admin.absences.reasonOptional": "Reden (optioneel)",
390
+ "admin.absences.add": "Voor een medewerker invoeren",
391
+ "admin.absences.addTitle": "Een afwezigheid invoeren",
392
+ "admin.absences.employee": "Medewerker",
393
+ "admin.absences.type": "Soort",
394
+ "admin.absences.from": "Van",
395
+ "admin.absences.to": "Tot",
396
+ "admin.absences.note": "Notitie (optioneel)",
397
+ "admin.absences.away": "Wie is afwezig ({{date}})",
398
+ "admin.absences.awayEmpty": "Vandaag is niemand afwezig.",
399
+ "admin.absences.all": "Alle afwezigheden",
400
+ "admin.absences.allEmpty": "Geen afwezigheden in die periode.",
401
+ "admin.absences.portion": "Deel: {{portion}}",
402
+ "absences.state.requested": "aangevraagd",
403
+ "absences.state.approved": "goedgekeurd",
404
+ "absences.state.rejected": "afgewezen",
405
+ "absences.reason": "Reden"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Edytuj rodzaj",
378
378
  "admin.absenceTypes.newTitle": "Nowy rodzaj",
379
379
  "admin.absenceTypes.empty": "Nie zdefiniowano rodzajów nieobecności.",
380
- "admin.absenceTypes.note": "Istniejące nieobecności zachowują swój rodzaj — zmieniona nazwa jest od razu widoczna wszędzie."
380
+ "admin.absenceTypes.note": "Istniejące nieobecności zachowują swój rodzaj — zmieniona nazwa jest od razu widoczna wszędzie.",
381
+ "admin.absences.title": "Nieobecności",
382
+ "admin.absences.pending": "Otwarte wnioski",
383
+ "admin.absences.pendingEmpty": "Brak otwartych wniosków — wszystko rozstrzygnięte.",
384
+ "admin.absences.approve": "Zatwierdź",
385
+ "admin.absences.reject": "Odrzuć",
386
+ "admin.absences.approveTitle": "Zatwierdź wniosek",
387
+ "admin.absences.rejectTitle": "Odrzuć wniosek",
388
+ "admin.absences.reason": "Powód",
389
+ "admin.absences.reasonOptional": "Powód (opcjonalnie)",
390
+ "admin.absences.add": "Wpisz dla pracownika",
391
+ "admin.absences.addTitle": "Wpisz nieobecność",
392
+ "admin.absences.employee": "Pracownik",
393
+ "admin.absences.type": "Rodzaj",
394
+ "admin.absences.from": "Od",
395
+ "admin.absences.to": "Do",
396
+ "admin.absences.note": "Notatka (opcjonalnie)",
397
+ "admin.absences.away": "Kto jest nieobecny ({{date}})",
398
+ "admin.absences.awayEmpty": "Dziś nikt nie jest nieobecny.",
399
+ "admin.absences.all": "Wszystkie nieobecności",
400
+ "admin.absences.allEmpty": "Brak nieobecności w tym okresie.",
401
+ "admin.absences.portion": "Część: {{portion}}",
402
+ "absences.state.requested": "złożony",
403
+ "absences.state.approved": "zatwierdzony",
404
+ "absences.state.rejected": "odrzucony",
405
+ "absences.reason": "Powód"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Editar tipo",
378
378
  "admin.absenceTypes.newTitle": "Novo tipo",
379
379
  "admin.absenceTypes.empty": "Nenhum tipo de ausência definido.",
380
- "admin.absenceTypes.note": "As ausências existentes mantêm o seu tipo — uma designação alterada aparece logo em toda a interface."
380
+ "admin.absenceTypes.note": "As ausências existentes mantêm o seu tipo — uma designação alterada aparece logo em toda a interface.",
381
+ "admin.absences.title": "Ausências",
382
+ "admin.absences.pending": "Pedidos abertos",
383
+ "admin.absences.pendingEmpty": "Sem pedidos abertos — está tudo decidido.",
384
+ "admin.absences.approve": "Aprovar",
385
+ "admin.absences.reject": "Rejeitar",
386
+ "admin.absences.approveTitle": "Aprovar o pedido",
387
+ "admin.absences.rejectTitle": "Rejeitar o pedido",
388
+ "admin.absences.reason": "Motivo",
389
+ "admin.absences.reasonOptional": "Motivo (opcional)",
390
+ "admin.absences.add": "Registar para um funcionário",
391
+ "admin.absences.addTitle": "Registar uma ausência",
392
+ "admin.absences.employee": "Funcionário",
393
+ "admin.absences.type": "Tipo",
394
+ "admin.absences.from": "De",
395
+ "admin.absences.to": "Até",
396
+ "admin.absences.note": "Nota (opcional)",
397
+ "admin.absences.away": "Quem está ausente ({{date}})",
398
+ "admin.absences.awayEmpty": "Hoje não está ninguém ausente.",
399
+ "admin.absences.all": "Todas as ausências",
400
+ "admin.absences.allEmpty": "Sem ausências nesse período.",
401
+ "admin.absences.portion": "Fração: {{portion}}",
402
+ "absences.state.requested": "pedido",
403
+ "absences.state.approved": "aprovado",
404
+ "absences.state.rejected": "rejeitado",
405
+ "absences.reason": "Motivo"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Изменить вид",
378
378
  "admin.absenceTypes.newTitle": "Новый вид",
379
379
  "admin.absenceTypes.empty": "Виды отсутствия не заданы.",
380
- "admin.absenceTypes.note": "Существующие отсутствия сохраняют свой вид — изменённое название сразу видно везде."
380
+ "admin.absenceTypes.note": "Существующие отсутствия сохраняют свой вид — изменённое название сразу видно везде.",
381
+ "admin.absences.title": "Отсутствия",
382
+ "admin.absences.pending": "Открытые заявки",
383
+ "admin.absences.pendingEmpty": "Открытых заявок нет — всё решено.",
384
+ "admin.absences.approve": "Одобрить",
385
+ "admin.absences.reject": "Отклонить",
386
+ "admin.absences.approveTitle": "Одобрить заявку",
387
+ "admin.absences.rejectTitle": "Отклонить заявку",
388
+ "admin.absences.reason": "Причина",
389
+ "admin.absences.reasonOptional": "Причина (необязательно)",
390
+ "admin.absences.add": "Внести для сотрудника",
391
+ "admin.absences.addTitle": "Внести отсутствие",
392
+ "admin.absences.employee": "Сотрудник",
393
+ "admin.absences.type": "Вид",
394
+ "admin.absences.from": "С",
395
+ "admin.absences.to": "По",
396
+ "admin.absences.note": "Заметка (необязательно)",
397
+ "admin.absences.away": "Кто отсутствует ({{date}})",
398
+ "admin.absences.awayEmpty": "Сегодня отсутствующих нет.",
399
+ "admin.absences.all": "Все отсутствия",
400
+ "admin.absences.allEmpty": "За этот период отсутствий нет.",
401
+ "admin.absences.portion": "Доля: {{portion}}",
402
+ "absences.state.requested": "запрошено",
403
+ "absences.state.approved": "одобрено",
404
+ "absences.state.rejected": "отклонено",
405
+ "absences.reason": "Причина"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "Змінити вид",
378
378
  "admin.absenceTypes.newTitle": "Новий вид",
379
379
  "admin.absenceTypes.empty": "Види відсутності не задані.",
380
- "admin.absenceTypes.note": "Наявні відсутності зберігають свій вид — змінена назва одразу видно всюди."
380
+ "admin.absenceTypes.note": "Наявні відсутності зберігають свій вид — змінена назва одразу видно всюди.",
381
+ "admin.absences.title": "Відсутності",
382
+ "admin.absences.pending": "Відкриті заявки",
383
+ "admin.absences.pendingEmpty": "Відкритих заявок немає — усе вирішено.",
384
+ "admin.absences.approve": "Схвалити",
385
+ "admin.absences.reject": "Відхилити",
386
+ "admin.absences.approveTitle": "Схвалити заявку",
387
+ "admin.absences.rejectTitle": "Відхилити заявку",
388
+ "admin.absences.reason": "Причина",
389
+ "admin.absences.reasonOptional": "Причина (необов'язково)",
390
+ "admin.absences.add": "Внести для працівника",
391
+ "admin.absences.addTitle": "Внести відсутність",
392
+ "admin.absences.employee": "Працівник",
393
+ "admin.absences.type": "Вид",
394
+ "admin.absences.from": "Від",
395
+ "admin.absences.to": "До",
396
+ "admin.absences.note": "Нотатка (необов'язково)",
397
+ "admin.absences.away": "Хто відсутній ({{date}})",
398
+ "admin.absences.awayEmpty": "Сьогодні ніхто не відсутній.",
399
+ "admin.absences.all": "Усі відсутності",
400
+ "admin.absences.allEmpty": "За цей період відсутностей немає.",
401
+ "admin.absences.portion": "Частка: {{portion}}",
402
+ "absences.state.requested": "запитано",
403
+ "absences.state.approved": "схвалено",
404
+ "absences.state.rejected": "відхилено",
405
+ "absences.reason": "Причина"
381
406
  }
@@ -377,5 +377,30 @@
377
377
  "admin.absenceTypes.editTitle": "编辑类型",
378
378
  "admin.absenceTypes.newTitle": "新类型",
379
379
  "admin.absenceTypes.empty": "尚未定义缺勤类型。",
380
- "admin.absenceTypes.note": "已有的缺勤保留其类型 —— 修改后的名称会立即在全界面显示。"
380
+ "admin.absenceTypes.note": "已有的缺勤保留其类型 —— 修改后的名称会立即在全界面显示。",
381
+ "admin.absences.title": "缺勤",
382
+ "admin.absences.pending": "待审批申请",
383
+ "admin.absences.pendingEmpty": "没有待审批的申请 —— 全部已处理。",
384
+ "admin.absences.approve": "批准",
385
+ "admin.absences.reject": "拒绝",
386
+ "admin.absences.approveTitle": "批准申请",
387
+ "admin.absences.rejectTitle": "拒绝申请",
388
+ "admin.absences.reason": "原因",
389
+ "admin.absences.reasonOptional": "原因(可选)",
390
+ "admin.absences.add": "为员工登记",
391
+ "admin.absences.addTitle": "登记缺勤",
392
+ "admin.absences.employee": "员工",
393
+ "admin.absences.type": "类型",
394
+ "admin.absences.from": "从",
395
+ "admin.absences.to": "到",
396
+ "admin.absences.note": "备注(可选)",
397
+ "admin.absences.away": "谁缺勤({{date}})",
398
+ "admin.absences.awayEmpty": "今天无人缺勤。",
399
+ "admin.absences.all": "全部缺勤",
400
+ "admin.absences.allEmpty": "该期间没有缺勤。",
401
+ "admin.absences.portion": "份额:{{portion}}",
402
+ "absences.state.requested": "已申请",
403
+ "absences.state.approved": "已批准",
404
+ "absences.state.rejected": "已拒绝",
405
+ "absences.reason": "原因"
381
406
  }