diff --git a/lib/server/loop.js b/lib/server/loop.js index 83a488ef72d..3b31c0ec78c 100644 --- a/lib/server/loop.js +++ b/lib/server/loop.js @@ -1,6 +1,6 @@ //'use strict'; -const apn = require('apn'); +const apn = require('@parse/node-apn'); function init (env, ctx) { @@ -128,6 +128,7 @@ function init (env, ctx) { notification.topic = loopSettings.bundleIdentifier; notification.contentAvailable = 1; notification.payload = payload; + notification.interruptionLevel = "time-sensitive" provider.send(notification, [loopSettings.deviceToken]).then( (response) => { if (response.sent && response.sent.length > 0) { diff --git a/package-lock.json b/package-lock.json index a8eb10b5a66..8879fc3d5ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1117,6 +1117,49 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, + "@parse/node-apn": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@parse/node-apn/-/node-apn-5.1.3.tgz", + "integrity": "sha512-Bwhmbm895lEIF2772PJ8dSvBjrtOG9/q/TDMxmX40IgZxQFoXS73+JUIKTq3CA7SUB/Szu5roJINQ0L2U/1MJw==", + "requires": { + "debug": "4.3.3", + "jsonwebtoken": "8.5.1", + "node-forge": "1.3.0", + "verror": "1.10.1" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "requires": { + "ms": "2.1.2" + } + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, "@polka/url": { "version": "1.0.0-next.21", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", @@ -1465,50 +1508,6 @@ "picomatch": "^2.0.4" } }, - "apn": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/apn/-/apn-2.2.0.tgz", - "integrity": "sha512-YIypYzPVJA9wzNBLKZ/mq2l1IZX/2FadPvwmSv4ZeR0VH7xdNITQ6Pucgh0Uw6ZZKC+XwheaJ57DFZAhJ0FvPg==", - "requires": { - "debug": "^3.1.0", - "http2": "https://github.com/node-apn/node-http2/archive/apn-2.1.4.tar.gz", - "jsonwebtoken": "^8.1.0", - "node-forge": "^0.7.1", - "verror": "^1.10.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, "append-transform": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", @@ -1621,11 +1620,11 @@ } }, "axios-cookiejar-support": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/axios-cookiejar-support/-/axios-cookiejar-support-4.0.6.tgz", - "integrity": "sha512-lWDhgM6bc2xYAsHkXEhceLpTu9ytAeIz1VSuL5FoUgGx2lqcMNbNxTD9Hm4x5c8JF5Me0HfNrb06fhEGMC30mQ==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/axios-cookiejar-support/-/axios-cookiejar-support-4.0.7.tgz", + "integrity": "sha512-9vpE3y/a2l2Vs2XEJE4L2z0GWnlpJ4Xj+kDaoCtrpPfS1J3oikXBrxRJX6H62/ZcelOGe+519yW7mqXCIoPXuw==", "requires": { - "http-cookie-agent": "^5.0.2" + "http-cookie-agent": "^5.0.4" } }, "babel-eslint": { @@ -1695,11 +1694,6 @@ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" }, - "base64url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", - "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -2045,11 +2039,6 @@ "supports-color": "^5.3.0" } }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" - }, "chokidar": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", @@ -2353,11 +2342,6 @@ "which": "^2.0.1" } }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -3077,11 +3061,6 @@ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "es6-promisify": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", - "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==" - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -4145,10 +4124,6 @@ "sshpk": "^1.7.0" } }, - "http2": { - "version": "https://github.com/node-apn/node-http2/archive/apn-2.1.4.tar.gz", - "integrity": "sha512-ad4u4I88X9AcUgxCRW3RLnbh7xHWQ1f5HbrXa7gEy2x4Xgq+rq+auGx5I+nUDE2YYuqteGIlbxrwQXkIaYTfnQ==" - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -4257,11 +4232,6 @@ "binary-extensions": "^2.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, "is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", @@ -4976,16 +4946,6 @@ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==" }, - "md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -6407,9 +6367,9 @@ "dev": true }, "nightscout-connect": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/nightscout-connect/-/nightscout-connect-0.0.6.tgz", - "integrity": "sha512-tqibvYYYUaAjSHDTCx467RkB9iH+fq8tU0Ai3XiytQNHEiNn8k8XZOgaInroiI5ICadXvyrRg1S/uj/eEof3RQ==", + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/nightscout-connect/-/nightscout-connect-0.0.10.tgz", + "integrity": "sha512-4jZG9OcrbBwofEvmz154j0K5U/WxWlZ3gVvPNZelSP5fwXVPfZvnivgjg6k8dPoxDErTqvBcmOC9IeMv5ydosw==", "requires": { "axios": "^1.3.4", "axios-cookiejar-support": "^4.0.6", @@ -6499,9 +6459,9 @@ } }, "node-forge": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", - "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", + "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==" }, "node-releases": { "version": "2.0.8", @@ -6910,11 +6870,6 @@ "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -7063,17 +7018,6 @@ "sha.js": "^2.4.8" } }, - "pem": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/pem/-/pem-1.14.6.tgz", - "integrity": "sha512-I5GKUer2PPv5qzUfxaZ6IGRkhp+357Kyv2t1JJg9vP8hGGI13qU34N2QupmggbpIZGPuudH0jn8KU5hjFpPk3g==", - "requires": { - "es6-promisify": "^6.0.0", - "md5": "^2.2.1", - "os-tmpdir": "^1.0.1", - "which": "^2.0.2" - } - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -10001,9 +9945,9 @@ "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" }, "xstate": { - "version": "4.37.2", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.37.2.tgz", - "integrity": "sha512-Qm337O49CRTZ3PRyRuK6b+kvI+D3JGxXIZCTul+xEsyFCVkTFDt5jixaL1nBWcUBcaTQ9um/5CRGVItPi7fveg==" + "version": "4.38.2", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.38.2.tgz", + "integrity": "sha512-Fba/DwEPDLneHT3tbJ9F3zafbQXszOlyCJyQqqdzmtlY/cwE2th462KK48yaANf98jHlP6lJvxfNtN0LFKXPQg==" }, "y18n": { "version": "5.0.8", diff --git a/package.json b/package.json index be227f2905d..99781555669 100644 --- a/package.json +++ b/package.json @@ -71,12 +71,11 @@ "dependencies": { "@babel/core": "^7.18.10", "@babel/preset-env": "^7.18.10", + "@parse/node-apn": "^5.1.3", "acorn": "^8.0.5", "acorn-jsx": "^5.3.1", - "apn": "^2.2.0", "async": "^0.9.2", "babel-loader": "^8.2.5", - "base64url": "^3.0.1", "body-parser": "^1.19.0", "bootevent": "0.0.1", "braces": "^3.0.2", @@ -117,10 +116,9 @@ "mongo-url-parser": "^1.0.2", "mongodb": "^3.6.0", "mongomock": "^0.1.2", - "nightscout-connect": "^0.0.6", + "nightscout-connect": "0.0.10", "node-cache": "^4.2.1", "parse-duration": "^0.1.3", - "pem": "^1.14.4", "process": "^0.11.10", "pushover-notifications": "^1.2.2", "random-token": "0.0.8", diff --git a/translations/uk_UA.json b/translations/uk_UA.json index 5646ebe1294..9f816014c82 100644 --- a/translations/uk_UA.json +++ b/translations/uk_UA.json @@ -53,52 +53,52 @@ "Week to week": "Тиждень у тиждень", "Daily Stats": "Щоденна статистика", "Percentile Chart": "Відсоткова діаграма", - "Distribution": "Distribution", - "Hourly stats": "Hourly stats", - "netIOB stats": "netIOB stats", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", - "No data available": "No data available", - "Low": "Low", - "In Range": "In Range", - "Period": "Period", - "High": "High", - "Average": "Average", - "Low Quartile": "Low Quartile", - "Upper Quartile": "Upper Quartile", - "Quartile": "Quartile", - "Date": "Date", - "Normal": "Normal", - "Median": "Median", - "Readings": "Readings", - "StDev": "StDev", - "Daily stats report": "Daily stats report", - "Glucose Percentile report": "Glucose Percentile report", - "Glucose distribution": "Glucose distribution", - "days total": "days total", - "Total per day": "Total per day", - "Overall": "Overall", - "Range": "Range", - "% of Readings": "% of Readings", - "# of Readings": "# of Readings", - "Mean": "Mean", - "Standard Deviation": "Standard Deviation", - "Max": "Max", - "Min": "Min", - "A1c estimation*": "A1c estimation*", - "Weekly Success": "Weekly Success", - "There is not sufficient data to run this report. Select more days.": "There is not sufficient data to run this report. Select more days.", - "Using stored API secret hash": "Using stored API secret hash", - "No API secret hash stored yet. You need to enter API secret.": "No API secret hash stored yet. You need to enter API secret.", - "Database loaded": "Database loaded", - "Error: Database failed to load": "Error: Database failed to load", - "Error": "Error", - "Create new record": "Create new record", - "Save record": "Save record", - "Portions": "Portions", - "Unit": "Unit", + "Distribution": "Розподіл", + "Hourly stats": "Погодинна статистика", + "netIOB stats": "Статистика netIOB", + "temp basals must be rendered to display this report": "для звіту потрібно промалювати час базалу", + "No data available": "Немає даних", + "Low": "Низький", + "In Range": "В діапазоні", + "Period": "Перiод", + "High": "Високий", + "Average": "Середнє", + "Low Quartile": "Нижня четверть", + "Upper Quartile": "Верхня четверть", + "Quartile": "Четверть", + "Date": "Дата", + "Normal": "Нормальний", + "Median": "Медіана", + "Readings": "Читання", + "StDev": "Стандартне відхилення", + "Daily stats report": "Щоденна статистика", + "Glucose Percentile report": "Процентний звіт", + "Glucose distribution": "Розподіл глюкози", + "days total": "всього днів", + "Total per day": "Всього за добу", + "Overall": "Усього", + "Range": "Діапозон", + "% of Readings": "% вимірювань", + "# of Readings": "# вимірювань", + "Mean": "Середнє", + "Standard Deviation": "Стандартне відхилення", + "Max": "Макс", + "Min": "Мін", + "A1c estimation*": "Очікуваний HbA1c*", + "Weekly Success": "Підсумки тижня", + "There is not sufficient data to run this report. Select more days.": "Недостатньо даних для звіту. Виберіть більше днів.", + "Using stored API secret hash": "Використання збереженого хешу API", + "No API secret hash stored yet. You need to enter API secret.": "Немає збереженого хешу API. Вам потрібно ввести API.", + "Database loaded": "Базу даних завантажено", + "Error: Database failed to load": "Помилка: Не вдалося завантажити базу даних", + "Error": "Помилка", + "Create new record": "Створити новий запис", + "Save record": "Зберегти запис", + "Portions": "Порції", + "Unit": "Одиниця", "GI": "GI", - "Edit record": "Edit record", - "Delete record": "Delete record", + "Edit record": "Редагувати запис", + "Delete record": "Видалити запис", "Move to the top": "Перемістити на початок", "Hidden": "Прихований", "Hide after use": "Приховати після використання", @@ -149,56 +149,56 @@ "45 minutes earlier": "45 хв раніше", "30 minutes earlier": "30 хв раніше", "20 minutes earlier": "20 хв раніше", - "15 minutes earlier": "15 minutes earlier", - "Time in minutes": "Time in minutes", - "15 minutes later": "15 minutes later", - "20 minutes later": "20 minutes later", - "30 minutes later": "30 minutes later", - "45 minutes later": "45 minutes later", - "60 minutes later": "60 minutes later", - "Additional Notes, Comments": "Additional Notes, Comments", - "RETRO MODE": "RETRO MODE", - "Now": "Now", - "Other": "Other", - "Submit Form": "Submit Form", - "Profile Editor": "Profile Editor", - "Reports": "Reports", - "Add food from your database": "Add food from your database", - "Reload database": "Reload database", - "Add": "Add", - "Unauthorized": "Unauthorized", - "Entering record failed": "Entering record failed", - "Device authenticated": "Device authenticated", - "Device not authenticated": "Device not authenticated", - "Authentication status": "Authentication status", - "Authenticate": "Authenticate", - "Remove": "Remove", - "Your device is not authenticated yet": "Your device is not authenticated yet", - "Sensor": "Sensor", - "Finger": "Finger", - "Manual": "Manual", - "Scale": "Scale", - "Linear": "Linear", - "Logarithmic": "Logarithmic", - "Logarithmic (Dynamic)": "Logarithmic (Dynamic)", - "Insulin-on-Board": "Insulin-on-Board", - "Carbs-on-Board": "Carbs-on-Board", - "Bolus Wizard Preview": "Bolus Wizard Preview", - "Value Loaded": "Value Loaded", - "Cannula Age": "Cannula Age", - "Basal Profile": "Basal Profile", - "Silence for 30 minutes": "Silence for 30 minutes", - "Silence for 60 minutes": "Silence for 60 minutes", - "Silence for 90 minutes": "Silence for 90 minutes", - "Silence for 120 minutes": "Silence for 120 minutes", - "Settings": "Settings", - "Units": "Units", - "Date format": "Date format", - "12 hours": "12 hours", - "24 hours": "24 hours", - "Log a Treatment": "Log a Treatment", - "BG Check": "BG Check", - "Meal Bolus": "Meal Bolus", + "15 minutes earlier": "На 15 хвилин раніше", + "Time in minutes": "Час у хвилинах", + "15 minutes later": "Через 15 хвилин", + "20 minutes later": "Через 20 хвилин", + "30 minutes later": "На 30 хв пізніше", + "45 minutes later": "На 45 хв пізніше", + "60 minutes later": "На 60 хв пізніше", + "Additional Notes, Comments": "Додаткові примітки", + "RETRO MODE": "Режим РЕТРО", + "Now": "Зараз", + "Other": "Інше", + "Submit Form": "Підтвердити форму", + "Profile Editor": "Редактор профілю", + "Reports": "Звіти", + "Add food from your database": "Додайте їжу з вашої бази даних", + "Reload database": "Перезавантажити базу даних", + "Add": "Додати", + "Unauthorized": "Не авторизовано", + "Entering record failed": "Введення запису не вдалося", + "Device authenticated": "Пристрій автентифіковано", + "Device not authenticated": "Пристрій не автентифіковано", + "Authentication status": "Статус автентифікації", + "Authenticate": "Автентифікувати", + "Remove": "Видаліть", + "Your device is not authenticated yet": "Ваш пристрій ще не автентифіковано", + "Sensor": "Датчик", + "Finger": "Палець", + "Manual": "Вручну", + "Scale": "Масштаб", + "Linear": "Лінійний", + "Logarithmic": "Логарифмічний", + "Logarithmic (Dynamic)": "Логарифмічна (Динамічна)", + "Insulin-on-Board": "Активний інсулін (IOB)", + "Carbs-on-Board": "Активні вуглеводи COB", + "Bolus Wizard Preview": "Калькулятор болюсу", + "Value Loaded": "Значення завантажено", + "Cannula Age": "Катетеру", + "Basal Profile": "Профіль базала", + "Silence for 30 minutes": "Тиша на 30 хвилин", + "Silence for 60 minutes": "Тиша на 60 хвилин", + "Silence for 90 minutes": "Тиша на 90 хвилин", + "Silence for 120 minutes": "Тиша на 120 хвилин", + "Settings": "Налаштування", + "Units": "Одиниці", + "Date format": "Формат дати", + "12 hours": "12 годин", + "24 hours": "24 години", + "Log a Treatment": "Записати терапію", + "BG Check": "Контроль ГК", + "Meal Bolus": "Болюс на їду", "Snack Bolus": "Подати болюс", "Correction Bolus": "Корекція болюсу", "Carb Correction": "Корекція вуглеводів", @@ -249,56 +249,56 @@ "Colorblind-friendly colors": "Колірна гама для людей із порушеннями зору", "Reset, and use defaults": "Скидання та використання за замовчуванням", "Calibrations": "Калібрування", - "Alarm Test / Smartphone Enable": "Alarm Test / Smartphone Enable", - "Bolus Wizard": "Bolus Wizard", - "in the future": "in the future", - "time ago": "time ago", - "hr ago": "hr ago", - "hrs ago": "hrs ago", - "min ago": "min ago", - "mins ago": "mins ago", - "day ago": "day ago", - "days ago": "days ago", - "long ago": "long ago", - "Clean": "Clean", - "Light": "Light", - "Medium": "Medium", - "Heavy": "Heavy", - "Treatment type": "Treatment type", - "Raw BG": "Raw BG", - "Device": "Device", - "Noise": "Noise", - "Calibration": "Calibration", - "Show Plugins": "Show Plugins", - "About": "About", - "Value in": "Value in", - "Carb Time": "Carb Time", - "Language": "Language", - "Add new": "Add new", - "g": "g", - "ml": "ml", - "pcs": "pcs", - "Drag&drop food here": "Drag&drop food here", - "Care Portal": "Care Portal", - "Medium/Unknown": "Medium/Unknown", - "IN THE FUTURE": "IN THE FUTURE", - "Order": "Order", - "oldest on top": "oldest on top", - "newest on top": "newest on top", - "All sensor events": "All sensor events", - "Remove future items from mongo database": "Remove future items from mongo database", - "Find and remove treatments in the future": "Find and remove treatments in the future", - "This task find and remove treatments in the future.": "This task find and remove treatments in the future.", - "Remove treatments in the future": "Remove treatments in the future", - "Find and remove entries in the future": "Find and remove entries in the future", - "This task find and remove CGM data in the future created by uploader with wrong date/time.": "This task find and remove CGM data in the future created by uploader with wrong date/time.", - "Remove entries in the future": "Remove entries in the future", - "Loading database ...": "Loading database ...", - "Database contains %1 future records": "Database contains %1 future records", - "Remove %1 selected records?": "Remove %1 selected records?", - "Error loading database": "Error loading database", - "Record %1 removed ...": "Record %1 removed ...", - "Error removing record %1": "Error removing record %1", + "Alarm Test / Smartphone Enable": "Перевірка оповіщень / Смартфон активний", + "Bolus Wizard": "Калькулятор болюса", + "in the future": "у майбутньому", + "time ago": "тому", + "hr ago": " год тому", + "hrs ago": " год тому", + "min ago": "хв тому", + "mins ago": "хв тому", + "day ago": "день назад", + "days ago": "днів назад", + "long ago": "давно", + "Clean": "Чисто", + "Light": "Легкий", + "Medium": "Середній", + "Heavy": "Сильний", + "Treatment type": "Тип події", + "Raw BG": "RAW дані", + "Device": "Пристрій", + "Noise": "Шум", + "Calibration": "Калібрування", + "Show Plugins": "Показати плагіни", + "About": "Про застосунок", + "Value in": "Значення в", + "Carb Time": "Час прийому вуглеводів", + "Language": "Мова", + "Add new": "Додати новий", + "g": "г", + "ml": "мл", + "pcs": "шт", + "Drag&drop food here": "Перетягніть сюди їжу", + "Care Portal": "Портал терапії", + "Medium/Unknown": "Середній/Невідомий", + "IN THE FUTURE": "У МАЙБУТНЬОМУ", + "Order": "Сортувати", + "oldest on top": "Старі зверху", + "newest on top": "Нові зверху", + "All sensor events": "Усі події сенсора", + "Remove future items from mongo database": "Видалити майбутні дані з бази Mongo", + "Find and remove treatments in the future": "Знаходити та видаляти методи терапії в майбутньому", + "This task find and remove treatments in the future.": "Ця опція знайде та видалить терапію в майбутньому.", + "Remove treatments in the future": "Видаляйте терапії в майбутньому", + "Find and remove entries in the future": "Знайти та видалити записи в майбутньому", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Ця опція знайде і видалить дані CGM у майбутньому, створені завантажувачем з неправильною датою/часом.", + "Remove entries in the future": "Видалити записи в майбутньому", + "Loading database ...": "Завантаження бази даних...", + "Database contains %1 future records": "База даних містить %1 майбутніх записів", + "Remove %1 selected records?": "Видалити %1 вибраних записів?", + "Error loading database": "Помилка завантаження бази даних", + "Record %1 removed ...": "Запис %1 видалено...", + "Error removing record %1": "Помилка при видаленні запису %1", "Deleting records ...": "Видалення записів ...", "%1 records deleted": "%1 записів видалено", "Clean Mongo status database": "Очистити статус бази даних Mongo", @@ -349,56 +349,56 @@ "Clone this record to new": "Клонувати цей запис у новий", "Record valid from": "Запис дійсний від", "Stored profiles": "Збережені профілі", - "Timezone": "Timezone", - "Duration of Insulin Activity (DIA)": "Duration of Insulin Activity (DIA)", - "Represents the typical duration over which insulin takes effect. Varies per patient and per insulin type. Typically 3-4 hours for most pumped insulin and most patients. Sometimes also called insulin lifetime.": "Represents the typical duration over which insulin takes effect. Varies per patient and per insulin type. Typically 3-4 hours for most pumped insulin and most patients. Sometimes also called insulin lifetime.", - "Insulin to carb ratio (I:C)": "Insulin to carb ratio (I:C)", - "Hours:": "Hours:", - "hours": "hours", - "g/hour": "g/hour", - "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.", - "Insulin Sensitivity Factor (ISF)": "Insulin Sensitivity Factor (ISF)", - "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.", - "Carbs activity / absorption rate": "Carbs activity / absorption rate", - "grams per unit time. Represents both the change in COB per unit of time, as well as the amount of carbs that should take effect over that time. Carb absorption / activity curves are less well understood than insulin activity, but can be approximated using an initial delay followed by a constant rate of absorption (g/hr).": "grams per unit time. Represents both the change in COB per unit of time, as well as the amount of carbs that should take effect over that time. Carb absorption / activity curves are less well understood than insulin activity, but can be approximated using an initial delay followed by a constant rate of absorption (g/hr).", - "Basal rates [unit/hour]": "Basal rates [unit/hour]", - "Target BG range [mg/dL,mmol/L]": "Target BG range [mg/dL,mmol/L]", - "Start of record validity": "Start of record validity", - "Icicle": "Icicle", - "Render Basal": "Render Basal", - "Profile used": "Profile used", - "Calculation is in target range.": "Calculation is in target range.", - "Loading profile records ...": "Loading profile records ...", - "Values loaded.": "Values loaded.", - "Default values used.": "Default values used.", - "Error. Default values used.": "Error. Default values used.", - "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Time ranges of target_low and target_high don't match. Values are restored to defaults.", - "Valid from:": "Valid from:", - "Save current record before switching to new?": "Save current record before switching to new?", - "Add new interval before": "Add new interval before", - "Delete interval": "Delete interval", - "I:C": "I:C", + "Timezone": "Часовий пояс", + "Duration of Insulin Activity (DIA)": "Тривалість дії інсуліну (DIA)", + "Represents the typical duration over which insulin takes effect. Varies per patient and per insulin type. Typically 3-4 hours for most pumped insulin and most patients. Sometimes also called insulin lifetime.": "Представляє типову тривалість, протягом якої інсулін набуває чинності. Залежить від пацієнта та типу інсуліну. Зазвичай 3-4 години для більшості помпових інсулінів і більшості пацієнтів.", + "Insulin to carb ratio (I:C)": "Співвідношення інсулін/вуглеводи (I:C)", + "Hours:": "Години:", + "hours": "години", + "g/hour": "г/год", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "г вуглеводів на одиницю інсуліну. Співвідношення показує кількість г вуглеводів, яке компенсується кожною одиницею інсуліну.", + "Insulin Sensitivity Factor (ISF)": "Чутливість до інсуліну (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL або mmol/L на одиницю інсуліну. Коефіцієнт того, скільки BG змінюється з кожною одиницею інсуліну на корекцію.", + "Carbs activity / absorption rate": "Активність вуглеводів / швидкість засвоєння", + "grams per unit time. Represents both the change in COB per unit of time, as well as the amount of carbs that should take effect over that time. Carb absorption / activity curves are less well understood than insulin activity, but can be approximated using an initial delay followed by a constant rate of absorption (g/hr).": "грам на одиницю часу. Представляє зміну кількості вуглеводів в організмі COB за одиницю часу і кількість активних вуглеводів. Крива засвоєння вуглеводів менш зрозуміла ніж активність інсуліну, але приблизно може бути представлена ​​у вигляді початкової затримки з наступною постійною швидкістю поглинання (г/год).", + "Basal rates [unit/hour]": "Швидкість базалу [од./час]", + "Target BG range [mg/dL,mmol/L]": "Цільовий діапазон [mg/dL, mmol/L]", + "Start of record validity": "Початок валідності записів", + "Icicle": "Бурулька", + "Render Basal": "Показувати базал", + "Profile used": "Використовуваний профіль", + "Calculation is in target range.": "Розрахункова величина у цільовому діапазоні.", + "Loading profile records ...": "Завантаження записів профілю...", + "Values loaded.": "Значення завантажено.", + "Default values used.": "Використовуються стандартні значення.", + "Error. Default values used.": "Помилка. Використовуються стандартні значення.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Діапазони нижніх та верхніх цільових значень не збігаються. Відновлено значення за промовчанням.", + "Valid from:": "Дійсний з:", + "Save current record before switching to new?": "Зберегти поточний запис перед переходом до нових?", + "Add new interval before": "Додати новий інтервал перед цим", + "Delete interval": "Видалити інтервал", + "I:C": "І:С", "ISF": "ISF", - "Combo Bolus": "Combo Bolus", - "Difference": "Difference", - "New time": "New time", - "Edit Mode": "Edit Mode", - "When enabled icon to start edit mode is visible": "When enabled icon to start edit mode is visible", - "Operation": "Operation", - "Move": "Move", - "Delete": "Delete", - "Move insulin": "Move insulin", - "Move carbs": "Move carbs", - "Remove insulin": "Remove insulin", - "Remove carbs": "Remove carbs", - "Change treatment time to %1 ?": "Change treatment time to %1 ?", - "Change carbs time to %1 ?": "Change carbs time to %1 ?", - "Change insulin time to %1 ?": "Change insulin time to %1 ?", - "Remove treatment ?": "Remove treatment ?", - "Remove insulin from treatment ?": "Remove insulin from treatment ?", - "Remove carbs from treatment ?": "Remove carbs from treatment ?", - "Rendering": "Rendering", - "Loading OpenAPS data of": "Loading OpenAPS data of", + "Combo Bolus": "Комбінований болюс", + "Difference": "Різниця", + "New time": "Новий час", + "Edit Mode": "Режим редагування", + "When enabled icon to start edit mode is visible": "При активації видно піктограму почати режим редагування", + "Operation": "Операція", + "Move": "Перемістити", + "Delete": "Видалити", + "Move insulin": "Перемістити інсулін", + "Move carbs": "Перемістити вуглеводи", + "Remove insulin": "Видалити інсулін", + "Remove carbs": "Видалити вуглеводи", + "Change treatment time to %1 ?": "Змінити час події на %1?", + "Change carbs time to %1 ?": "Змінити час прийому вуглеводів на %1?", + "Change insulin time to %1 ?": "Змінити час подачі інсуліну на %1?", + "Remove treatment ?": "Видалити подію?", + "Remove insulin from treatment ?": "Видалити інсулін з події?", + "Remove carbs from treatment ?": "Видалити вуглеводи з події?", + "Rendering": "Побудова графіка", + "Loading OpenAPS data of": "Завантаження даних OpenAPS", "Loading profile switch data": "Завантаження даних перемикання профілю", "Redirecting you to the Profile Editor to create a new profile.": "Перенаправлення вас до редактора профілю, щоб створити новий профіль.", "Pump": "Помпа", @@ -449,56 +449,56 @@ "BASAL": "Базал", "Current basal": "Поточний базал", "Sensitivity": "Чутливість", - "Current Carb Ratio": "Current Carb Ratio", - "Basal timezone": "Basal timezone", - "Active profile": "Active profile", - "Active temp basal": "Active temp basal", - "Active temp basal start": "Active temp basal start", - "Active temp basal duration": "Active temp basal duration", - "Active temp basal remaining": "Active temp basal remaining", - "Basal profile value": "Basal profile value", - "Active combo bolus": "Active combo bolus", - "Active combo bolus start": "Active combo bolus start", - "Active combo bolus duration": "Active combo bolus duration", - "Active combo bolus remaining": "Active combo bolus remaining", - "BG Delta": "BG Delta", - "Elapsed Time": "Elapsed Time", - "Absolute Delta": "Absolute Delta", - "Interpolated": "Interpolated", - "BWP": "BWP", - "Urgent": "Urgent", - "Warning": "Warning", - "Info": "Info", - "Lowest": "Lowest", - "Snoozing high alarm since there is enough IOB": "Snoozing high alarm since there is enough IOB", - "Check BG, time to bolus?": "Check BG, time to bolus?", - "Notice": "Notice", - "required info missing": "required info missing", - "Insulin on Board": "Insulin on Board", - "Current target": "Current target", - "Expected effect": "Expected effect", - "Expected outcome": "Expected outcome", - "Carb Equivalent": "Carb Equivalent", - "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs", - "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS", - "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U reduction needed in active insulin to reach low target, too much basal?", - "basal adjustment out of range, give carbs?": "basal adjustment out of range, give carbs?", - "basal adjustment out of range, give bolus?": "basal adjustment out of range, give bolus?", - "above high": "above high", - "below low": "below low", - "Projected BG %1 target": "Projected BG %1 target", - "aiming at": "aiming at", - "Bolus %1 units": "Bolus %1 units", - "or adjust basal": "or adjust basal", - "Check BG using glucometer before correcting!": "Check BG using glucometer before correcting!", - "Basal reduction to account %1 units:": "Basal reduction to account %1 units:", - "30m temp basal": "30m temp basal", - "1h temp basal": "1h temp basal", - "Cannula change overdue!": "Cannula change overdue!", - "Time to change cannula": "Time to change cannula", - "Change cannula soon": "Change cannula soon", - "Cannula age %1 hours": "Cannula age %1 hours", - "Inserted": "Inserted", + "Current Carb Ratio": "Актуальне співвідношення інсуліну та вуглеводів", + "Basal timezone": "Часовий пояс базалу", + "Active profile": "Активований профіль", + "Active temp basal": "Активний тимчасовий базал", + "Active temp basal start": "Початок активного тимчасового базалу", + "Active temp basal duration": "Тривалість активного тимчасового базалу", + "Active temp basal remaining": "Залишок активного тимчасового базалу", + "Basal profile value": "Значення профілю базалу", + "Active combo bolus": "Активний комбінований болюс", + "Active combo bolus start": "Початок активного комбінованого болюсу", + "Active combo bolus duration": "Тривалість активного комбінованого болюсу", + "Active combo bolus remaining": "Залишок активного комбінованого болюсу", + "BG Delta": "Дельта ГК", + "Elapsed Time": "Минуло часу", + "Absolute Delta": "Абсолютна зміна", + "Interpolated": "Інтерпольовано", + "BWP": "Калькулятор болюсу", + "Urgent": "Увага", + "Warning": "Попередження", + "Info": "Інформація", + "Lowest": "Найнижче", + "Snoozing high alarm since there is enough IOB": "Відкладений сигналу високого СК через достатню кількість IOB", + "Check BG, time to bolus?": "Перевірте ГК, дати болюс?", + "Notice": "Примітка", + "required info missing": "необхідна інформація відсутня", + "Insulin on Board": "Активний інсулін (IOB)", + "Current target": "Актуальне цільове значення", + "Expected effect": "Очікуваний ефект", + "Expected outcome": "Очікуваний результат", + "Carb Equivalent": "Еквівалент у вуглеводах", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Вихід інсуліну рівного %1 од, необхідного для досягнення нижнього цільного значення, вуглеводи не прийняті до розрахунку", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Надлишок інсуліну, що дорівнює %1 од, необхідного для досягнення нижнього цільового значення, ПОКРИЙТЕ АКТИВНИЙ ІНСУЛІН ВУГЛЕВОДАМИ", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Для досягнення нижнього цільового значення необхідно знизити величину активного інсуліну на %1 од, чи велика база?", + "basal adjustment out of range, give carbs?": "Коригування базалу поза діапазоном, додати вуглеводів?", + "basal adjustment out of range, give bolus?": "Коригування базалу поза діапазоном, додати болюс?", + "above high": "вище верхньої межі", + "below low": "нижче нижньої межі", + "Projected BG %1 target": "Прогнозована глікемія %1", + "aiming at": "ціль на", + "Bolus %1 units": "Болюс %1 од.", + "or adjust basal": "чи коректувати базал", + "Check BG using glucometer before correcting!": "Перед коригуванням звірте ГК із глюкометром", + "Basal reduction to account %1 units:": "Зниження бази через %1 од. болюса", + "30m temp basal": "30 хв тимчасового базалу", + "1h temp basal": "1 год тимчасового базалу", + "Cannula change overdue!": "Термін заміни катетера помпи минув", + "Time to change cannula": "Час змінити катетер помпи", + "Change cannula soon": "Наближається час заміни катетера помпи", + "Cannula age %1 hours": "Катетер помпи відпрацював %1 год", + "Inserted": "Вставлений", "CAGE": "CAGE", "COB": "COB", "Last Carbs": "Остані вуглеводи", @@ -549,56 +549,56 @@ "Mean Hourly Change": "Середня зміна за годину", "FortyFiveDown": "незначне падіння", "FortyFiveUp": "незначний ріст", - "Flat": "holding", - "SingleUp": "rising", - "SingleDown": "dropping", - "DoubleDown": "rapidly dropping", - "DoubleUp": "rapidly rising", - "virtAsstUnknown": "That value is unknown at the moment. Please see your Nightscout site for more details.", - "virtAsstTitleAR2Forecast": "AR2 Forecast", - "virtAsstTitleCurrentBasal": "Current Basal", - "virtAsstTitleCurrentCOB": "Current COB", - "virtAsstTitleCurrentIOB": "Current IOB", - "virtAsstTitleLaunch": "Welcome to Nightscout", - "virtAsstTitleLoopForecast": "Loop Forecast", - "virtAsstTitleLastLoop": "Last Loop", - "virtAsstTitleOpenAPSForecast": "OpenAPS Forecast", - "virtAsstTitlePumpReservoir": "Insulin Remaining", - "virtAsstTitlePumpBattery": "Pump Battery", - "virtAsstTitleRawBG": "Current Raw BG", - "virtAsstTitleUploaderBattery": "Uploader Battery", - "virtAsstTitleCurrentBG": "Current BG", - "virtAsstTitleFullStatus": "Full Status", - "virtAsstTitleCGMMode": "CGM Mode", - "virtAsstTitleCGMStatus": "CGM Status", - "virtAsstTitleCGMSessionAge": "CGM Session Age", - "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", - "virtAsstTitleCGMTxAge": "CGM Transmitter Age", - "virtAsstTitleCGMNoise": "CGM Noise", - "virtAsstTitleDelta": "Blood Glucose Delta", - "virtAsstStatus": "%1 and %2 as of %3.", - "virtAsstBasal": "%1 current basal is %2 units per hour", - "virtAsstBasalTemp": "%1 temp basal of %2 units per hour will end %3", - "virtAsstIob": "and you have %1 insulin on board.", - "virtAsstIobIntent": "You have %1 insulin on board", - "virtAsstIobUnits": "%1 units of", - "virtAsstLaunch": "What would you like to check on Nightscout?", - "virtAsstPreamble": "Your", - "virtAsstPreamble3person": "%1 has a ", - "virtAsstNoInsulin": "no", - "virtAsstUploadBattery": "Your uploader battery is at %1", - "virtAsstReservoir": "You have %1 units remaining", - "virtAsstPumpBattery": "Your pump battery is at %1 %2", - "virtAsstUploaderBattery": "Your uploader battery is at %1", - "virtAsstLastLoop": "The last successful loop was %1", - "virtAsstLoopNotAvailable": "Loop plugin does not seem to be enabled", - "virtAsstLoopForecastAround": "According to the loop forecast you are expected to be around %1 over the next %2", - "virtAsstLoopForecastBetween": "According to the loop forecast you are expected to be between %1 and %2 over the next %3", - "virtAsstAR2ForecastAround": "According to the AR2 forecast you are expected to be around %1 over the next %2", - "virtAsstAR2ForecastBetween": "According to the AR2 forecast you are expected to be between %1 and %2 over the next %3", - "virtAsstForecastUnavailable": "Unable to forecast with the data that is available", - "virtAsstRawBG": "Your raw bg is %1", - "virtAsstOpenAPSForecast": "The OpenAPS Eventual BG is %1", + "Flat": "Рівний", + "SingleUp": "зростає", + "SingleDown": "падає", + "DoubleDown": "стрімко зростає", + "DoubleUp": "стрімко падає", + "virtAsstUnknown": "На даний час величина невідома. Зайдіть на сайт Nightscout.", + "virtAsstTitleAR2Forecast": "AR2 прогноз", + "virtAsstTitleCurrentBasal": "Актуальний базал", + "virtAsstTitleCurrentCOB": "Активні COB", + "virtAsstTitleCurrentIOB": "Активний IOB", + "virtAsstTitleLaunch": "Ласкаво просимо до Nightscout", + "virtAsstTitleLoopForecast": "Прогноз Loop", + "virtAsstTitleLastLoop": " Минулий Loop", + "virtAsstTitleOpenAPSForecast": "Прогноз OpenAPS", + "virtAsstTitlePumpReservoir": "Залишилося інсуліну", + "virtAsstTitlePumpBattery": "Батарея помпи", + "virtAsstTitleRawBG": "Актуальний RAW ГК", + "virtAsstTitleUploaderBattery": "Батарея завантажувача", + "virtAsstTitleCurrentBG": "Актуальна ГК", + "virtAsstTitleFullStatus": "Повний статус", + "virtAsstTitleCGMMode": "CGM режим", + "virtAsstTitleCGMStatus": "CGM статус", + "virtAsstTitleCGMSessionAge": "CGM вік сесії", + "virtAsstTitleCGMTxStatus": "CGM статус передавача", + "virtAsstTitleCGMTxAge": "CGM строк передавача", + "virtAsstTitleCGMNoise": "CGM шум", + "virtAsstTitleDelta": "Дельта ГК", + "virtAsstStatus": "%1 та %2 починаючи з %3.", + "virtAsstBasal": "%1 поточний базал %2 од за годину", + "virtAsstBasalTemp": "%1 тимчасовий базал %2 од за годину закінчиться %3", + "virtAsstIob": "і ви маєте %1 інсуліну в організмі.", + "virtAsstIobIntent": "ви маєте %1 інсуліну в організмі", + "virtAsstIobUnits": "%1 од", + "virtAsstLaunch": "Що б ви хотіли перевірити на Nightscout?", + "virtAsstPreamble": "Ваш", + "virtAsstPreamble3person": "%1 має", + "virtAsstNoInsulin": "немає", + "virtAsstUploadBattery": "Батарея завантажувача %1", + "virtAsstReservoir": "У вас залишилася %1 од", + "virtAsstPumpBattery": "Батарея помпи %1 %2", + "virtAsstUploaderBattery": "Батарея завантажувача %1", + "virtAsstLastLoop": "Останній успішний цикл був %1", + "virtAsstLoopNotAvailable": "Плагін циклу не є активним", + "virtAsstLoopForecastAround": "За прогнозом алгоритму , очікувана ГК близько %1 у наступні %2", + "virtAsstLoopForecastBetween": "За прогнозом алгоритму, очікувана ГК між %1 і %2 у наступні %3", + "virtAsstAR2ForecastAround": "За прогнозом AR2 ГК очікується в районі %1 у наступні %2", + "virtAsstAR2ForecastBetween": "За прогнозом AR2 ГК очікується між %1 і %2 у наступні %3", + "virtAsstForecastUnavailable": "Прогноз за таких даних неможливий", + "virtAsstRawBG": "Ваш RAW ГК %1", + "virtAsstOpenAPSForecast": "Прогнозована OpenAPS ГК дорівнює %1", "virtAsstCob3person": "%1 має %2 вуглеводів", "virtAsstCob": "У вас %1 вуглеводів", "virtAsstCGMMode": "Ваш режим моніторингу був %1 як на %2.", @@ -649,56 +649,56 @@ "Database Size": "Розмір бази даних", "Database Size near its limits!": "Розмір бази даних наближається до ліміту!", "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Розмір бази даних %1 MiB з %2 MiB. Зробіть резервну копію та очистіть базу даних!", - "Database file size": "Database file size", - "%1 MiB of %2 MiB (%3%)": "%1 MiB of %2 MiB (%3%)", - "Data size": "Data size", - "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", - "virtAsstTitleDatabaseSize": "Database file size", - "Carbs/Food/Time": "Carbs/Food/Time", - "You have administration messages": "You have administration messages", - "Admin messages in queue": "Admin messages in queue", - "Queue empty": "Queue empty", - "There are no admin messages in queue": "There are no admin messages in queue", - "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", - "Reads enabled in default permissions": "Reads enabled in default permissions", - "Data reads enabled": "Data reads enabled", - "Data writes enabled": "Data writes enabled", - "Data writes not enabled": "Data writes not enabled", - "Color prediction lines": "Color prediction lines", - "Release Notes": "Release Notes", - "Check for Updates": "Check for Updates", - "Open Source": "Open Source", - "Nightscout Info": "Nightscout Info", - "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.": "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.", - "Loopalyzer includes a time shift feature. If you for example have breakfast at 07:00 one day and at 08:00 the day after your average blood glucose curve these two days will most likely look flattened and not show the actual response after a breakfast. Time shift will compute the average time these meals were eaten and then shift all data (carbs, insulin, basal etc.) during both days the corresponding time difference so that both meals align with the average meal start time.": "Loopalyzer includes a time shift feature. If you for example have breakfast at 07:00 one day and at 08:00 the day after your average blood glucose curve these two days will most likely look flattened and not show the actual response after a breakfast. Time shift will compute the average time these meals were eaten and then shift all data (carbs, insulin, basal etc.) during both days the corresponding time difference so that both meals align with the average meal start time.", - "In this example all data from first day is pushed 30 minutes forward in time and all data from second day 30 minutes backward in time so it appears as if you had had breakfast at 07:30 both days. This allows you to see your actual average blood glucose response from a meal.": "In this example all data from first day is pushed 30 minutes forward in time and all data from second day 30 minutes backward in time so it appears as if you had had breakfast at 07:30 both days. This allows you to see your actual average blood glucose response from a meal.", - "Time shift highlights the period after the average meal start time in gray, for the duration of the DIA (Duration of Insulin Action). As all data points the entire day are shifted the curves outside the gray area may not be accurate.": "Time shift highlights the period after the average meal start time in gray, for the duration of the DIA (Duration of Insulin Action). As all data points the entire day are shifted the curves outside the gray area may not be accurate.", - "Note that time shift is available only when viewing multiple days.": "Note that time shift is available only when viewing multiple days.", - "Please select a maximum of two weeks duration and click Show again.": "Please select a maximum of two weeks duration and click Show again.", - "Show profiles table": "Show profiles table", - "Show predictions": "Show predictions", - "Timeshift on meals larger than %1 g carbs consumed between %2 and %3": "Timeshift on meals larger than %1 g carbs consumed between %2 and %3", - "Previous": "Previous", - "Previous day": "Previous day", - "Next day": "Next day", - "Next": "Next", - "Temp basal delta": "Temp basal delta", - "Authorized by token": "Authorized by token", - "Auth role": "Auth role", - "view without token": "view without token", - "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution", - "Failed authentication": "Failed authentication", - "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?", - "Default (with leading zero and U)": "Default (with leading zero and U)", - "Concise (with U, without leading zero)": "Concise (with U, without leading zero)", - "Minimal (without leading zero and U)": "Minimal (without leading zero and U)", - "Small Bolus Display": "Small Bolus Display", - "Large Bolus Display": "Large Bolus Display", - "Bolus Display Threshold": "Bolus Display Threshold", - "%1 U and Over": "%1 U and Over", - "Event repeated %1 times.": "Event repeated %1 times.", - "minutes": "minutes", + "Database file size": "Розмір файлу бази даних", + "%1 MiB of %2 MiB (%3%)": "%1 МіБ з %2 МіБ (%3%)", + "Data size": "Об'єм даних", + "virtAsstDatabaseSize": "%1 MiB Це %2% доступного місця в базі даних.", + "virtAsstTitleDatabaseSize": "Розмір файлу бази даних", + "Carbs/Food/Time": "Вуглеводи/Їжа/Час", + "You have administration messages": "У вас є повідомлення адміністрації", + "Admin messages in queue": "Адміністративні повідомлення в черзі", + "Queue empty": "Черга порожня", + "There are no admin messages in queue": "У черзі немає повідомлень адміністратора", + "Please sign in using the API_SECRET to see your administration messages": "Будь ласка, увійдіть за допомогою API_SECRET, щоб побачити ваші повідомлення адміністрування", + "Reads enabled in default permissions": "Читання увімкнено в стандартних дозволах", + "Data reads enabled": "Запис даних увімкнено", + "Data writes enabled": "Запис даних увімкнено", + "Data writes not enabled": "Запис даних не увімкнено", + "Color prediction lines": "Кольорові лінії прогнозів", + "Release Notes": "Примітки до релізу", + "Check for Updates": "Перевірити наявність оновлень", + "Open Source": "Відкритий вихідний код", + "Nightscout Info": "Інформація про Nightscout", + "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.": "Основною метою Loopalyzer є візуалізувати роботу системи замкнутого циклу Loop. Він може працювати і з іншими установками, як із закритими та відкритими циклами, так і поза циклами. Однак, залежно від того, який завантажувач ви використовуєте, як часто він може отримувати та завантажувати дані, як здатний заповнювати відсутні. Завжди переконайтесь, що графіки виглядають розумно. Найкраще переглядати по одному дню і перегортати через кілька днів.", + "Loopalyzer includes a time shift feature. If you for example have breakfast at 07:00 one day and at 08:00 the day after your average blood glucose curve these two days will most likely look flattened and not show the actual response after a breakfast. Time shift will compute the average time these meals were eaten and then shift all data (carbs, insulin, basal etc.) during both days the corresponding time difference so that both meals align with the average meal start time.": "Loopalyzer включає функцію зсуву за часом. Якщо ви, наприклад, снідаєте о 07:00 один день і о 08:00 в інший, то середня крива глюкози за ці два дні, швидше за все, виглядають згладженою і не показують фактичної відповіді після сніданку. Зсув часу розрахує середній час прийому цих страв і потім переведе всі дані (вуглеводи, інсулін, базал і т.д.) таким чином, що обидва прийоми їжі збігаються з середнім часом початку харчування.", + "In this example all data from first day is pushed 30 minutes forward in time and all data from second day 30 minutes backward in time so it appears as if you had had breakfast at 07:30 both days. This allows you to see your actual average blood glucose response from a meal.": "У даному прикладі всі дані першого дня зрушені на 30 хв вперед, а дані другого - на 30 хвилин тому, так що створюється враження, що ви снідали обидва рази о 7:30. Це дозволяє точніше побачити вашу справжню реакцію ГК на їду.", + "Time shift highlights the period after the average meal start time in gray, for the duration of the DIA (Duration of Insulin Action). As all data points the entire day are shifted the curves outside the gray area may not be accurate.": "Зсув часу виділяє середній час початку приймання їжі сірим на тривалість дії інсуліну.", + "Note that time shift is available only when viewing multiple days.": "Зверніть увагу, що зсув часу доступний тільки при перегляді декількох днів.", + "Please select a maximum of two weeks duration and click Show again.": "Будь ласка, виберіть не більше двох тижнів і натисніть Показати знову.", + "Show profiles table": "Показати таблицю профілів", + "Show predictions": "Показати прогнози", + "Timeshift on meals larger than %1 g carbs consumed between %2 and %3": "Інтервал приймання їжі більше %1 г вуглеводів між %2 і %3", + "Previous": "Попередні", + "Previous day": "Попередній день", + "Next day": "Наступний день", + "Next": "Наступний", + "Temp basal delta": "Дельта тимчасової базальної швидкості", + "Authorized by token": "Авторизований за токеном", + "Auth role": "Роль авторизації", + "view without token": "перегляд без токена", + "Remove stored token": "Видалити збережений токен", + "Weekly Distribution": "Щотижневий розподіл", + "Failed authentication": "Невдала автентифікація", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "Пристрій з IP-адресою %1 спробував авторизуватися в Nightscout з неправильними обліковими даними. Перевірте, чи є у вас завантажувач, налаштований з неправильним API_SECRET або токеном.", + "Default (with leading zero and U)": "За замовчуванням (з початковим нулем та од.)", + "Concise (with U, without leading zero)": "Повний (зі словом од., без нуля попереду)", + "Minimal (without leading zero and U)": "Мінімальний (без нуля та слова од.)", + "Small Bolus Display": "Показувати болюси дрібними значками", + "Large Bolus Display": "Відображати болюси великими значками", + "Bolus Display Threshold": "Поріг відображення болюса", + "%1 U and Over": "%1 од. і більше", + "Event repeated %1 times.": "Подія повторюється %1 разів.", + "minutes": "хвилин", "Last recorded %1 %2 ago.": "Останній запис %1 %2 тому.", "Security issue": "Проблема безпеки", "Weak API_SECRET detected. Please use a mix of small and CAPITAL letters, numbers and non-alphanumeric characters such as !#%&/ to reduce the risk of unauthorized access. The minimum length of the API_SECRET is 12 characters.": "Виявлено слабкий API_SECRET . Будь ласка, використовуйте поєднання малих і великих літер, цифр і неалфавітно-цифрових символів, таких як !#%&/ щоб зменшити ризик несанкціонованого доступу. Мінімальна довжина API_SECRET становить 12 символів.",