iobroker.time-tracker 0.7.9 → 0.7.10

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/README.md CHANGED
@@ -421,6 +421,12 @@ local SQLite file, access is role-based, and every correction is written to an a
421
421
 
422
422
  ### **WORK IN PROGRESS**
423
423
 
424
+ ### 0.7.10 (2026-09-26)
425
+
426
+ - (Alex) change: the state `calendar.feedFile` is called “Path of the calendar file” now — in all eleven languages.
427
+ The old name said “calendar file” and let the value look like a download, while it is the **path** that the `ical`
428
+ adapter reads; browsers and calendar apps use the link `calendar.feedUrl`
429
+
424
430
  ### 0.7.9 (2026-09-26)
425
431
 
426
432
  - (Alex) fix: “Feiertag hinzufügen” stayed grey while the day had to be typed as text — it comes from the date field of
@@ -461,12 +467,6 @@ local SQLite file, access is role-based, and every correction is written to an a
461
467
  therefore ends by itself
462
468
  - (Alex) change: the list of the last runs below the rules shows the five most recent entries instead of twenty
463
469
 
464
- ### 0.7.5 (2026-09-24)
465
-
466
- - (Alex) change: the sources of the web app moved from `src-pwa/` to `src-www/`. The repository checker reads every folder it does not know by name and had reported five `W5042` for react, MUI and i18next - packages only the web app needs and that an adapter installation should not carry; the new name is on its list, so the warnings are gone. Nothing changes for a running installation: the built app is still served from `www/`
467
- - (Alex) fix: the periodic refresh and the hourly backup check cannot overlap themselves any more. A tick that finds the previous run still busy is skipped and logged, so a slow run (a big database, a slow disk) can no longer pile a second one on top of itself
468
- - (Alex) change: `onStateChange` no longer writes a debug line for every state of the instance that it does not handle - on a busy system that filled the log at log level `debug` for nothing
469
-
470
470
  Older entries are kept in [`CHANGELOG_OLD.md`](CHANGELOG_OLD.md).
471
471
 
472
472
  ## Provenance
@@ -540,19 +540,19 @@ const STATE_NAMES = {
540
540
  uk: "\u041F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F \u043F\u0456\u0434\u043F\u0438\u0441\u043A\u0438 \u043A\u043E\u043C\u043F\u0430\u043D\u0456\u0457",
541
541
  "zh-cn": "\u516C\u53F8\u7684\u8BA2\u9605\u94FE\u63A5"
542
542
  },
543
- /** The written calendar file */
543
+ /** Absolute path of the written calendar file (D11) */
544
544
  calendarFeedFile: {
545
- en: "Calendar file (.ics)",
546
- de: "Kalenderdatei (.ics)",
547
- ru: "\u0424\u0430\u0439\u043B \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F (.ics)",
548
- pt: "Ficheiro de calend\xE1rio (.ics)",
549
- nl: "Kalenderbestand (.ics)",
550
- fr: "Fichier de calendrier (.ics)",
551
- it: "File di calendario (.ics)",
552
- es: "Archivo de calendario (.ics)",
553
- pl: "Plik kalendarza (.ics)",
554
- uk: "\u0424\u0430\u0439\u043B \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F (.ics)",
555
- "zh-cn": "\u65E5\u5386\u6587\u4EF6\uFF08.ics\uFF09"
545
+ en: "Path of the calendar file (.ics)",
546
+ de: "Pfad der Kalenderdatei (.ics)",
547
+ ru: "\u041F\u0443\u0442\u044C \u043A \u0444\u0430\u0439\u043B\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F (.ics)",
548
+ pt: "Caminho do ficheiro de calend\xE1rio (.ics)",
549
+ nl: "Pad van het kalenderbestand (.ics)",
550
+ fr: "Chemin du fichier de calendrier (.ics)",
551
+ it: "Percorso del file di calendario (.ics)",
552
+ es: "Ruta del archivo de calendario (.ics)",
553
+ pl: "\u015Acie\u017Cka pliku kalendarza (.ics)",
554
+ uk: "\u0428\u043B\u044F\u0445 \u0434\u043E \u0444\u0430\u0439\u043B\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F (.ics)",
555
+ "zh-cn": "\u65E5\u5386\u6587\u4EF6\u7684\u8DEF\u5F84\uFF08.ics\uFF09"
556
556
  },
557
557
  /** Instant the calendar was written */
558
558
  calendarUpdatedAt: {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/lib/adapter/stateNames.ts"],
4
- "sourcesContent": ["/**\n * Names of the adapter's objects, in the eleven languages ioBroker recommends (checker `E6001`).\n *\n * `states.ts` creates the tree; this module is the single place that carries the texts, so every name has the same\n * set of languages. `states.test.ts` walks the whole tree and fails when a name misses one of the eleven keys \u2014\n * that is how the recommendation stays satisfied without anyone remembering it.\n */\n\n/** One object name: the eleven languages the ioBroker checker recommends. */\nexport interface StateName {\n\t/** English */\n\ten: string;\n\t/** German */\n\tde: string;\n\t/** Russian */\n\tru: string;\n\t/** Portuguese */\n\tpt: string;\n\t/** Dutch */\n\tnl: string;\n\t/** French */\n\tfr: string;\n\t/** Italian */\n\tit: string;\n\t/** Spanish */\n\tes: string;\n\t/** Polish */\n\tpl: string;\n\t/** Ukrainian */\n\tuk: string;\n\t/** Chinese (simplified) */\n\t\"zh-cn\": string;\n}\n\n/** Object names of the adapter, grouped like the state tree. */\nexport const STATE_NAMES = {\n\t/** Channel holding the employees */\n\tusersChannel: {\n\t\ten: \"Employees\",\n\t\tde: \"Mitarbeiter\",\n\t\tru: \"\u0421\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u0438\",\n\t\tpt: \"Funcion\u00E1rios\",\n\t\tnl: \"Medewerkers\",\n\t\tfr: \"Employ\u00E9s\",\n\t\tit: \"Dipendenti\",\n\t\tes: \"Empleados\",\n\t\tpl: \"Pracownicy\",\n\t\tuk: \"\u0421\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A\u0438\",\n\t\t\"zh-cn\": \"\u5458\u5DE5\",\n\t},\n\t/** Channel of one employee */\n\temployeeChannel: {\n\t\ten: \"Employee\",\n\t\tde: \"Mitarbeiter\",\n\t\tru: \"\u0421\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\",\n\t\tpt: \"Funcion\u00E1rio\",\n\t\tnl: \"Medewerker\",\n\t\tfr: \"Employ\u00E9\",\n\t\tit: \"Dipendente\",\n\t\tes: \"Empleado\",\n\t\tpl: \"Pracownik\",\n\t\tuk: \"\u0421\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A\",\n\t\t\"zh-cn\": \"\u5458\u5DE5\",\n\t},\n\t/** Channel of the writable commands */\n\tcommandsChannel: {\n\t\ten: \"Commands\",\n\t\tde: \"Befehle\",\n\t\tru: \"\u041A\u043E\u043C\u0430\u043D\u0434\u044B\",\n\t\tpt: \"Comandos\",\n\t\tnl: \"Opdrachten\",\n\t\tfr: \"Commandes\",\n\t\tit: \"Comandi\",\n\t\tes: \"Comandos\",\n\t\tpl: \"Polecenia\",\n\t\tuk: \"\u041A\u043E\u043C\u0430\u043D\u0434\u0438\",\n\t\t\"zh-cn\": \"\u547D\u4EE4\",\n\t},\n\t/** Channel with the figures of the instance */\n\tinfoChannel: {\n\t\ten: \"Information\",\n\t\tde: \"Information\",\n\t\tru: \"\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F\",\n\t\tpt: \"Informa\u00E7\u00E3o\",\n\t\tnl: \"Informatie\",\n\t\tfr: \"Informations\",\n\t\tit: \"Informazioni\",\n\t\tes: \"Informaci\u00F3n\",\n\t\tpl: \"Informacje\",\n\t\tuk: \"\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F\",\n\t\t\"zh-cn\": \"\u4FE1\u606F\",\n\t},\n\t/** Channel with the figures of the whole company */\n\tcompanyChannel: {\n\t\ten: \"Company\",\n\t\tde: \"Firma\",\n\t\tru: \"\u041A\u043E\u043C\u043F\u0430\u043D\u0438\u044F\",\n\t\tpt: \"Empresa\",\n\t\tnl: \"Bedrijf\",\n\t\tfr: \"Entreprise\",\n\t\tit: \"Azienda\",\n\t\tes: \"Empresa\",\n\t\tpl: \"Firma\",\n\t\tuk: \"\u041A\u043E\u043C\u043F\u0430\u043D\u0456\u044F\",\n\t\t\"zh-cn\": \"\u516C\u53F8\",\n\t},\n\t/** Channel with the newest event of the instance */\n\teventsChannel: {\n\t\ten: \"Events\",\n\t\tde: \"Ereignisse\",\n\t\tru: \"\u0421\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Eventos\",\n\t\tnl: \"Gebeurtenissen\",\n\t\tfr: \"\u00C9v\u00E9nements\",\n\t\tit: \"Eventi\",\n\t\tes: \"Eventos\",\n\t\tpl: \"Zdarzenia\",\n\t\tuk: \"\u041F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u4E8B\u4EF6\",\n\t},\n\t/** Shown name of the employee */\n\tdisplayName: {\n\t\ten: \"Name\",\n\t\tde: \"Name\",\n\t\tru: \"\u0418\u043C\u044F\",\n\t\tpt: \"Nome\",\n\t\tnl: \"Naam\",\n\t\tfr: \"Nom\",\n\t\tit: \"Nome\",\n\t\tes: \"Nombre\",\n\t\tpl: \"Nazwa\",\n\t\tuk: \"\u0406\u043C'\u044F\",\n\t\t\"zh-cn\": \"\u59D3\u540D\",\n\t},\n\t/** Writable presence of the employee (working time runs) */\n\tuserPresent: {\n\t\ten: \"Present (working time is running)\",\n\t\tde: \"Anwesenheit (Arbeitszeit l\u00E4uft)\",\n\t\tru: \"\u041F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 (\u0440\u0430\u0431\u043E\u0447\u0435\u0435 \u0432\u0440\u0435\u043C\u044F \u0438\u0434\u0451\u0442)\",\n\t\tpt: \"Presente (o tempo de trabalho corre)\",\n\t\tnl: \"Aanwezig (werktijd loopt)\",\n\t\tfr: \"Pr\u00E9sent (temps de travail en cours)\",\n\t\tit: \"Presente (tempo di lavoro in corso)\",\n\t\tes: \"Presente (tiempo de trabajo en curso)\",\n\t\tpl: \"Obecno\u015B\u0107 (czas pracy trwa)\",\n\t\tuk: \"\u041F\u0440\u0438\u0441\u0443\u0442\u043D\u0456\u0441\u0442\u044C (\u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u0447\u0430\u0441 \u0456\u0434\u0435)\",\n\t\t\"zh-cn\": \"\u5728\u5C97\uFF08\u5DE5\u4F5C\u65F6\u95F4\u8BA1\u65F6\u4E2D\uFF09\",\n\t},\n\t/** True while the last punch of the day has no counterpart */\n\thasOpenEntry: {\n\t\ten: \"Punched in\",\n\t\tde: \"Eingestempelt\",\n\t\tru: \"\u041F\u0440\u0438\u0445\u043E\u0434 \u043E\u0442\u043C\u0435\u0447\u0435\u043D\",\n\t\tpt: \"Entrada registada\",\n\t\tnl: \"Ingeklokt\",\n\t\tfr: \"Pointage d'arriv\u00E9e\",\n\t\tit: \"Entrata registrata\",\n\t\tes: \"Entrada registrada\",\n\t\tpl: \"Zarejestrowane wej\u015Bcie\",\n\t\tuk: \"\u0412\u0456\u0434\u043C\u0456\u0447\u0435\u043D\u043E \u043F\u0440\u0438\u0445\u0456\u0434\",\n\t\t\"zh-cn\": \"\u5DF2\u7B7E\u5230\",\n\t},\n\t/** Instant of the last punch */\n\tlastPunch: {\n\t\ten: \"Last punch\",\n\t\tde: \"Letzte Buchung\",\n\t\tru: \"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043E\u0442\u043C\u0435\u0442\u043A\u0430\",\n\t\tpt: \"\u00DAltimo registo\",\n\t\tnl: \"Laatste stempeling\",\n\t\tfr: \"Dernier pointage\",\n\t\tit: \"Ultima timbratura\",\n\t\tes: \"\u00DAltimo registro\",\n\t\tpl: \"Ostatni wpis\",\n\t\tuk: \"\u041E\u0441\u0442\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u043C\u0456\u0442\u043A\u0430\",\n\t\t\"zh-cn\": \"\u6700\u540E\u6253\u5361\",\n\t},\n\t/** Net working time of today */\n\ttodayWorkedMinutes: {\n\t\ten: \"Worked today\",\n\t\tde: \"Heute gearbeitet\",\n\t\tru: \"\u041E\u0442\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043E \u0441\u0435\u0433\u043E\u0434\u043D\u044F\",\n\t\tpt: \"Trabalhado hoje\",\n\t\tnl: \"Vandaag gewerkt\",\n\t\tfr: \"Travaill\u00E9 aujourd'hui\",\n\t\tit: \"Lavorato oggi\",\n\t\tes: \"Trabajado hoy\",\n\t\tpl: \"Przepracowane dzi\u015B\",\n\t\tuk: \"\u0412\u0456\u0434\u043F\u0440\u0430\u0446\u044C\u043E\u0432\u0430\u043D\u043E \u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456\",\n\t\t\"zh-cn\": \"\u4ECA\u65E5\u5DF2\u5DE5\u4F5C\",\n\t},\n\t/** Balance of today */\n\ttodayBalanceMinutes: {\n\t\ten: \"Balance today\",\n\t\tde: \"Saldo heute\",\n\t\tru: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0441\u0435\u0433\u043E\u0434\u043D\u044F\",\n\t\tpt: \"Saldo de hoje\",\n\t\tnl: \"Saldo vandaag\",\n\t\tfr: \"Solde du jour\",\n\t\tit: \"Saldo di oggi\",\n\t\tes: \"Saldo de hoy\",\n\t\tpl: \"Saldo dzisiaj\",\n\t\tuk: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456\",\n\t\t\"zh-cn\": \"\u4ECA\u65E5\u4F59\u989D\",\n\t},\n\t/** Net working time of the current month */\n\tmonthWorkedMinutes: {\n\t\ten: \"Worked this month\",\n\t\tde: \"Diesen Monat gearbeitet\",\n\t\tru: \"\u041E\u0442\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043E \u0437\u0430 \u043C\u0435\u0441\u044F\u0446\",\n\t\tpt: \"Trabalhado este m\u00EAs\",\n\t\tnl: \"Deze maand gewerkt\",\n\t\tfr: \"Travaill\u00E9 ce mois\",\n\t\tit: \"Lavorato questo mese\",\n\t\tes: \"Trabajado este mes\",\n\t\tpl: \"Przepracowane w tym miesi\u0105cu\",\n\t\tuk: \"\u0412\u0456\u0434\u043F\u0440\u0430\u0446\u044C\u043E\u0432\u0430\u043D\u043E \u0446\u044C\u043E\u0433\u043E \u043C\u0456\u0441\u044F\u0446\u044F\",\n\t\t\"zh-cn\": \"\u672C\u6708\u5DF2\u5DE5\u4F5C\",\n\t},\n\t/** Balance of the current month */\n\tmonthBalanceMinutes: {\n\t\ten: \"Balance this month\",\n\t\tde: \"Saldo diesen Monat\",\n\t\tru: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u043C\u0435\u0441\u044F\u0446\",\n\t\tpt: \"Saldo deste m\u00EAs\",\n\t\tnl: \"Saldo deze maand\",\n\t\tfr: \"Solde du mois\",\n\t\tit: \"Saldo di questo mese\",\n\t\tes: \"Saldo de este mes\",\n\t\tpl: \"Saldo w tym miesi\u0105cu\",\n\t\tuk: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0446\u0435\u0439 \u043C\u0456\u0441\u044F\u0446\u044C\",\n\t\t\"zh-cn\": \"\u672C\u6708\u4F59\u989D\",\n\t},\n\t/** Balance of the current year */\n\tyearBalanceMinutes: {\n\t\ten: \"Balance this year\",\n\t\tde: \"Saldo dieses Jahr\",\n\t\tru: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0433\u043E\u0434\",\n\t\tpt: \"Saldo deste ano\",\n\t\tnl: \"Saldo dit jaar\",\n\t\tfr: \"Solde de l'ann\u00E9e\",\n\t\tit: \"Saldo di quest'anno\",\n\t\tes: \"Saldo de este a\u00F1o\",\n\t\tpl: \"Saldo w tym roku\",\n\t\tuk: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0446\u0435\u0439 \u0440\u0456\u043A\",\n\t\t\"zh-cn\": \"\u672C\u5E74\u4F59\u989D\",\n\t},\n\t/** Punches waiting for a decision */\n\topenConflicts: {\n\t\ten: \"Open conflicts\",\n\t\tde: \"Offene Konflikte\",\n\t\tru: \"\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u044B\",\n\t\tpt: \"Conflitos em aberto\",\n\t\tnl: \"Openstaande conflicten\",\n\t\tfr: \"Conflits en attente\",\n\t\tit: \"Conflitti aperti\",\n\t\tes: \"Conflictos abiertos\",\n\t\tpl: \"Otwarte konflikty\",\n\t\tuk: \"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0456 \u043A\u043E\u043D\u0444\u043B\u0456\u043A\u0442\u0438\",\n\t\t\"zh-cn\": \"\u672A\u89E3\u51B3\u7684\u51B2\u7A81\",\n\t},\n\t/** Employee the punch commands apply to */\n\tpunchUserId: {\n\t\ten: \"Employee id for punch commands\",\n\t\tde: \"Mitarbeiter-Id f\u00FCr Stempelbefehle\",\n\t\tru: \"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u0430 \u0434\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434\",\n\t\tpt: \"ID do funcion\u00E1rio para comandos\",\n\t\tnl: \"Medewerker-id voor opdrachten\",\n\t\tfr: \"Identifiant de l'employ\u00E9 pour les commandes\",\n\t\tit: \"ID del dipendente per i comandi\",\n\t\tes: \"ID del empleado para comandos\",\n\t\tpl: \"Identyfikator pracownika dla polece\u0144\",\n\t\tuk: \"\u0406\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0441\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A\u0430 \u0434\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434\",\n\t\t\"zh-cn\": \"\u6253\u5361\u547D\u4EE4\u7684\u5458\u5DE5 ID\",\n\t},\n\t/** Button: punch in or out */\n\tpunch: {\n\t\ten: \"Punch in or out\",\n\t\tde: \"Ein- oder ausstempeln\",\n\t\tru: \"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C\u0441\u044F (\u043F\u0440\u0438\u0445\u043E\u0434 \u0438\u043B\u0438 \u0443\u0445\u043E\u0434)\",\n\t\tpt: \"Marcar entrada ou sa\u00EDda\",\n\t\tnl: \"In- of uitklokken\",\n\t\tfr: \"Pointer l'arriv\u00E9e ou le d\u00E9part\",\n\t\tit: \"Timbrare entrata o uscita\",\n\t\tes: \"Fichar entrada o salida\",\n\t\tpl: \"Zarejestruj wej\u015Bcie lub wyj\u015Bcie\",\n\t\tuk: \"\u0412\u0456\u0434\u043C\u0456\u0442\u0438\u0442\u0438 \u043F\u0440\u0438\u0445\u0456\u0434 \u0430\u0431\u043E \u0432\u0438\u0445\u0456\u0434\",\n\t\t\"zh-cn\": \"\u4E0A\u73ED\u6216\u4E0B\u73ED\u6253\u5361\",\n\t},\n\t/** Button: punch and round the time */\n\tquickPunch: {\n\t\ten: \"Punch with quick rounding\",\n\t\tde: \"Stempeln mit Schnellrundung\",\n\t\tru: \"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C\u0441\u044F \u0441 \u0431\u044B\u0441\u0442\u0440\u044B\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u0435\u043C\",\n\t\tpt: \"Marcar com arredondamento r\u00E1pido\",\n\t\tnl: \"Klokken met snelle afronding\",\n\t\tfr: \"Pointer avec arrondi rapide\",\n\t\tit: \"Timbrare con arrotondamento rapido\",\n\t\tes: \"Fichar con redondeo r\u00E1pido\",\n\t\tpl: \"Zarejestruj z szybkim zaokr\u0105gleniem\",\n\t\tuk: \"\u0412\u0456\u0434\u043C\u0456\u0442\u0438\u0442\u0438 \u0437\u0456 \u0448\u0432\u0438\u0434\u043A\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u043D\u044F\u043C\",\n\t\t\"zh-cn\": \"\u5FEB\u901F\u53D6\u6574\u6253\u5361\",\n\t},\n\t/** Month to close */\n\tcloseMonth: {\n\t\ten: \"Close month (YYYY-MM)\",\n\t\tde: \"Monat abschlie\u00DFen (JJJJ-MM)\",\n\t\tru: \"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043C\u0435\u0441\u044F\u0446 (\u0413\u0413\u0413\u0413-\u041C\u041C)\",\n\t\tpt: \"Fechar m\u00EAs (AAAA-MM)\",\n\t\tnl: \"Maand afsluiten (JJJJ-MM)\",\n\t\tfr: \"Cl\u00F4turer le mois (AAAA-MM)\",\n\t\tit: \"Chiudere il mese (AAAA-MM)\",\n\t\tes: \"Cerrar mes (AAAA-MM)\",\n\t\tpl: \"Zamknij miesi\u0105c (RRRR-MM)\",\n\t\tuk: \"\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u043C\u0456\u0441\u044F\u0446\u044C (\u0420\u0420\u0420\u0420-\u041C\u041C)\",\n\t\t\"zh-cn\": \"\u5173\u95ED\u6708\u4EFD\uFF08YYYY-MM\uFF09\",\n\t},\n\t/** Period to recalculate */\n\trecalc: {\n\t\ten: \"Recalculate period (YYYY-MM or YYYY)\",\n\t\tde: \"Zeitraum neu berechnen (JJJJ-MM oder JJJJ)\",\n\t\tru: \"\u041F\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044C \u043F\u0435\u0440\u0438\u043E\u0434 (\u0413\u0413\u0413\u0413-\u041C\u041C \u0438\u043B\u0438 \u0413\u0413\u0413\u0413)\",\n\t\tpt: \"Recalcular per\u00EDodo (AAAA-MM ou AAAA)\",\n\t\tnl: \"Periode opnieuw berekenen (JJJJ-MM of JJJJ)\",\n\t\tfr: \"Recalculer la p\u00E9riode (AAAA-MM ou AAAA)\",\n\t\tit: \"Ricalcolare il periodo (AAAA-MM o AAAA)\",\n\t\tes: \"Recalcular periodo (AAAA-MM o AAAA)\",\n\t\tpl: \"Przelicz okres (RRRR-MM lub RRRR)\",\n\t\tuk: \"\u041F\u0435\u0440\u0435\u0440\u0430\u0445\u0443\u0432\u0430\u0442\u0438 \u043F\u0435\u0440\u0456\u043E\u0434 (\u0420\u0420\u0420\u0420-\u041C\u041C \u0430\u0431\u043E \u0420\u0420\u0420\u0420)\",\n\t\t\"zh-cn\": \"\u91CD\u65B0\u8BA1\u7B97\u671F\u95F4\uFF08YYYY-MM \u6216 YYYY\uFF09\",\n\t},\n\t/** Button: write a database backup */\n\tbackupCommand: {\n\t\ten: \"Write a database backup\",\n\t\tde: \"Datenbank-Sicherung schreiben\",\n\t\tru: \"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u0443\u044E \u043A\u043E\u043F\u0438\u044E \u0431\u0430\u0437\u044B\",\n\t\tpt: \"Criar c\u00F3pia de seguran\u00E7a da base de dados\",\n\t\tnl: \"Databasback-up maken\",\n\t\tfr: \"Cr\u00E9er une sauvegarde de la base\",\n\t\tit: \"Creare un backup del database\",\n\t\tes: \"Crear copia de seguridad de la base\",\n\t\tpl: \"Utw\u00F3rz kopi\u0119 zapasow\u0105 bazy\",\n\t\tuk: \"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u0443 \u043A\u043E\u043F\u0456\u044E \u0431\u0430\u0437\u0438\",\n\t\t\"zh-cn\": \"\u5199\u5165\u6570\u636E\u5E93\u5907\u4EFD\",\n\t},\n\t/** Version of the adapter */\n\tversion: {\n\t\ten: \"Adapter version\",\n\t\tde: \"Adapter-Version\",\n\t\tru: \"\u0412\u0435\u0440\u0441\u0438\u044F \u0430\u0434\u0430\u043F\u0442\u0435\u0440\u0430\",\n\t\tpt: \"Vers\u00E3o do adaptador\",\n\t\tnl: \"Adapterversie\",\n\t\tfr: \"Version de l'adaptateur\",\n\t\tit: \"Versione dell'adattatore\",\n\t\tes: \"Versi\u00F3n del adaptador\",\n\t\tpl: \"Wersja adaptera\",\n\t\tuk: \"\u0412\u0435\u0440\u0441\u0456\u044F \u0430\u0434\u0430\u043F\u0442\u0435\u0440\u0430\",\n\t\t\"zh-cn\": \"\u9002\u914D\u5668\u7248\u672C\",\n\t},\n\t/** Version of the database schema */\n\tschemaVersion: {\n\t\ten: \"Database schema version\",\n\t\tde: \"Datenbank-Schemaversion\",\n\t\tru: \"\u0412\u0435\u0440\u0441\u0438\u044F \u0441\u0445\u0435\u043C\u044B \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445\",\n\t\tpt: \"Vers\u00E3o do esquema da base de dados\",\n\t\tnl: \"Schemaversie van de database\",\n\t\tfr: \"Version du sch\u00E9ma de la base\",\n\t\tit: \"Versione dello schema del database\",\n\t\tes: \"Versi\u00F3n del esquema de la base\",\n\t\tpl: \"Wersja schematu bazy\",\n\t\tuk: \"\u0412\u0435\u0440\u0441\u0456\u044F \u0441\u0445\u0435\u043C\u0438 \u0431\u0430\u0437\u0438 \u0434\u0430\u043D\u0438\u0445\",\n\t\t\"zh-cn\": \"\u6570\u636E\u5E93\u67B6\u6784\u7248\u672C\",\n\t},\n\t/** Size of the database file */\n\tdbSizeBytes: {\n\t\ten: \"Database size\",\n\t\tde: \"Datenbank-Gr\u00F6\u00DFe\",\n\t\tru: \"\u0420\u0430\u0437\u043C\u0435\u0440 \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445\",\n\t\tpt: \"Tamanho da base de dados\",\n\t\tnl: \"Grootte van de database\",\n\t\tfr: \"Taille de la base\",\n\t\tit: \"Dimensione del database\",\n\t\tes: \"Tama\u00F1o de la base\",\n\t\tpl: \"Rozmiar bazy\",\n\t\tuk: \"\u0420\u043E\u0437\u043C\u0456\u0440 \u0431\u0430\u0437\u0438 \u0434\u0430\u043D\u0438\u0445\",\n\t\t\"zh-cn\": \"\u6570\u636E\u5E93\u5927\u5C0F\",\n\t},\n\t/** Last error of the instance */\n\tlastError: {\n\t\ten: \"Last error\",\n\t\tde: \"Letzter Fehler\",\n\t\tru: \"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043E\u0448\u0438\u0431\u043A\u0430\",\n\t\tpt: \"\u00DAltimo erro\",\n\t\tnl: \"Laatste fout\",\n\t\tfr: \"Derni\u00E8re erreur\",\n\t\tit: \"Ultimo errore\",\n\t\tes: \"\u00DAltimo error\",\n\t\tpl: \"Ostatni b\u0142\u0105d\",\n\t\tuk: \"\u041E\u0441\u0442\u0430\u043D\u043D\u044F \u043F\u043E\u043C\u0438\u043B\u043A\u0430\",\n\t\t\"zh-cn\": \"\u6700\u540E\u7684\u9519\u8BEF\",\n\t},\n\t/** Instant of the last backup */\n\tlastBackup: {\n\t\ten: \"Last backup\",\n\t\tde: \"Letzte Sicherung\",\n\t\tru: \"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u0430\u044F \u043A\u043E\u043F\u0438\u044F\",\n\t\tpt: \"\u00DAltima c\u00F3pia de seguran\u00E7a\",\n\t\tnl: \"Laatste back-up\",\n\t\tfr: \"Derni\u00E8re sauvegarde\",\n\t\tit: \"Ultimo backup\",\n\t\tes: \"\u00DAltima copia de seguridad\",\n\t\tpl: \"Ostatnia kopia zapasowa\",\n\t\tuk: \"\u041E\u0441\u0442\u0430\u043D\u043D\u044F \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u0430 \u043A\u043E\u043F\u0456\u044F\",\n\t\t\"zh-cn\": \"\u6700\u540E\u7684\u5907\u4EFD\",\n\t},\n\t/** Number of employees that are present */\n\tcompanyPresentCount: {\n\t\ten: \"Present employees\",\n\t\tde: \"Anwesende Mitarbeiter\",\n\t\tru: \"\u041F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u0438\",\n\t\tpt: \"Funcion\u00E1rios presentes\",\n\t\tnl: \"Aanwezige medewerkers\",\n\t\tfr: \"Employ\u00E9s pr\u00E9sents\",\n\t\tit: \"Dipendenti presenti\",\n\t\tes: \"Empleados presentes\",\n\t\tpl: \"Obecni pracownicy\",\n\t\tuk: \"\u041F\u0440\u0438\u0441\u0443\u0442\u043D\u0456 \u0441\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A\u0438\",\n\t\t\"zh-cn\": \"\u5728\u5C97\u5458\u5DE5\",\n\t},\n\t/** Names of the employees that are present */\n\tcompanyPresent: {\n\t\ten: \"Who is present\",\n\t\tde: \"Wer ist anwesend\",\n\t\tru: \"\u041A\u0442\u043E \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\",\n\t\tpt: \"Quem est\u00E1 presente\",\n\t\tnl: \"Wie is aanwezig\",\n\t\tfr: \"Qui est pr\u00E9sent\",\n\t\tit: \"Chi \u00E8 presente\",\n\t\tes: \"Qui\u00E9n est\u00E1 presente\",\n\t\tpl: \"Kto jest obecny\",\n\t\tuk: \"\u0425\u0442\u043E \u043F\u0440\u0438\u0441\u0443\u0442\u043D\u0456\u0439\",\n\t\t\"zh-cn\": \"\u8C01\u5728\u5C97\",\n\t},\n\t/** Instant of the newest punch of the company */\n\tcompanyLastPunch: {\n\t\ten: \"Last punch\",\n\t\tde: \"Letzte Buchung\",\n\t\tru: \"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043E\u0442\u043C\u0435\u0442\u043A\u0430\",\n\t\tpt: \"\u00DAltimo registo\",\n\t\tnl: \"Laatste stempeling\",\n\t\tfr: \"Dernier pointage\",\n\t\tit: \"Ultima timbratura\",\n\t\tes: \"\u00DAltimo registro\",\n\t\tpl: \"Ostatni wpis\",\n\t\tuk: \"\u041E\u0441\u0442\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u043C\u0456\u0442\u043A\u0430\",\n\t\t\"zh-cn\": \"\u6700\u540E\u6253\u5361\",\n\t},\n\t/** Instant of the newest event */\n\tlastAt: {\n\t\ten: \"Last event at\",\n\t\tde: \"Letztes Ereignis um\",\n\t\tru: \"\u0412\u0440\u0435\u043C\u044F \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Hora do \u00FAltimo evento\",\n\t\tnl: \"Tijdstip laatste gebeurtenis\",\n\t\tfr: \"Heure du dernier \u00E9v\u00E9nement\",\n\t\tit: \"Ora dell'ultimo evento\",\n\t\tes: \"Hora del \u00FAltimo evento\",\n\t\tpl: \"Czas ostatniego zdarzenia\",\n\t\tuk: \"\u0427\u0430\u0441 \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u043F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u6700\u540E\u4E8B\u4EF6\u65F6\u95F4\",\n\t},\n\t/** Kind of the newest event */\n\tlastType: {\n\t\ten: \"Kind of the last event\",\n\t\tde: \"Art des letzten Ereignisses\",\n\t\tru: \"\u0422\u0438\u043F \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Tipo do \u00FAltimo evento\",\n\t\tnl: \"Soort laatste gebeurtenis\",\n\t\tfr: \"Type du dernier \u00E9v\u00E9nement\",\n\t\tit: \"Tipo dell'ultimo evento\",\n\t\tes: \"Tipo del \u00FAltimo evento\",\n\t\tpl: \"Rodzaj ostatniego zdarzenia\",\n\t\tuk: \"\u0422\u0438\u043F \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u043F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u6700\u540E\u4E8B\u4EF6\u7C7B\u578B\",\n\t},\n\t/** Employee of the newest event */\n\tlastUser: {\n\t\ten: \"Employee of the last event\",\n\t\tde: \"Mitarbeiter des letzten Ereignisses\",\n\t\tru: \"\u0421\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Funcion\u00E1rio do \u00FAltimo evento\",\n\t\tnl: \"Medewerker van de laatste gebeurtenis\",\n\t\tfr: \"Employ\u00E9 du dernier \u00E9v\u00E9nement\",\n\t\tit: \"Dipendente dell'ultimo evento\",\n\t\tes: \"Empleado del \u00FAltimo evento\",\n\t\tpl: \"Pracownik ostatniego zdarzenia\",\n\t\tuk: \"\u0421\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u043F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u6700\u540E\u4E8B\u4EF6\u7684\u5458\u5DE5\",\n\t},\n\t/** Direction of the newest punch */\n\tlastDirection: {\n\t\ten: \"Direction of the last punch\",\n\t\tde: \"Richtung der letzten Buchung\",\n\t\tru: \"\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u043E\u0442\u043C\u0435\u0442\u043A\u0438\",\n\t\tpt: \"Dire\u00E7\u00E3o do \u00FAltimo registo\",\n\t\tnl: \"Richting van de laatste stempeling\",\n\t\tfr: \"Sens du dernier pointage\",\n\t\tit: \"Direzione dell'ultima timbratura\",\n\t\tes: \"Direcci\u00F3n del \u00FAltimo registro\",\n\t\tpl: \"Kierunek ostatniego wpisu\",\n\t\tuk: \"\u041D\u0430\u043F\u0440\u044F\u043C\u043E\u043A \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u0432\u0456\u0434\u043C\u0456\u0442\u043A\u0438\",\n\t\t\"zh-cn\": \"\u6700\u540E\u6253\u5361\u7684\u65B9\u5411\",\n\t},\n\t/** Source of the newest event */\n\tlastSource: {\n\t\ten: \"Source of the last event\",\n\t\tde: \"Quelle des letzten Ereignisses\",\n\t\tru: \"\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Origem do \u00FAltimo evento\",\n\t\tnl: \"Bron van de laatste gebeurtenis\",\n\t\tfr: \"Source du dernier \u00E9v\u00E9nement\",\n\t\tit: \"Origine dell'ultimo evento\",\n\t\tes: \"Origen del \u00FAltimo evento\",\n\t\tpl: \"\u0179r\u00F3d\u0142o ostatniego zdarzenia\",\n\t\tuk: \"\u0414\u0436\u0435\u0440\u0435\u043B\u043E \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u043F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u6700\u540E\u4E8B\u4EF6\u7684\u6765\u6E90\",\n\t},\n\t/** Channel with the calendar of the instance */\n\tcalendarChannel: {\n\t\ten: \"Calendar\",\n\t\tde: \"Kalender\",\n\t\tru: \"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C\",\n\t\tpt: \"Calend\u00E1rio\",\n\t\tnl: \"Kalender\",\n\t\tfr: \"Calendrier\",\n\t\tit: \"Calendario\",\n\t\tes: \"Calendario\",\n\t\tpl: \"Kalendarz\",\n\t\tuk: \"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\",\n\t\t\"zh-cn\": \"\u65E5\u5386\",\n\t},\n\t/** Subscription link of the company calendar */\n\tcalendarFeedUrl: {\n\t\ten: \"Subscription link of the company\",\n\t\tde: \"Abo-Link der Firma\",\n\t\tru: \"\u0421\u0441\u044B\u043B\u043A\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438 \u0444\u0438\u0440\u043C\u044B\",\n\t\tpt: \"Liga\u00E7\u00E3o de subscri\u00E7\u00E3o da empresa\",\n\t\tnl: \"Abonnementslink van het bedrijf\",\n\t\tfr: \"Lien d'abonnement de l'entreprise\",\n\t\tit: \"Link di sottoscrizione dell'azienda\",\n\t\tes: \"Enlace de suscripci\u00F3n de la empresa\",\n\t\tpl: \"Link subskrypcji firmy\",\n\t\tuk: \"\u041F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F \u043F\u0456\u0434\u043F\u0438\u0441\u043A\u0438 \u043A\u043E\u043C\u043F\u0430\u043D\u0456\u0457\",\n\t\t\"zh-cn\": \"\u516C\u53F8\u7684\u8BA2\u9605\u94FE\u63A5\",\n\t},\n\t/** The written calendar file */\n\tcalendarFeedFile: {\n\t\ten: \"Calendar file (.ics)\",\n\t\tde: \"Kalenderdatei (.ics)\",\n\t\tru: \"\u0424\u0430\u0439\u043B \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F (.ics)\",\n\t\tpt: \"Ficheiro de calend\u00E1rio (.ics)\",\n\t\tnl: \"Kalenderbestand (.ics)\",\n\t\tfr: \"Fichier de calendrier (.ics)\",\n\t\tit: \"File di calendario (.ics)\",\n\t\tes: \"Archivo de calendario (.ics)\",\n\t\tpl: \"Plik kalendarza (.ics)\",\n\t\tuk: \"\u0424\u0430\u0439\u043B \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F (.ics)\",\n\t\t\"zh-cn\": \"\u65E5\u5386\u6587\u4EF6\uFF08.ics\uFF09\",\n\t},\n\t/** Instant the calendar was written */\n\tcalendarUpdatedAt: {\n\t\ten: \"Calendar written at\",\n\t\tde: \"Kalender geschrieben um\",\n\t\tru: \"\u0412\u0440\u0435\u043C\u044F \u0437\u0430\u043F\u0438\u0441\u0438 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F\",\n\t\tpt: \"Hora de escrita do calend\u00E1rio\",\n\t\tnl: \"Tijdstip kalender geschreven\",\n\t\tfr: \"Heure d'\u00E9criture du calendrier\",\n\t\tit: \"Ora di scrittura del calendario\",\n\t\tes: \"Hora de escritura del calendario\",\n\t\tpl: \"Czas zapisu kalendarza\",\n\t\tuk: \"\u0427\u0430\u0441 \u0437\u0430\u043F\u0438\u0441\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F\",\n\t\t\"zh-cn\": \"\u65E5\u5386\u5199\u5165\u65F6\u95F4\",\n\t},\n\t/** The absences as JSON */\n\tcalendarAbsences: {\n\t\ten: \"Absences (JSON)\",\n\t\tde: \"Abwesenheiten (JSON)\",\n\t\tru: \"\u041E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044F (JSON)\",\n\t\tpt: \"Aus\u00EAncias (JSON)\",\n\t\tnl: \"Afwezigheden (JSON)\",\n\t\tfr: \"Absences (JSON)\",\n\t\tit: \"Assenze (JSON)\",\n\t\tes: \"Ausencias (JSON)\",\n\t\tpl: \"Nieobecno\u015Bci (JSON)\",\n\t\tuk: \"\u0412\u0456\u0434\u0441\u0443\u0442\u043D\u043E\u0441\u0442\u0456 (JSON)\",\n\t\t\"zh-cn\": \"\u7F3A\u52E4\uFF08JSON\uFF09\",\n\t},\n\t/** Command that creates or renews the calendar link of the company */\n\trotateCalendarToken: {\n\t\ten: \"Create or renew the calendar link of the company\",\n\t\tde: \"Kalender-Link der Firma anlegen oder erneuern\",\n\t\tru: \"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0438\u043B\u0438 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F \u0444\u0438\u0440\u043C\u044B\",\n\t\tpt: \"Criar ou renovar a liga\u00E7\u00E3o do calend\u00E1rio da empresa\",\n\t\tnl: \"Kalenderlink van het bedrijf aanmaken of vernieuwen\",\n\t\tfr: \"Cr\u00E9er ou renouveler le lien du calendrier de l'entreprise\",\n\t\tit: \"Creare o rinnovare il link del calendario dell'azienda\",\n\t\tes: \"Crear o renovar el enlace del calendario de la empresa\",\n\t\tpl: \"Utw\u00F3rz lub od\u015Bwie\u017C link kalendarza firmy\",\n\t\tuk: \"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0430\u0431\u043E \u043E\u043D\u043E\u0432\u0438\u0442\u0438 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F \u043A\u043E\u043C\u043F\u0430\u043D\u0456\u0457\",\n\t\t\"zh-cn\": \"\u521B\u5EFA\u6216\u66F4\u65B0\u516C\u53F8\u7684\u65E5\u5386\u94FE\u63A5\",\n\t},\n} satisfies Record<string, StateName>;\n"],
4
+ "sourcesContent": ["/**\n * Names of the adapter's objects, in the eleven languages ioBroker recommends (checker `E6001`).\n *\n * `states.ts` creates the tree; this module is the single place that carries the texts, so every name has the same\n * set of languages. `states.test.ts` walks the whole tree and fails when a name misses one of the eleven keys \u2014\n * that is how the recommendation stays satisfied without anyone remembering it.\n */\n\n/** One object name: the eleven languages the ioBroker checker recommends. */\nexport interface StateName {\n\t/** English */\n\ten: string;\n\t/** German */\n\tde: string;\n\t/** Russian */\n\tru: string;\n\t/** Portuguese */\n\tpt: string;\n\t/** Dutch */\n\tnl: string;\n\t/** French */\n\tfr: string;\n\t/** Italian */\n\tit: string;\n\t/** Spanish */\n\tes: string;\n\t/** Polish */\n\tpl: string;\n\t/** Ukrainian */\n\tuk: string;\n\t/** Chinese (simplified) */\n\t\"zh-cn\": string;\n}\n\n/** Object names of the adapter, grouped like the state tree. */\nexport const STATE_NAMES = {\n\t/** Channel holding the employees */\n\tusersChannel: {\n\t\ten: \"Employees\",\n\t\tde: \"Mitarbeiter\",\n\t\tru: \"\u0421\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u0438\",\n\t\tpt: \"Funcion\u00E1rios\",\n\t\tnl: \"Medewerkers\",\n\t\tfr: \"Employ\u00E9s\",\n\t\tit: \"Dipendenti\",\n\t\tes: \"Empleados\",\n\t\tpl: \"Pracownicy\",\n\t\tuk: \"\u0421\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A\u0438\",\n\t\t\"zh-cn\": \"\u5458\u5DE5\",\n\t},\n\t/** Channel of one employee */\n\temployeeChannel: {\n\t\ten: \"Employee\",\n\t\tde: \"Mitarbeiter\",\n\t\tru: \"\u0421\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\",\n\t\tpt: \"Funcion\u00E1rio\",\n\t\tnl: \"Medewerker\",\n\t\tfr: \"Employ\u00E9\",\n\t\tit: \"Dipendente\",\n\t\tes: \"Empleado\",\n\t\tpl: \"Pracownik\",\n\t\tuk: \"\u0421\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A\",\n\t\t\"zh-cn\": \"\u5458\u5DE5\",\n\t},\n\t/** Channel of the writable commands */\n\tcommandsChannel: {\n\t\ten: \"Commands\",\n\t\tde: \"Befehle\",\n\t\tru: \"\u041A\u043E\u043C\u0430\u043D\u0434\u044B\",\n\t\tpt: \"Comandos\",\n\t\tnl: \"Opdrachten\",\n\t\tfr: \"Commandes\",\n\t\tit: \"Comandi\",\n\t\tes: \"Comandos\",\n\t\tpl: \"Polecenia\",\n\t\tuk: \"\u041A\u043E\u043C\u0430\u043D\u0434\u0438\",\n\t\t\"zh-cn\": \"\u547D\u4EE4\",\n\t},\n\t/** Channel with the figures of the instance */\n\tinfoChannel: {\n\t\ten: \"Information\",\n\t\tde: \"Information\",\n\t\tru: \"\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F\",\n\t\tpt: \"Informa\u00E7\u00E3o\",\n\t\tnl: \"Informatie\",\n\t\tfr: \"Informations\",\n\t\tit: \"Informazioni\",\n\t\tes: \"Informaci\u00F3n\",\n\t\tpl: \"Informacje\",\n\t\tuk: \"\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F\",\n\t\t\"zh-cn\": \"\u4FE1\u606F\",\n\t},\n\t/** Channel with the figures of the whole company */\n\tcompanyChannel: {\n\t\ten: \"Company\",\n\t\tde: \"Firma\",\n\t\tru: \"\u041A\u043E\u043C\u043F\u0430\u043D\u0438\u044F\",\n\t\tpt: \"Empresa\",\n\t\tnl: \"Bedrijf\",\n\t\tfr: \"Entreprise\",\n\t\tit: \"Azienda\",\n\t\tes: \"Empresa\",\n\t\tpl: \"Firma\",\n\t\tuk: \"\u041A\u043E\u043C\u043F\u0430\u043D\u0456\u044F\",\n\t\t\"zh-cn\": \"\u516C\u53F8\",\n\t},\n\t/** Channel with the newest event of the instance */\n\teventsChannel: {\n\t\ten: \"Events\",\n\t\tde: \"Ereignisse\",\n\t\tru: \"\u0421\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Eventos\",\n\t\tnl: \"Gebeurtenissen\",\n\t\tfr: \"\u00C9v\u00E9nements\",\n\t\tit: \"Eventi\",\n\t\tes: \"Eventos\",\n\t\tpl: \"Zdarzenia\",\n\t\tuk: \"\u041F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u4E8B\u4EF6\",\n\t},\n\t/** Shown name of the employee */\n\tdisplayName: {\n\t\ten: \"Name\",\n\t\tde: \"Name\",\n\t\tru: \"\u0418\u043C\u044F\",\n\t\tpt: \"Nome\",\n\t\tnl: \"Naam\",\n\t\tfr: \"Nom\",\n\t\tit: \"Nome\",\n\t\tes: \"Nombre\",\n\t\tpl: \"Nazwa\",\n\t\tuk: \"\u0406\u043C'\u044F\",\n\t\t\"zh-cn\": \"\u59D3\u540D\",\n\t},\n\t/** Writable presence of the employee (working time runs) */\n\tuserPresent: {\n\t\ten: \"Present (working time is running)\",\n\t\tde: \"Anwesenheit (Arbeitszeit l\u00E4uft)\",\n\t\tru: \"\u041F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 (\u0440\u0430\u0431\u043E\u0447\u0435\u0435 \u0432\u0440\u0435\u043C\u044F \u0438\u0434\u0451\u0442)\",\n\t\tpt: \"Presente (o tempo de trabalho corre)\",\n\t\tnl: \"Aanwezig (werktijd loopt)\",\n\t\tfr: \"Pr\u00E9sent (temps de travail en cours)\",\n\t\tit: \"Presente (tempo di lavoro in corso)\",\n\t\tes: \"Presente (tiempo de trabajo en curso)\",\n\t\tpl: \"Obecno\u015B\u0107 (czas pracy trwa)\",\n\t\tuk: \"\u041F\u0440\u0438\u0441\u0443\u0442\u043D\u0456\u0441\u0442\u044C (\u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u0447\u0430\u0441 \u0456\u0434\u0435)\",\n\t\t\"zh-cn\": \"\u5728\u5C97\uFF08\u5DE5\u4F5C\u65F6\u95F4\u8BA1\u65F6\u4E2D\uFF09\",\n\t},\n\t/** True while the last punch of the day has no counterpart */\n\thasOpenEntry: {\n\t\ten: \"Punched in\",\n\t\tde: \"Eingestempelt\",\n\t\tru: \"\u041F\u0440\u0438\u0445\u043E\u0434 \u043E\u0442\u043C\u0435\u0447\u0435\u043D\",\n\t\tpt: \"Entrada registada\",\n\t\tnl: \"Ingeklokt\",\n\t\tfr: \"Pointage d'arriv\u00E9e\",\n\t\tit: \"Entrata registrata\",\n\t\tes: \"Entrada registrada\",\n\t\tpl: \"Zarejestrowane wej\u015Bcie\",\n\t\tuk: \"\u0412\u0456\u0434\u043C\u0456\u0447\u0435\u043D\u043E \u043F\u0440\u0438\u0445\u0456\u0434\",\n\t\t\"zh-cn\": \"\u5DF2\u7B7E\u5230\",\n\t},\n\t/** Instant of the last punch */\n\tlastPunch: {\n\t\ten: \"Last punch\",\n\t\tde: \"Letzte Buchung\",\n\t\tru: \"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043E\u0442\u043C\u0435\u0442\u043A\u0430\",\n\t\tpt: \"\u00DAltimo registo\",\n\t\tnl: \"Laatste stempeling\",\n\t\tfr: \"Dernier pointage\",\n\t\tit: \"Ultima timbratura\",\n\t\tes: \"\u00DAltimo registro\",\n\t\tpl: \"Ostatni wpis\",\n\t\tuk: \"\u041E\u0441\u0442\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u043C\u0456\u0442\u043A\u0430\",\n\t\t\"zh-cn\": \"\u6700\u540E\u6253\u5361\",\n\t},\n\t/** Net working time of today */\n\ttodayWorkedMinutes: {\n\t\ten: \"Worked today\",\n\t\tde: \"Heute gearbeitet\",\n\t\tru: \"\u041E\u0442\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043E \u0441\u0435\u0433\u043E\u0434\u043D\u044F\",\n\t\tpt: \"Trabalhado hoje\",\n\t\tnl: \"Vandaag gewerkt\",\n\t\tfr: \"Travaill\u00E9 aujourd'hui\",\n\t\tit: \"Lavorato oggi\",\n\t\tes: \"Trabajado hoy\",\n\t\tpl: \"Przepracowane dzi\u015B\",\n\t\tuk: \"\u0412\u0456\u0434\u043F\u0440\u0430\u0446\u044C\u043E\u0432\u0430\u043D\u043E \u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456\",\n\t\t\"zh-cn\": \"\u4ECA\u65E5\u5DF2\u5DE5\u4F5C\",\n\t},\n\t/** Balance of today */\n\ttodayBalanceMinutes: {\n\t\ten: \"Balance today\",\n\t\tde: \"Saldo heute\",\n\t\tru: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0441\u0435\u0433\u043E\u0434\u043D\u044F\",\n\t\tpt: \"Saldo de hoje\",\n\t\tnl: \"Saldo vandaag\",\n\t\tfr: \"Solde du jour\",\n\t\tit: \"Saldo di oggi\",\n\t\tes: \"Saldo de hoy\",\n\t\tpl: \"Saldo dzisiaj\",\n\t\tuk: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456\",\n\t\t\"zh-cn\": \"\u4ECA\u65E5\u4F59\u989D\",\n\t},\n\t/** Net working time of the current month */\n\tmonthWorkedMinutes: {\n\t\ten: \"Worked this month\",\n\t\tde: \"Diesen Monat gearbeitet\",\n\t\tru: \"\u041E\u0442\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043E \u0437\u0430 \u043C\u0435\u0441\u044F\u0446\",\n\t\tpt: \"Trabalhado este m\u00EAs\",\n\t\tnl: \"Deze maand gewerkt\",\n\t\tfr: \"Travaill\u00E9 ce mois\",\n\t\tit: \"Lavorato questo mese\",\n\t\tes: \"Trabajado este mes\",\n\t\tpl: \"Przepracowane w tym miesi\u0105cu\",\n\t\tuk: \"\u0412\u0456\u0434\u043F\u0440\u0430\u0446\u044C\u043E\u0432\u0430\u043D\u043E \u0446\u044C\u043E\u0433\u043E \u043C\u0456\u0441\u044F\u0446\u044F\",\n\t\t\"zh-cn\": \"\u672C\u6708\u5DF2\u5DE5\u4F5C\",\n\t},\n\t/** Balance of the current month */\n\tmonthBalanceMinutes: {\n\t\ten: \"Balance this month\",\n\t\tde: \"Saldo diesen Monat\",\n\t\tru: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u043C\u0435\u0441\u044F\u0446\",\n\t\tpt: \"Saldo deste m\u00EAs\",\n\t\tnl: \"Saldo deze maand\",\n\t\tfr: \"Solde du mois\",\n\t\tit: \"Saldo di questo mese\",\n\t\tes: \"Saldo de este mes\",\n\t\tpl: \"Saldo w tym miesi\u0105cu\",\n\t\tuk: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0446\u0435\u0439 \u043C\u0456\u0441\u044F\u0446\u044C\",\n\t\t\"zh-cn\": \"\u672C\u6708\u4F59\u989D\",\n\t},\n\t/** Balance of the current year */\n\tyearBalanceMinutes: {\n\t\ten: \"Balance this year\",\n\t\tde: \"Saldo dieses Jahr\",\n\t\tru: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0433\u043E\u0434\",\n\t\tpt: \"Saldo deste ano\",\n\t\tnl: \"Saldo dit jaar\",\n\t\tfr: \"Solde de l'ann\u00E9e\",\n\t\tit: \"Saldo di quest'anno\",\n\t\tes: \"Saldo de este a\u00F1o\",\n\t\tpl: \"Saldo w tym roku\",\n\t\tuk: \"\u0411\u0430\u043B\u0430\u043D\u0441 \u0437\u0430 \u0446\u0435\u0439 \u0440\u0456\u043A\",\n\t\t\"zh-cn\": \"\u672C\u5E74\u4F59\u989D\",\n\t},\n\t/** Punches waiting for a decision */\n\topenConflicts: {\n\t\ten: \"Open conflicts\",\n\t\tde: \"Offene Konflikte\",\n\t\tru: \"\u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u044B\",\n\t\tpt: \"Conflitos em aberto\",\n\t\tnl: \"Openstaande conflicten\",\n\t\tfr: \"Conflits en attente\",\n\t\tit: \"Conflitti aperti\",\n\t\tes: \"Conflictos abiertos\",\n\t\tpl: \"Otwarte konflikty\",\n\t\tuk: \"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0456 \u043A\u043E\u043D\u0444\u043B\u0456\u043A\u0442\u0438\",\n\t\t\"zh-cn\": \"\u672A\u89E3\u51B3\u7684\u51B2\u7A81\",\n\t},\n\t/** Employee the punch commands apply to */\n\tpunchUserId: {\n\t\ten: \"Employee id for punch commands\",\n\t\tde: \"Mitarbeiter-Id f\u00FCr Stempelbefehle\",\n\t\tru: \"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u0430 \u0434\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434\",\n\t\tpt: \"ID do funcion\u00E1rio para comandos\",\n\t\tnl: \"Medewerker-id voor opdrachten\",\n\t\tfr: \"Identifiant de l'employ\u00E9 pour les commandes\",\n\t\tit: \"ID del dipendente per i comandi\",\n\t\tes: \"ID del empleado para comandos\",\n\t\tpl: \"Identyfikator pracownika dla polece\u0144\",\n\t\tuk: \"\u0406\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0441\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A\u0430 \u0434\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434\",\n\t\t\"zh-cn\": \"\u6253\u5361\u547D\u4EE4\u7684\u5458\u5DE5 ID\",\n\t},\n\t/** Button: punch in or out */\n\tpunch: {\n\t\ten: \"Punch in or out\",\n\t\tde: \"Ein- oder ausstempeln\",\n\t\tru: \"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C\u0441\u044F (\u043F\u0440\u0438\u0445\u043E\u0434 \u0438\u043B\u0438 \u0443\u0445\u043E\u0434)\",\n\t\tpt: \"Marcar entrada ou sa\u00EDda\",\n\t\tnl: \"In- of uitklokken\",\n\t\tfr: \"Pointer l'arriv\u00E9e ou le d\u00E9part\",\n\t\tit: \"Timbrare entrata o uscita\",\n\t\tes: \"Fichar entrada o salida\",\n\t\tpl: \"Zarejestruj wej\u015Bcie lub wyj\u015Bcie\",\n\t\tuk: \"\u0412\u0456\u0434\u043C\u0456\u0442\u0438\u0442\u0438 \u043F\u0440\u0438\u0445\u0456\u0434 \u0430\u0431\u043E \u0432\u0438\u0445\u0456\u0434\",\n\t\t\"zh-cn\": \"\u4E0A\u73ED\u6216\u4E0B\u73ED\u6253\u5361\",\n\t},\n\t/** Button: punch and round the time */\n\tquickPunch: {\n\t\ten: \"Punch with quick rounding\",\n\t\tde: \"Stempeln mit Schnellrundung\",\n\t\tru: \"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C\u0441\u044F \u0441 \u0431\u044B\u0441\u0442\u0440\u044B\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u0438\u0435\u043C\",\n\t\tpt: \"Marcar com arredondamento r\u00E1pido\",\n\t\tnl: \"Klokken met snelle afronding\",\n\t\tfr: \"Pointer avec arrondi rapide\",\n\t\tit: \"Timbrare con arrotondamento rapido\",\n\t\tes: \"Fichar con redondeo r\u00E1pido\",\n\t\tpl: \"Zarejestruj z szybkim zaokr\u0105gleniem\",\n\t\tuk: \"\u0412\u0456\u0434\u043C\u0456\u0442\u0438\u0442\u0438 \u0437\u0456 \u0448\u0432\u0438\u0434\u043A\u0438\u043C \u043E\u043A\u0440\u0443\u0433\u043B\u0435\u043D\u043D\u044F\u043C\",\n\t\t\"zh-cn\": \"\u5FEB\u901F\u53D6\u6574\u6253\u5361\",\n\t},\n\t/** Month to close */\n\tcloseMonth: {\n\t\ten: \"Close month (YYYY-MM)\",\n\t\tde: \"Monat abschlie\u00DFen (JJJJ-MM)\",\n\t\tru: \"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043C\u0435\u0441\u044F\u0446 (\u0413\u0413\u0413\u0413-\u041C\u041C)\",\n\t\tpt: \"Fechar m\u00EAs (AAAA-MM)\",\n\t\tnl: \"Maand afsluiten (JJJJ-MM)\",\n\t\tfr: \"Cl\u00F4turer le mois (AAAA-MM)\",\n\t\tit: \"Chiudere il mese (AAAA-MM)\",\n\t\tes: \"Cerrar mes (AAAA-MM)\",\n\t\tpl: \"Zamknij miesi\u0105c (RRRR-MM)\",\n\t\tuk: \"\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u043C\u0456\u0441\u044F\u0446\u044C (\u0420\u0420\u0420\u0420-\u041C\u041C)\",\n\t\t\"zh-cn\": \"\u5173\u95ED\u6708\u4EFD\uFF08YYYY-MM\uFF09\",\n\t},\n\t/** Period to recalculate */\n\trecalc: {\n\t\ten: \"Recalculate period (YYYY-MM or YYYY)\",\n\t\tde: \"Zeitraum neu berechnen (JJJJ-MM oder JJJJ)\",\n\t\tru: \"\u041F\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044C \u043F\u0435\u0440\u0438\u043E\u0434 (\u0413\u0413\u0413\u0413-\u041C\u041C \u0438\u043B\u0438 \u0413\u0413\u0413\u0413)\",\n\t\tpt: \"Recalcular per\u00EDodo (AAAA-MM ou AAAA)\",\n\t\tnl: \"Periode opnieuw berekenen (JJJJ-MM of JJJJ)\",\n\t\tfr: \"Recalculer la p\u00E9riode (AAAA-MM ou AAAA)\",\n\t\tit: \"Ricalcolare il periodo (AAAA-MM o AAAA)\",\n\t\tes: \"Recalcular periodo (AAAA-MM o AAAA)\",\n\t\tpl: \"Przelicz okres (RRRR-MM lub RRRR)\",\n\t\tuk: \"\u041F\u0435\u0440\u0435\u0440\u0430\u0445\u0443\u0432\u0430\u0442\u0438 \u043F\u0435\u0440\u0456\u043E\u0434 (\u0420\u0420\u0420\u0420-\u041C\u041C \u0430\u0431\u043E \u0420\u0420\u0420\u0420)\",\n\t\t\"zh-cn\": \"\u91CD\u65B0\u8BA1\u7B97\u671F\u95F4\uFF08YYYY-MM \u6216 YYYY\uFF09\",\n\t},\n\t/** Button: write a database backup */\n\tbackupCommand: {\n\t\ten: \"Write a database backup\",\n\t\tde: \"Datenbank-Sicherung schreiben\",\n\t\tru: \"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u0443\u044E \u043A\u043E\u043F\u0438\u044E \u0431\u0430\u0437\u044B\",\n\t\tpt: \"Criar c\u00F3pia de seguran\u00E7a da base de dados\",\n\t\tnl: \"Databasback-up maken\",\n\t\tfr: \"Cr\u00E9er une sauvegarde de la base\",\n\t\tit: \"Creare un backup del database\",\n\t\tes: \"Crear copia de seguridad de la base\",\n\t\tpl: \"Utw\u00F3rz kopi\u0119 zapasow\u0105 bazy\",\n\t\tuk: \"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u0443 \u043A\u043E\u043F\u0456\u044E \u0431\u0430\u0437\u0438\",\n\t\t\"zh-cn\": \"\u5199\u5165\u6570\u636E\u5E93\u5907\u4EFD\",\n\t},\n\t/** Version of the adapter */\n\tversion: {\n\t\ten: \"Adapter version\",\n\t\tde: \"Adapter-Version\",\n\t\tru: \"\u0412\u0435\u0440\u0441\u0438\u044F \u0430\u0434\u0430\u043F\u0442\u0435\u0440\u0430\",\n\t\tpt: \"Vers\u00E3o do adaptador\",\n\t\tnl: \"Adapterversie\",\n\t\tfr: \"Version de l'adaptateur\",\n\t\tit: \"Versione dell'adattatore\",\n\t\tes: \"Versi\u00F3n del adaptador\",\n\t\tpl: \"Wersja adaptera\",\n\t\tuk: \"\u0412\u0435\u0440\u0441\u0456\u044F \u0430\u0434\u0430\u043F\u0442\u0435\u0440\u0430\",\n\t\t\"zh-cn\": \"\u9002\u914D\u5668\u7248\u672C\",\n\t},\n\t/** Version of the database schema */\n\tschemaVersion: {\n\t\ten: \"Database schema version\",\n\t\tde: \"Datenbank-Schemaversion\",\n\t\tru: \"\u0412\u0435\u0440\u0441\u0438\u044F \u0441\u0445\u0435\u043C\u044B \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445\",\n\t\tpt: \"Vers\u00E3o do esquema da base de dados\",\n\t\tnl: \"Schemaversie van de database\",\n\t\tfr: \"Version du sch\u00E9ma de la base\",\n\t\tit: \"Versione dello schema del database\",\n\t\tes: \"Versi\u00F3n del esquema de la base\",\n\t\tpl: \"Wersja schematu bazy\",\n\t\tuk: \"\u0412\u0435\u0440\u0441\u0456\u044F \u0441\u0445\u0435\u043C\u0438 \u0431\u0430\u0437\u0438 \u0434\u0430\u043D\u0438\u0445\",\n\t\t\"zh-cn\": \"\u6570\u636E\u5E93\u67B6\u6784\u7248\u672C\",\n\t},\n\t/** Size of the database file */\n\tdbSizeBytes: {\n\t\ten: \"Database size\",\n\t\tde: \"Datenbank-Gr\u00F6\u00DFe\",\n\t\tru: \"\u0420\u0430\u0437\u043C\u0435\u0440 \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445\",\n\t\tpt: \"Tamanho da base de dados\",\n\t\tnl: \"Grootte van de database\",\n\t\tfr: \"Taille de la base\",\n\t\tit: \"Dimensione del database\",\n\t\tes: \"Tama\u00F1o de la base\",\n\t\tpl: \"Rozmiar bazy\",\n\t\tuk: \"\u0420\u043E\u0437\u043C\u0456\u0440 \u0431\u0430\u0437\u0438 \u0434\u0430\u043D\u0438\u0445\",\n\t\t\"zh-cn\": \"\u6570\u636E\u5E93\u5927\u5C0F\",\n\t},\n\t/** Last error of the instance */\n\tlastError: {\n\t\ten: \"Last error\",\n\t\tde: \"Letzter Fehler\",\n\t\tru: \"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043E\u0448\u0438\u0431\u043A\u0430\",\n\t\tpt: \"\u00DAltimo erro\",\n\t\tnl: \"Laatste fout\",\n\t\tfr: \"Derni\u00E8re erreur\",\n\t\tit: \"Ultimo errore\",\n\t\tes: \"\u00DAltimo error\",\n\t\tpl: \"Ostatni b\u0142\u0105d\",\n\t\tuk: \"\u041E\u0441\u0442\u0430\u043D\u043D\u044F \u043F\u043E\u043C\u0438\u043B\u043A\u0430\",\n\t\t\"zh-cn\": \"\u6700\u540E\u7684\u9519\u8BEF\",\n\t},\n\t/** Instant of the last backup */\n\tlastBackup: {\n\t\ten: \"Last backup\",\n\t\tde: \"Letzte Sicherung\",\n\t\tru: \"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u0430\u044F \u043A\u043E\u043F\u0438\u044F\",\n\t\tpt: \"\u00DAltima c\u00F3pia de seguran\u00E7a\",\n\t\tnl: \"Laatste back-up\",\n\t\tfr: \"Derni\u00E8re sauvegarde\",\n\t\tit: \"Ultimo backup\",\n\t\tes: \"\u00DAltima copia de seguridad\",\n\t\tpl: \"Ostatnia kopia zapasowa\",\n\t\tuk: \"\u041E\u0441\u0442\u0430\u043D\u043D\u044F \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u0430 \u043A\u043E\u043F\u0456\u044F\",\n\t\t\"zh-cn\": \"\u6700\u540E\u7684\u5907\u4EFD\",\n\t},\n\t/** Number of employees that are present */\n\tcompanyPresentCount: {\n\t\ten: \"Present employees\",\n\t\tde: \"Anwesende Mitarbeiter\",\n\t\tru: \"\u041F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u0438\",\n\t\tpt: \"Funcion\u00E1rios presentes\",\n\t\tnl: \"Aanwezige medewerkers\",\n\t\tfr: \"Employ\u00E9s pr\u00E9sents\",\n\t\tit: \"Dipendenti presenti\",\n\t\tes: \"Empleados presentes\",\n\t\tpl: \"Obecni pracownicy\",\n\t\tuk: \"\u041F\u0440\u0438\u0441\u0443\u0442\u043D\u0456 \u0441\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A\u0438\",\n\t\t\"zh-cn\": \"\u5728\u5C97\u5458\u5DE5\",\n\t},\n\t/** Names of the employees that are present */\n\tcompanyPresent: {\n\t\ten: \"Who is present\",\n\t\tde: \"Wer ist anwesend\",\n\t\tru: \"\u041A\u0442\u043E \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\",\n\t\tpt: \"Quem est\u00E1 presente\",\n\t\tnl: \"Wie is aanwezig\",\n\t\tfr: \"Qui est pr\u00E9sent\",\n\t\tit: \"Chi \u00E8 presente\",\n\t\tes: \"Qui\u00E9n est\u00E1 presente\",\n\t\tpl: \"Kto jest obecny\",\n\t\tuk: \"\u0425\u0442\u043E \u043F\u0440\u0438\u0441\u0443\u0442\u043D\u0456\u0439\",\n\t\t\"zh-cn\": \"\u8C01\u5728\u5C97\",\n\t},\n\t/** Instant of the newest punch of the company */\n\tcompanyLastPunch: {\n\t\ten: \"Last punch\",\n\t\tde: \"Letzte Buchung\",\n\t\tru: \"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043E\u0442\u043C\u0435\u0442\u043A\u0430\",\n\t\tpt: \"\u00DAltimo registo\",\n\t\tnl: \"Laatste stempeling\",\n\t\tfr: \"Dernier pointage\",\n\t\tit: \"Ultima timbratura\",\n\t\tes: \"\u00DAltimo registro\",\n\t\tpl: \"Ostatni wpis\",\n\t\tuk: \"\u041E\u0441\u0442\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u043C\u0456\u0442\u043A\u0430\",\n\t\t\"zh-cn\": \"\u6700\u540E\u6253\u5361\",\n\t},\n\t/** Instant of the newest event */\n\tlastAt: {\n\t\ten: \"Last event at\",\n\t\tde: \"Letztes Ereignis um\",\n\t\tru: \"\u0412\u0440\u0435\u043C\u044F \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Hora do \u00FAltimo evento\",\n\t\tnl: \"Tijdstip laatste gebeurtenis\",\n\t\tfr: \"Heure du dernier \u00E9v\u00E9nement\",\n\t\tit: \"Ora dell'ultimo evento\",\n\t\tes: \"Hora del \u00FAltimo evento\",\n\t\tpl: \"Czas ostatniego zdarzenia\",\n\t\tuk: \"\u0427\u0430\u0441 \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u043F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u6700\u540E\u4E8B\u4EF6\u65F6\u95F4\",\n\t},\n\t/** Kind of the newest event */\n\tlastType: {\n\t\ten: \"Kind of the last event\",\n\t\tde: \"Art des letzten Ereignisses\",\n\t\tru: \"\u0422\u0438\u043F \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Tipo do \u00FAltimo evento\",\n\t\tnl: \"Soort laatste gebeurtenis\",\n\t\tfr: \"Type du dernier \u00E9v\u00E9nement\",\n\t\tit: \"Tipo dell'ultimo evento\",\n\t\tes: \"Tipo del \u00FAltimo evento\",\n\t\tpl: \"Rodzaj ostatniego zdarzenia\",\n\t\tuk: \"\u0422\u0438\u043F \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u043F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u6700\u540E\u4E8B\u4EF6\u7C7B\u578B\",\n\t},\n\t/** Employee of the newest event */\n\tlastUser: {\n\t\ten: \"Employee of the last event\",\n\t\tde: \"Mitarbeiter des letzten Ereignisses\",\n\t\tru: \"\u0421\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Funcion\u00E1rio do \u00FAltimo evento\",\n\t\tnl: \"Medewerker van de laatste gebeurtenis\",\n\t\tfr: \"Employ\u00E9 du dernier \u00E9v\u00E9nement\",\n\t\tit: \"Dipendente dell'ultimo evento\",\n\t\tes: \"Empleado del \u00FAltimo evento\",\n\t\tpl: \"Pracownik ostatniego zdarzenia\",\n\t\tuk: \"\u0421\u043F\u0456\u0432\u0440\u043E\u0431\u0456\u0442\u043D\u0438\u043A \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u043F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u6700\u540E\u4E8B\u4EF6\u7684\u5458\u5DE5\",\n\t},\n\t/** Direction of the newest punch */\n\tlastDirection: {\n\t\ten: \"Direction of the last punch\",\n\t\tde: \"Richtung der letzten Buchung\",\n\t\tru: \"\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0439 \u043E\u0442\u043C\u0435\u0442\u043A\u0438\",\n\t\tpt: \"Dire\u00E7\u00E3o do \u00FAltimo registo\",\n\t\tnl: \"Richting van de laatste stempeling\",\n\t\tfr: \"Sens du dernier pointage\",\n\t\tit: \"Direzione dell'ultima timbratura\",\n\t\tes: \"Direcci\u00F3n del \u00FAltimo registro\",\n\t\tpl: \"Kierunek ostatniego wpisu\",\n\t\tuk: \"\u041D\u0430\u043F\u0440\u044F\u043C\u043E\u043A \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u0432\u0456\u0434\u043C\u0456\u0442\u043A\u0438\",\n\t\t\"zh-cn\": \"\u6700\u540E\u6253\u5361\u7684\u65B9\u5411\",\n\t},\n\t/** Source of the newest event */\n\tlastSource: {\n\t\ten: \"Source of the last event\",\n\t\tde: \"Quelle des letzten Ereignisses\",\n\t\tru: \"\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0441\u043E\u0431\u044B\u0442\u0438\u044F\",\n\t\tpt: \"Origem do \u00FAltimo evento\",\n\t\tnl: \"Bron van de laatste gebeurtenis\",\n\t\tfr: \"Source du dernier \u00E9v\u00E9nement\",\n\t\tit: \"Origine dell'ultimo evento\",\n\t\tes: \"Origen del \u00FAltimo evento\",\n\t\tpl: \"\u0179r\u00F3d\u0142o ostatniego zdarzenia\",\n\t\tuk: \"\u0414\u0436\u0435\u0440\u0435\u043B\u043E \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u043F\u043E\u0434\u0456\u0457\",\n\t\t\"zh-cn\": \"\u6700\u540E\u4E8B\u4EF6\u7684\u6765\u6E90\",\n\t},\n\t/** Channel with the calendar of the instance */\n\tcalendarChannel: {\n\t\ten: \"Calendar\",\n\t\tde: \"Kalender\",\n\t\tru: \"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C\",\n\t\tpt: \"Calend\u00E1rio\",\n\t\tnl: \"Kalender\",\n\t\tfr: \"Calendrier\",\n\t\tit: \"Calendario\",\n\t\tes: \"Calendario\",\n\t\tpl: \"Kalendarz\",\n\t\tuk: \"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\",\n\t\t\"zh-cn\": \"\u65E5\u5386\",\n\t},\n\t/** Subscription link of the company calendar */\n\tcalendarFeedUrl: {\n\t\ten: \"Subscription link of the company\",\n\t\tde: \"Abo-Link der Firma\",\n\t\tru: \"\u0421\u0441\u044B\u043B\u043A\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438 \u0444\u0438\u0440\u043C\u044B\",\n\t\tpt: \"Liga\u00E7\u00E3o de subscri\u00E7\u00E3o da empresa\",\n\t\tnl: \"Abonnementslink van het bedrijf\",\n\t\tfr: \"Lien d'abonnement de l'entreprise\",\n\t\tit: \"Link di sottoscrizione dell'azienda\",\n\t\tes: \"Enlace de suscripci\u00F3n de la empresa\",\n\t\tpl: \"Link subskrypcji firmy\",\n\t\tuk: \"\u041F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F \u043F\u0456\u0434\u043F\u0438\u0441\u043A\u0438 \u043A\u043E\u043C\u043F\u0430\u043D\u0456\u0457\",\n\t\t\"zh-cn\": \"\u516C\u53F8\u7684\u8BA2\u9605\u94FE\u63A5\",\n\t},\n\t/** Absolute path of the written calendar file (D11) */\n\tcalendarFeedFile: {\n\t\ten: \"Path of the calendar file (.ics)\",\n\t\tde: \"Pfad der Kalenderdatei (.ics)\",\n\t\tru: \"\u041F\u0443\u0442\u044C \u043A \u0444\u0430\u0439\u043B\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F (.ics)\",\n\t\tpt: \"Caminho do ficheiro de calend\u00E1rio (.ics)\",\n\t\tnl: \"Pad van het kalenderbestand (.ics)\",\n\t\tfr: \"Chemin du fichier de calendrier (.ics)\",\n\t\tit: \"Percorso del file di calendario (.ics)\",\n\t\tes: \"Ruta del archivo de calendario (.ics)\",\n\t\tpl: \"\u015Acie\u017Cka pliku kalendarza (.ics)\",\n\t\tuk: \"\u0428\u043B\u044F\u0445 \u0434\u043E \u0444\u0430\u0439\u043B\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F (.ics)\",\n\t\t\"zh-cn\": \"\u65E5\u5386\u6587\u4EF6\u7684\u8DEF\u5F84\uFF08.ics\uFF09\",\n\t},\n\t/** Instant the calendar was written */\n\tcalendarUpdatedAt: {\n\t\ten: \"Calendar written at\",\n\t\tde: \"Kalender geschrieben um\",\n\t\tru: \"\u0412\u0440\u0435\u043C\u044F \u0437\u0430\u043F\u0438\u0441\u0438 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F\",\n\t\tpt: \"Hora de escrita do calend\u00E1rio\",\n\t\tnl: \"Tijdstip kalender geschreven\",\n\t\tfr: \"Heure d'\u00E9criture du calendrier\",\n\t\tit: \"Ora di scrittura del calendario\",\n\t\tes: \"Hora de escritura del calendario\",\n\t\tpl: \"Czas zapisu kalendarza\",\n\t\tuk: \"\u0427\u0430\u0441 \u0437\u0430\u043F\u0438\u0441\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F\",\n\t\t\"zh-cn\": \"\u65E5\u5386\u5199\u5165\u65F6\u95F4\",\n\t},\n\t/** The absences as JSON */\n\tcalendarAbsences: {\n\t\ten: \"Absences (JSON)\",\n\t\tde: \"Abwesenheiten (JSON)\",\n\t\tru: \"\u041E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044F (JSON)\",\n\t\tpt: \"Aus\u00EAncias (JSON)\",\n\t\tnl: \"Afwezigheden (JSON)\",\n\t\tfr: \"Absences (JSON)\",\n\t\tit: \"Assenze (JSON)\",\n\t\tes: \"Ausencias (JSON)\",\n\t\tpl: \"Nieobecno\u015Bci (JSON)\",\n\t\tuk: \"\u0412\u0456\u0434\u0441\u0443\u0442\u043D\u043E\u0441\u0442\u0456 (JSON)\",\n\t\t\"zh-cn\": \"\u7F3A\u52E4\uFF08JSON\uFF09\",\n\t},\n\t/** Command that creates or renews the calendar link of the company */\n\trotateCalendarToken: {\n\t\ten: \"Create or renew the calendar link of the company\",\n\t\tde: \"Kalender-Link der Firma anlegen oder erneuern\",\n\t\tru: \"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0438\u043B\u0438 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F \u0444\u0438\u0440\u043C\u044B\",\n\t\tpt: \"Criar ou renovar a liga\u00E7\u00E3o do calend\u00E1rio da empresa\",\n\t\tnl: \"Kalenderlink van het bedrijf aanmaken of vernieuwen\",\n\t\tfr: \"Cr\u00E9er ou renouveler le lien du calendrier de l'entreprise\",\n\t\tit: \"Creare o rinnovare il link del calendario dell'azienda\",\n\t\tes: \"Crear o renovar el enlace del calendario de la empresa\",\n\t\tpl: \"Utw\u00F3rz lub od\u015Bwie\u017C link kalendarza firmy\",\n\t\tuk: \"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0430\u0431\u043E \u043E\u043D\u043E\u0432\u0438\u0442\u0438 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F \u043A\u043E\u043C\u043F\u0430\u043D\u0456\u0457\",\n\t\t\"zh-cn\": \"\u521B\u5EFA\u6216\u66F4\u65B0\u516C\u53F8\u7684\u65E5\u5386\u94FE\u63A5\",\n\t},\n} satisfies Record<string, StateName>;\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
package/io-package.json CHANGED
@@ -1,9 +1,22 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "time-tracker",
4
- "version": "0.7.9",
4
+ "version": "0.7.10",
5
5
  "nogit": true,
6
6
  "news": {
7
+ "0.7.10": {
8
+ "en": "change: the state `calendar.feedFile` is called “Path of the calendar file (.ics)” now — the old name “calendar file” made the value look like a download, while it is the path that the `ical` adapter reads; a browser, a calendar app or a script uses the link `calendar.feedUrl`.",
9
+ "de": "change: Der Zustand `calendar.feedFile` heißt jetzt „Pfad der Kalenderdatei (.ics)“ – der alte Name „Kalenderdatei“ ließ den Wert wie einen Download aussehen, obwohl er der Pfad ist, den der `ical`-Adapter liest; ein Browser, eine Kalender-App oder ein Skript nutzt den Link `calendar.feedUrl`.",
10
+ "ru": "изменение: состояние `calendar.feedFile` теперь называется «Путь к файлу календаря (.ics)» — прежнее имя «файл календаря» выглядело как загрузка, хотя это путь, который читает адаптер `ical`; браузер, календарное приложение или скрипт использует ссылку `calendar.feedUrl`.",
11
+ "pt": "alteração: o estado `calendar.feedFile` chama-se agora «Caminho do ficheiro de calendário (.ics)» — o nome antigo «ficheiro de calendário» fazia o valor parecer uma transferência, embora seja o caminho que o adaptador `ical` lê; um navegador, uma aplicação de calendário ou um script usa a ligação `calendar.feedUrl`.",
12
+ "nl": "wijziging: de toestand `calendar.feedFile` heet nu ‘Pad van het kalenderbestand (.ics)’ — de oude naam ‘kalenderbestand’ deed de waarde als een download lijken, terwijl het het pad is dat de `ical`-adapter leest; een browser, een agenda-app of een script gebruikt de link `calendar.feedUrl`.",
13
+ "fr": "changement : l'état `calendar.feedFile` s'appelle désormais « Chemin du fichier de calendrier (.ics) » — l'ancien nom « fichier de calendrier » faisait passer la valeur pour un téléchargement, alors que c'est le chemin que lit l'adaptateur `ical` ; un navigateur, une application d'agenda ou un script utilise le lien `calendar.feedUrl`.",
14
+ "it": "modifica: lo stato `calendar.feedFile` ora si chiama «Percorso del file di calendario (.ics)» — il vecchio nome «file di calendario» faceva sembrare il valore un download, mentre è il percorso che legge l'adattatore `ical`; un browser, un'app di calendario o uno script usa il link `calendar.feedUrl`.",
15
+ "es": "cambio: el estado `calendar.feedFile` ahora se llama «Ruta del archivo de calendario (.ics)» — el nombre antiguo «archivo de calendario» hacía que el valor pareciera una descarga, aunque es la ruta que lee el adaptador `ical`; un navegador, una app de calendario o un script usa el enlace `calendar.feedUrl`.",
16
+ "pl": "zmiana: stan `calendar.feedFile` nazywa się teraz „Ścieżka pliku kalendarza (.ics)” — dawna nazwa „plik kalendarza” wyglądała jak pobieranie, a to ścieżka, którą czyta adapter `ical`; przeglądarka, aplikacja kalendarza lub skrypt używa linku `calendar.feedUrl`.",
17
+ "uk": "зміна: стан `calendar.feedFile` тепер називається «Шлях до файлу календаря (.ics)» — стара назва «файл календаря» виглядала як завантаження, хоча це шлях, який читає адаптер `ical`; браузер, календарний застосунок або скрипт використовує посилання `calendar.feedUrl`.",
18
+ "zh-cn": "变更:状态 `calendar.feedFile` 现在名为“日历文件的路径(.ics)”——旧名称“日历文件”让人以为该值是一个下载文件,实际上它是 `ical` 适配器读取的路径;浏览器、日历应用或脚本使用链接 `calendar.feedUrl`。"
19
+ },
7
20
  "0.7.9": {
8
21
  "en": "fix: “Feiertag hinzufügen” stayed grey as long as the day had to be typed as text — it comes from the date field of the browser now, and the label no longer names a format. A holiday entered without a region belongs to the country of the instance instead of always “DE”, the list shows the days of every region of the year, and a day of the next year takes the shown year along. “Abbrechen” closes the form of an absence while it is being changed as well.",
9
22
  "de": "fix: „Feiertag hinzufügen“ blieb grau, solange der Tag als Text eingetippt werden musste – jetzt kommt er aus dem Datumsfeld des Browsers, und die Beschriftung nennt kein Format mehr. Ein ohne Region erfasster Feiertag gehört dem Land der Instanz statt immer „DE“, die Liste zeigt die Tage aller Regionen des Jahres, und ein Tag des nächsten Jahres holt das angezeigte Jahr mit. „Abbrechen“ schließt auch das Fenster einer Änderung.",
@@ -81,19 +94,6 @@
81
94
  "pl": "poprawka: link subskrypcji firmy (`calendar.feedUrl`) zawiera teraz prefiks API (`/api/calendar.ics?token=…`) — bez niego przeglądarka pokazywała aplikację web z logowaniem zamiast kalendarza. Zapisywany plik kalendarza znajduje się w `files/time-tracker.<n>/calendar.ics`, skąd instancja `web` udostępnia go do pobrania, a adapter `ical` nadal czyta go jako plik lokalny.",
82
95
  "uk": "виправлення: посилання підписки компанії (`calendar.feedUrl`) тепер містить префікс API (`/api/calendar.ics?token=…`) — без нього браузер показував веб-застосунок із входом замість календаря. Записуваний файл календаря лежить у `files/time-tracker.<n>/calendar.ics`, звідки екземпляр `web` віддає його на завантаження, а адаптер `ical` далі читає його як локальний файл.",
83
96
  "zh-cn": "修复:公司的订阅链接(`calendar.feedUrl`)现在带有 API 前缀(`/api/calendar.ics?token=…`)—— 否则浏览器显示的是 Web 应用及其登录页而非日历。写出的日历文件位于 `files/time-tracker.<n>/calendar.ics`,由 `web` 实例提供下载,而 `ical` 适配器仍将其作为本地文件读取。"
84
- },
85
- "0.7.3": {
86
- "en": "new: the calendar goes to ioBroker. The adapter writes `calendar.ics` into its instance folder — the `ical` adapter reads that as a local file, without URL, token or network — and publishes the subscription link of the company in `calendar.feedUrl` plus the same days as JSON in `calendar.absences` (`calendar.updatedAt` says how fresh they are). That link opens the absences of all employees, so nothing happens by itself: `commands.rotateCalendarToken` creates the token and replaces it on every further call, which kills an old link at once. Besides, the guard `requireInsideEditWindow` is gone — it had been unreachable since times belong to the administration (`edit_window_days` only feeds the offline queue).",
87
- "de": "neu: Der Kalender geht an ioBroker. Der Adapter schreibt `calendar.ics` in seinen Instanz-Ordner — der `ical`-Adapter liest das als lokale Datei, ohne URL, Token und Netz — und veröffentlicht den Abo-Link der Firma als `calendar.feedUrl` sowie dieselben Tage als JSON in `calendar.absences` (`calendar.updatedAt` sagt, wie frisch sie sind). Dieser Link öffnet die Abwesenheiten aller Mitarbeiter, deshalb passiert nichts von selbst: `commands.rotateCalendarToken` erzeugt den Token und ersetzt ihn bei jedem weiteren Aufruf, womit ein alter Link sofort tot ist. Außerdem ist die Prüfung `requireInsideEditWindow` entfernt: sie war seit „Zeiten gehören der Verwaltung“ nicht mehr erreichbar (`edit_window_days` wirkt nur noch auf die Offline-Warteschlange).",
88
- "ru": "новое: календарь передаётся в ioBroker. Адаптер пишет `calendar.ics` в папку своего экземпляра — адаптер `ical` читает его как локальный файл, без URL, токена и сети — и публикует ссылку подписки фирмы в `calendar.feedUrl`, а те же дни в JSON — в `calendar.absences` (`calendar.updatedAt` показывает, насколько они свежие). Эта ссылка открывает отсутствия всех сотрудников, поэтому ничего не происходит само: `commands.rotateCalendarToken` создаёт токен и заменяет его при каждом следующем вызове, отчего старая ссылка сразу перестаёт работать. Кроме того, удалена проверка `requireInsideEditWindow`: она была недостижима с момента «время принадлежит администрации» (`edit_window_days` влияет только на офлайн-очередь).",
89
- "pt": "novo: o calendário vai para o ioBroker. O adaptador escreve `calendar.ics` na pasta da sua instância — o adaptador `ical` lê-o como ficheiro local, sem URL, token nem rede — e publica a ligação de subscrição da empresa em `calendar.feedUrl` e os mesmos dias em JSON em `calendar.absences` (`calendar.updatedAt` diz quão recentes são). Essa ligação abre as ausências de todos os funcionários, por isso nada acontece por si: `commands.rotateCalendarToken` cria o token e substitui-o a cada chamada seguinte, o que mata logo uma ligação antiga. Além disso, a verificação `requireInsideEditWindow` desapareceu: era inalcançável desde que «os tempos pertencem à administração» (`edit_window_days` só alimenta a fila offline).",
90
- "nl": "nieuw: de kalender gaat naar ioBroker. De adapter schrijft `calendar.ics` in de map van zijn instantie — de `ical`-adapter leest dat als lokaal bestand, zonder URL, token of netwerk — en publiceert de abonnementslink van het bedrijf in `calendar.feedUrl` plus dezelfde dagen als JSON in `calendar.absences` (`calendar.updatedAt` zegt hoe vers ze zijn). Die link opent de afwezigheden van alle medewerkers, dus er gebeurt niets vanzelf: `commands.rotateCalendarToken` maakt de token aan en vervangt hem bij elke volgende aanroep, waardoor een oude link meteen dood is. Daarnaast is de controle `requireInsideEditWindow` verdwenen: die was onbereikbaar sinds „tijden zijn van de administratie“ (`edit_window_days` voedt alleen de offline wachtrij).",
91
- "fr": "nouveau : le calendrier va vers ioBroker. L'adaptateur écrit `calendar.ics` dans le dossier de son instance — l'adaptateur `ical` le lit comme fichier local, sans URL, jeton ni réseau — et publie le lien d'abonnement de l'entreprise dans `calendar.feedUrl` ainsi que les mêmes jours en JSON dans `calendar.absences` (`calendar.updatedAt` dit leur fraîcheur). Ce lien ouvre les absences de tous les employés, donc rien ne se fait tout seul : `commands.rotateCalendarToken` crée le jeton et le remplace à chaque appel suivant, ce qui tue aussitôt un ancien lien. En outre, le contrôle `requireInsideEditWindow` a disparu : il était inatteignable depuis « les horaires appartiennent à l'administration » (`edit_window_days` n'alimente que la file hors ligne).",
92
- "it": "novità: il calendario va a ioBroker. L'adattatore scrive `calendar.ics` nella cartella della sua istanza — l'adattatore `ical` lo legge come file locale, senza URL, token o rete — e pubblica il link di sottoscrizione dell'azienda in `calendar.feedUrl` e gli stessi giorni in JSON in `calendar.absences` (`calendar.updatedAt` dice quanto sono freschi). Quel link apre le assenze di tutti i dipendenti, quindi non succede nulla da solo: `commands.rotateCalendarToken` crea il token e lo sostituisce a ogni chiamata successiva, il che rende subito inutile un vecchio link. Inoltre il controllo `requireInsideEditWindow` è stato rimosso: era irraggiungibile da quando «gli orari appartengono all'amministrazione» (`edit_window_days` alimenta solo la coda offline).",
93
- "es": "novedad: el calendario va a ioBroker. El adaptador escribe `calendar.ics` en la carpeta de su instancia — el adaptador `ical` lo lee como archivo local, sin URL, token ni red — y publica el enlace de suscripción de la empresa en `calendar.feedUrl` y los mismos días como JSON en `calendar.absences` (`calendar.updatedAt` dice su antigüedad). Ese enlace abre las ausencias de todos los empleados, así que nada ocurre por sí solo: `commands.rotateCalendarToken` crea el token y lo sustituye en cada llamada posterior, lo que anula al instante un enlace antiguo. Además se ha eliminado la comprobación `requireInsideEditWindow`: era inalcanzable desde «los horarios pertenecen a la administración» (`edit_window_days` solo alimenta la cola sin conexión).",
94
- "pl": "nowość: kalendarz trafia do ioBroker. Adapter zapisuje `calendar.ics` w folderze swojej instancji — adapter `ical` czyta go jako plik lokalny, bez URL, tokenu i sieci — i publikuje link subskrypcji firmy w `calendar.feedUrl` oraz te same dni jako JSON w `calendar.absences` (`calendar.updatedAt` mówi, jak świeże są). Ten link otwiera nieobecności wszystkich pracowników, więc nic nie dzieje się samo: `commands.rotateCalendarToken` tworzy token i zastępuje go przy każdym kolejnym wywołaniu, co natychmiast unieważnia stary link. Dodatkowo usunięto kontrolę `requireInsideEditWindow`: była nieosiągalna od czasu „czas należy do administracji” (`edit_window_days` zasila tylko kolejkę offline).",
95
- "uk": "новинка: календар передається в ioBroker. Адаптер пише `calendar.ics` у папці свого екземпляра — адаптер `ical` читає його як локальний файл, без URL, токена й мережі — і публікує посилання підписки компанії в `calendar.feedUrl`, а ті самі дні як JSON — у `calendar.absences` (`calendar.updatedAt` показує, наскільки вони свіжі). Це посилання відкриває відсутності всіх працівників, тому нічого не відбувається саме собою: `commands.rotateCalendarToken` створює токен і замінює його за кожного наступного виклику, від чого старе посилання одразу перестає працювати. Крім того, прибрано перевірку `requireInsideEditWindow`: вона була недосяжною відколи «час належить адміністрації» (`edit_window_days` живить лише офлайн-чергу).",
96
- "zh-cn": "新增:日历接入 ioBroker。适配器把 `calendar.ics` 写入其实例文件夹 —— `ical` 适配器可将其作为本地文件读取,无需网址、令牌或网络 —— 并把公司的订阅链接发布在 `calendar.feedUrl`,同样的日期以 JSON 形式发布在 `calendar.absences`(`calendar.updatedAt` 显示其新鲜度)。该链接会打开所有员工的缺勤,因此不会自动生成:`commands.rotateCalendarToken` 创建令牌,并在之后每次调用时替换它,旧链接立即失效。此外移除了 `requireInsideEditWindow` 检查:自「时间属于管理方」以来它已无法触发(`edit_window_days` 现在只影响离线队列)。"
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.7.9",
3
+ "version": "0.7.10",
4
4
  "description": "Time tracking (clock-in/out) for ioBroker with web app, badge terminal and reports",
5
5
  "author": {
6
6
  "name": "Alex",
package/www/sw.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sw.js","sources":["../../../../../../tmp/40a6df6facf2de28811807290cb6213b/sw.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';\nimport {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-routing/registerRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\nself.skipWaiting();\nworkbox_core_clientsClaim();\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"person.png\",\n \"revision\": \"771d3283ece4739e203e02aac535855e\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"6d2083467c5cde28f5f7b04204705994\"\n },\n {\n \"url\": \"icon-512.png\",\n \"revision\": \"d8e3715779f4cd7e67e1f82f215a2f22\"\n },\n {\n \"url\": \"icon-192.png\",\n \"revision\": \"940ef37caef09c52272ddab844b9ea9b\"\n },\n {\n \"url\": \"favicon.svg\",\n \"revision\": \"309e9efece69d60920618512ab9d57bf\"\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-Bd17z0YL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-D5c1Xz-S.js\",\n \"revision\": null\n },\n {\n \"url\": \"icon-192.png\",\n \"revision\": \"940ef37caef09c52272ddab844b9ea9b\"\n },\n {\n \"url\": \"icon-512.png\",\n \"revision\": \"d8e3715779f4cd7e67e1f82f215a2f22\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"6f40f1ce0ce138d5af307fb0dbb1e6f9\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();workbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"index.html\"), {\n allowlist: [/^\\/$/], denylist: [/^\\/api\\//],}));\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","workbox_routing_NavigationRoute","workbox_precaching_createHandlerBoundToURL","allowlist","denylist"],"mappings":"inBAoBAA,KAAKC,cACLC,EAAAA,eAMAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAA,GACHC,EAAAA,wBAA2CC,EAAAA,cAA8B,IAAIC,EAAAA,gBAAgCC,0BAA2C,cAAe,CACrKC,UAAW,CAAC,QAAUC,SAAU,CAAC"}
1
+ {"version":3,"file":"sw.js","sources":["../../../../../../tmp/732f187f8469994fd6f7716322b37d29/sw.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';\nimport {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-routing/registerRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/runner/work/ioBroker.time-tracker/ioBroker.time-tracker/src-www/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\nself.skipWaiting();\nworkbox_core_clientsClaim();\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"person.png\",\n \"revision\": \"771d3283ece4739e203e02aac535855e\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"6d2083467c5cde28f5f7b04204705994\"\n },\n {\n \"url\": \"icon-512.png\",\n \"revision\": \"d8e3715779f4cd7e67e1f82f215a2f22\"\n },\n {\n \"url\": \"icon-192.png\",\n \"revision\": \"940ef37caef09c52272ddab844b9ea9b\"\n },\n {\n \"url\": \"favicon.svg\",\n \"revision\": \"309e9efece69d60920618512ab9d57bf\"\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-Bd17z0YL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-D5c1Xz-S.js\",\n \"revision\": null\n },\n {\n \"url\": \"icon-192.png\",\n \"revision\": \"940ef37caef09c52272ddab844b9ea9b\"\n },\n {\n \"url\": \"icon-512.png\",\n \"revision\": \"d8e3715779f4cd7e67e1f82f215a2f22\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"6f40f1ce0ce138d5af307fb0dbb1e6f9\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();workbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"index.html\"), {\n allowlist: [/^\\/$/], denylist: [/^\\/api\\//],}));\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","workbox_routing_NavigationRoute","workbox_precaching_createHandlerBoundToURL","allowlist","denylist"],"mappings":"inBAoBAA,KAAKC,cACLC,EAAAA,eAMAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAA,GACHC,EAAAA,wBAA2CC,EAAAA,cAA8B,IAAIC,EAAAA,gBAAgCC,0BAA2C,cAAe,CACrKC,UAAW,CAAC,QAAUC,SAAU,CAAC"}