From f08f9eac5213cf23be2ce68d199c015a8e65a760 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Wed, 30 Sep 2020 09:14:59 +0300 Subject: [PATCH 001/194] * Bump version to 14.0.7 * Add onerror handler for pushover --- lib/plugins/pushover.js | 5 ++++- npm-shrinkwrap.json | 2 +- package.json | 2 +- swagger.json | 2 +- swagger.yaml | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/plugins/pushover.js b/lib/plugins/pushover.js index 99fc22697a4..8c63a905e00 100644 --- a/lib/plugins/pushover.js +++ b/lib/plugins/pushover.js @@ -127,7 +127,10 @@ function setupPushover (env) { if (apiToken && (userKeys.length > 0 || alarmKeys.length > 0 || announcementKeys.length > 0)) { var pushoverAPI = new Pushover({ - token: apiToken + token: apiToken, + onerror: function(error) { + console.error('Pushover error', error); + } }); pushoverAPI.apiToken = apiToken; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 14b8d343cf4..4e143615a3d 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "nightscout", - "version": "14.0.6", + "version": "14.0.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ec94894a060..a2694ae0297 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nightscout", - "version": "14.0.6", + "version": "14.0.7", "description": "Nightscout acts as a web-based CGM (Continuous Glucose Montinor) to allow multiple caregivers to remotely view a patients glucose data in realtime.", "license": "AGPL-3.0", "author": "Nightscout Team", diff --git a/swagger.json b/swagger.json index 83f28a0469f..d4f9cbde296 100755 --- a/swagger.json +++ b/swagger.json @@ -8,7 +8,7 @@ "info": { "title": "Nightscout API", "description": "Own your DData with the Nightscout API", - "version": "14.0.6", + "version": "14.0.7", "license": { "name": "AGPL 3", "url": "https://www.gnu.org/licenses/agpl.txt" diff --git a/swagger.yaml b/swagger.yaml index 7429d96a309..98d89401be6 100755 --- a/swagger.yaml +++ b/swagger.yaml @@ -4,7 +4,7 @@ servers: info: title: Nightscout API description: Own your DData with the Nightscout API - version: 14.0.6 + version: 14.0.7 license: name: AGPL 3 url: 'https://www.gnu.org/licenses/agpl.txt' From b6bde836c0dfd0d5c14d1c1185dcd38f7ca7e9e0 Mon Sep 17 00:00:00 2001 From: Caleb Date: Mon, 5 Oct 2020 08:04:02 -0600 Subject: [PATCH 002/194] Fixed #5852 - Updated Google Home setup steps (#6195) --- docs/plugins/googlehome-plugin.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/plugins/googlehome-plugin.md b/docs/plugins/googlehome-plugin.md index 5b82bdfb053..fc76117059e 100644 --- a/docs/plugins/googlehome-plugin.md +++ b/docs/plugins/googlehome-plugin.md @@ -41,7 +41,8 @@ To add Google Home support for your Nightscout site, here's what you need to do: 1. Click on the "New Project" button. 1. If prompted, agree to the Terms of Service. 1. Give your project a name (e.g. "Nightscout") and then click "Create project". -1. For the "development experience", select "Conversational" at the bottom of the list. +1. When asked what kind of Action you want to build, select "Custom" and then click the "Next" button. +1. When selecting how you want to build the project, scroll down to the bottom of the screen and click the link to build it using DialogFlow. 1. Click on the "Develop" tab at the top of the sreen. 1. Click on "Invocation" in the left navigation pane. 1. Set the display name (e.g. "Night Scout") of your Action and set your Google Assistant voice. From d9e63fbe275e5bd70bc48b2d29882dddfc01e434 Mon Sep 17 00:00:00 2001 From: Petr Ondrusek <34578008+PetrOndrusek@users.noreply.github.com> Date: Sun, 18 Oct 2020 19:56:40 +0200 Subject: [PATCH 003/194] Fix broken swagger for APIv3 (#6201) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * APIv3: isolating documents from tests (not allowing clashes of calculated identifiers) * removing unused async keyword * fixing api v3 swagger and moving it to /api3-docs Co-authored-by: Petr Ondrusek Co-authored-by: Petr Ondrůšek --- app.js | 5 +- lib/api3/doc/tutorial.md | 22 +- lib/api3/index.js | 8 +- lib/api3/swagger.js | 41 - lib/api3/swagger.json | 2251 ++++++++++++++++++++++++++++++++++++++ tests/api3.basic.test.js | 9 - 6 files changed, 2271 insertions(+), 65 deletions(-) delete mode 100644 lib/api3/swagger.js create mode 100644 lib/api3/swagger.json diff --git a/app.js b/app.js index c6528819bb9..90bb372a315 100644 --- a/app.js +++ b/app.js @@ -276,9 +276,12 @@ function create (env, ctx) { // API docs const swaggerUi = require('swagger-ui-express'); + const swaggerUseSchema = schema => (...args) => swaggerUi.setup(schema)(...args); const swaggerDocument = require('./swagger.json'); + const swaggerDocumentApiV3 = require('./lib/api3/swagger.json'); - app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument)); + app.use('/api-docs', swaggerUi.serve, swaggerUseSchema(swaggerDocument)); + app.use('/api3-docs', swaggerUi.serve, swaggerUseSchema(swaggerDocumentApiV3)); app.use('/swagger-ui-dist', (req, res) => { res.redirect(307, '/api-docs'); diff --git a/lib/api3/doc/tutorial.md b/lib/api3/doc/tutorial.md index 3d8c656dfbd..d69e95ef4a4 100644 --- a/lib/api3/doc/tutorial.md +++ b/lib/api3/doc/tutorial.md @@ -11,7 +11,7 @@ Each NS instance with API v3 contains self-included OpenAPI specification at [/a --- ### VERSION -[VERSION](https://nsapiv3.herokuapp.com/api/v3/swagger-ui-dist/#/other/get_version) operation gets you basic information about software packages versions. +[VERSION](https://nsapiv3.herokuapp.com/api3-docs/#/other/get_version) operation gets you basic information about software packages versions. It is public (there is no need to add authorization parameters/headers). Sample GET `/version` client code (to get actual versions): @@ -38,7 +38,7 @@ Sample result: --- ### STATUS -[STATUS](https://nsapiv3.herokuapp.com/api/v3/swagger-ui-dist/#/other/get_status) operation gets you basic information about software packages versions. +[STATUS](https://nsapiv3.herokuapp.com/api3-docs/#/other/get_status) operation gets you basic information about software packages versions. It is public (there is no need to add authorization parameters/headers). Sample GET `/status` client code (to get my actual permissions): @@ -75,7 +75,7 @@ Sample result: --- ### SEARCH -[SEARCH](https://nsapiv3insecure.herokuapp.com/api/v3/swagger-ui-dist/index.html#/generic/SEARCH) operation filters, sorts, paginates and projects documents from the collection. +[SEARCH](https://nsapiv3insecure.herokuapp.com/api3-docs/#/generic/SEARCH) operation filters, sorts, paginates and projects documents from the collection. Sample GET `/entries` client code (to retrieve last 3 BG values): ```javascript @@ -110,7 +110,7 @@ Sample result: --- ### CREATE -[CREATE](https://nsapiv3.herokuapp.com/api/v3/swagger-ui-dist/#/generic/post__collection_) operation inserts a new document into the collection. +[CREATE](https://nsapiv3.herokuapp.com/api3-docs/#/generic/post__collection_) operation inserts a new document into the collection. Sample POST `/treatments` client code: ```javascript @@ -140,7 +140,7 @@ Sample result: --- ### READ -[READ](https://nsapiv3.herokuapp.com/api/v3/swagger-ui-dist/#/generic/get__collection___identifier_) operation retrieves you a single document from the collection by its identifier. +[READ](https://nsapiv3.herokuapp.com/api3-docs/#/generic/get__collection___identifier_) operation retrieves you a single document from the collection by its identifier. Sample GET `/treatments/{identifier}` client code: ```javascript @@ -172,7 +172,7 @@ Sample result: --- ### LAST MODIFIED -[LAST MODIFIED](https://nsapiv3insecure.herokuapp.com/api/v3/swagger-ui-dist/index.html#/other/LAST-MODIFIED) operation finds the date of last modification for each collection. +[LAST MODIFIED](https://nsapiv3insecure.herokuapp.com/api3-docs/#/other/LAST-MODIFIED) operation finds the date of last modification for each collection. Sample GET `/lastModified` client code (to get latest modification dates): ```javascript @@ -199,7 +199,7 @@ Sample result: --- ### UPDATE -[UPDATE](https://nsapiv3insecure.herokuapp.com/api/v3/swagger-ui-dist/index.html#/generic/put__collection___identifier_) operation updates existing document in the collection. +[UPDATE](https://nsapiv3insecure.herokuapp.com/api3-docs/#/generic/put__collection___identifier_) operation updates existing document in the collection. Sample PUT `/treatments/{identifier}` client code (to update `insulin` from 0.3 to 0.4): ```javascript @@ -231,7 +231,7 @@ Sample result: --- ### PATCH -[PATCH](https://nsapiv3insecure.herokuapp.com/api/v3/swagger-ui-dist/index.html#/generic/patch__collection___identifier_) operation partially updates existing document in the collection. +[PATCH](https://nsapiv3insecure.herokuapp.com/api3-docs/#/generic/patch__collection___identifier_) operation partially updates existing document in the collection. Sample PATCH `/treatments/{identifier}` client code (to update `insulin` from 0.4 to 0.5): ```javascript @@ -259,7 +259,7 @@ Sample result: --- ### DELETE -[DELETE](https://nsapiv3insecure.herokuapp.com/api/v3/swagger-ui-dist/index.html#/generic/delete__collection___identifier_) operation deletes existing document from the collection. +[DELETE](https://nsapiv3insecure.herokuapp.com/api3-docs/#/generic/delete__collection___identifier_) operation deletes existing document from the collection. Sample DELETE `/treatments/{identifier}` client code (to update `insulin` from 0.4 to 0.5): ```javascript @@ -282,7 +282,7 @@ Sample result: --- ### HISTORY -[HISTORY](https://nsapiv3insecure.herokuapp.com/api/v3/swagger-ui-dist/index.html#/generic/HISTORY2) operation queries all changes since the timestamp. +[HISTORY](https://nsapiv3insecure.herokuapp.com/api3-docs/#/generic/HISTORY2) operation queries all changes since the timestamp. Sample HISTORY `/treatments/history/{lastModified}` client code: ```javascript @@ -326,4 +326,4 @@ Sample result: } ] ``` -Notice the `"isValid":false` field marking the deletion of the document. \ No newline at end of file +Notice the `"isValid":false` field marking the deletion of the document. diff --git a/lib/api3/index.js b/lib/api3/index.js index 4bfe07a35fe..bff0899536f 100644 --- a/lib/api3/index.js +++ b/lib/api3/index.js @@ -7,7 +7,6 @@ const express = require('express') , apiConst = require('./const.json') , security = require('./security') , genericSetup = require('./generic/setup') - , swaggerSetup = require('./swagger') ; function configure (env, ctx) { @@ -35,7 +34,7 @@ function configure (env, ctx) { self.setupApiEnvironment = function setupApiEnvironment () { - + app.use(bodyParser.json({ limit: 1048576 * 50 }), function errorHandler (err, req, res, next) { @@ -100,7 +99,10 @@ function configure (env, ctx) { self.setupApiEnvironment(); genericSetup(ctx, env, app); self.setupApiRoutes(); - swaggerSetup(app); + + app.use('/swagger-ui-dist', (req, res) => { + res.redirect(307, '../../../api3-docs'); + }); ctx.storageSocket = new StorageSocket(app, env, ctx); diff --git a/lib/api3/swagger.js b/lib/api3/swagger.js deleted file mode 100644 index ff965061c87..00000000000 --- a/lib/api3/swagger.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -const express = require('express') - , fs = require('fs') - ; - - -function setupSwaggerUI (app) { - - const serveSwaggerDef = function serveSwaggerDef (req, res) { - res.sendFile(__dirname + '/swagger.yaml'); - }; - app.get('/swagger', serveSwaggerDef); - - const swaggerUiAssetPath = require('swagger-ui-dist').getAbsoluteFSPath(); - const swaggerFiles = express.static(swaggerUiAssetPath); - - const urlRegex = /url: "[^"]*",/; - - const patchIndex = function patchIndex (req, res) { - const indexContent = fs.readFileSync(`${swaggerUiAssetPath}/index.html`) - .toString() - .replace(urlRegex, 'url: "../swagger.yaml",'); - res.send(indexContent); - }; - - app.get('/swagger-ui-dist', function getSwaggerRoot (req, res) { - let targetUrl = req.originalUrl; - if (!targetUrl.endsWith('/')) { - targetUrl += '/'; - } - targetUrl += 'index.html'; - res.redirect(targetUrl); - }); - app.get('/swagger-ui-dist/index.html', patchIndex); - - app.use('/swagger-ui-dist', swaggerFiles); -} - - -module.exports = setupSwaggerUI; \ No newline at end of file diff --git a/lib/api3/swagger.json b/lib/api3/swagger.json new file mode 100644 index 00000000000..b20bb0e6761 --- /dev/null +++ b/lib/api3/swagger.json @@ -0,0 +1,2251 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Nightscout API", + "description": "Nightscout API v3 is a component of cgm-remote-monitor project. It aims to provide lightweight, secured and HTTP REST compliant interface for your T1D treatment data exchange.\n\nAPI v3 uses these environment variables, among other things:\n- Security switch (optional, default = `true`)
API3_SECURITY_ENABLE=true
You can turn the whole security mechanism off, e.g. for debugging or development purposes, but this should never be set to false in production.\n\n- Number of minutes of acceptable time skew between client's and server's clock (optional, default = 5)
API3_TIME_SKEW_TOLERANCE=5
This security parameter is used for preventing anti-replay attacks, specifically when checking the time from `Date` header.\n\n- Maximum limit count of documents retrieved from single query
API3_MAX_LIMIT=1000
\n\n- Autopruning of obsolete documents (optional, default is only `DEVICESTATUS`=60)
API3_AUTOPRUNE_DEVICESTATUS=60\nAPI3_AUTOPRUNE_ENTRIES=365\nAPI3_AUTOPRUNE_TREATMENTS=120 
You can specify for which collections autopruning will be activated and length of retention period in days, e.g. \"Hold 60 days of devicestatus, automatically delete older documents, hold 365 days of treatments and entries, automatically delete older documents.\"\n\n- Fallback deduplication switch (optional, default = true)
API3_DEDUP_FALLBACK_ENABLED=true
API3 uses the `identifier` field for document identification and mutual distinction within a single collection. There is automatic deduplication implemented matching the equal `identifier` field. E.g. `CREATE` operation for document having the same `identifier` as another one existing in the database is automatically transformed into `UPDATE` operation of the document found in the database.\nDocuments not created via API v3 usually does not have any `identifier` field, but we would like to have some form of deduplication for them, too. This fallback deduplication is turned on by having set `API3_DEDUP_FALLBACK_ENABLED` to `true`. When searching the collection in database, the document is found to be a duplicate only when either he has equal `identifier` or he has no `identifier` and meets:
`devicestatus` collection: equal combination of `created_at` and `device`\n`entries` collection:      equal combination of `date` and `type`\n`food` collection:         equal `created_at`\n`profile` collection:      equal `created_at`\n`treatments` collection:   equal combination of `created_at` and `eventType` 
\n\n- Fallback switch for adding `created_at` field along the `date` field (optional, default = true)
API3_CREATED_AT_FALLBACK_ENABLED=true
Standard APIv3 document model uses only `date` field for storing a timestamp of the event recorded by the document. But there is a fallback option to fill `created_at` field as well automatically on each insert/update, just to keep all older components working.", + "contact": { + "name": "NS development discussion channel", + "url": "https://gitter.im/nightscout/public" + }, + "license": { + "name": "AGPL 3", + "url": "https://www.gnu.org/licenses/agpl.txt" + }, + "version": "3.0.1" + }, + "servers": [ + { + "url": "/api/v3" + } + ], + "tags": [ + { + "name": "generic", + "description": "Generic operations with each database collection (devicestatus, entries, food, profile, settings, treatments)" + }, + { + "name": "other", + "description": "All other various operations" + } + ], + "paths": { + "/{collection}": { + "get": { + "tags": [ + "generic" + ], + "summary": "SEARCH: Search documents from the collection", + "description": "General search operation through documents of one collection, matching the specified filtering criteria. You can apply:\n\n1) filtering - combining any number of filtering parameters\n\n2) ordering - using `sort` or `sort$desc` parameter\n\n3) paging - using `limit` and `skip` parameters\n\nWhen there is no document matching the filtering criteria, HTTP status 204 is returned with empty response content. Otherwise HTTP 200 code is returned with JSON array of matching documents as a response content.\n\nThis operation requires `read` permission for the API and the collection (e.g. `*:*:read`, `api:*:read`, `*:treatments:read`, `api:treatments:read`).\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", + "operationId": "SEARCH", + "parameters": [ + { + "name": "collection", + "in": "path", + "description": "Collection to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramCollection" + } + }, + { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "filter_parameters", + "in": "query", + "description": "Any number of filtering operators.\n\nEach filtering operator has name like `$`, e.g. `carbs$gt=2` which represents filtering rule \"The field carbs must be present and greater than 2\".\n\nYou can choose from operators:\n\n`eq`=equals, `insulin$eq=1.5`\n\n`ne`=not equals, `insulin$ne=1.5`\n\n`gt`=greater than, `carbs$gt=30`\n\n`gte`=greater than or equal, `carbs$gte=30`\n\n`lt`=less than, `carbs$lt=30`\n\n`lte`=less than or equal, `carbs$lte=30`\n\n`in`=in specified set, `type$in=sgv|mbg|cal`\n\n`nin`=not in specified set, `eventType$nin=Temp%20Basal|Temporary%20Target`\n\n`re`=regex pattern, `eventType$re=Temp.%2A`\n\nWhen filtering by field `date`, `created_at`, `srvModified` or `srvCreated`, you can choose from three input formats\n- Unix epoch in milliseconds (1525383610088)\n- Unix epoch in seconds (1525383610)\n- ISO 8601 with optional timezone ('2018-05-03T21:40:10.088Z' or '2018-05-03T23:40:10.088+02:00')\n\nThe date is always queried in a normalized form - UTC with zero offset and with the correct format (1525383610088 for `date`, '2018-05-03T21:40:10.088Z' for `created_at`).", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "sort", + "in": "query", + "description": "Field name by which the sorting of documents is performed. This parameter cannot be combined with `sort$desc` parameter.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "sort$desc", + "in": "query", + "description": "Field name by which the descending (reverse) sorting of documents is performed. This parameter cannot be combined with `sort` parameter.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "description": "Maximum number of documents to get in result array", + "required": false, + "style": "form", + "explode": true, + "schema": { + "minimum": 1, + "type": "integer", + "example": 100 + } + }, + { + "name": "skip", + "in": "query", + "description": "Number of documents to skip from collection query before loading them into result array (used for pagination)", + "required": false, + "style": "form", + "explode": true, + "schema": { + "minimum": 0, + "type": "integer", + "example": 0, + "default": 0 + } + }, + { + "name": "fields", + "in": "query", + "description": "A chosen set of fields to return in response. Either you can enumerate specific fields of interest or use the predefined set. Sample parameter values:\n\n_all: All fields will be returned (default value)\n\ndate,insulin: Only fields `date` and `insulin` will be returned", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "default": "_all" + }, + "examples": { + "all": { + "summary": "All fields will be returned (default behaviour)", + "value": "_all" + }, + "customSet": { + "summary": "Only fields date and insulin will be returned", + "value": "date,insulin" + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation returning array of documents matching the filtering criteria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "text/csv": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + } + } + }, + "204": { + "description": "Successful operation - no documents matching the filtering criteria" + }, + "400": { + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + }, + "404": { + "description": "The collection or document specified was not found." + }, + "406": { + "description": "The requested content type (in `Accept` header) is not supported." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + }, + "post": { + "tags": [ + "generic" + ], + "summary": "CREATE: Inserts a new document into the collection", + "description": "Using this operation you can insert new documents into collection. Normally the operation ends with 201 HTTP status code, `Last-Modified` and `Location` headers specified and with an empty response content. `identifier` can be parsed from the `Location` response header.\n\nWhen the document to post is marked as a duplicate (using rules described at `API3_DEDUP_FALLBACK_ENABLED` switch), the update operation takes place instead of inserting. In this case the original document in the collection is found and it gets updated by the actual operation POST body. Finally the operation ends with 204 HTTP status code along with `Last-Modified` and correct `Location` headers.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `create` (and/or `update` for deduplication) permission for the API and the collection (e.g. `api:treatments:create` and `api:treatments:update`)", + "parameters": [ + { + "name": "collection", + "in": "path", + "description": "Collection to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramCollection" + } + }, + { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "JSON with new document to insert", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentToPost" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successfully created a new document in collection", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + }, + "Location": { + "$ref": "#/components/schemas/headerLocation" + } + } + }, + "204": { + "description": "Successfully finished operation", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + }, + "Location": { + "$ref": "#/components/schemas/headerLocation" + } + } + }, + "400": { + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + }, + "404": { + "description": "The collection or document specified was not found." + }, + "422": { + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/{collection}/{identifier}": { + "get": { + "tags": [ + "generic" + ], + "summary": "READ: Retrieves a single document from the collection", + "description": "Basically this operation looks for a document matching the `identifier` field returning 200 or 404 HTTP status code.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned.\n\nWhen `If-Modified-Since` header is used and its value is greater than the timestamp of the document in the collection, 304 HTTP status code with empty response content is returned. It means that the document has not been modified on server since the last retrieval to client side. With `If-Modified-Since` header and less or equal timestamp `srvModified` a normal 200 HTTP status with full response is returned.\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)", + "parameters": [ + { + "name": "collection", + "in": "path", + "description": "Collection to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramCollection" + } + }, + { + "name": "identifier", + "in": "path", + "description": "Identifier of the document to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramIdentifier" + } + }, + { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "If-Modified-Since", + "in": "header", + "description": "Timestamp (defined with respect to server's clock) of the last document modification formatted as:\n\n<day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n\nIf this header is present, the operation will compare its value with the srvModified timestamp of the document at first and the operation result then may differ. The srvModified timestamp was defined by server's clock.\n\nExample:\n\n
If-Modified-Since: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "A chosen set of fields to return in response. Either you can enumerate specific fields of interest or use the predefined set. Sample parameter values:\n\n_all: All fields will be returned (default value)\n\ndate,insulin: Only fields `date` and `insulin` will be returned", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "default": "_all" + }, + "examples": { + "all": { + "summary": "All fields will be returned (default behaviour)", + "value": "_all" + }, + "customSet": { + "summary": "Only fields date and insulin will be returned", + "value": "date,insulin" + } + } + } + ], + "responses": { + "200": { + "description": "The document has been succesfully found and its JSON form returned in the response content.", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Document" + } + }, + "text/csv": { + "schema": { + "$ref": "#/components/schemas/Document" + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/Document" + } + } + } + }, + "304": { + "description": "The document has not been modified on the server since timestamp specified in If-Modified-Since header", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + } + } + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + }, + "404": { + "description": "The collection or document specified was not found." + }, + "406": { + "description": "The requested content type (in `Accept` header) is not supported." + }, + "410": { + "description": "The requested document has already been deleted." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + }, + "put": { + "tags": [ + "generic" + ], + "summary": "UPDATE: Updates a document in the collection", + "description": "Normally the document with the matching `identifier` will be replaced in the collection by the whole JSON request body and 204 HTTP status code will be returned with empty response body.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then an insert operation takes place instead of updating. Finally 201 HTTP status code is returned with only `Last-Modified` header (`identifier` is already known from the path parameter).\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` (and/or `create`) permission for the API and the collection (e.g. `api:treatments:update` and `api:treatments:create`)", + "parameters": [ + { + "name": "collection", + "in": "path", + "description": "Collection to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramCollection" + } + }, + { + "name": "identifier", + "in": "path", + "description": "Identifier of the document to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramIdentifier" + } + }, + { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "If-Unmodified-Since", + "in": "header", + "description": "Timestamp (defined with respect to server's clock) of the last document modification formatted as:\n\n<day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n\nIf this header is present, the operation will compare its value with the srvModified timestamp of the document at first and the operation result then may differ. The srvModified timestamp was defined by server's clock.\n\nExample:\n\n
If-Unmodified-Since: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "JSON of new version of document (`identifier` in JSON is ignored if present)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentToPost" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successfully created a new document in collection", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + } + } + }, + "204": { + "description": "Successfully finished operation", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + }, + "Location": { + "$ref": "#/components/schemas/headerLocation" + } + } + }, + "400": { + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + }, + "404": { + "description": "The collection or document specified was not found." + }, + "410": { + "description": "The requested document has already been deleted." + }, + "412": { + "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header)." + }, + "422": { + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + }, + "delete": { + "tags": [ + "generic" + ], + "summary": "DELETE: Deletes a document from the collection", + "description": "If the document has already been deleted, the operation will succeed anyway. Normally, documents are not really deleted from the collection but they are only marked as deleted. For special cases the deletion can be irreversible using `permanent` parameter.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `delete` permission for the API and the collection (e.g. `api:treatments:delete`)", + "parameters": [ + { + "name": "collection", + "in": "path", + "description": "Collection to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramCollection" + } + }, + { + "name": "identifier", + "in": "path", + "description": "Identifier of the document to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramIdentifier" + } + }, + { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "permanent", + "in": "query", + "description": "If true, the deletion will be irreversible and it will not appear in `HISTORY` operation. Normally there is no reason for setting this flag.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "204": { + "description": "Successful operation - empty response" + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + }, + "404": { + "description": "The collection or document specified was not found." + }, + "422": { + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + }, + "patch": { + "tags": [ + "generic" + ], + "summary": "PATCH: Partially updates document in the collection", + "description": "Normally the document with the matching `identifier` will be retrieved from the collection and it will be patched by all specified fields from the JSON request body. Finally 204 HTTP status code will be returned with empty response body.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then the operation ends with 404 HTTP status code.\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\n`PATCH` operation can save some bandwidth for incremental document updates in comparison with `GET` - `UPDATE` operation sequence.\n\nWhile patching the document, the field `modifiedBy` is automatically set to the authorized subject's name.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` permission for the API and the collection (e.g. `api:treatments:update`)", + "parameters": [ + { + "name": "collection", + "in": "path", + "description": "Collection to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramCollection" + } + }, + { + "name": "identifier", + "in": "path", + "description": "Identifier of the document to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramIdentifier" + } + }, + { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "If-Unmodified-Since", + "in": "header", + "description": "Timestamp (defined with respect to server's clock) of the last document modification formatted as:\n\n<day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n\nIf this header is present, the operation will compare its value with the srvModified timestamp of the document at first and the operation result then may differ. The srvModified timestamp was defined by server's clock.\n\nExample:\n\n
If-Unmodified-Since: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "JSON of new version of document (`identifier` in JSON is ignored if present)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentToPost" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Successfully finished operation", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + }, + "Location": { + "$ref": "#/components/schemas/headerLocation" + } + } + }, + "400": { + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + }, + "404": { + "description": "The collection or document specified was not found." + }, + "410": { + "description": "The requested document has already been deleted." + }, + "412": { + "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header)." + }, + "422": { + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/{collection}/history": { + "get": { + "tags": [ + "generic" + ], + "summary": "HISTORY: Retrieves incremental changes since timestamp", + "description": "HISTORY operation is intended for continuous data synchronization with other systems.\nEvery insertion, update and deletion will be included in the resulting JSON array of documents (since timestamp in `Last-Modified` request header value). All changes are listed chronologically in response with 200 HTTP status code. The maximum listed `srvModified` timestamp is also stored in `Last-Modified` and `ETag` response headers that you can use for future, directly following synchronization. You can also limit the array's length using `limit` parameter.\n\nDeleted documents will appear with `isValid` = `false` field.\n\nWhen there is no change detected since the timestamp the operation ends with 204 HTTP status code and empty response content.\n\nHISTORY operation has a fallback mechanism in place for documents, which were not created by API v3. For such documents `srvModified` is virtually assigned from the `date` field (for `entries` collection) or from the `created_at` field (for other collections).\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", + "operationId": "HISTORY", + "parameters": [ + { + "name": "collection", + "in": "path", + "description": "Collection to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramCollection" + } + }, + { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "Last-Modified", + "in": "header", + "description": "Starting timestamp (defined with respect to server's clock) since which the changes in documents are to be listed, formatted as:\n\n<day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n\nExample:\n\n
Last-Modified: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "description": "Maximum number of documents to get in result array", + "required": false, + "style": "form", + "explode": true, + "schema": { + "minimum": 1, + "type": "integer", + "example": 100 + } + }, + { + "name": "fields", + "in": "query", + "description": "A chosen set of fields to return in response. Either you can enumerate specific fields of interest or use the predefined set. Sample parameter values:\n\n_all: All fields will be returned (default value)\n\ndate,insulin: Only fields `date` and `insulin` will be returned", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "default": "_all" + }, + "examples": { + "all": { + "summary": "All fields will be returned (default behaviour)", + "value": "_all" + }, + "customSet": { + "summary": "Only fields date and insulin will be returned", + "value": "date,insulin" + } + } + } + ], + "responses": { + "200": { + "description": "Changed documents since specified timestamp", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModifiedMaximum" + }, + "ETag": { + "$ref": "#/components/schemas/headerEtagLastModifiedMaximum" + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "text/csv": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + } + } + }, + "204": { + "description": "No changes detected" + }, + "400": { + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + }, + "404": { + "description": "The collection or document specified was not found." + }, + "406": { + "description": "The requested content type (in `Accept` header) is not supported." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/{collection}/history/{lastModified}": { + "get": { + "tags": [ + "generic" + ], + "summary": "HISTORY: Retrieves incremental changes since timestamp", + "description": "This HISTORY operation variant is more precise than the previous one with `Last-Modified` request HTTP header), because it does not loose milliseconds precision.\n\nSince this variant queries for changed documents by timestamp precisely and exclusively, the last modified document does not repeat itself in following calls. That is the reason why is this variant more suitable for continuous synchronization with other systems.\n\nThis variant behaves quite the same as the previous one in all other aspects.", + "operationId": "HISTORY2", + "parameters": [ + { + "name": "collection", + "in": "path", + "description": "Collection to which the operation is targeted", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "$ref": "#/components/schemas/paramCollection" + } + }, + { + "name": "lastModified", + "in": "path", + "description": "Starting timestamp (in UNIX epoch format, defined with respect to server's clock) since which the changes in documents are to be listed. Query for modified documents is made using \"greater than\" operator (not including equal timestamps).", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "description": "Maximum number of documents to get in result array", + "required": false, + "style": "form", + "explode": true, + "schema": { + "minimum": 1, + "type": "integer", + "example": 100 + } + }, + { + "name": "fields", + "in": "query", + "description": "A chosen set of fields to return in response. Either you can enumerate specific fields of interest or use the predefined set. Sample parameter values:\n\n_all: All fields will be returned (default value)\n\ndate,insulin: Only fields `date` and `insulin` will be returned", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "default": "_all" + }, + "examples": { + "all": { + "summary": "All fields will be returned (default behaviour)", + "value": "_all" + }, + "customSet": { + "summary": "Only fields date and insulin will be returned", + "value": "date,insulin" + } + } + } + ], + "responses": { + "200": { + "description": "Changed documents since specified timestamp", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModifiedMaximum" + }, + "ETag": { + "$ref": "#/components/schemas/headerEtagLastModifiedMaximum" + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "text/csv": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + } + } + }, + "204": { + "description": "No changes detected" + }, + "400": { + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + }, + "404": { + "description": "The collection or document specified was not found." + }, + "406": { + "description": "The requested content type (in `Accept` header) is not supported." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/version": { + "get": { + "tags": [ + "other" + ], + "summary": "VERSION: Returns actual version information", + "description": "No authentication is needed for this commnad (it is public)", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Version" + } + } + } + } + } + } + }, + "/status": { + "get": { + "tags": [ + "other" + ], + "summary": "STATUS: Returns actual version information and all permissions granted for API", + "description": "This operation requires authorization in contrast with VERSION operation.", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Status" + } + } + } + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, + "/lastModified": { + "get": { + "tags": [ + "other" + ], + "summary": "LAST MODIFIED: Retrieves timestamp of the last modification of every collection", + "description": "LAST MODIFIED operation inspects collections separately (in parallel) and for each of them it finds the date of any last modification (insertion, update, deletion).\nNot only `srvModified`, but also `date` and `created_at` fields are inspected (as a fallback to previous API).\n\nThis operation requires `read` permission for the API and the collections (e.g. `api:treatments:read`). For each collection the permission is checked separately, you will get timestamps only for those collections that you have access to.", + "operationId": "LAST-MODIFIED", + "parameters": [ + { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful operation returning the timestamps", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LastModifiedResult" + } + } + } + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + } + }, + "components": { + "schemas": { + "headerLocation": { + "type": "string", + "description": "Location of document - the relative part of URL. This can be used to parse the identifier of just created document.\nExample=/api/v3/treatments/53409478-105f-11e9-ab14-d663bd873d93" + }, + "headerLastModified": { + "type": "string", + "description": "Timestamp of the last document modification on the server, formatted as\n', :: GMT'.\nThis field is relevant only for documents which were somehow modified by API v3 (inserted, updated or deleted) and it was generated using server's clock.\nExample='Wed, 17 Oct 2018 05:13:00 GMT'" + }, + "headerLastModifiedMaximum": { + "type": "string", + "description": "The latest (maximum) `srvModified` field of all returning documents, formatted as\n', :: GMT'.\nExample='Wed, 17 Oct 2018 05:13:00 GMT'" + }, + "headerEtagLastModifiedMaximum": { + "type": "string", + "description": "The latest (maximum) `srvModified` field of all returning documents. This header does not loose milliseconds from the date (unlike the `Last-Modified` header).\nExample='W/\"1525383610088\"'" + }, + "paramCollection": { + "type": "string", + "example": "treatments", + "enum": [ + "devicestatus", + "entries", + "food", + "profile", + "settings", + "treatments" + ] + }, + "paramIdentifier": { + "type": "string", + "example": "53409478-105f-11e9-ab14-d663bd873d93" + }, + "DocumentBase": { + "required": [ + "app", + "date" + ], + "properties": { + "identifier": { + "type": "string", + "description": "Main addressing, required field that identifies document in the collection.\n\nThe client should not create the identifier, the server automatically assigns it when the document is inserted.\n\nThe server calculates the identifier in such a way that duplicate records are automatically merged (deduplicating is made by `date`, `device` and `eventType` fields).\n\nThe best practise for all applications is not to loose identifiers from received documents, but save them carefully for other consumer applications/systems.\n\nAPI v3 has a fallback mechanism in place, for documents without `identifier` field the `identifier` is set to internal `_id`, when reading or addressing these documents.\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "example": "53409478-105f-11e9-ab14-d663bd873d93" + }, + "date": { + "type": "integer", + "description": "Required timestamp when the record or event occured, you can choose from three input formats\n- Unix epoch in milliseconds (1525383610088)\n- Unix epoch in seconds (1525383610)\n- ISO 8601 with optional timezone ('2018-05-03T21:40:10.088Z' or '2018-05-03T23:40:10.088+02:00')\n\nThe date is always stored in a normalized form - UTC with zero offset. If UTC offset was present, it is going to be set in the `utcOffset` field.\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "format": "int64", + "example": 1525383610088 + }, + "utcOffset": { + "type": "integer", + "description": "Local UTC offset (timezone) of the event in minutes. This field can be set either directly by the client (in the incoming document) or it is automatically parsed from the `date` field.\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "example": 120 + }, + "app": { + "type": "string", + "description": "Application or system in which the record was entered by human or device for the first time.\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "example": "xdrip" + }, + "device": { + "type": "string", + "description": "The device from which the data originated (including serial number of the device, if it is relevant and safe).\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "example": "dexcom G5" + }, + "_id": { + "type": "string", + "description": "Internally assigned database id. This field is for internal server purposes only, clients communicate with API by using identifier field.", + "example": "58e9dfbc166d88cc18683aac" + }, + "srvCreated": { + "type": "integer", + "description": "The server's timestamp of document insertion into the database (Unix epoch in ms). This field appears only for documents which were inserted by API v3.\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "format": "int64", + "example": 1525383610088 + }, + "subject": { + "type": "string", + "description": "Name of the security subject (within Nightscout scope) which has created the document. This field is automatically set by the server from the passed token or JWT.\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "example": "uploader" + }, + "srvModified": { + "type": "integer", + "description": "The server's timestamp of the last document modification in the database (Unix epoch in ms). This field appears only for documents which were somehow modified by API v3 (inserted, updated or deleted).\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "format": "int64", + "example": 1525383610088 + }, + "modifiedBy": { + "type": "string", + "description": "Name of the security subject (within Nightscout scope) which has patched or deleted the document for the last time. This field is automatically set by the server.\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "example": "admin" + }, + "isValid": { + "type": "boolean", + "description": "A flag set by the server only for deleted documents. This field appears only within history operation and for documents which were deleted by API v3 (and they always have a false value)\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "example": false + }, + "isReadOnly": { + "type": "boolean", + "description": "A flag set by client that locks the document from any changes. Every document marked with `isReadOnly=true` is forever immutable and cannot even be deleted.\n\nAny attempt to modify the read-only document will end with status 422 UNPROCESSABLE ENTITY.", + "example": true + } + }, + "description": "Shared base for all documents" + }, + "DeviceStatus": { + "description": "State of physical device, which is a technical part of the whole T1D compensation system", + "allOf": [ + { + "$ref": "#/components/schemas/DocumentBase" + }, + { + "type": "object", + "properties": { + "some_property": { + "type": "string", + "description": "..." + } + } + } + ] + }, + "Entry": { + "description": "Blood glucose measurements and CGM calibrations", + "allOf": [ + { + "$ref": "#/components/schemas/DocumentBase" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "sgv, mbg, cal, etc" + }, + "sgv": { + "type": "number", + "description": "The glucose reading. (only available for sgv types)" + }, + "direction": { + "type": "string", + "description": "Direction of glucose trend reported by CGM. (only available for sgv types)", + "example": "\"DoubleDown\", \"SingleDown\", \"FortyFiveDown\", \"Flat\", \"FortyFiveUp\", \"SingleUp\", \"DoubleUp\", \"NOT COMPUTABLE\", \"RATE OUT OF RANGE\" for xdrip" + }, + "noise": { + "type": "number", + "description": "Noise level at time of reading. (only available for sgv types)" + }, + "filtered": { + "type": "number", + "description": "The raw filtered value directly from CGM transmitter. (only available for sgv types)" + }, + "unfiltered": { + "type": "number", + "description": "The raw unfiltered value directly from CGM transmitter. (only available for sgv types)" + }, + "rssi": { + "type": "number", + "description": "The signal strength from CGM transmitter. (only available for sgv types)" + }, + "units": { + "type": "string", + "description": "The units for the glucose value, mg/dl or mmol/l. It is strongly recommended to fill in this field.", + "example": "\"mg\", \"mmol\"" + } + } + } + ] + }, + "Food": { + "description": "Nutritional values of food", + "allOf": [ + { + "$ref": "#/components/schemas/DocumentBase" + }, + { + "type": "object", + "properties": { + "food": { + "type": "string", + "description": "food, quickpick" + }, + "category": { + "type": "string", + "description": "Name for a group of related records" + }, + "subcategory": { + "type": "string", + "description": "Name for a second level of groupping" + }, + "name": { + "type": "string", + "description": "Name of the food described" + }, + "portion": { + "type": "number", + "description": "Number of units (e.g. grams) of the whole portion described" + }, + "unit": { + "type": "string", + "description": "Unit for the portion", + "example": "\"g\", \"ml\", \"oz\"" + }, + "carbs": { + "type": "number", + "description": "Amount of carbs in the portion in grams" + }, + "fat": { + "type": "number", + "description": "Amount of fat in the portion in grams" + }, + "protein": { + "type": "number", + "description": "Amount of proteins in the portion in grams" + }, + "energy": { + "type": "number", + "description": "Amount of energy in the portion in kJ" + }, + "gi": { + "type": "number", + "description": "Glycemic index (1=low, 2=medium, 3=high)" + }, + "hideafteruse": { + "type": "boolean", + "description": "Flag used for quickpick" + }, + "hidden": { + "type": "boolean", + "description": "Flag used for quickpick" + }, + "position": { + "type": "number", + "description": "Ordering field for quickpick" + }, + "portions": { + "type": "number", + "description": "component multiplier if defined inside quickpick compound" + }, + "foods": { + "type": "array", + "description": "Neighbour documents (from food collection) that together make a quickpick compound", + "items": { + "$ref": "#/components/schemas/Food" + } + } + } + } + ] + }, + "Profile": { + "description": "Parameters describing body functioning relative to T1D + compensation parameters", + "allOf": [ + { + "$ref": "#/components/schemas/DocumentBase" + }, + { + "type": "object", + "properties": { + "some_property": { + "type": "string", + "description": "..." + } + } + } + ] + }, + "Settings": { + "description": "A document representing persisted settings of some application or system (it could by Nightscout itself as well). This pack of options serves as a backup or as a shared centralized storage for multiple client instances. It is a probably good idea to `PATCH` the document instead of `UPDATE` operation, e.g. when changing one settings option in a client application.\n\n`identifier` represents a client application name here, e.g. `xdrip` or `aaps`.\n\n`Settings` collection has a more specific authorization required. For the `SEARCH` operation within this collection, you need an `admin` permission, such as `api:settings:admin`. The goal is to isolate individual client application settings.", + "allOf": [ + { + "$ref": "#/components/schemas/DocumentBase" + }, + { + "type": "object", + "properties": { + "some_property": { + "type": "string", + "description": "..." + } + } + } + ] + }, + "Treatment": { + "description": "T1D compensation action", + "allOf": [ + { + "$ref": "#/components/schemas/DocumentBase" + }, + { + "type": "object", + "properties": { + "eventType": { + "type": "string", + "description": "The type of treatment event.\n\nNote: this field is immutable by the client (it cannot be updated or patched)", + "example": "\"BG Check\", \"Snack Bolus\", \"Meal Bolus\", \"Correction Bolus\", \"Carb Correction\", \"Combo Bolus\", \"Announcement\", \"Note\", \"Question\", \"Exercise\", \"Site Change\", \"Sensor Start\", \"Sensor Change\", \"Pump Battery Change\", \"Insulin Change\", \"Temp Basal\", \"Profile Switch\", \"D.A.D. Alert\", \"Temporary Target\", \"OpenAPS Offline\", \"Bolus Wizard\"" + }, + "glucose": { + "type": "string", + "description": "Current glucose." + }, + "glucoseType": { + "type": "string", + "description": "Method used to obtain glucose, Finger or Sensor.", + "example": "\"Sensor\", \"Finger\", \"Manual\"" + }, + "units": { + "type": "string", + "description": "The units for the glucose value, mg/dl or mmol/l. It is strongly recommended to fill in this field when `glucose` is entered.", + "example": "\"mg/dl\", \"mmol/l\"" + }, + "carbs": { + "type": "number", + "description": "Amount of carbs given." + }, + "protein": { + "type": "number", + "description": "Amount of protein given." + }, + "fat": { + "type": "number", + "description": "Amount of fat given." + }, + "insulin": { + "type": "number", + "description": "Amount of insulin, if any." + }, + "duration": { + "type": "number", + "description": "Duration in minutes." + }, + "preBolus": { + "type": "number", + "description": "How many minutes the bolus was given before the meal started." + }, + "splitNow": { + "type": "number", + "description": "Immediate part of combo bolus (in percent)." + }, + "splitExt": { + "type": "number", + "description": "Extended part of combo bolus (in percent)." + }, + "percent": { + "type": "number", + "description": "Eventual basal change in percent." + }, + "absolute": { + "type": "number", + "description": "Eventual basal change in absolute value (insulin units per hour)." + }, + "targetTop": { + "type": "number", + "description": "Top limit of temporary target." + }, + "targetBottom": { + "type": "number", + "description": "Bottom limit of temporary target." + }, + "profile": { + "type": "string", + "description": "Name of the profile to which the pump has been switched." + }, + "reason": { + "type": "string", + "description": "For example the reason why the profile has been switched or why the temporary target has been set." + }, + "notes": { + "type": "string", + "description": "Description/notes of treatment." + }, + "enteredBy": { + "type": "string", + "description": "Who entered the treatment." + } + } + } + ] + }, + "DocumentToPost": { + "type": "object", + "description": "Single document", + "example": { + "identifier": "53409478-105f-11e9-ab14-d663bd873d93", + "date": 1532936118000, + "utcOffset": 120, + "carbs": 10, + "insulin": 1, + "eventType": "Snack Bolus", + "app": "xdrip", + "subject": "uploader" + }, + "oneOf": [ + { + "$ref": "#/components/schemas/DeviceStatus" + }, + { + "$ref": "#/components/schemas/Entry" + }, + { + "$ref": "#/components/schemas/Food" + }, + { + "$ref": "#/components/schemas/Profile" + }, + { + "$ref": "#/components/schemas/Settings" + }, + { + "$ref": "#/components/schemas/Treatment" + } + ] + }, + "Document": { + "type": "object", + "description": "Single document", + "example": { + "identifier": "53409478-105f-11e9-ab14-d663bd873d93", + "date": 1532936118000, + "utcOffset": 120, + "carbs": 10, + "insulin": 1, + "eventType": "Snack Bolus", + "srvCreated": 1532936218000, + "srvModified": 1532936218000, + "app": "xdrip", + "subject": "uploader", + "modifiedBy": "admin" + }, + "xml": { + "name": "item" + }, + "oneOf": [ + { + "$ref": "#/components/schemas/DeviceStatus" + }, + { + "$ref": "#/components/schemas/Entry" + }, + { + "$ref": "#/components/schemas/Food" + }, + { + "$ref": "#/components/schemas/Profile" + }, + { + "$ref": "#/components/schemas/Settings" + }, + { + "$ref": "#/components/schemas/Treatment" + } + ] + }, + "DeviceStatusArray": { + "type": "array", + "description": "Array of documents", + "items": { + "$ref": "#/components/schemas/DeviceStatus" + } + }, + "EntryArray": { + "type": "array", + "description": "Array of documents", + "items": { + "$ref": "#/components/schemas/Entry" + } + }, + "FoodArray": { + "type": "array", + "description": "Array of documents", + "items": { + "$ref": "#/components/schemas/Food" + } + }, + "ProfileArray": { + "type": "array", + "description": "Array of documents", + "items": { + "$ref": "#/components/schemas/Profile" + } + }, + "SettingsArray": { + "type": "array", + "description": "Array of settings", + "items": { + "$ref": "#/components/schemas/Settings" + } + }, + "TreatmentArray": { + "type": "array", + "description": "Array of documents", + "items": { + "$ref": "#/components/schemas/Treatment" + } + }, + "DocumentArray": { + "type": "object", + "xml": { + "name": "items" + }, + "oneOf": [ + { + "$ref": "#/components/schemas/DeviceStatusArray" + }, + { + "$ref": "#/components/schemas/EntryArray" + }, + { + "$ref": "#/components/schemas/FoodArray" + }, + { + "$ref": "#/components/schemas/ProfileArray" + }, + { + "$ref": "#/components/schemas/SettingsArray" + }, + { + "$ref": "#/components/schemas/TreatmentArray" + } + ] + }, + "Version": { + "type": "object", + "properties": { + "version": { + "type": "string", + "description": "The whole Nightscout instance version", + "example": "0.10.2-release-20171201" + }, + "apiVersion": { + "type": "string", + "description": "API v3 subsystem version", + "example": "3.0.0" + }, + "srvDate": { + "type": "number", + "description": "Actual server date and time in UNIX epoch format", + "example": 1532936118000 + }, + "storage": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of storage engine used", + "example": "mongodb" + }, + "version": { + "type": "string", + "description": "Version of the storage engine", + "example": "4.0.6" + } + } + } + }, + "description": "Information about versions" + }, + "Status": { + "description": "Information about versions and API permissions", + "allOf": [ + { + "$ref": "#/components/schemas/Version" + }, + { + "type": "object", + "properties": { + "apiPermissions": { + "type": "object", + "properties": { + "devicestatus": { + "type": "string", + "example": "crud" + }, + "entries": { + "type": "string", + "example": "r" + }, + "food": { + "type": "string", + "example": "crud" + }, + "profile": { + "type": "string", + "example": "r" + }, + "treatments": { + "type": "string", + "example": "crud" + } + } + } + } + } + ] + }, + "LastModifiedResult": { + "properties": { + "srvDate": { + "type": "integer", + "description": "Actual storage server date (Unix epoch in ms).", + "format": "int64", + "example": 1556260878776 + }, + "collections": { + "type": "object", + "properties": { + "devicestatus": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1556260760974 + }, + "treatments": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1553374184169 + }, + "entries": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1556260758768 + }, + "profile": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1548524042744 + } + }, + "description": "Collections which the user have read access to." + } + }, + "description": "Result of LAST MODIFIED operation" + } + }, + "responses": { + "201Created": { + "description": "Successfully created a new document in collection", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + } + } + }, + "201CreatedLocation": { + "description": "Successfully created a new document in collection", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + }, + "Location": { + "$ref": "#/components/schemas/headerLocation" + } + } + }, + "204NoContent": { + "description": "Successfully finished operation", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + } + } + }, + "204NoContentLocation": { + "description": "Successfully finished operation", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + }, + "Location": { + "$ref": "#/components/schemas/headerLocation" + } + } + }, + "304NotModified": { + "description": "The document has not been modified on the server since timestamp specified in If-Modified-Since header", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + } + } + }, + "400BadRequest": { + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + }, + "401Unauthorized": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + }, + "403Forbidden": { + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + }, + "404NotFound": { + "description": "The collection or document specified was not found." + }, + "406NotAcceptable": { + "description": "The requested content type (in `Accept` header) is not supported." + }, + "412PreconditionFailed": { + "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header)." + }, + "410Gone": { + "description": "The requested document has already been deleted." + }, + "422UnprocessableEntity": { + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + }, + "search200": { + "description": "Successful operation returning array of documents matching the filtering criteria", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "text/csv": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + } + } + }, + "search204": { + "description": "Successful operation - no documents matching the filtering criteria" + }, + "read200": { + "description": "The document has been succesfully found and its JSON form returned in the response content.", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModified" + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Document" + } + }, + "text/csv": { + "schema": { + "$ref": "#/components/schemas/Document" + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/Document" + } + } + } + }, + "history200": { + "description": "Changed documents since specified timestamp", + "headers": { + "Last-Modified": { + "$ref": "#/components/schemas/headerLastModifiedMaximum" + }, + "ETag": { + "$ref": "#/components/schemas/headerEtagLastModifiedMaximum" + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "text/csv": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/DocumentArray" + } + } + } + }, + "history204": { + "description": "No changes detected" + }, + "lastModified200": { + "description": "Successful operation returning the timestamps", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LastModifiedResult" + } + } + } + } + }, + "parameters": { + "dateHeader": { + "name": "Date", + "in": "header", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory header serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `now` query parameter.\nExample:\n\n
Date: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + "nowParam": { + "name": "now", + "in": "query", + "description": "Timestamp (defined by client's clock) when the HTTP request was constructed on client. This mandatory parameter serves as an anti-replay precaution. After a period of time (specified by `API3_TIME_SKEW_TOLERANCE`) the message won't be valid any more and it will be denied with HTTP 401 Unauthorized code. This can be set alternatively in `Date` header.\n\nExample:\n\n
now=1525383610088
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + "tokenParam": { + "name": "token", + "in": "query", + "description": "An alternative way of authorization - passing accessToken in a query parameter.\n\nExample:\n\n
token=testadmin-bf2591231bd2c042
", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + "limitParam": { + "name": "limit", + "in": "query", + "description": "Maximum number of documents to get in result array", + "required": false, + "style": "form", + "explode": true, + "schema": { + "minimum": 1, + "type": "integer", + "example": 100 + } + }, + "skipParam": { + "name": "skip", + "in": "query", + "description": "Number of documents to skip from collection query before loading them into result array (used for pagination)", + "required": false, + "style": "form", + "explode": true, + "schema": { + "minimum": 0, + "type": "integer", + "example": 0, + "default": 0 + } + }, + "sortParam": { + "name": "sort", + "in": "query", + "description": "Field name by which the sorting of documents is performed. This parameter cannot be combined with `sort$desc` parameter.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + "sortDescParam": { + "name": "sort$desc", + "in": "query", + "description": "Field name by which the descending (reverse) sorting of documents is performed. This parameter cannot be combined with `sort` parameter.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + "permanentParam": { + "name": "permanent", + "in": "query", + "description": "If true, the deletion will be irreversible and it will not appear in `HISTORY` operation. Normally there is no reason for setting this flag.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "boolean" + } + }, + "fieldsParam": { + "name": "fields", + "in": "query", + "description": "A chosen set of fields to return in response. Either you can enumerate specific fields of interest or use the predefined set. Sample parameter values:\n\n_all: All fields will be returned (default value)\n\ndate,insulin: Only fields `date` and `insulin` will be returned", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "default": "_all" + }, + "examples": { + "all": { + "summary": "All fields will be returned (default behaviour)", + "value": "_all" + }, + "customSet": { + "summary": "Only fields date and insulin will be returned", + "value": "date,insulin" + } + } + }, + "filterParams": { + "name": "filter_parameters", + "in": "query", + "description": "Any number of filtering operators.\n\nEach filtering operator has name like `$`, e.g. `carbs$gt=2` which represents filtering rule \"The field carbs must be present and greater than 2\".\n\nYou can choose from operators:\n\n`eq`=equals, `insulin$eq=1.5`\n\n`ne`=not equals, `insulin$ne=1.5`\n\n`gt`=greater than, `carbs$gt=30`\n\n`gte`=greater than or equal, `carbs$gte=30`\n\n`lt`=less than, `carbs$lt=30`\n\n`lte`=less than or equal, `carbs$lte=30`\n\n`in`=in specified set, `type$in=sgv|mbg|cal`\n\n`nin`=not in specified set, `eventType$nin=Temp%20Basal|Temporary%20Target`\n\n`re`=regex pattern, `eventType$re=Temp.%2A`\n\nWhen filtering by field `date`, `created_at`, `srvModified` or `srvCreated`, you can choose from three input formats\n- Unix epoch in milliseconds (1525383610088)\n- Unix epoch in seconds (1525383610)\n- ISO 8601 with optional timezone ('2018-05-03T21:40:10.088Z' or '2018-05-03T23:40:10.088+02:00')\n\nThe date is always queried in a normalized form - UTC with zero offset and with the correct format (1525383610088 for `date`, '2018-05-03T21:40:10.088Z' for `created_at`).", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + "lastModifiedRequiredHeader": { + "name": "Last-Modified", + "in": "header", + "description": "Starting timestamp (defined with respect to server's clock) since which the changes in documents are to be listed, formatted as:\n\n<day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n\nExample:\n\n
Last-Modified: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": true, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + "ifModifiedSinceHeader": { + "name": "If-Modified-Since", + "in": "header", + "description": "Timestamp (defined with respect to server's clock) of the last document modification formatted as:\n\n<day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n\nIf this header is present, the operation will compare its value with the srvModified timestamp of the document at first and the operation result then may differ. The srvModified timestamp was defined by server's clock.\n\nExample:\n\n
If-Modified-Since: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + }, + "ifUnmodifiedSinceHeader": { + "name": "If-Unmodified-Since", + "in": "header", + "description": "Timestamp (defined with respect to server's clock) of the last document modification formatted as:\n\n<day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n\nIf this header is present, the operation will compare its value with the srvModified timestamp of the document at first and the operation result then may differ. The srvModified timestamp was defined by server's clock.\n\nExample:\n\n
If-Unmodified-Since: Wed, 17 Oct 2018 05:13:00 GMT
", + "required": false, + "style": "simple", + "explode": false, + "schema": { + "type": "string" + } + } + }, + "securitySchemes": { + "accessToken": { + "type": "apiKey", + "description": "Add token as query item in the URL or as HTTP header. You can manage access token in `/admin`.\nEach operation requires a specific permission that has to be granted (via security role) to the security subject, which was authenticated by `token` parameter/header or `JWT`. E.g. for creating new `devicestatus` document via API you need `api:devicestatus:create` permission.", + "name": "token", + "in": "query" + }, + "jwtoken": { + "type": "http", + "description": "Use this if you know the temporary json webtoken.", + "scheme": "bearer", + "bearerFormat": "JWT" + } + } + } +} diff --git a/tests/api3.basic.test.js b/tests/api3.basic.test.js index fc7a885269f..d13b8628562 100644 --- a/tests/api3.basic.test.js +++ b/tests/api3.basic.test.js @@ -23,15 +23,6 @@ describe('Basic REST API3', function() { }); - it('GET /swagger', async () => { - let res = await request(self.app) - .get('/api/v3/swagger.yaml') - .expect(200); - - res.header['content-length'].should.be.above(0); - }); - - it('GET /version', async () => { let res = await request(self.app) .get('/api/v3/version') From 76b9de9a8e92d9c27b33b6992738db65e63d2de3 Mon Sep 17 00:00:00 2001 From: Caleb Date: Tue, 20 Oct 2020 02:57:36 -0600 Subject: [PATCH 004/194] Use lodash.get() in virtual assistant API endpoints (v2) (#6199) * Fixed #5632 - Improved value resolution * More value resolution improvements * Fixed a couple object paths --- ...add-virtual-assistant-support-to-plugin.md | 5 ++- lib/api/alexa/index.js | 20 ++++------- lib/api/googlehome/index.js | 3 +- lib/plugins/ar2.js | 5 +-- lib/plugins/basalprofile.js | 18 ++++------ lib/plugins/cob.js | 8 +++-- lib/plugins/dbsize.js | 10 ++++-- lib/plugins/iob.js | 5 +-- lib/plugins/loop.js | 12 ++++--- lib/plugins/openaps.js | 11 +++--- lib/plugins/pump.js | 2 +- lib/plugins/rawbg.js | 5 +-- lib/plugins/upbat.js | 5 +-- lib/plugins/xdripjs.js | 35 +++++++++++-------- 14 files changed, 75 insertions(+), 69 deletions(-) diff --git a/docs/plugins/add-virtual-assistant-support-to-plugin.md b/docs/plugins/add-virtual-assistant-support-to-plugin.md index 60ac1d1957b..6c581013b9e 100644 --- a/docs/plugins/add-virtual-assistant-support-to-plugin.md +++ b/docs/plugins/add-virtual-assistant-support-to-plugin.md @@ -36,9 +36,8 @@ There are 2 types of handlers that you can supply: A plugin can expose multiple intent handlers (e.g. useful when it can supply multiple kinds of metrics). Each intent handler should be structured as follows: + `intent` - This is the intent this handler is built for. Right now, the templates used by both Alexa and Google Home use only the `"MetricNow"` intent (used for getting the present value of the requested metric) -+ `metrics` - An array of metric name(s) the handler will supply. e.g. "What is my `metric`" - iob, bg, cob, etc. Make sure to add the metric name and its synonyms to the list of metrics used by the virtual assistant(s). - - **IMPORTANT NOTE:** There is no protection against overlapping metric names, so PLEASE make sure your metric name is unique! - - Note: Although this value *is* an array, you really should only supply one (unique) value, and then add aliases or synonyms to that value in the list of metrics for the virtual assistant. We keep this value as an array for backwards compatibility. ++ `metrics` - An array of metric name(s) the handler will supply. e.g. "What is my `metric`" - iob, bg, cob, etc. Although this value *is* an array, you really should only supply one (unique) value, and then add aliases or synonyms to that value in the list of metrics for the virtual assistant. We keep this value as an array for backwards compatibility. + - **IMPORTANT NOTE:** There is no protection against overlapping metric names, so PLEASE make sure your metric name is unique! + `intenthandler` - This is a callback function that receives 3 arguments: - `callback` Call this at the end of your function. It requires 2 arguments: - `title` - Title of the handler. This is the value that will be displayed on the Alexa card (for devices with a screen). The Google Home response doesn't currently display a card, so it doesn't use this value. diff --git a/lib/api/alexa/index.js b/lib/api/alexa/index.js index 2a5fd4ef6cd..3c31bf1ce00 100644 --- a/lib/api/alexa/index.js +++ b/lib/api/alexa/index.js @@ -1,5 +1,6 @@ 'use strict'; +var _ = require('lodash'); var moment = require('moment'); function configure (app, wares, ctx, env) { @@ -18,7 +19,7 @@ function configure (app, wares, ctx, env) { api.post('/alexa', ctx.authorization.isPermitted('api:*:read'), function (req, res, next) { console.log('Incoming request from Alexa'); - var locale = req.body.request.locale; + var locale = _.get(req, 'body.request.locale'); if(locale){ if(locale.length > 2) { locale = locale.substr(0, 2); @@ -78,19 +79,10 @@ function configure (app, wares, ctx, env) { function handleIntent(intentName, slots, next) { var metric; if (slots) { - if (slots.metric - && slots.metric.resolutions - && slots.metric.resolutions.resolutionsPerAuthority - && slots.metric.resolutions.resolutionsPerAuthority.length - && slots.metric.resolutions.resolutionsPerAuthority[0].status - && slots.metric.resolutions.resolutionsPerAuthority[0].status.code - && slots.metric.resolutions.resolutionsPerAuthority[0].status.code == "ER_SUCCESS_MATCH" - && slots.metric.resolutions.resolutionsPerAuthority[0].values - && slots.metric.resolutions.resolutionsPerAuthority[0].values.length - && slots.metric.resolutions.resolutionsPerAuthority[0].values[0].value - && slots.metric.resolutions.resolutionsPerAuthority[0].values[0].value.name - ){ - metric = slots.metric.resolutions.resolutionsPerAuthority[0].values[0].value.name; + var slotStatus = _.get(slots, 'metric.resolutions.resolutionsPerAuthority[0].status.code'); + var slotName = _.get(slots, 'metric.resolutions.resolutionsPerAuthority[0].values[0].value.name'); + if (slotStatus == "ER_SUCCESS_MATCH" && slotName) { + metric = slotName; } else { next(translate('virtAsstUnknownIntentTitle'), translate('virtAsstUnknownIntentText')); return; diff --git a/lib/api/googlehome/index.js b/lib/api/googlehome/index.js index b44715b25eb..cd42aa0ff37 100644 --- a/lib/api/googlehome/index.js +++ b/lib/api/googlehome/index.js @@ -1,5 +1,6 @@ 'use strict'; +var _ = require('lodash'); var moment = require('moment'); function configure (app, wares, ctx, env) { @@ -18,7 +19,7 @@ function configure (app, wares, ctx, env) { api.post('/googlehome', ctx.authorization.isPermitted('api:*:read'), function (req, res, next) { console.log('Incoming request from Google Home'); - var locale = req.body.queryResult.languageCode; + var locale = _.get(req, 'body.queryResult.languageCode'); if(locale){ if(locale.length > 2) { locale = locale.substr(0, 2); diff --git a/lib/plugins/ar2.js b/lib/plugins/ar2.js index 133c5b8d3c9..ab8675a0342 100644 --- a/lib/plugins/ar2.js +++ b/lib/plugins/ar2.js @@ -147,8 +147,9 @@ function init (ctx) { }; function virtAsstAr2Handler (next, slots, sbx) { - if (sbx.properties.ar2.forecast.predicted) { - var forecast = sbx.properties.ar2.forecast.predicted; + var predicted = _.get(sbx, 'properties.ar2.forecast.predicted'); + if (predicted) { + var forecast = predicted; var max = forecast[0].mgdl; var min = forecast[0].mgdl; var maxForecastMills = forecast[0].mills; diff --git a/lib/plugins/basalprofile.js b/lib/plugins/basalprofile.js index 4347a7005ec..806dde5859d 100644 --- a/lib/plugins/basalprofile.js +++ b/lib/plugins/basalprofile.js @@ -2,6 +2,7 @@ var times = require('../times'); var moment = require('moment'); var consts = require('../constants'); +var _ = require('lodash'); function init (ctx) { @@ -114,13 +115,13 @@ function init (ctx) { function basalMessage(slots, sbx) { var basalValue = sbx.data.profile.getTempBasal(sbx.time); var response = translate('virtAsstUnknown'); - var preamble = ''; + var pwd = _.get(slots, 'pwd.value'); + var preamble = pwd ? translate('virtAsstPreamble3person', { + params: [ + pwd + ] + }) : translate('virtAsstPreamble'); if (basalValue.treatment) { - preamble = (slots && slots.pwd && slots.pwd.value) ? translate('virtAsstPreamble3person', { - params: [ - slots.pwd.value - ] - }) : translate('virtAsstPreamble'); var minutesLeft = moment(basalValue.treatment.endmills).from(moment(sbx.time)); response = translate('virtAsstBasalTemp', { params: [ @@ -130,11 +131,6 @@ function init (ctx) { ] }); } else { - preamble = (slots && slots.pwd && slots.pwd.value) ? translate('virtAsstPreamble3person', { - params: [ - slots.pwd.value - ] - }) : translate('virtAsstPreamble'); response = translate('virtAsstBasal', { params: [ preamble, diff --git a/lib/plugins/cob.js b/lib/plugins/cob.js index c6d4c4fdf8f..250614ecfd6 100644 --- a/lib/plugins/cob.js +++ b/lib/plugins/cob.js @@ -293,11 +293,13 @@ function init (ctx) { function virtAsstCOBHandler (next, slots, sbx) { var response = ''; - var value = (sbx.properties.cob && sbx.properties.cob.cob) ? sbx.properties.cob.cob : 0; - if (slots && slots.pwd && slots.pwd.value) { + var cob = _.get(sbx, 'properties.cob.cob'); + var pwd = _.get(slots, 'pwd.value'); + var value = cob ? cob : 0; + if (pwd) { response = translate('virtAsstCob3person', { params: [ - slots.pwd.value.replace('\'s', '') + pwd.replace('\'s', '') , value ] }); diff --git a/lib/plugins/dbsize.js b/lib/plugins/dbsize.js index 1698fa050b3..c76e36cb9e8 100644 --- a/lib/plugins/dbsize.js +++ b/lib/plugins/dbsize.js @@ -1,6 +1,7 @@ 'use strict'; var levels = require('../levels'); +var _ = require('lodash'); function init (ctx) { var translate = ctx.language.translate; @@ -117,11 +118,14 @@ function init (ctx) { }; function virtAsstDatabaseSizeHandler (next, slots, sbx) { - if (sbx.properties.dbsize.display) { + var display = _.get(sbx, 'properties.dbsize.display'); + var dataSize = _.get(sbx, 'properties.dbsize.details.dataSize'); + var dataPercentage = _.get(sbx, 'properties.dbsize.dataPercentage'); + if (display) { var response = translate('virtAsstDatabaseSize', { params: [ - sbx.properties.dbsize.details.dataSize - , sbx.properties.dbsize.dataPercentage + dataSize + , dataPercentage ] }); next(translate('virtAsstTitleDatabaseSize'), response); diff --git a/lib/plugins/iob.js b/lib/plugins/iob.js index 96bea03b3ff..cdcc15706e3 100644 --- a/lib/plugins/iob.js +++ b/lib/plugins/iob.js @@ -262,10 +262,11 @@ function init(ctx) { } function getIob(sbx) { - if (sbx.properties.iob && sbx.properties.iob.iob !== 0) { + var iob = _.get(sbx, 'properties.iob.iob'); + if (iob !== 0) { return translate('virtAsstIobUnits', { params: [ - utils.toFixed(sbx.properties.iob.iob) + utils.toFixed(iob) ] }); } diff --git a/lib/plugins/loop.js b/lib/plugins/loop.js index 46d16738787..e7d3ae91c93 100644 --- a/lib/plugins/loop.js +++ b/lib/plugins/loop.js @@ -529,13 +529,14 @@ function init (ctx) { }; function virtAsstForecastHandler (next, slots, sbx) { - if (sbx.properties.loop.lastLoop.predicted) { - var forecast = sbx.properties.loop.lastLoop.predicted.values; + var predicted = _.get(sbx, 'properties.loop.lastLoop.predicted'); + if (predicted) { + var forecast = predicted.values; var max = forecast[0]; var min = forecast[0]; var maxForecastIndex = Math.min(6, forecast.length); - var startPrediction = moment(sbx.properties.loop.lastLoop.predicted.startDate); + var startPrediction = moment(predicted.startDate); var endPrediction = startPrediction.clone().add(maxForecastIndex * 5, 'minutes'); if (endPrediction.valueOf() < sbx.time) { next(translate('virtAsstTitleLoopForecast'), translate('virtAsstForecastUnavailable')); @@ -573,8 +574,9 @@ function init (ctx) { } function virtAsstLastLoopHandler (next, slots, sbx) { - if (sbx.properties.loop.lastLoop) { - console.log(JSON.stringify(sbx.properties.loop.lastLoop)); + var lastLoop = _.get(sbx, 'properties.loop.lastLoop') + if (lastLoop) { + console.log(JSON.stringify(lastLoop)); var response = translate('virtAsstLastLoop', { params: [ moment(sbx.properties.loop.lastOkMoment).from(moment(sbx.time)) diff --git a/lib/plugins/openaps.js b/lib/plugins/openaps.js index 037680960d2..cf5e240ce99 100644 --- a/lib/plugins/openaps.js +++ b/lib/plugins/openaps.js @@ -560,10 +560,11 @@ function init (ctx) { }; function virtAsstForecastHandler (next, slots, sbx) { - if (sbx.properties.openaps && sbx.properties.openaps.lastEventualBG) { + var lastEventualBG = _.get(sbx, 'properties.openaps.lastEventualBG'); + if (lastEventualBG) { var response = translate('virtAsstOpenAPSForecast', { params: [ - sbx.properties.openaps.lastEventualBG + lastEventualBG ] }); next(translate('virtAsstTitleOpenAPSForecast'), response); @@ -573,11 +574,11 @@ function init (ctx) { } function virtAsstLastLoopHandler (next, slots, sbx) { - if (sbx.properties.openaps.lastLoopMoment) { - console.log(JSON.stringify(sbx.properties.openaps.lastLoopMoment)); + var lastLoopMoment = _.get(sbx, 'properties.openaps.lastLoopMoment'); + if (lastLoopMoment) { var response = translate('virtAsstLastLoop', { params: [ - moment(sbx.properties.openaps.lastLoopMoment).from(moment(sbx.time)) + moment(lastLoopMoment).from(moment(sbx.time)) ] }); next(translate('virtAsstTitleLastLoop'), response); diff --git a/lib/plugins/pump.js b/lib/plugins/pump.js index 7e71c21e1b1..52dc7ade769 100644 --- a/lib/plugins/pump.js +++ b/lib/plugins/pump.js @@ -136,7 +136,7 @@ function init (ctx) { }; function virtAsstReservoirHandler (next, slots, sbx) { - var reservoir = sbx.properties.pump.pump.reservoir; + var reservoir = _.get(sbx, 'properties.pump.pump.reservoir'); if (reservoir || reservoir === 0) { var response = translate('virtAsstReservoir', { params: [ diff --git a/lib/plugins/rawbg.js b/lib/plugins/rawbg.js index 3248126b046..a784f49363f 100644 --- a/lib/plugins/rawbg.js +++ b/lib/plugins/rawbg.js @@ -107,10 +107,11 @@ function init (ctx) { }; function virtAsstRawBGHandler (next, slots, sbx) { - if (sbx.properties.rawbg.mgdl) { + var rawBg = _.get(sbx, 'properties.rawbg.mgdl'); + if (rawBg) { var response = translate('virtAsstRawBG', { params: [ - sbx.properties.rawbg.mgdl + rawBg ] }); next(translate('virtAsstTitleRawBG'), response); diff --git a/lib/plugins/upbat.js b/lib/plugins/upbat.js index dc603054ecb..71547eca6a2 100644 --- a/lib/plugins/upbat.js +++ b/lib/plugins/upbat.js @@ -223,10 +223,11 @@ function init(ctx) { }; function virtAsstUploaderBatteryHandler (next, slots, sbx) { - if (sbx.properties.upbat.display) { + var upBat = _.get(sbx, 'properties.upbat.display'); + if (upBat) { var response = translate('virtAsstUploaderBattery', { params: [ - sbx.properties.upbat.display + upBat ] }); next(translate('virtAsstTitleUploaderBattery'), response); diff --git a/lib/plugins/xdripjs.js b/lib/plugins/xdripjs.js index dc44aad2988..dd5b55eb816 100644 --- a/lib/plugins/xdripjs.js +++ b/lib/plugins/xdripjs.js @@ -324,10 +324,11 @@ function init(ctx) { function virtAsstGenericCGMHandler(translateItem, field, next, sbx) { var response; - if (sbx.properties.sensorState && sbx.properties.sensorState[field]) { + var state = _.get(sbx, 'properties.sensorState.'+field); + if (state) { response = translate('virtAsstCGM'+translateItem, { params:[ - sbx.properties.sensorState[field] + state , moment(sbx.properties.sensorState.lastStateTime).from(moment(sbx.time)) ] }); @@ -355,10 +356,11 @@ function init(ctx) { , metrics: ['cgm session age'] , intentHandler: function(next, slots, sbx){ var response; + var lastSessionStart = _.get(sbx, 'properties.sensorState.lastSessionStart'); // session start is only valid if in a session - if (sbx.properties.sensorState && sbx.properties.sensorState.lastSessionStart) { - if (sbx.properties.sensorState.lastState != 0x1) { - var duration = moment.duration(moment().diff(moment(sbx.properties.sensorState.lastSessionStart))); + if (lastSessionStart) { + if (_.get(sbx, 'properties.sensorState.lastState') != 0x1) { + var duration = moment.duration(moment().diff(moment(lastSessionStart))); response = translate('virtAsstCGMSessAge', { params: [ duration.days(), @@ -384,10 +386,11 @@ function init(ctx) { intent: 'MetricNow' , metrics: ['cgm tx age'] , intentHandler: function(next, slots, sbx){ + var lastTxActivation = _.get(sbx, 'properties.sensorState.lastTxActivation'); next( translate('virtAsstTitleCGMTxAge'), - (sbx.properties.sensorState && sbx.properties.sensorState.lastTxActivation) - ? translate('virtAsstCGMTxAge', {params:[moment().diff(moment(sbx.properties.sensorState.lastTxActivation), 'days')]}) + lastTxActivation + ? translate('virtAsstCGMTxAge', {params:[moment().diff(moment(lastTxActivation), 'days')]}) : translate('virtAsstUnknown') ); } @@ -402,22 +405,24 @@ function init(ctx) { , metrics: ['cgm battery'] , intentHandler: function(next, slots, sbx){ var response; - var sensor = sbx.properties.sensorState; - if (sensor && (sensor.lastVoltageA || sensor.lastVoltageB)) { - if (sensor.lastVoltageA && sensor.lastVoltageB) { + var lastVoltageA = _.get(sbx, 'properties.sensorState.lastVoltageA'); + var lastVoltageB = _.get(sbx, 'properties.sensorState.lastVoltageB'); + var lastBatteryTimestamp = _.get(sbx, 'properties.sensorState.lastBatteryTimestamp'); + if (lastVoltageA || lastVoltageB) { + if (lastVoltageA && lastVoltageB) { response = translate('virtAsstCGMBattTwo', { params:[ - (sensor.lastVoltageA / 100) - , (sensor.lastVoltageB / 100) - , moment(sensor.lastBatteryTimestamp).from(moment(sbx.time)) + (lastVoltageA / 100) + , (lastVoltageB / 100) + , moment(lastBatteryTimestamp).from(moment(sbx.time)) ] }); } else { - var finalValue = sensor.lastVoltageA ? sensor.lastVoltageA : sensor.lastVoltageB; + var finalValue = lastVoltageA ? lastVoltageA : lastVoltageB; response = translate('virtAsstCGMBattOne', { params:[ (finalValue / 100) - , moment(sensor.lastBatteryTimestamp).from(moment(sbx.time)) + , moment(lastBatteryTimestamp).from(moment(sbx.time)) ] }); } From 775324174e16062e8090fda5bdcd9f8f7d6c810c Mon Sep 17 00:00:00 2001 From: Caleb Date: Tue, 20 Oct 2020 03:23:14 -0600 Subject: [PATCH 005/194] Corrected setup of `dbsize` for virtual assistants (#6270) * Corrected db size config for virtual assistants * Language fix, improvements, added dbsize to virtAsst config * Using env * Added logging * Debug logging * Different logging * More troubleshooting * Another try * Reverted stuff, added dbsize to server defaults * Fixed test * Fixed another test --- docs/plugins/alexa-templates/en-us.json | 10 ++++++++++ docs/plugins/google-home-templates/en-us.zip | Bin 6367 -> 6549 bytes lib/language.js | 2 +- lib/plugins/dbsize.js | 11 +++-------- lib/plugins/index.js | 1 + lib/plugins/virtAsstBase.js | 2 +- tests/dbsize.test.js | 11 +++-------- 7 files changed, 19 insertions(+), 18 deletions(-) diff --git a/docs/plugins/alexa-templates/en-us.json b/docs/plugins/alexa-templates/en-us.json index 79cc1baa977..e890172dcba 100644 --- a/docs/plugins/alexa-templates/en-us.json +++ b/docs/plugins/alexa-templates/en-us.json @@ -233,6 +233,16 @@ "name": { "value": "cgm mode" } + }, + { + "name": { + "value": "db size", + "synonyms": [ + "database size", + "data size", + "file size" + ] + } } ] } diff --git a/docs/plugins/google-home-templates/en-us.zip b/docs/plugins/google-home-templates/en-us.zip index d8ada2a834a29cb73802fb364902d86034ca3421..551e51307f05f5ce4ee9541928ff77bcf6516821 100644 GIT binary patch literal 6549 zcma)A1yoe+7NuK28ip36J0wI(K)PE%V#pZ~2I=mQZlp_6kZuWSgaHHzX%qxuK#&IC z;9LIi`^S4{)~vZ}-F5exbI;!AoNucsBBKx?U|?V%-~?!>Bisla`1Mm$b30QjAg3+F z!M^OXhMF3yA_wcp@Tg|Bh8pjCJ}95sN+~LWnj$(z{=HXj6!0g=;9s?W#KeN%h2z;f z|3s|Np0l45!uN*hqWHWr(@$nBbFj_Wp?KE=5Jip1!;oFmvs8{Vh}S43Iyow|fBmsQ z2Kg(Yf7sS_-#aaztTc zr!RI8*<%Xy)bKHY`wvtSO;sU3h}yJ7u=S3Pb0|X9U@3MCVPBZ+|QXfE#M$xq~~x z<4d-VAIuKZW(Y&LFu1X-6WuB?rdmxrBiO*)fTthX)Sy6g)BcMsJs&D%-{ke%UgV^f zuBKLj;Rhx6Djv5@tAWLnpXb?ziv^)=$*~?He9!pE>QgS@6f;`rGWD(Vxyz+KW`TkH z$fNIH(-XQ_=`JBY z9N$tsVM@LiC2@tl+dwbTW1-n=@&$#5&cz12XFYPBH4dR4 z-3Ci|jAcei=YrGhm_H!tQV#2svX9I_%kGckl$vx5Z?0o_wSpj60D5AtJ=4(0d6tjl2&2tV3C zRH#pKxX{uTEn$}h1klskYpy z`$2-p2nf;W|E4w~xZ2=avvIZoLb$*{XD1u;pSsf?9>VJ4#t&Zh&d##{ci7%4Icp^L z3be6Gl;C6}tsq`B3XEvJxD z=!u>@*rkEx;g%MC#uuD(+e6a~D{Vot36$-GLMZN>L#Vt;Bc-w+MXxo1!D$QgdE>`( zSv|DxrLBp@UEol;gLl>$-S|&7b{uND^lC%*QTZfp_{q& zN<72Tk@l$XpxSG^C3c4LO?J*n-VT%=W>sjck*{WmgeO)L7Q6R&zB~7Gw6y5U2~?-B z=ba(P;o_>IG1L~D1Unfsy2_AK*YbwPYt|M!JxExR9YdP_!oYQ%%7;?j`b|8^L(f;`?)_A#m;+v zJapqV>Q7XdvjLW0wJ=>pzh$@)36ALX=&Krz9VFbR*?)~~zo%Z0Ozen7-M!M5K*GGd zMJ$yuSiS5bi(Q>$F=!#o!~VISqY+EbJ7TpeMG3(J=Laqeq8wEDi%ea!oBP>Mj`$J0 zZ~cIXfG`Z7ApbmG7~mYSv3G{k0>bqWXleQk;%pf`K5Zt4?ES;vj}3h^aQ^`KXpty(?3kc3D2@3x_~7lP3vR`R^XwXe_Kvr{{}?i zCi!yA_B`LPHD=?|!^87glG6H~5r11t=L!GF_=}Uf?^fIhW0-DLa=+|d_2*@0>?SDu z_@p|Nsi)u=!E|6&5~T2LG2Ers7nFI}dKf`xXbl`tR6%gtg9V1Wjd@xySKzHyq*g&o zOC*Z(*7Qpb6?APsBJ0ayYBrO7KA1v^vhy3jImjsQ0jsI##WOW>dabIbY|>&U8`Jc2 zephW{4U3;|($1R|WG&I0uRn+6h+JT5#FdHziHv+rrwNc@u~tn28D4_fH^>*$`uWrrRwCC;9H@1f1M_FD*BxM&K=%AnFgs8oFw2WZf$H6J&x z%txgB*zmoW5qDpoEH`Rtc4np6z13jM^5yr-lrk20b2YK8iBC_FQds74Q?=+5aQsNn zX`k~(1w&9;_x>Qway*${OD+~wvVnq8Qja+exAq4-(Ug8t{B1V?>e)|%zkuqo_aeh8dtZXRkuoaK@BR}I%}x>u|9x$X z$1S^QIZl#T%H$GhtvO}j$p^yZ)i@~rl!BgU0_#)jOjWnq5!a7-BM9ZNaA!X)fBf=V zJDB)O2VlCvr>}uhqWrQn{RL3IGXtV~CVpr01f{kYTd-6vi;W0zlI7FP)%VNwP3=!DqhA&FK^*OeFnD2~!N=S` zE1u*=VU>SQI28xipBjIsJ?b#QP1L@xt9QE(Xgg7B)8xmWsuiw0LH5*-it>!H?(=k~ zkA6wf1x!fg#a*L8A)JS}$rnDyk#E*VVavpH{!5(zg5f;=Oo^^8xBJ1|StB)1sYh)v zSh9J0Pt4-j0}@1x$B;IkV@uqbE;PPpX^`t;$xnPNFoCtqWMFmXvc-W0DoH|ha6*%! zKA&zx7(FB>PnvRAZA;9BmiFQt*0Uprbd2Jfwl);>UN8pCm_OU|QiANTTbieHQ}?R# zKkI%T3ZW3C`0RB*ZFn3*)-iH(-({Wa{N(HbvN)@$pKF-4cLsgiOyYy1d9`n1Nl8cT z)Zd)?tr_=*IE!J#hxt`*{g1nY$7I62>2U{k{o_kp7s$07V3%*ajno-@WQq~1$B5$$ z7BQ0&lwLGQa_#M{72*SAFIg-gk6wu_rL!^=4`hySz47iB_xoCIj~?NTI5kdrnz!py z$i-YeIay<>sI7DSIQ11&rj1l;!+G(yEQK5f^>s+1B#ma{PryRLVd`55QL-9Soc$CpqS(y#Z2w|$C|xk>?=3k zEN>$AbhPkQ%LM@h?~jusLb%nOZWZ{3CojG5dIFn!NO??A5gLT_y*nZ$hwsz9WcJUTk%3I2M*ReXbnhl;DLj(zwm^C<=8 z97cHBXBW}i(?8rh$WmB*E$$B$9qk2%g+^XT^Jgg00!Dg3A{jBOWF(Hw(=klvBYk%2 ze&T!V>|%G41&E1r^DS60eqh=L&{Ri*UH!?b7;Ui;g*&E&TkSBdXR`W(s_B%~WTXh{ zxCRW9fwA}nLq2Ia$z6?iF_mISpH%dVQaQI^+;(Q|{*+gw6~)NX_$8ZVEX%RfiLeTNdgpgx`hEeod6DUbt4Pym`tR!9=DSR= zxgYJuG`~}nXDG}1f=+M{2*v))Vv(nD;9@jcMv$1xa^5k^vq#B;x4JvmzM`0r-?m`C zt6S(IVZ%Tn&-7CH&JPripbNykt!}AV0Vr`L6ht(xz{=Py1aNqIRCq{#Vjzlb-5j?x z7Z-h$j)?Jns?Jmu>@qD@B~`eqm!#U3k)vrc!+(e~(Rhw@rA2ErtFxg0Sw{LBTKr?K zm^_03ogk*}e;hcr^^{csk~nSqY&ycLgZp9=ns{vo3xH2cX|L%t2=L`|iZ^{>APNI( z7PC1bf=2}mvu=IS+g4}pF}Te;ik`0X){o^JTH<=hl!}l} zj#O^GIdfD<`KYW%5_16j?%g_aj3~ViyiWm#@sd%BeM**dkpG#KRK+6{;x-QM*UNoGO1t!m@*O&}WOda0sV3P<35a!N>N6)HGFDNI2~}cqV#Qut-uLv>?3VVQig6lgr)r2{ zD;-SpXC=l+%U zes@&wRkCJc7%X+-)fV;|(mn37{g_QQ8qbb()QbJo*E%DJWyc(zr8uNJji8$6(+j0J zALgyl%8u9xY3arqJkFA_lHI00O@H~hkZMjKO=Z9n*@l1rc_F=->aYI)*Hl#$u>!gA z=RG6nw$P+(BV6Y1U>Jo(hLao8$=c9^S=v06DM-6_-4^Q+jzQ=hvfU#cXoW#{!!v4i zTHnilGw4reD`a(y?;F<=6FsLwL$=Qn%oSte@i(R`GJ>rwg;N*Z(>p-?dY@}1E2!*c zUvS8nI*119F}QZ`f>SrDJ=f+nnRN;|rm-JcnSyobIckdcK}W`d%0DtGdFx zF1}^K6FvBuEFuyS!nH|!)9Sr4iT@loEn_vsKR@IV8|T#-={gGGFa8(cACv9phVnbc&4uS`t+@`zTh|!B^!&FFH;3(? zAq4TRA%5xPZy|1Wn5(IL9T)i55PxLy7p?uC)lC^+iS;@Z;ne!|W`1S$KjCf)<W zq~jmC-@S18{Qj9|&pFRLd%b6`v(|c7XamvE$p8QVHXx=UL+d~y@W%}_06-240Ki55 zYiVce?8)os;o@9s0MQ!fCpzmZmp#-tN=x>h62vtXp`yR7Iw+hQ8K9;~FIAl>n|iS6 zF%weoR8s-L0fa8TTg>u1_I34H(iu{$?BT!F1P#lA>f=g;vxcDqad0^X!EbujM8N(* z!n3bU&r?TB<}~7yqXY?vKQ{2c4oYO`v(;U(o~9XR2cp?1kaKH)V^^N|LFL$6 zgJM~-Qb^vSpV1|Z)>cwI>;g`{_>qsFyMz?{)RjEYqM?1oa0|B^TQr&S$Kf)hC6y7CS}{tfZL2oOlheU`g$W?9dJGavMY69 zd)iT8aMcHG2$%pH#@3_0Z&!-44{kP2l)o6ccjn$Kxn82vtx0G+T$!GWN4-jMS~kuP ze#b>K)S%49)Zv{5MmGgb@CLq`v?j%UKxe_jvAU^Il&TSob2`4kY__n=L-}oHNGkr! zNrvYiT~|czJVi!A(qwPmz1A)?4bN`$P})w z$*!aVl=&x5wHWHMZ@?Yz)9JBB9`O{TBH%Gl*u;U~!ArnsZWdF<%Rg>dIb zP?!vSOJ3mbb<^{SsZnLXFc1B()*MGD{z1*5czu*4EH;i8q^B^bRvvS!y`QYDT^=L4 zb-Hkh)OI)Z(YOHv|4fUnIANz%U27|?{~NrBBDf+0=Np&U{vGA*YToQs+HamwZB7|9 zu_oTb!FBKFq?|t1Z&abc?&%ijS6KMQ-t4C>(~x<%&&2&=QoMBzGm+%fapl!0H{)Bw zwOmKeupUW^+m0oe-+?YO=q2wC!PaMH2WSaZ(#zw4quVS{NVe*bD86+bSN?eH$M#w` z*I|dUhw4i8EpuMR$gk%<0F3=|H9%1J#vH}n24VJkSSy;VXHL3@w#8nKKTGa zO@Q+y^obP=dhez3MBsT-gFxRixypI@)==S+M>s%M#>}l|>x^BZH_8647yY2{2K|zv?}>t{n=28{xb&0kp6SOeLA7nR zFBT3F3sgBVQ+*q2DF55Tv5}{DaP~whaNWV*By0@CAsyTnnL=(}*`;Xv(9+Avlj)wV zleG)PmPzeG`a)%hZmTnm01B(5W$ddv1C6BMogphL`ubR{v7j*6l|(R(n9sw{H2| z|LFIkUc&x;SsrCg2L=Og$?n(^+dNpYpOe_d`8@`l%x8o~ai^F+quwf%lU`-mNdIJFlOM?NOM%JUID*;+qN1>ff` zi#8*EjJ`Rdt+VU!Kn#HkyB#L6oXtAE&_X%fr^)!_xO3(h`Xl!27^Y^lbkm;%0Sl3I$;% zy(g5LeqfFzSoF52lHAEAy8wOktj}h^rX=Q;8rpmKyxlYj?ehYqV0G%RCW8@{@8vSE zVNzW4`U)poT1NCS|-eS97 z+g1)uOV&|AKn(bIDBQzJ_UrPYxEfXX%VXCfu_ZQj-wNra!>9lN`5$z;@JsXfR_71= z_@SEt5wGoJ>8^l8sL~ zXV`cW3OhU{1N*9%eb{{@L5q<#8GTj0opzDv?K}*Jr)l@5h3bxF+#J_nKSRIh2oi+U z%4%)_hb!BlOqfnEguE;vzc5XpCcmo<4aK#mk$?;)#8`I9XvE1Srr7NW>ZuG zc-jK;4}&7(A+|d4s)Bg0Rh{^Tcsi$D3bOC8gHcwvmQV1-8!?K64TurzrorMm}J|#ilUWSlPj=dyDcT zEIp+_3MY_`S~{|<(ri7HZ%%FxPCeaA7%h@@_KrvkyLXqLBsK`;TH+4z;GakQUZnfM&LSA zjh#v)YRI;;G_F$c5Q~)G%0Qlo{k{studgms^&`vT6gZjk%El?}ZY#+Wc$Bf?pYTL8 zdl!78bVxFG*M$SYZLT0IWjl&??*kmK6 zjeNujB))~X3ff5Du!bj$sZKXs_wiLD0621wuc*{!V)Vt3zIEoX6rp@l-sxQJ+r#&; z39%WJ<#|XxyntWJt{VSCNWnAH2=N|fb$OFHs3qwn z2A?;(xHyxzFgDn?LH?Xwv)Pm1L3=ulc7?-c4$k$2z`VVk0fGgvSlpfTR@bS>{-iU` zM43f-*X$YvUrc8X_Z%oU6gEJ}lc(g~1e&bb`W_7Fl z(Ni@Y;;9MNf-qa-hYRWJTtQlN08tum%!f%NX{_!8Cfg>o-KNZ@Wr>dMY7F2({IxAD zDtsy-^JZ_5Au3${<-~??8>x(ji|Z2FTU%qGG_9Cc4BnVq!I1M;U#=Ok&1QYrnfl-g z{}*TO4;4-xMI`f+!v_YT&$;A|RFr&kC+Z)ROr&kg(JJ2~17UR)7ac=6`^(+N*{i=rL_MzIeK zW;L}EOMZ|!Cbn4;FclUqdI(0^a5zNE4=LvFi^J!dH(b-!09NGv~RLGWS zUSWpeKUiBiD@CtqwzDy_zt{Oj`ZE)=>PSCZriq6wuVPM?4~EH(zbj%(vHmGM&Ux)u9^ ze5xFyM0%n&B>mPce15Ah-(`~tPGTdV<|jlMg8E6npwRin@P;5~BKqcEB1h>A(Ua%5 z)?FP9UUDs4)%e=qRp}?93@_v(Saz+WpUgQTQ%%JOm|@+-kGZrAx+q2YK>uj zYWGzvIr4Ptne>~0@h}`(GSq&}Q}6QSiKe^%wu&a+2zM{iDkJCs0P7VJ{JVZqwsdl` zva|+YEudifmCneLjL561ltT*3^i(9M!bryjcawL%j;jw-}AXP6G+Tjc>uGaxYI}Q5pF&aMv zTHMvKpWGQfnBAQ!qmVZ1{j?cqe<$zEQt#LnUfmtmqPd@a$E@^h@rOBlIuI+&Xy6H> z^oM!P0N3+V$oaO1c+ebd)RpF%l_Z1D z-@+}-MeUt3esp^)?8`3Dgwqkri-JUAl|nqkbs}*rUtTu`Dd;85a2braYIs!uKZ31HjxQ- zfuL$o2-_n2v@*-AEX@dzg60``fcNQMetHTBJzo!FkvsiUoYD4yyG(4;8f!ksBFEip zJ?fr`YXCJeOnxtX;ZKQBKEZUC+}5CxS1 z?XnKNJ^@AI0FaCf$PfN~cR3IJOYVPG zVt*bGT?e~9Vz>k|#kg{YD+7oBPmAAe{$HQpT2NzNZTkQH&aSupzoq_C;_elxzmwP> zh5*+Ux!!eN0um!n_4n-IfA*l);jTA)mvHlcfV=RQ>k!x5lS_z4NFVt7ME?-;A2F^M zlb0Ao1eX|pS786e?bnZVy@b1jTmA#wA5V0>-nfK#eB<&&e;e*k)yMTiT~Aq;h|$EC pi2uB&|Doh%SY40lOFTF-X0JxLHV^~pYybcu^4pD!or~5U@PCO>nezYu diff --git a/lib/language.js b/lib/language.js index ac9b0a02218..64098826fde 100644 --- a/lib/language.js +++ b/lib/language.js @@ -15133,7 +15133,7 @@ function init() { ,nl: 'Datagrootte' }, 'virtAsstDatabaseSize': { - en: '%1 MiB that is %2% of available database space' + en: '%1 MiB. That is %2% of available database space.' ,pl: '%1 MiB co stanowi %2% przestrzeni dostępnej dla bazy danych' ,nl: '%1 MiB dat is %2% van de beschikbaare database ruimte' }, diff --git a/lib/plugins/dbsize.js b/lib/plugins/dbsize.js index c76e36cb9e8..1b6b43da8ed 100644 --- a/lib/plugins/dbsize.js +++ b/lib/plugins/dbsize.js @@ -119,9 +119,9 @@ function init (ctx) { function virtAsstDatabaseSizeHandler (next, slots, sbx) { var display = _.get(sbx, 'properties.dbsize.display'); - var dataSize = _.get(sbx, 'properties.dbsize.details.dataSize'); - var dataPercentage = _.get(sbx, 'properties.dbsize.dataPercentage'); if (display) { + var dataSize = _.get(sbx, 'properties.dbsize.details.dataSize'); + var dataPercentage = _.get(sbx, 'properties.dbsize.dataPercentage'); var response = translate('virtAsstDatabaseSize', { params: [ dataSize @@ -137,13 +137,8 @@ function init (ctx) { dbsize.virtAsst = { intentHandlers: [ { - // for backwards compatibility - intent: 'DatabaseSize' - , intentHandler: virtAsstDatabaseSizeHandler - } - , { intent: 'MetricNow' - , metrics: ['database size', 'file size', 'db size', 'data size'] + , metrics: ['db size'] , intentHandler: virtAsstDatabaseSizeHandler } ] diff --git a/lib/plugins/index.js b/lib/plugins/index.js index 5a6cb2822da..77a87bcd94d 100644 --- a/lib/plugins/index.js +++ b/lib/plugins/index.js @@ -74,6 +74,7 @@ function init (ctx) { , require('./treatmentnotify')(ctx) , require('./timeago')(ctx) , require('./basalprofile')(ctx) + , require('./dbsize')(ctx) ]; plugins.registerServerDefaults = function registerServerDefaults () { diff --git a/lib/plugins/virtAsstBase.js b/lib/plugins/virtAsstBase.js index e0d103672a2..781f56969cf 100644 --- a/lib/plugins/virtAsstBase.js +++ b/lib/plugins/virtAsstBase.js @@ -81,7 +81,7 @@ function init(env, ctx) { }; virtAsstBase.setupVirtAsstHandlers = function (configuredPlugin) { - ctx.plugins.eachEnabledPlugin(function (plugin){ + ctx.plugins.eachEnabledPlugin(function (plugin) { if (plugin.virtAsst) { if (plugin.virtAsst.intentHandlers) { console.log('Plugin "' + plugin.name + '" supports Virtual Assistants'); diff --git a/tests/dbsize.test.js b/tests/dbsize.test.js index 0a66bb3ad6d..ce95f8652c0 100644 --- a/tests/dbsize.test.js +++ b/tests/dbsize.test.js @@ -300,18 +300,13 @@ describe('Database Size', function() { var dbsize = require('../lib/plugins/dbsize')(ctx); dbsize.setProperties(sbx); - dbsize.virtAsst.intentHandlers.length.should.equal(2); + dbsize.virtAsst.intentHandlers.length.should.equal(1); dbsize.virtAsst.intentHandlers[0].intentHandler(function next (title, response) { title.should.equal('Database file size'); - response.should.equal('450 MiB that is 90% of available database space'); + response.should.equal('450 MiB. That is 90% of available database space.'); - dbsize.virtAsst.intentHandlers[1].intentHandler(function next (title, response) { - title.should.equal('Database file size'); - response.should.equal('450 MiB that is 90% of available database space'); - - done(); - }, [], sbx); + done(); }, [], sbx); From b762ade017fe261c2b4f54920e3a6b61875e6a9b Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 10 Nov 2020 18:02:28 +0200 Subject: [PATCH 006/194] Fix batch (#6248) * Use the delta plugin data to show the delta in the clock views * Update Node checks * Fix disabling the BG alarms for simple alarms * Load battery and other rare events up to two months back * Possibly fixes compatibility with ios9 - needs testing * Unified black and color clock layouts * Update clock data every 20 seconds * Update clock time every second * Fix how CSP policy is set for Helmet, fixes #6260 * Authorization fix for misformatted URLs * Added unit test for batch upload of CGM entries * Improved / removed some logging * Test if user is in read only mode when Nightscout starts and give an error if so --- app.js | 37 +++++---- lib/authorization/storage.js | 28 +++++-- lib/client/clock-client.js | 146 ++++++++++++++++------------------- lib/data/dataloader.js | 2 +- lib/plugins/ar2.js | 13 ++-- lib/plugins/bgnow.js | 4 +- lib/plugins/simplealarms.js | 21 +++-- lib/server/bootevent.js | 29 +++---- lib/storage/mongo-storage.js | 106 ++++++++++++++----------- npm-shrinkwrap.json | 58 +++++++++++++- package.json | 18 ++--- tests/api.entries.test.js | 62 +++++++++++++++ views/index.html | 2 +- 13 files changed, 327 insertions(+), 199 deletions(-) diff --git a/app.js b/app.js index 90bb372a315..2a94b1dd3e9 100644 --- a/app.js +++ b/app.js @@ -29,19 +29,7 @@ function create (env, ctx) { const enableCSP = env.secureCsp ? true : false; - console.info('Enabled SECURE_HSTS_HEADER (HTTP Strict Transport Security)'); - const helmet = require('helmet'); - var includeSubDomainsValue = env.secureHstsHeaderIncludeSubdomains; - var preloadValue = env.secureHstsHeaderPreload; - app.use(helmet({ - hsts: { - maxAge: 31536000 - , includeSubDomains: includeSubDomainsValue - , preload: preloadValue - } - , frameguard: false - , contentSecurityPolicy: enableCSP - })); + let cspPolicy = false; if (enableCSP) { var secureCspReportOnly = env.secureCspReportOnly; @@ -60,7 +48,7 @@ function create (env, ctx) { } } - app.use(helmet.contentSecurityPolicy({ //TODO make NS work without 'unsafe-inline' + cspPolicy = { //TODO make NS work without 'unsafe-inline' directives: { defaultSrc: ["'self'"] , styleSrc: ["'self'", 'https://fonts.googleapis.com/', 'https://fonts.gstatic.com/', "'unsafe-inline'"] @@ -76,7 +64,26 @@ function create (env, ctx) { , frameAncestors: frameAncestors } , reportOnly: secureCspReportOnly - })); + }; + } + + + console.info('Enabled SECURE_HSTS_HEADER (HTTP Strict Transport Security)'); + const helmet = require('helmet'); + var includeSubDomainsValue = env.secureHstsHeaderIncludeSubdomains; + var preloadValue = env.secureHstsHeaderPreload; + app.use(helmet({ + hsts: { + maxAge: 31536000 + , includeSubDomains: includeSubDomainsValue + , preload: preloadValue + } + , frameguard: false + , contentSecurityPolicy: cspPolicy + })); + + if (enableCSP) { + app.use(helmet.referrerPolicy({ policy: 'no-referrer' })); app.use(bodyParser.json({ type: ['json', 'application/csp-report'] })); app.post('/report-violation', (req, res) => { diff --git a/lib/authorization/storage.js b/lib/authorization/storage.js index c032018d170..d602470add6 100644 --- a/lib/authorization/storage.js +++ b/lib/authorization/storage.js @@ -210,16 +210,28 @@ function init (env, ctx) { if (!accessToken) return null; - var split_token = accessToken.split('-'); - var prefix = split_token ? _.last(split_token) : ''; - if (prefix.length < 16) { - return null; - } + function checkToken(accessToken) { + var split_token = accessToken.split('-'); + var prefix = split_token ? _.last(split_token) : ''; - return _.find(storage.subjects, function matches (subject) { - return subject.accessTokenDigest.indexOf(accessToken) === 0 || subject.digest.indexOf(prefix) === 0; - }); + if (prefix.length < 16) { + return null; + } + + return _.find(storage.subjects, function matches (subject) { + return subject.accessTokenDigest.indexOf(accessToken) === 0 || subject.digest.indexOf(prefix) === 0; + }); + } + + if (!Array.isArray(accessToken)) accessToken = [accessToken]; + + for (let i=0; i < accessToken.length; i++) { + const subject = checkToken(accessToken[i]); + if (subject) return subject; + } + + return null; }; storage.doesAccessTokenExist = function doesAccessTokenExist(accessToken) { diff --git a/lib/client/clock-client.js b/lib/client/clock-client.js index 891f10d57d5..73ac9c3baca 100644 --- a/lib/client/clock-client.js +++ b/lib/client/clock-client.js @@ -1,53 +1,55 @@ 'use strict'; -const browserSettings = require('./browser-settings'); - +var browserSettings = require('./browser-settings'); var client = {}; +var latestProperties = {}; client.settings = browserSettings(client, window.serverSettings, $); -//console.log('settings', client.settings); -// client.settings now contains all settings - client.query = function query () { - console.log('query'); var parts = (location.search || '?').substring(1).split('&'); var token = ''; - parts.forEach(function (val) { + parts.forEach(function(val) { if (val.startsWith('token=')) { token = val.substring('token='.length); } }); var secret = localStorage.getItem('apisecrethash'); - var src = '/api/v1/entries.json?find[type]=sgv&count=3&t=' + new Date().getTime(); + var src = '/api/v2/properties'; // Use precalculated data from the backend if (secret) { - src += '&secret=' + secret; + var s = '?secret=' + secret; + src += s; } else if (token) { - src += '&token=' + token; + var s2 = '?token=' + token; + src += s2; } $.ajax(src, { - success: client.render + error: function gotError (err) { + console.error(err); + } + , success: function gotData (data) { + latestProperties = data; + client.render(); + } }); }; -client.render = function render (xhr) { - console.log('got data', xhr); +client.render = function render () { - let rec; - let delta; + if (!latestProperties.bgnow && !latestProperties.bgnow.sgvs) { + console.error('BG data not available'); + return; + } - // Get SGV, calculate DELTA - xhr.forEach(element => { - if (element.sgv && !rec) { - rec = element; - } - else if (element.sgv && rec && delta==null) { - delta = (rec.sgv - element.sgv)/((rec.date - element.date)/(5*60*1000)); - } - }); + let rec = latestProperties.bgnow.sgvs[0]; + let deltaDisplayValue; + + if (latestProperties.delta) { + deltaDisplayValue = latestProperties.delta.display; + } let $errorMessage = $('#errorMessage'); let $inner = $('#inner'); @@ -71,15 +73,12 @@ client.render = function render (xhr) { // Backward compatible if (face === 'clock-color') { - face = 'c' + (window.serverSettings.settings.showClockLastTime ? 'y' : 'n') + '13-sg40-' + (window.serverSettings.settings.showClockDelta ? 'dt14-' : '') + 'nl-ar30-nl-ag6'; - } - else if (face === 'clock') { + face = 'c' + (window.serverSettings.settings.showClockLastTime ? 'y' : 'n') + '13-sg35-' + (window.serverSettings.settings.showClockDelta ? 'dt14-' : '') + 'nl-ar25-nl-ag6'; + } else if (face === 'clock') { face = 'bn0-sg40'; - } - else if (face === 'bgclock') { - face = 'bn0-sg30-ar18-nl-nl-tm26'; - } - else if (face === 'config') { + } else if (face === 'bgclock') { + face = 'b' + (window.serverSettings.settings.showClockLastTime ? 'y' : 'n') + '13-sg35-' + (window.serverSettings.settings.showClockDelta ? 'dt14-' : '') + 'nl-ar25-nl-ag6'; + } else if (face === 'config') { face = $inner.attr('data-face-config'); $inner.empty(); } @@ -95,46 +94,19 @@ client.render = function render (xhr) { if (param === '0') { bgColor = (faceParams[param].substr(0, 1) === 'c'); // do we want colorful background? alwaysShowTime = (faceParams[param].substr(1, 1) === 'y'); // always show "stale time" text? - staleMinutes = (faceParams[param].substr(2,2) - 0 >= 0) ? faceParams[param].substr(2,2) : 13; // threshold value (0=never) - } else if (!clockCreated){ - let div = '
0) ? ' style="' + ((faceParams[param].substr(0,2) === 'ar') ? 'height' : 'font-size') + ':' + faceParams[param].substr(2,2) + 'vmin"' : '') + '>
'; + staleMinutes = (faceParams[param].substr(2, 2) - 0 >= 0) ? faceParams[param].substr(2, 2) : 13; // threshold value (0=never) + } else if (!clockCreated) { + let div = '
0) ? ' style="' + ((faceParams[param].substr(0, 2) === 'ar') ? 'height' : 'font-size') + ':' + faceParams[param].substr(2, 2) + 'vmin"' : '') + '>
'; $inner.append(div); } } // Convert BG to mmol/L if necessary. - let displayValue; - let deltaDisplayValue; - - if (window.serverSettings.settings.units === 'mmol') { - displayValue = window.Nightscout.units.mgdlToMMOL(rec.sgv); - deltaDisplayValue = window.Nightscout.units.mgdlToMMOL(delta); - } else { - displayValue = rec.sgv; - deltaDisplayValue = Math.round(delta); - } - - if (deltaDisplayValue > 0) { - deltaDisplayValue = '+' + deltaDisplayValue; - } + let displayValue = rec.scaled; // Insert the delta value text. $('.dt').html(deltaDisplayValue); - // Generate and insert the clock. - let timeDivisor = parseInt(client.settings.timeFormat ? client.settings.timeFormat : 12, 10); - let today = new Date() - , h = today.getHours() % timeDivisor; - if (timeDivisor === 12) { - h = (h === 0) ? 12 : h; // In the case of 00:xx, change to 12:xx for 12h time - } - if (timeDivisor === 24) { - h = (h < 10) ? ("0" + h) : h; // Pad the hours with a 0 in 24h time - } - let m = today.getMinutes(); - if (m < 10) m = "0" + m; - $('.tm').html(h + ":" + m); - // Color background if (bgColor) { @@ -150,7 +122,7 @@ client.render = function render (xhr) { let bgTargetBottom = client.settings.thresholds.bgTargetBottom; let bgTargetTop = client.settings.thresholds.bgTargetTop; - let bgNum = parseFloat(rec.sgv); + let bgNum = parseFloat(rec.mgdl); // Threshold background coloring. if (bgNum < bgLow) { @@ -169,20 +141,16 @@ client.render = function render (xhr) { $('body').css('background-color', red); } - } - else { + } else { $('body').css('background-color', 'black'); } // Time before data considered stale. let threshold = 1000 * 60 * staleMinutes; - let last = new Date(rec.date); - let now = new Date(); - - let elapsedMins = Math.round(((now - last) / 1000) / 60); - - let thresholdReached = (now - last > threshold) && threshold > 0; + var elapsedms = Date.now() - rec.mills; + let elapsedMins = Math.floor((elapsedms / 1000) / 60); + let thresholdReached = (elapsedms > threshold) && threshold > 0; // Insert the BG value text, toggle stale if necessary. $('.sg').toggleClass('stale', thresholdReached).html(displayValue); @@ -191,17 +159,14 @@ client.render = function render (xhr) { let staleTimeText; if (elapsedMins === 0) { staleTimeText = 'Just now'; - } - else if (elapsedMins === 1) { + } else if (elapsedMins === 1) { staleTimeText = '1 minute ago'; - } - else { + } else { staleTimeText = elapsedMins + ' minutes ago'; } $('.ag').html(staleTimeText); - } - else { + } else { $('.ag').html(''); } @@ -216,12 +181,33 @@ client.render = function render (xhr) { $('body').css('color', bgColor ? 'white' : 'grey'); $('.ar').css('filter', bgColor ? 'brightness(100%)' : 'brightness(50%)').html(arrow); } + + updateClock(); + }; +function updateClock () { + let timeDivisor = parseInt(client.settings.timeFormat ? client.settings.timeFormat : 12, 10); + let today = new Date() + , h = today.getHours() % timeDivisor; + if (timeDivisor === 12) { + h = (h === 0) ? 12 : h; // In the case of 00:xx, change to 12:xx for 12h time + } + if (timeDivisor === 24) { + h = (h < 10) ? ("0" + h) : h; // Pad the hours with a 0 in 24h time + } + let m = today.getMinutes(); + if (m < 10) m = "0" + m; + $('.tm').html(h + ":" + m); +} + client.init = function init () { - console.log('init'); + console.log('Initializing clock'); client.query(); - setInterval(client.query, 1 * 60 * 1000); + setInterval(client.query, 20 * 1000); // update every 20 seconds + + // time update + setInterval(updateClock, 1000); }; module.exports = client; diff --git a/lib/data/dataloader.js b/lib/data/dataloader.js index 7074b18e1fb..985ea259de5 100644 --- a/lib/data/dataloader.js +++ b/lib/data/dataloader.js @@ -392,7 +392,7 @@ function loadSensorAndInsulinTreatments(ddata, ctx, callback) { function loadLatestSingle(ddata, ctx, dataType, callback) { var dateRange = { - $gte: new Date(ddata.lastUpdated - (constants.ONE_DAY * 32)).toISOString() + $gte: new Date(ddata.lastUpdated - (constants.ONE_DAY * 62)).toISOString() }; if (ddata.page && ddata.page.frame) { diff --git a/lib/plugins/ar2.js b/lib/plugins/ar2.js index ab8675a0342..7a5d5e5dcfa 100644 --- a/lib/plugins/ar2.js +++ b/lib/plugins/ar2.js @@ -67,8 +67,10 @@ function init (ctx) { var prop = sbx.properties.ar2; - if (prop) { - sbx.notifications.requestNotify({ + console.log('ar2', prop); + + if (prop && prop.level) { + const notify = { level: prop.level , title: buildTitle(prop, sbx) , message: sbx.buildDefaultMessage() @@ -76,7 +78,8 @@ function init (ctx) { , pushoverSound: pushoverSound(prop, sbx.levels) , plugin: ar2 , debug: buildDebug(prop, sbx) - }); + }; + sbx.notifications.requestNotify(notify); } }; @@ -224,9 +227,9 @@ function selectEventType (prop, sbx) { var eventName = ''; if (in20mins !== undefined) { - if (in20mins > sbx.scaleMgdl(sbx.settings.thresholds.bgTargetTop)) { + if (sbx.settings.alarmHigh && in20mins > sbx.scaleMgdl(sbx.settings.thresholds.bgTargetTop)) { eventName = 'high'; - } else if (in20mins < sbx.scaleMgdl(sbx.settings.thresholds.bgTargetBottom)) { + } else if (sbx.settings.alarmLow && in20mins < sbx.scaleMgdl(sbx.settings.thresholds.bgTargetBottom)) { eventName = 'low'; } } diff --git a/lib/plugins/bgnow.js b/lib/plugins/bgnow.js index 512a23805c2..f3d835788bf 100644 --- a/lib/plugins/bgnow.js +++ b/lib/plugins/bgnow.js @@ -146,12 +146,12 @@ function init (ctx) { bgnow.calcDelta = function calcDelta (recent, previous, sbx) { if (_.isEmpty(recent)) { - console.info('all buckets are empty'); + //console.info('No recent CGM data is available'); return null; } if (_.isEmpty(previous)) { - console.info('previous bucket not found, not calculating delta'); + //console.info('previous bucket not found, not calculating delta'); return null; } diff --git a/lib/plugins/simplealarms.js b/lib/plugins/simplealarms.js index 9b975dddebe..17529eabee8 100644 --- a/lib/plugins/simplealarms.js +++ b/lib/plugins/simplealarms.js @@ -12,6 +12,7 @@ function init() { }; simplealarms.checkNotifications = function checkNotifications(sbx) { + var lastSGVEntry = sbx.lastSGVEntry() , scaledSGV = sbx.scaleEntry(lastSGVEntry) ; @@ -37,27 +38,31 @@ function init() { simplealarms.compareBGToTresholds = function compareBGToTresholds(scaledSGV, sbx) { var result = { level: levels.INFO }; - if (scaledSGV > sbx.scaleMgdl(sbx.settings.thresholds.bgHigh)) { + if (sbx.settings.alarmUrgentHigh && scaledSGV > sbx.scaleMgdl(sbx.settings.thresholds.bgHigh)) { result.level = levels.URGENT; result.title = levels.toDisplay(levels.URGENT) + ' HIGH'; result.pushoverSound = 'persistent'; result.eventName = 'high'; - } else if (scaledSGV > sbx.scaleMgdl(sbx.settings.thresholds.bgTargetTop)) { - result.level = levels.WARN; - result.title = levels.toDisplay(levels.WARN) + ' HIGH'; - result.pushoverSound = 'climb'; - result.eventName = 'high'; - } else if (scaledSGV < sbx.scaleMgdl(sbx.settings.thresholds.bgLow)) { + } else + if (sbx.settings.alarmHigh && scaledSGV > sbx.scaleMgdl(sbx.settings.thresholds.bgTargetTop)) { + result.level = levels.WARN; + result.title = levels.toDisplay(levels.WARN) + ' HIGH'; + result.pushoverSound = 'climb'; + result.eventName = 'high'; + } + + if (sbx.settings.alarmUrgentLow && scaledSGV < sbx.scaleMgdl(sbx.settings.thresholds.bgLow)) { result.level = levels.URGENT; result.title = levels.toDisplay(levels.URGENT) + ' LOW'; result.pushoverSound = 'persistent'; result.eventName = 'low'; - } else if (scaledSGV < sbx.scaleMgdl(sbx.settings.thresholds.bgTargetBottom)) { + } else if (sbx.settings.alarmLow && scaledSGV < sbx.scaleMgdl(sbx.settings.thresholds.bgTargetBottom)) { result.level = levels.WARN; result.title = levels.toDisplay(levels.WARN) + ' LOW'; result.pushoverSound = 'falling'; result.eventName = 'low'; } + return result; }; diff --git a/lib/server/bootevent.js b/lib/server/bootevent.js index 6247645b3d2..4ee45e054d5 100644 --- a/lib/server/bootevent.js +++ b/lib/server/bootevent.js @@ -25,30 +25,21 @@ function boot (env, language) { var semver = require('semver'); var nodeVersion = process.version; - if ( semver.satisfies(nodeVersion, '^8.15.1') || semver.satisfies(nodeVersion, '^10.16.0')) { - //Latest Node 8 LTS and Latest Node 10 LTS are recommended and supported. + const isLTS = process.release.lts ? true : false; + + if (!isLTS) { + console.log( 'ERROR: Node version ' + nodeVersion + ' is not supported. Please use a secure LTS version or upgrade your Node'); + process.exit(1); + } + + if (semver.satisfies(nodeVersion, '^12.0.0') || semver.satisfies(nodeVersion, '^10.0.0')) { + //Latest Node 10 LTS and Node 12 LTS are recommended and supported. //Require at least Node 8 LTS and Node 10 LTS without known security issues console.debug('Node LTS version ' + nodeVersion + ' is supported'); next(); } - else if ( semver.eq(nodeVersion, '10.15.2')) { - //Latest Node version on Azure is tolerated, but not recommended - console.log('WARNING: Node version v10.15.2 and Microsoft Azure are not recommended.'); - console.log('WARNING: Please migrate to another hosting provider. Your Node version is outdated and insecure'); - next(); - } - else if ( semver.satisfies(nodeVersion, '^12.6.0')) { - //Latest Node version - console.debug('Node version ' + nodeVersion + ' is not a LTS version. Not recommended. Not supported'); - next(); - } else { - // Other versions will not start - console.log( 'ERROR: Node version ' + nodeVersion + ' is not supported. Please use a secure LTS version or upgrade your Node'); - process.exit(1); - } } - function checkEnv (ctx, next) { ctx.language = language; if (env.err) { @@ -255,7 +246,7 @@ function boot (env, language) { }); ctx.bus.on('data-loaded', function updatePlugins ( ) { - // console.info('reloading sandbox data'); + console.info('data loaded: reloading sandbox data and updating plugins'); var sbx = require('../sandbox')().serverInit(env, ctx); ctx.plugins.setProperties(sbx); ctx.notifications.initRequests(); diff --git a/lib/storage/mongo-storage.js b/lib/storage/mongo-storage.js index 39c1a81e641..28dea49ac75 100644 --- a/lib/storage/mongo-storage.js +++ b/lib/storage/mongo-storage.js @@ -36,59 +36,71 @@ function init (env, cb, forceNewConnection) { MongoClient.connect(env.storageURI, options) .then(client => { - console.log('Successfully established a connected to MongoDB'); - - var dbName = env.storageURI.split('/').pop().split('?'); - dbName = dbName[0]; // drop Connection Options - mongo.db = client.db(dbName); - connection = mongo.db; - mongo.client = client; - // If there is a valid callback, then invoke the function to perform the callback - - if (cb && cb.call) { - cb(null, mongo); - } - }) - .catch(err => { - if (err.message && err.message.includes('AuthenticationFailed')) { - console.log('Authentication to Mongo failed'); - cb(new Error('MongoDB authentication failed! Double check the URL has the right username and password in MONGODB_URI.'), null); - return; - } - - if (err.name && err.name === "MongoNetworkError") { - var timeout = (i > 15) ? 60000 : i * 3000; - console.log('Error connecting to MongoDB: %j - retrying in ' + timeout / 1000 + ' sec', err); - setTimeout(connect_with_retry, timeout, i + 1); - if (i == 1) cb(new Error('MongoDB connection failed! Double check the MONGODB_URI setting in Heroku.'), null); - } else { - cb(new Error('MONGODB_URI ' + env.storageURI + ' seems invalid: ' + err.message)); + console.log('Successfully established a connected to MongoDB'); + + var dbName = env.storageURI.split('/').pop().split('?'); + dbName = dbName[0]; // drop Connection Options + mongo.db = client.db(dbName); + connection = mongo.db; + mongo.client = client; + + mongo.db.command({ connectionStatus: 1 }).then( + result => { + const roles = result.authInfo.authenticatedUserRoles; + if (roles.lenght > 0 && roles[0].role == 'read') { + console.error('Mongo user is read only'); + cb(new Error('MongoDB connection is in read only mode! Go back to MongoDB configuration and check your database user has read and write access.'), null); + } + + console.log('Mongo user role seems ok:', roles); + + // If there is a valid callback, then invoke the function to perform the callback + if (cb && cb.call) { + cb(null, mongo); + } } - }); + ); + }) + .catch(err => { + if (err.message && err.message.includes('AuthenticationFailed')) { + console.log('Authentication to Mongo failed'); + cb(new Error('MongoDB authentication failed! Double check the URL has the right username and password in MONGODB_URI.'), null); + return; + } + + if (err.name && err.name === "MongoNetworkError") { + var timeout = (i > 15) ? 60000 : i * 3000; + console.log('Error connecting to MongoDB: %j - retrying in ' + timeout / 1000 + ' sec', err); + setTimeout(connect_with_retry, timeout, i + 1); + if (i == 1) cb(new Error('MongoDB connection failed! Double check the MONGODB_URI setting in Heroku.'), null); + } else { + cb(new Error('MONGODB_URI ' + env.storageURI + ' seems invalid: ' + err.message)); + } + }); - }; + }; - return connect_with_retry(1); + return connect_with_retry(1); - } } + } - mongo.collection = function get_collection (name) { - return connection.collection(name); - }; - - mongo.ensureIndexes = function ensureIndexes (collection, fields) { - fields.forEach(function(field) { - console.info('ensuring index for: ' + field); - collection.createIndex(field, { 'background': true }, function(err) { - if (err) { - console.error('unable to ensureIndex for: ' + field + ' - ' + err); - } - }); + mongo.collection = function get_collection (name) { + return connection.collection(name); + }; + + mongo.ensureIndexes = function ensureIndexes (collection, fields) { + fields.forEach(function(field) { + console.info('ensuring index for: ' + field); + collection.createIndex(field, { 'background': true }, function(err) { + if (err) { + console.error('unable to ensureIndex for: ' + field + ' - ' + err); + } }); - }; + }); + }; - return maybe_connect(cb); - } + return maybe_connect(cb); +} - module.exports = init; +module.exports = init; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 4e143615a3d..a137dcd1533 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -3405,12 +3405,62 @@ } }, "env-cmd": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-8.0.2.tgz", - "integrity": "sha512-gHX8MnQXw1iS7dc2KeJdBdxca7spIkxkNwIuORLwm8kDg6xHh5wWnv1Yv3pc64nLZR6kufQSCmwTz16sRmd/rg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz", + "integrity": "sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==", "dev": true, "requires": { - "cross-spawn": "^6.0.5" + "commander": "^4.0.0", + "cross-spawn": "^7.0.0" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "errno": { diff --git a/package.json b/package.json index a2694ae0297..bbc6f063262 100644 --- a/package.json +++ b/package.json @@ -27,18 +27,18 @@ }, "scripts": { "start": "node server.js", - "test": "env-cmd ./my.test.env mocha --exit tests/*.test.js", - "test-single": "env-cmd ./my.test.env mocha --exit tests/$TEST.test.js", - "test-ci": "env-cmd ./ci.test.env nyc --reporter=lcov --reporter=text-summary mocha --exit tests/*.test.js", + "test": "env-cmd -f ./my.test.env mocha --exit tests/*.test.js", + "test-single": "env-cmd -f ./my.test.env mocha --exit tests/$TEST.test.js", + "test-ci": "env-cmd -f ./ci.test.env nyc --reporter=lcov --reporter=text-summary mocha --exit tests/*.test.js", "env": "env", "postinstall": "webpack --mode production --config webpack.config.js && npm run-script update-buster", "bundle": "webpack --mode production --config webpack.config.js && npm run-script update-buster", "bundle-dev": "webpack --mode development --config webpack.config.js && npm run-script update-buster", "bundle-analyzer": "webpack --mode development --config webpack.config.js --profile --json > stats.json && webpack-bundle-analyzer stats.json", "update-buster": "node bin/generateCacheBuster.js >tmp/cacheBusterToken", - "coverage": "cat ./coverage/lcov.info | env-cmd ./ci.test.env codacy-coverage", - "dev": "env-cmd ./my.env nodemon server.js 0.0.0.0", - "prod": "env-cmd ./my.prod.env node server.js 0.0.0.0", + "coverage": "cat ./coverage/lcov.info | env-cmd -f ./ci.test.env codacy-coverage", + "dev": "env-cmd -f ./my.env nodemon server.js 0.0.0.0", + "prod": "env-cmd -f ./my.prod.env node server.js 0.0.0.0", "lint": "eslint lib" }, "main": "server.js", @@ -57,8 +57,8 @@ } }, "engines": { - "node": "^10.15.2 || ^8.15.1", - "npm": "^6.4.1" + "node": "^10.22.0 || ^12.18.4", + "npm": "^6.14.6" }, "dependencies": { "@babel/core": "^7.11.1", @@ -126,7 +126,7 @@ "benv": "^3.3.0", "codacy-coverage": "^3.4.0", "csv-parse": "^4.12.0", - "env-cmd": "^8.0.2", + "env-cmd": "^10.1.0", "eslint": "^6.8.0", "eslint-loader": "^2.2.1", "mocha": "^8.1.1", diff --git a/tests/api.entries.test.js b/tests/api.entries.test.js index 098b5c45663..6c0c3f14e45 100644 --- a/tests/api.entries.test.js +++ b/tests/api.entries.test.js @@ -307,4 +307,66 @@ describe('Entries REST api', function ( ) { }); }); + it('post multipole entries, query, delete, verify gone', function (done) { + // insert a glucose entry - needs to be unique from example data + console.log('Inserting glucose entry') + request(self.app) + .post('/entries/') + .set('api-secret', self.env.api_secret || '') + .send([{ + "type": "sgv", "sgv": "199", "dateString": "2014-07-20T00:44:15.000-07:00" + , "date": 1405791855000, "device": "dexcom", "direction": "NOT COMPUTABLE" + }, { + "type": "sgv", "sgv": "200", "dateString": "2014-07-20T00:44:15.001-07:00" + , "date": 1405791855001, "device": "dexcom", "direction": "NOT COMPUTABLE" + }]) + .expect(200) + .end(function (err) { + if (err) { + done(err); + } else { + // make sure treatment was inserted successfully + console.log('Ensuring glucose entry was inserted successfully'); + request(self.app) + .get('/entries.json?find[dateString][$gte]=2014-07-20&count=100') + .set('api-secret', self.env.api_secret || '') + .expect(200) + .expect(function (response) { + var entry = response.body[0]; + response.body.length.should.equal(2); + entry.sgv.should.equal('200'); + entry.utcOffset.should.equal(-420); + }) + .end(function (err) { + if (err) { + done(err); + } else { + // delete the glucose entry + console.log('Deleting test glucose entry'); + request(self.app) + .delete('/entries.json?find[dateString][$gte]=2014-07-20&count=100') + .set('api-secret', self.env.api_secret || '') + .expect(200) + .end(function (err) { + if (err) { + done(err); + } else { + // make sure it was deleted + console.log('Testing if glucose entries were deleted'); + request(self.app) + .get('/entries.json?find[dateString][$gte]=2014-07-20&count=100') + .set('api-secret', self.env.api_secret || '') + .expect(200) + .expect(function (response) { + response.body.length.should.equal(0); + }) + .end(done); + } + }); + } + }); + } + }); + }); + }); diff --git a/views/index.html b/views/index.html index dbff801392f..8e60b30f471 100644 --- a/views/index.html +++ b/views/index.html @@ -730,7 +730,7 @@ reg.addEventListener('updatefound', () => { console.log('Service worker update detected'); reg.update(); - const newWorker = reg.installing; + var newWorker = reg.installing; newWorker.addEventListener('statechange', (state) => { console.log('New worker state change', state); window.location.reload(true); From f81ac5922a5ad154504d4377786240c1a1f4e8ba Mon Sep 17 00:00:00 2001 From: Andras Feher <56167205+andrasfeher-smilodonis@users.noreply.github.com> Date: Wed, 11 Nov 2020 16:01:35 +0100 Subject: [PATCH 007/194] Adding Hungarian translation to nightscout (#6037) * Finished first round of translation for Hungarian language * Added hungarian language to the readme file * Fixes * WIP * Typo fixes and changes to translations * Update language.js Fixed some mistyped language keys Co-authored-by: Andy Feher Co-authored-by: Sulka Haro --- README.md | 2 +- lib/language.js | 691 ++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 672 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index a301e7626be..8aaf4d13cff 100644 --- a/README.md +++ b/README.md @@ -305,7 +305,7 @@ To learn more about the Nightscout API, visit https://YOUR-SITE.com/api-docs/ or * `SHOW_PLUGINS` - enabled plugins that should have their visualizations shown, defaults to all enabled * `SHOW_FORECAST` (`ar2`) - plugin forecasts that should be shown by default, supports space delimited values such as `"ar2 openaps"` * `LANGUAGE` (`en`) - language of Nightscout. If not available english is used - * Currently supported language codes are: bg (Български), cs (Čeština), de (Deutsch), dk (Dansk), el (Ελληνικά), en (English), es (Español), fi (Suomi), fr (Français), he (עברית), hr (Hrvatski), it (Italiano), ko (한국어), nb (Norsk (Bokmål)), nl (Nederlands), pl (Polski), pt (Português (Brasil)), ro (Română), ru (Русский), sk (Slovenčina), sv (Svenska), tr (Turkish), zh_cn (中文(简体)), zh_tw (中文(繁體)) + * Currently supported language codes are: bg (Български), cs (Čeština), de (Deutsch), dk (Dansk), el (Ελληνικά), en (English), es (Español), fi (Suomi), fr (Français), he (עברית), hr (Hrvatski), hu (magyar), it (Italiano), ko (한국어), nb (Norsk (Bokmål)), nl (Nederlands), pl (Polski), pt (Português (Brasil)), ro (Română), ru (Русский), sk (Slovenčina), sv (Svenska), tr (Turkish), zh_cn (中文(简体)), zh_tw (中文(繁體)) * `SCALE_Y` (`log`) - The type of scaling used for the Y axis of the charts system wide. * The default `log` (logarithmic) option will let you see more detail towards the lower range, while still showing the full CGM range. * The `linear` option has equidistant tick marks; the range used is dynamic so that space at the top of chart isn't wasted. diff --git a/lib/language.js b/lib/language.js index 64098826fde..989cc441a9c 100644 --- a/lib/language.js +++ b/lib/language.js @@ -23,6 +23,7 @@ function init() { , { code: 'fr', language: 'Français', speechCode: 'fr-FR' } , { code: 'he', language: 'עברית', speechCode: 'he-IL' } , { code: 'hr', language: 'Hrvatski', speechCode: 'hr-HR' } + , { code: 'hu', language: 'Magyar', speechCode: 'hu-HU' } , { code: 'it', language: 'Italiano', speechCode: 'it-IT' } , { code: 'ja', language: '日本語', speechCode: 'ja-JP' } , { code: 'ko', language: '한국어', speechCode: 'ko-KR' } @@ -65,6 +66,7 @@ function init() { ,ko: '포트에서 수신' ,tr: 'Port dinleniyor' ,zh_cn: '正在监听端口' + ,hu: 'Port figyelése' } // Client ,'Mo' : { @@ -91,6 +93,7 @@ function init() { ,ko: '월' ,tr: 'Pzt' ,zh_cn: '一' + ,hu: 'Hé' } ,'Tu' : { cs: 'Út' @@ -116,6 +119,7 @@ function init() { ,ko: '화' ,tr: 'Sal' ,zh_cn: '二' + ,hu: 'Ke' } ,'We' : { cs: 'St' @@ -141,6 +145,7 @@ function init() { ,ko: '수' ,tr: 'Çar' ,zh_cn: '三' + ,hu: 'Sze' } ,'Th' : { cs: 'Čt' @@ -166,6 +171,7 @@ function init() { ,ko: '목' ,tr: 'Per' ,zh_cn: '四' + ,hu: 'Csü' } ,'Fr' : { cs: 'Pá' @@ -191,6 +197,7 @@ function init() { ,ko: '금' ,tr: 'Cum' ,zh_cn: '五' + ,hu: 'Pé' } ,'Sa' : { cs: 'So' @@ -216,6 +223,7 @@ function init() { ,ko: '토' ,tr: 'Cmt' ,zh_cn: '六' + ,hu: 'Szo' } ,'Su' : { cs: 'Ne' @@ -241,6 +249,7 @@ function init() { ,ko: '일' ,tr: 'Paz' ,zh_cn: '日' + ,hu: 'Vas' } ,'Monday' : { cs: 'Pondělí' @@ -266,6 +275,7 @@ function init() { ,ko: '월요일' ,tr: 'Pazartesi' ,zh_cn: '星期一' + ,hu: 'Hétfő' } ,'Tuesday' : { cs: 'Úterý' @@ -291,6 +301,7 @@ function init() { ,ko: '화요일' ,tr: 'Salı' ,zh_cn: '星期二' + ,hu: 'Kedd' } ,'Wednesday' : { cs: 'Středa' @@ -316,6 +327,7 @@ function init() { ,ko: '수요일' ,tr: 'Çarşamba' ,zh_cn: '星期三' + ,hu: 'Szerda' } ,'Thursday' : { cs: 'Čtvrtek' @@ -341,6 +353,7 @@ function init() { ,ko: '목요일' ,tr: 'Perşembe' ,zh_cn: '星期四' + ,hu: 'Csütörtök' } ,'Friday' : { cs: 'Pátek' @@ -366,6 +379,7 @@ function init() { ,ko: '금요일' ,tr: 'Cuma' ,zh_cn: '星期五' + ,hu: 'Péntek' } ,'Saturday' : { cs: 'Sobota' @@ -391,6 +405,7 @@ function init() { ,ko: '토요일' ,tr: 'Cumartesi' ,zh_cn: '星期六' + ,hu: 'Szombat' } ,'Sunday' : { cs: 'Neděle' @@ -416,6 +431,7 @@ function init() { ,ko: '일요일' ,tr: 'Pazar' ,zh_cn: '星期日' + ,hu: 'Vasárnap' } ,'Category' : { cs: 'Kategorie' @@ -441,6 +457,7 @@ function init() { ,ko: '분류' ,tr: 'Kategori' ,zh_cn: '类别' + ,hu: 'Kategória' } ,'Subcategory' : { cs: 'Podkategorie' @@ -466,6 +483,7 @@ function init() { ,ko: '세부 분류' ,tr: 'Altkategori' ,zh_cn: '子类别' + ,hu: 'Alkategória' } ,'Name' : { cs: 'Jméno' @@ -491,6 +509,7 @@ function init() { ,ko: '프로파일 명' ,tr: 'İsim' ,zh_cn: '名称' + ,hu: 'Név' } ,'Today' : { cs: 'Dnes' @@ -516,6 +535,7 @@ function init() { ,ko: '오늘' ,tr: 'Bugün' ,zh_cn: '今天' + ,hu: 'Ma' } ,'Last 2 days' : { cs: 'Poslední 2 dny' @@ -541,6 +561,7 @@ function init() { ,ko: '지난 2일' ,tr: 'Son 2 gün' ,zh_cn: '过去2天' + ,hu: 'Utolsó 2 nap' } ,'Last 3 days' : { cs: 'Poslední 3 dny' @@ -566,6 +587,7 @@ function init() { ,ko: '지난 3일' ,tr: 'Son 3 gün' ,zh_cn: '过去3天' + ,hu: 'Utolsó 3 nap' } ,'Last week' : { cs: 'Poslední týden' @@ -591,6 +613,7 @@ function init() { ,ko: '지난주' ,tr: 'Geçen Hafta' ,zh_cn: '上周' + ,hu: 'Előző hét' } ,'Last 2 weeks' : { cs: 'Poslední 2 týdny' @@ -616,6 +639,7 @@ function init() { ,ko: '지난 2주' ,tr: 'Son 2 hafta' ,zh_cn: '过去2周' + ,hu: 'Előző 2 hét' } ,'Last month' : { cs: 'Poslední měsíc' @@ -641,6 +665,7 @@ function init() { ,ko: '지난달' ,tr: 'Geçen Ay' ,zh_cn: '上个月' + ,hu: 'Előző hónap' } ,'Last 3 months' : { cs: 'Poslední 3 měsíce' @@ -666,6 +691,7 @@ function init() { ,ko: '지난 3달' ,tr: 'Son 3 ay' ,zh_cn: '过去3个月' + ,hu: 'Előző 3 hónap' } , 'between': { cs: 'between' @@ -691,6 +717,7 @@ function init() { ,ko: 'between' ,tr: 'between' ,zh_cn: 'between' + ,hu: 'között' } , 'around': { cs: 'around' @@ -716,6 +743,7 @@ function init() { ,ko: 'around' ,tr: 'around' ,zh_cn: 'around' + ,hu: 'körülbelül' } , 'and': { cs: 'and' @@ -741,6 +769,7 @@ function init() { ,ko: 'and' ,tr: 'and' ,zh_cn: 'and' + ,hu: 'és' } ,'From' : { cs: 'Od' @@ -766,6 +795,7 @@ function init() { ,ko: '시작일' ,tr: 'Başlangıç' ,zh_cn: '从' + ,hu: 'Tól' } ,'To' : { cs: 'Do' @@ -791,6 +821,7 @@ function init() { ,ko: '종료일' ,tr: 'Bitiş' ,zh_cn: '到' + ,hu: 'Ig' } ,'Notes' : { cs: 'Poznámky' @@ -816,6 +847,7 @@ function init() { ,ko: '메모' ,tr: 'Not' ,zh_cn: '记录' + ,hu: 'Jegyzetek' } ,'Food' : { cs: 'Jídlo' @@ -841,6 +873,7 @@ function init() { ,ko: '음식' ,tr: 'Gıda' ,zh_cn: '食物' + ,hu: 'Étel' } ,'Insulin' : { cs: 'Inzulín' @@ -866,6 +899,7 @@ function init() { ,ko: '인슐린' ,tr: 'İnsülin' ,zh_cn: '胰岛素' + ,hu: 'Inzulin' } ,'Carbs' : { cs: 'Sacharidy' @@ -891,6 +925,7 @@ function init() { ,ko: '탄수화물' ,tr: 'Karbonhidrat' ,zh_cn: '碳水化合物' + ,hu: 'Szénhidrát' } ,'Notes contain' : { cs: 'Poznámky obsahují' @@ -916,6 +951,7 @@ function init() { ,ko: '메모 포함' ,tr: 'Notlar içerir' ,zh_cn: '记录包括' + ,hu: 'Jegyzet tartalmazza' } ,'Target bg range bottom' : { cs: 'Cílová glykémie spodní' @@ -941,6 +977,7 @@ function init() { ,ko: '최저 목표 혈당 범위' ,tr: 'Hedef KŞ aralığı düşük' ,zh_cn: '目标血糖范围 下限' + ,hu: 'Alsó cukorszint határ' } ,'top' : { cs: 'horní' @@ -966,6 +1003,7 @@ function init() { ,ko: '최고치' ,tr: 'Üstü' ,zh_cn: '上限' + ,hu: 'Felső' } ,'Show' : { cs: 'Zobraz' @@ -991,6 +1029,7 @@ function init() { ,ko: '확인' ,tr: 'Göster' ,zh_cn: '生成' + ,hu: 'Mutasd' } ,'Display' : { cs: 'Zobraz' @@ -1016,6 +1055,7 @@ function init() { ,ko: '출력' ,tr: 'Görüntüle' ,zh_cn: '显示' + ,hu: 'Ábrázol' } ,'Loading' : { cs: 'Nahrávám' @@ -1041,6 +1081,7 @@ function init() { ,ko: '로딩' ,tr: 'Yükleniyor' ,zh_cn: '载入中' + ,hu: 'Betöltés' } ,'Loading profile' : { cs: 'Nahrávám profil' @@ -1066,6 +1107,7 @@ function init() { ,ko: '프로파일 로딩' ,tr: 'Profil yükleniyor' ,zh_cn: '载入配置文件' + ,hu: 'Profil betöltése' } ,'Loading status' : { cs: 'Nahrávám status' @@ -1091,6 +1133,7 @@ function init() { ,ko: '상태 로딩' ,tr: 'Durum Yükleniyor' ,zh_cn: '载入状态' + ,hu: 'Állapot betöltése' } ,'Loading food database' : { cs: 'Nahrávám databázi jídel' @@ -1116,6 +1159,7 @@ function init() { ,ko: '음식 데이터 베이스 로딩' ,tr: 'Gıda veritabanı yükleniyor' ,zh_cn: '载入食物数据库' + ,hu: 'Étel adatbázis betöltése' } ,'not displayed' : { cs: 'není zobrazeno' @@ -1141,6 +1185,7 @@ function init() { ,ko: '출력되지 않음' ,tr: 'görüntülenmedi' ,zh_cn: '未显示' + ,hu: 'nincs megjelenítve' } ,'Loading CGM data of' : { cs: 'Nahrávám CGM data' @@ -1166,6 +1211,7 @@ function init() { ,ko: 'CGM 데이터 로딩' ,tr: 'den CGM veriler yükleniyor' ,zh_cn: '载入CGM(连续血糖监测)数据从' + ,hu: 'CGM adatok betöltése' } ,'Loading treatments data of' : { cs: 'Nahrávám data ošetření' @@ -1191,6 +1237,7 @@ function init() { ,ko: '처리 데이터 로딩' ,tr: 'dan Tedavi verilerini yükle' ,zh_cn: '载入操作数据从' + ,hu: 'Kezelés adatainak betöltése' } ,'Processing data of' : { cs: 'Zpracovávám data' @@ -1216,6 +1263,7 @@ function init() { ,ko: '데이터 처리 중' ,tr: 'dan Veri işleme' ,zh_cn: '处理数据从' + ,hu: 'Adatok feldolgozása' } ,'Portion' : { cs: 'Porce' @@ -1241,6 +1289,7 @@ function init() { ,ko: '부분' ,tr: 'Porsiyon' ,zh_cn: '部分' + ,hu: 'Porció' } ,'Size' : { cs: 'Rozměr' @@ -1266,6 +1315,7 @@ function init() { ,ko: '크기' ,tr: 'Boyut' ,zh_cn: '大小' + ,hu: 'Méret' } ,'(none)' : { cs: '(Žádný)' @@ -1292,6 +1342,7 @@ function init() { ,tr: '(hiç)' ,zh_cn: '(无)' ,zh_tw: '(無)' + ,hu: '(semmilyen)' } ,'None' : { cs: 'Žádný' @@ -1318,6 +1369,7 @@ function init() { ,tr: 'Hiç' ,zh_cn: '无' ,zh_tw: '無' + ,hu: 'Semmilyen' } ,'' : { cs: '<Žádný>' @@ -1343,6 +1395,7 @@ function init() { ,ko: '<없음>' ,tr: '' ,zh_cn: '<无>' + ,hu: '' } ,'Result is empty' : { cs: 'Prázdný výsledek' @@ -1368,6 +1421,7 @@ function init() { ,ko: '결과 없음' ,tr: 'Sonuç boş' ,zh_cn: '结果为空' + ,hu: 'Az eredmény üres' } ,'Day to day' : { cs: 'Den po dni' @@ -1393,6 +1447,7 @@ function init() { ,ko: '일별 그래프' ,tr: 'Günden Güne' ,zh_cn: '日到日' + ,hu: 'Napi' } ,'Week to week' : { cs: 'Week to week' @@ -1416,6 +1471,7 @@ function init() { ,nl: 'Week to week' ,ko: '주별 그래프' ,zh_cn: 'Week to week' + ,hu: 'Heti' } ,'Daily Stats' : { cs: 'Denní statistiky' @@ -1441,6 +1497,7 @@ function init() { ,ko: '일간 통계' ,tr: 'Günlük İstatistikler' ,zh_cn: '每日状态' + ,hu: 'Napi statisztika' } ,'Percentile Chart' : { cs: 'Percentil' @@ -1466,6 +1523,7 @@ function init() { ,ko: '백분위 그래프' ,tr: 'Yüzdelik Grafiği' ,zh_cn: '百分位图形' + ,hu: 'Százalékos' } ,'Distribution' : { cs: 'Rozložení' @@ -1491,6 +1549,7 @@ function init() { ,ko: '분포' ,tr: 'Dağılım' ,zh_cn: '分布' + ,hu: 'Szétosztás' } ,'Hourly stats' : { cs: 'Statistika po hodinách' @@ -1516,6 +1575,7 @@ function init() { ,ko: '시간대별 통계' ,tr: 'Saatlik istatistikler' ,zh_cn: '每小时状态' + ,hu: 'Óránkra való szétosztás' } ,'netIOB stats': { // hourlystats.js nl: 'netIOB stats' @@ -1529,6 +1589,7 @@ function init() { , pl: 'Statystyki netIOP' ,ru: 'статистика нетто активн инс netIOB' ,tr: 'netIOB istatistikleri' + ,hu: 'netIOB statisztika' } ,'temp basals must be rendered to display this report': { //hourlystats.js nl: 'tijdelijk basaal moet zichtbaar zijn voor dit rapport' @@ -1541,6 +1602,7 @@ function init() { , pl: 'Tymczasowa dawka podstawowa jest wymagana aby wyświetlić ten raport' ,ru: 'для этого отчета требуется прорисовка врем базалов' ,tr: 'Bu raporu görüntülemek için geçici bazal oluşturulmalıdır' + ,hu: 'Az átmeneti bazálnak meg kell lennie jelenítve az adott jelentls megtekintéséhez' } ,'Weekly success' : { cs: 'Statistika po týdnech' @@ -1566,6 +1628,7 @@ function init() { ,ko: '주간 통계' ,tr: 'Haftalık başarı' ,zh_cn: '每周统计' + ,hu: 'Heti sikeresség' } ,'No data available' : { cs: 'Žádná dostupná data' @@ -1591,6 +1654,7 @@ function init() { ,ko: '활용할 수 있는 데이터 없음' ,tr: 'Veri yok' ,zh_cn: '无可用数据' + ,hu: 'Nincs elérhető adat' } ,'Low' : { cs: 'Nízká' @@ -1616,6 +1680,7 @@ function init() { ,ko: '낮음' ,tr: 'Düşük' ,zh_cn: '低血糖' + ,hu: 'Alacsony' } ,'In Range' : { cs: 'V rozsahu' @@ -1641,6 +1706,7 @@ function init() { ,ko: '범위 안 ' ,tr: 'Hedef alanında' ,zh_cn: '范围内' + ,hu: 'Normális' } ,'Period' : { cs: 'Období' @@ -1666,6 +1732,7 @@ function init() { ,ko: '기간 ' ,tr: 'Periyot' ,zh_cn: '期间' + ,hu: 'Időszak' } ,'High' : { cs: 'Vysoká' @@ -1691,6 +1758,7 @@ function init() { ,ko: '높음' ,tr: 'Yüksek' ,zh_cn: '高血糖' + ,hu: 'Magas' } ,'Average' : { cs: 'Průměr' @@ -1716,6 +1784,7 @@ function init() { ,ko: '평균' ,tr: 'Ortalama' ,zh_cn: '平均' + ,hu: 'Átlagos' } ,'Low Quartile' : { cs: 'Nízký kvartil' @@ -1741,6 +1810,7 @@ function init() { ,ko: '낮은 4분위' ,tr: 'Alt Çeyrek' ,zh_cn: '下四分位数' + ,hu: 'Alacsony kvartil' } ,'Upper Quartile' : { cs: 'Vysoký kvartil' @@ -1766,6 +1836,7 @@ function init() { ,ko: '높은 4분위' ,tr: 'Üst Çeyrek' ,zh_cn: '上四分位数' + ,hu: 'Magas kvartil' } ,'Quartile' : { cs: 'Kvartil' @@ -1791,6 +1862,7 @@ function init() { ,ko: '4분위' ,tr: 'Çeyrek' ,zh_cn: '四分位数' + ,hu: 'Kvartil' } ,'Date' : { cs: 'Datum' @@ -1816,6 +1888,7 @@ function init() { ,ko: '날짜' ,tr: 'Tarih' ,zh_cn: '日期' + ,hu: 'Dátum' } ,'Normal' : { cs: 'Normální' @@ -1841,6 +1914,7 @@ function init() { ,ko: '보통' ,tr: 'Normal' ,zh_cn: '正常' + ,hu: 'Normális' } ,'Median' : { cs: 'Medián' @@ -1866,6 +1940,7 @@ function init() { ,ko: '중간값' ,tr: 'Orta Değer' ,zh_cn: '中值' + ,hu: 'Medián' } ,'Readings' : { cs: 'Záznamů' @@ -1891,6 +1966,7 @@ function init() { ,ko: '혈당' ,tr: 'Ölçüm' ,zh_cn: '读数' + ,hu: 'Értékek' } ,'StDev' : { cs: 'Směrodatná odchylka' @@ -1916,6 +1992,7 @@ function init() { ,ko: '표준 편차' ,tr: 'Standart Sapma' ,zh_cn: '标准偏差' + ,hu: 'Standard eltérés' } ,'Daily stats report' : { cs: 'Denní statistiky' @@ -1941,6 +2018,7 @@ function init() { ,ko: '일간 통계 보고서' ,tr: 'Günlük istatistikler raporu' ,zh_cn: '每日状态报表' + ,hu: 'Napi statisztikák' } ,'Glucose Percentile report' : { cs: 'Tabulka percentil glykémií' @@ -1966,6 +2044,7 @@ function init() { ,ko: '혈당 백분위 보고서' ,tr: 'Glikoz Yüzdelik raporu' ,zh_cn: '血糖百分位报表' + ,hu: 'Cukorszint percentil jelentés' } ,'Glucose distribution' : { cs: 'Rozložení glykémií' @@ -1991,6 +2070,7 @@ function init() { ,ko: '혈당 분포' ,tr: 'Glikoz dağılımı' ,zh_cn: '血糖分布' + ,hu: 'Cukorszint szétosztása' } ,'days total' : { cs: 'dní celkem' @@ -2016,6 +2096,7 @@ function init() { ,ko: '일 전체' ,tr: 'toplam gün' ,zh_cn: '天总计' + ,hu: 'nap összesen' } ,'Total per day' : { cs: 'dní celkem' @@ -2040,6 +2121,7 @@ function init() { ,ko: '하루 총량' ,tr: 'Günlük toplam' ,zh_cn: '天总计' + ,hu: 'Naponta összesen' } ,'Overall' : { cs: 'Celkem' @@ -2065,6 +2147,7 @@ function init() { ,ko: '전체' ,tr: 'Tüm' ,zh_cn: '概览' + ,hu: 'Összesen' } ,'Range' : { cs: 'Rozsah' @@ -2090,6 +2173,7 @@ function init() { ,ko: '범위' ,tr: 'Alan' ,zh_cn: '范围' + ,hu: 'Tartomány' } ,'% of Readings' : { cs: '% záznamů' @@ -2115,6 +2199,7 @@ function init() { ,ko: '수신된 혈당 비율(%)' ,tr: '% Okumaların' ,zh_cn: '%已读取' + ,hu: '% az értékeknek' } ,'# of Readings' : { cs: 'počet záznamů' @@ -2140,6 +2225,7 @@ function init() { ,ko: '수신된 혈당 개수(#)' ,tr: '# Okumaların' ,zh_cn: '#已读取' + ,hu: 'Olvasott értékek száma' } ,'Mean' : { cs: 'Střední hodnota' @@ -2165,6 +2251,7 @@ function init() { ,ko: '평균' ,tr: 'ortalama' ,zh_cn: '平均' + ,hu: 'Közép' } ,'Standard Deviation' : { cs: 'Standardní odchylka' @@ -2190,6 +2277,7 @@ function init() { ,ko: '표준 편차' ,tr: 'Standart Sapma' ,zh_cn: '标准偏差' + ,hu: 'Átlagos eltérés' } ,'Max' : { cs: 'Max' @@ -2215,6 +2303,7 @@ function init() { ,ko: '최대값' ,tr: 'Max' ,zh_cn: '最大值' + ,hu: 'Max' } ,'Min' : { cs: 'Min' @@ -2240,6 +2329,7 @@ function init() { ,ko: '최소값' ,tr: 'Min' ,zh_cn: '最小值' + ,hu: 'Min' } ,'A1c estimation*' : { cs: 'Předpokládané HBA1c*' @@ -2265,6 +2355,7 @@ function init() { ,ko: '예상 당화혈 색소' ,tr: 'Tahmini A1c *' ,zh_cn: '糖化血红蛋白估算' + ,hu: 'Megközelítőleges HbA1c' } ,'Weekly Success' : { cs: 'Týdenní úspěšnost' @@ -2290,6 +2381,7 @@ function init() { ,ko: '주간 통계' ,tr: 'Haftalık Başarı' ,zh_cn: '每周统计' + ,hu: 'Heti sikeresség' } ,'There is not sufficient data to run this report. Select more days.' : { cs: 'Není dostatek dat. Vyberte delší časové období.' @@ -2315,6 +2407,7 @@ function init() { ,ko: '이 보고서를 실행하기 위한 데이터가 충분하지 않습니다. 더 많은 날들을 선택해 주세요.' ,tr: 'Bu raporu çalıştırmak için yeterli veri yok. Daha fazla gün seçin.' ,zh_cn: '没有足够的数据生成报表,请选择更长时间段。' + ,hu: 'Nincs elég adat a jelentés elkészítéséhez. Válassz több napot.' } // food editor ,'Using stored API secret hash' : { @@ -2342,6 +2435,7 @@ function init() { ,tr: 'Kaydedilmiş API secret hash kullan' ,zh_cn: '使用已存储的API密钥哈希值' ,zh_tw: '使用已存儲的API密鑰哈希值' + ,hu: 'Az elmentett API hash jelszót használom' } ,'No API secret hash stored yet. You need to enter API secret.' : { cs: 'Není uložený žádný hash API hesla. Musíte zadat API heslo.' @@ -2368,6 +2462,7 @@ function init() { ,tr: 'Henüz bir API secret hash saklanmadı. API parolasını girmeniz gerekiyor.' ,zh_cn: '没有已存储的API密钥,请输入API密钥。' ,zh_tw: '沒有已存儲的API密鑰,請輸入API密鑰。' + ,hu: 'Még nem lett a titkos API hash elmentve. Add meg a titkos API jelszót' } ,'Database loaded' : { cs: 'Databáze načtena' @@ -2393,6 +2488,7 @@ function init() { ,ko: '데이터베이스 로드' ,tr: 'Veritabanı yüklendi' ,zh_cn: '数据库已载入' + ,hu: 'Adatbázis betöltve' } ,'Error: Database failed to load' : { cs: 'Chyba při načítání databáze' @@ -2418,6 +2514,7 @@ function init() { ,ko: '에러: 데이터베이스 로드 실패' ,tr: 'Hata: Veritabanı yüklenemedi' ,zh_cn: '错误:数据库载入失败' + ,hu: 'Hiba: Az adatbázist nem sikerült betölteni' } ,'Error' : { cs: 'Error' @@ -2443,6 +2540,7 @@ function init() { ,tr: 'Error' ,zh_cn: 'Error' ,zh_tw: 'Error' + ,hu: 'Hiba' } ,'Create new record' : { cs: 'Vytvořit nový záznam' @@ -2468,6 +2566,7 @@ function init() { ,ko: '새입력' ,tr: 'Yeni kayıt oluştur' ,zh_cn: '新增记录' + ,hu: 'Új bejegyzés' } ,'Save record' : { cs: 'Uložit záznam' @@ -2493,6 +2592,7 @@ function init() { ,ko: '저장' ,tr: 'Kayıtları kaydet' ,zh_cn: '保存记录' + ,hu: 'Bejegyzés mentése' } ,'Portions' : { cs: 'Porcí' @@ -2518,6 +2618,7 @@ function init() { ,ko: '부분' ,tr: 'Porsiyonlar' ,zh_cn: '部分' + ,hu: 'Porció' } ,'Unit' : { cs: 'Jedn' @@ -2543,6 +2644,7 @@ function init() { ,ko: '단위' ,tr: 'Birim' ,zh_cn: '单位' + ,hu: 'Egység' } ,'GI' : { cs: 'GI' @@ -2568,6 +2670,7 @@ function init() { ,ko: '혈당 지수' ,tr: 'GI-Glisemik İndeks' ,zh_cn: 'GI(血糖生成指数)' + ,hu: 'GI' } ,'Edit record' : { cs: 'Upravit záznam' @@ -2593,6 +2696,7 @@ function init() { ,ko: '편집기록' ,tr: 'Kaydı düzenle' ,zh_cn: '编辑记录' + ,hu: 'Bejegyzés szerkesztése' } ,'Delete record' : { cs: 'Smazat záznam' @@ -2618,6 +2722,7 @@ function init() { ,ko: '삭제기록' ,tr: 'Kaydı sil' ,zh_cn: '删除记录' + ,hu: 'Bejegyzés törlése' } ,'Move to the top' : { cs: 'Přesuň na začátek' @@ -2643,6 +2748,7 @@ function init() { ,ko: '맨처음으로 이동' ,tr: 'En üste taşı' ,zh_cn: '移至顶端' + ,hu: 'Áthelyezni az elejére' } ,'Hidden' : { cs: 'Skrytý' @@ -2668,6 +2774,7 @@ function init() { ,ko: '숨김' ,tr: 'Gizli' ,zh_cn: '隐藏' + ,hu: 'Elrejtett' } ,'Hide after use' : { cs: 'Skryj po použití' @@ -2693,6 +2800,7 @@ function init() { ,ko: '사용 후 숨김' ,tr: 'Kullandıktan sonra gizle' ,zh_cn: '使用后隐藏' + ,hu: 'Elrejteni használat után' } ,'Your API secret must be at least 12 characters long' : { cs: 'Vaše API heslo musí mít alespoň 12 znaků' @@ -2719,6 +2827,7 @@ function init() { ,tr: 'PI parolanız en az 12 karakter uzunluğunda olmalıdır' ,zh_cn: 'API密钥最少需要12个字符' ,zh_tw: 'API密鑰最少需要12個字符' + ,hu: 'Az API jelszó több mint 12 karakterből kell hogy álljon' } ,'Bad API secret' : { cs: 'Chybné API heslo' @@ -2745,6 +2854,7 @@ function init() { ,tr: 'Hatalı API parolası' ,zh_cn: 'API密钥错误' ,zh_tw: 'API密鑰錯誤' + ,hu: 'Helytelen API jelszó' } ,'API secret hash stored' : { cs: 'Hash API hesla uložen' @@ -2771,6 +2881,7 @@ function init() { ,tr: 'API secret hash parolası saklandı' ,zh_cn: 'API密钥已存储' ,zh_tw: 'API密鑰已存儲' + ,hu: 'API jelszó elmentve' } ,'Status' : { cs: 'Status' @@ -2796,6 +2907,7 @@ function init() { ,ko: '상태' ,tr: 'Durum' ,zh_cn: '状态' + ,hu: 'Állapot' } ,'Not loaded' : { cs: 'Nenačtený' @@ -2821,6 +2933,7 @@ function init() { ,ko: '로드되지 않음' ,tr: 'Yüklü değil' ,zh_cn: '未载入' + ,hu: 'Nincs betöltve' } ,'Food Editor' : { cs: 'Editor jídel' @@ -2846,6 +2959,7 @@ function init() { ,ko: '음식 편집' ,tr: 'Gıda Editörü' ,zh_cn: '食物编辑器' + ,hu: 'Étel szerkesztése' } ,'Your database' : { cs: 'Vaše databáze' @@ -2871,6 +2985,7 @@ function init() { ,ko: '당신의 데이터베이스' ,tr: 'Sizin Veritabanınız' ,zh_cn: '你的数据库' + ,hu: 'Ön adatbázisa' } ,'Filter' : { cs: 'Filtr' @@ -2896,6 +3011,7 @@ function init() { ,ko: '필터' ,tr: 'Filtre' ,zh_cn: '过滤器' + ,hu: 'Filter' } ,'Save' : { cs: 'Ulož' @@ -2922,6 +3038,7 @@ function init() { ,tr: 'Kaydet' ,zh_cn: '保存' ,zh_tw: '保存' + ,hu: 'Mentés' } ,'Clear' : { cs: 'Vymaž' @@ -2947,6 +3064,7 @@ function init() { ,ko: '취소' ,tr: 'Temizle' ,zh_cn: '清除' + ,hu: 'Kitöröl' } ,'Record' : { cs: 'Záznam' @@ -2972,6 +3090,7 @@ function init() { ,ko: '기록' ,tr: 'Kayıt' ,zh_cn: '记录' + ,hu: 'Bejegyzés' } ,'Quick picks' : { cs: 'Rychlý výběr' @@ -2997,6 +3116,7 @@ function init() { ,ko: '빠른 선택' ,tr: 'Hızlı seçim' ,zh_cn: '快速选择' + ,hu: 'Gyors választás' } ,'Show hidden' : { cs: 'Zobraz skryté' @@ -3022,16 +3142,19 @@ function init() { ,ko: '숨김 보기' ,tr: 'Gizli göster' ,zh_cn: '显示隐藏值' + ,hu: 'Eltakart mutatása' } ,'Your API secret or token' : { fi: 'API salaisuus tai avain' - , pl: 'Twój hash API lub token' + ,pl: 'Twój hash API lub token' ,ru: 'Ваш пароль API или код доступа ' + ,hu: 'Az API jelszo' } ,'Remember this device. (Do not enable this on public computers.)' : { fi: 'Muista tämä laite (Älä valitse julkisilla tietokoneilla)' , pl: 'Zapamiętaj to urządzenie (Nie używaj tej opcji korzystając z publicznych komputerów.)' ,ru: 'Запомнить это устройство (Не применяйте в общем доступе)' + ,hu: 'A berendezés megjegyzése. (Csak saját berendezésen használd' } ,'Treatments' : { cs: 'Ošetření' @@ -3057,6 +3180,7 @@ function init() { ,ko: '관리' ,tr: 'Tedaviler' ,zh_cn: '操作' + ,hu: 'Kezelések' } ,'Time' : { cs: 'Čas' @@ -3083,6 +3207,7 @@ function init() { ,tr: 'Zaman' ,zh_cn: '时间' ,zh_tw: '時間' + ,hu: 'Idő' } ,'Event Type' : { cs: 'Typ události' @@ -3108,6 +3233,7 @@ function init() { ,ko: '입력 유형' ,tr: 'Etkinlik tipi' ,zh_cn: '事件类型' + ,hu: 'Esemény típusa' } ,'Blood Glucose' : { cs: 'Glykémie' @@ -3133,6 +3259,7 @@ function init() { ,ko: '혈당' ,tr: 'Kan Şekeri' ,zh_cn: '血糖值' + ,hu: 'Vércukor szint' } ,'Entered By' : { cs: 'Zadal' @@ -3158,6 +3285,7 @@ function init() { ,ko: '입력 내용' ,tr: 'Tarafından girildi' ,zh_cn: '输入人' + ,hu: 'Beírta' } ,'Delete this treatment?' : { cs: 'Vymazat toto ošetření?' @@ -3183,6 +3311,7 @@ function init() { ,ko: '이 대처를 지울까요?' ,tr: 'Bu tedaviyi sil?' ,zh_cn: '删除这个操作?' + ,hu: 'Kezelés törlése?' } ,'Carbs Given' : { cs: 'Sacharidů' @@ -3208,6 +3337,7 @@ function init() { ,ko: '탄수화물 요구량' ,tr: 'Karbonhidrat Verilen' ,zh_cn: '碳水化合物量' + ,hu: 'Szénhidrátok' } ,'Inzulin Given' : { cs: 'Inzulínu' @@ -3233,6 +3363,7 @@ function init() { ,ko: '인슐린 요구량' ,tr: 'İnsülin Verilen' ,zh_cn: '胰岛素输注' + ,hu: 'Beadott inzulin' } ,'Event Time' : { cs: 'Čas události' @@ -3258,6 +3389,7 @@ function init() { ,ko: '입력 시간' ,tr: 'Etkinliğin zamanı' ,zh_cn: '事件时间' + ,hu: 'Időpont' } ,'Please verify that the data entered is correct' : { cs: 'Prosím zkontrolujte, zda jsou údaje zadány správně' @@ -3283,6 +3415,7 @@ function init() { ,ko: '입력한 데이터가 정확한지 확인해 주세요.' ,tr: 'Lütfen girilen verilerin doğru olduğunu kontrol edin.' ,zh_cn: '请验证输入的数据是否正确' + ,hu: 'Kérlek ellenőrizd, hogy az adatok helyesek.' } ,'BG' : { cs: 'Glykémie' @@ -3308,6 +3441,7 @@ function init() { ,ko: '혈당' ,tr: 'KŞ' ,zh_cn: '血糖' + ,hu: 'Cukorszint' } ,'Use BG correction in calculation' : { cs: 'Použij korekci na glykémii' @@ -3333,6 +3467,7 @@ function init() { ,ko: '계산에 보정된 혈당을 사용하세요.' ,tr: 'Hesaplamada KŞ düzeltmesini kullan' ,zh_cn: '使用血糖值修正计算' + ,hu: 'Használj korekciót a számításban' } ,'BG from CGM (autoupdated)' : { cs: 'Glykémie z CGM (automaticky aktualizovaná)' @@ -3358,6 +3493,7 @@ function init() { ,ko: 'CGM 혈당(자동 업데이트)' ,tr: 'CGM den KŞ (otomatik güncelleme)' ,zh_cn: 'CGM(连续血糖监测)测量的血糖值(自动更新)' + ,hu: 'Cukorszint a CGM-ből (Automatikus frissítés)' } ,'BG from meter' : { cs: 'Glykémie z glukoměru' @@ -3383,6 +3519,7 @@ function init() { ,ko: '혈당 측정기에서의 혈당' ,tr: 'Glikometre KŞ' ,zh_cn: '血糖仪测量的血糖值' + ,hu: 'Cukorszint a merőből' } ,'Manual BG' : { cs: 'Ručně zadaná glykémie' @@ -3408,6 +3545,7 @@ function init() { ,ko: '수동 입력 혈당' ,tr: 'Manuel KŞ' ,zh_cn: '手动输入的血糖值' + ,hu: 'Kézi cukorszint' } ,'Quickpick' : { cs: 'Rychlý výběr' @@ -3433,6 +3571,7 @@ function init() { ,ko: '빠른 선택' ,tr: 'Hızlı seçim' ,zh_cn: '快速选择' + ,hu: 'Gyors választás' } ,'or' : { cs: 'nebo' @@ -3458,6 +3597,7 @@ function init() { ,ko: '또는' ,tr: 'veya' ,zh_cn: '或' + ,hu: 'vagy' } ,'Add from database' : { cs: 'Přidat z databáze' @@ -3483,6 +3623,7 @@ function init() { ,ko: '데이터베이스로 부터 추가' ,tr: 'Veritabanından ekle' ,zh_cn: '从数据库增加' + ,hu: 'Hozzáadás adatbázisból' } ,'Use carbs correction in calculation' : { cs: 'Použij korekci na sacharidy' @@ -3508,6 +3649,7 @@ function init() { ,ko: '계산에 보정된 탄수화물을 사용하세요.' ,tr: 'Hesaplamada karbonhidrat düzeltmesini kullan' ,zh_cn: '使用碳水化合物修正计算结果' + ,hu: 'Használj szénhidrát korekciót a számításban' } ,'Use COB correction in calculation' : { cs: 'Použij korekci na COB' @@ -3533,6 +3675,7 @@ function init() { ,ko: '계산에 보정된 COB를 사용하세요.' ,tr: 'Hesaplamada COB aktif karbonhidrat düzeltmesini kullan' ,zh_cn: '使用COB(活性碳水化合物)修正计算结果' + ,hu: 'Használj COB korrekciót a számításban' } ,'Use IOB in calculation' : { cs: 'Použij IOB ve výpočtu' @@ -3558,6 +3701,7 @@ function init() { ,ko: '계산에 IOB를 사용하세요.' ,tr: 'Hesaplamada IOB aktif insülin düzeltmesini kullan' ,zh_cn: '使用IOB(活性胰岛素)修正计算结果' + ,hu: 'Használj IOB kalkulációt' } ,'Other correction' : { cs: 'Jiná korekce' @@ -3583,6 +3727,7 @@ function init() { ,ko: '다른 보정' ,tr: 'Diğer düzeltme' ,zh_cn: '其它修正' + ,hu: 'Egyébb korrekció' } ,'Rounding' : { cs: 'Zaokrouhlení' @@ -3608,6 +3753,7 @@ function init() { ,ko: '라운딩' ,tr: 'yuvarlama' ,zh_cn: '取整' + ,hu: 'Kerekítés' } ,'Enter insulin correction in treatment' : { cs: 'Zahrň inzulín do záznamu ošetření' @@ -3633,6 +3779,7 @@ function init() { ,ko: '대처를 위해 보정된 인슐린을 입력하세요.' ,tr: 'Tedavide insülin düzeltmesini girin' ,zh_cn: '在操作中输入胰岛素修正' + ,hu: 'Add be az inzulin korrekciót a kezeléshez' } ,'Insulin needed' : { cs: 'Potřebný inzulín' @@ -3658,6 +3805,7 @@ function init() { ,ko: '인슐린 필요' ,tr: 'İnsülin gerekli' ,zh_cn: '需要的胰岛素量' + ,hu: 'Inzulin szükséges' } ,'Carbs needed' : { cs: 'Potřebné sach' @@ -3683,6 +3831,7 @@ function init() { ,ko: '탄수화물 필요' ,tr: 'Karbonhidrat gerekli' ,zh_cn: '需要的碳水量' + ,hu: 'Szenhidrát szükséges' } ,'Carbs needed if Insulin total is negative value' : { cs: 'Chybějící sacharidy v případě, že výsledek je záporný' @@ -3708,6 +3857,7 @@ function init() { ,ko: '인슐린 전체가 마이너스 값이면 탄수화물이 필요합니다.' ,tr: 'Toplam insülin negatif değer olduğunda karbonhidrat gereklidir' ,zh_cn: '如果胰岛素总量为负时所需的碳水化合物量' + ,hu: 'Szénhidrát szükséges ha az összes inzulin negatív érték' } ,'Basal rate' : { cs: 'Bazál' @@ -3733,6 +3883,7 @@ function init() { ,ko: 'Basal 단위' ,tr: 'Basal oranı' ,zh_cn: '基础率' + ,hu: 'Bazál arány' } ,'60 minutes earlier' : { cs: '60 min předem' @@ -3758,6 +3909,7 @@ function init() { ,ko: '60분 더 일찍' ,tr: '60 dak. önce' //erken önce ??? ,zh_cn: '60分钟前' + ,hu: '60 perccel korábban' } ,'45 minutes earlier' : { cs: '45 min předem' @@ -3783,6 +3935,7 @@ function init() { ,ko: '45분 더 일찍' ,tr: '45 dak. önce' ,zh_cn: '45分钟前' + ,hu: '45 perccel korábban' } ,'30 minutes earlier' : { cs: '30 min předem' @@ -3808,6 +3961,7 @@ function init() { ,ko: '30분 더 일찍' ,tr: '30 dak. önce' ,zh_cn: '30分钟前' + ,hu: '30 perccel korábban' } ,'20 minutes earlier' : { cs: '20 min předem' @@ -3833,6 +3987,7 @@ function init() { ,ko: '20분 더 일찍' ,tr: '20 dak. önce' ,zh_cn: '20分钟前' + ,hu: '20 perccel korábban' } ,'15 minutes earlier' : { cs: '15 min předem' @@ -3858,6 +4013,7 @@ function init() { ,ko: '15분 더 일찍' ,tr: '15 dak. önce' ,zh_cn: '15分钟前' + ,hu: '15 perccel korábban' } ,'Time in minutes' : { cs: 'Čas v minutách' @@ -3882,6 +4038,7 @@ function init() { ,ko: '분' ,tr: 'Dakika cinsinden süre' ,zh_cn: '1分钟前' + ,hu: 'Idő percekben' } ,'15 minutes later' : { cs: '15 min po' @@ -3907,6 +4064,7 @@ function init() { ,ko: '15분 더 나중에' ,tr: '15 dak. sonra' //sonra daha sonra ,zh_cn: '15分钟后' + ,hu: '15 perccel később' } ,'20 minutes later' : { cs: '20 min po' @@ -3932,6 +4090,7 @@ function init() { ,ko: '20분 더 나중에' ,tr: '20 dak. sonra' ,zh_cn: '20分钟后' + ,hu: '20 perccel később' } ,'30 minutes later' : { cs: '30 min po' @@ -3957,6 +4116,7 @@ function init() { ,ko: '30분 더 나중에' ,tr: '30 dak. sonra' ,zh_cn: '30分钟后' + ,hu: '30 perccel kesőbb' } ,'45 minutes later' : { cs: '45 min po' @@ -3982,6 +4142,7 @@ function init() { ,ko: '45분 더 나중에' ,tr: '45 dak. sonra' ,zh_cn: '45分钟后' + ,hu: '45 perccel később' } ,'60 minutes later' : { cs: '60 min po' @@ -4007,6 +4168,7 @@ function init() { ,ko: '60분 더 나중에' ,tr: '60 dak. sonra' ,zh_cn: '60分钟后' + ,hu: '60 perccel később' } ,'Additional Notes, Comments' : { cs: 'Dalši poznámky, komentáře' @@ -4032,6 +4194,7 @@ function init() { ,ko: '추가 메모' ,tr: 'Ek Notlar, Yorumlar' ,zh_cn: '备注' + ,hu: 'Feljegyzések, hozzászólások' } ,'RETRO MODE' : { cs: 'V MINULOSTI' @@ -4057,6 +4220,7 @@ function init() { ,ko: 'PETRO MODE' ,tr: 'RETRO MODE' ,zh_cn: '历史模式' + ,hu: 'RETRO mód' } ,'Now' : { cs: 'Nyní' @@ -4082,6 +4246,7 @@ function init() { ,ko: '현재' ,tr: 'Şimdi' ,zh_cn: '现在' + ,hu: 'Most' } ,'Other' : { cs: 'Jiný' @@ -4107,6 +4272,7 @@ function init() { ,ko: '다른' ,tr: 'Diğer' ,zh_cn: '其它' + ,hu: 'Más' } ,'Submit Form' : { cs: 'Odeslat formulář' @@ -4132,6 +4298,7 @@ function init() { ,ko: '양식 제출' ,tr: 'Formu gönder' ,zh_cn: '提交' + ,hu: 'Elküldés' } ,'Profile Editor' : { cs: 'Editor profilu' @@ -4158,6 +4325,7 @@ function init() { ,tr: 'Profil Düzenleyicisi' ,zh_cn: '配置文件编辑器' ,zh_tw: '配置文件編輯器' + ,hu: 'Profil Szerkesztő' } ,'Reports' : { cs: 'Výkazy' @@ -4184,6 +4352,7 @@ function init() { ,tr: 'Raporlar' ,zh_cn: '生成报表' ,zh_tw: '生成報表' + ,hu: 'Jelentések' } ,'Add food from your database' : { cs: 'Přidat jidlo z Vaší databáze' @@ -4209,6 +4378,7 @@ function init() { ,ko: '데이터베이스에서 음식을 추가하세요.' ,tr: 'Veritabanınızdan yemek ekleyin' ,zh_cn: '从数据库增加食物' + ,hu: 'Étel hozzáadása az adatbázisból' } ,'Reload database' : { cs: 'Znovu nahraj databázi' @@ -4234,6 +4404,7 @@ function init() { ,ko: '데이터베이스 재로드' ,tr: 'Veritabanını yeniden yükle' ,zh_cn: '重新载入数据库' + ,hu: 'Adatbázis újratöltése' } ,'Add' : { cs: 'Přidej' @@ -4259,6 +4430,7 @@ function init() { ,ko: '추가' ,tr: 'Ekle' ,zh_cn: '增加' + ,hu: 'Hozzáadni' } ,'Unauthorized' : { cs: 'Neautorizováno' @@ -4285,6 +4457,7 @@ function init() { ,tr: 'Yetkisiz' ,zh_cn: '未授权' ,zh_tw: '未授權' + ,hu: 'Nincs autorizávla' } ,'Entering record failed' : { cs: 'Vložení záznamu selhalo' @@ -4310,6 +4483,7 @@ function init() { ,ko: '입력 실패' ,tr: 'Kayıt girişi başarısız oldu' ,zh_cn: '输入记录失败' + ,hu: 'Hozzáadás nem sikerült' } ,'Device authenticated' : { cs: 'Zařízení ověřeno' @@ -4336,6 +4510,7 @@ function init() { ,tr: 'Cihaz kimliği doğrulandı' ,zh_cn: '设备已认证' ,zh_tw: '設備已認證' + ,hu: 'Berendezés hitelesítve' } ,'Device not authenticated' : { cs: 'Zařízení není ověřeno' @@ -4362,6 +4537,7 @@ function init() { ,tr: 'Cihaz kimliği doğrulanmamış' ,zh_cn: '设备未认证' ,zh_tw: '設備未認證' + ,hu: 'Berendezés nincs hitelesítve' } ,'Authentication status' : { cs: 'Stav ověření' @@ -4388,6 +4564,7 @@ function init() { ,tr: 'Kimlik doğrulama durumu' ,zh_cn: '认证状态' ,zh_tw: '認證狀態' + ,hu: 'Hitelesítés állapota' } ,'Authenticate' : { cs: 'Ověřit' @@ -4414,6 +4591,7 @@ function init() { ,tr: 'Kimlik doğrulaması' ,zh_cn: '认证' ,zh_tw: '認證' + ,hu: 'Hitelesítés' } ,'Remove' : { cs: 'Vymazat' @@ -4440,6 +4618,7 @@ function init() { ,tr: 'Kaldır' ,zh_cn: '取消' ,zh_tw: '取消' + ,hu: 'Eltávolítani' } ,'Your device is not authenticated yet' : { cs: 'Toto zařízení nebylo dosud ověřeno' @@ -4466,6 +4645,7 @@ function init() { ,tr: 'Cihazınız henüz doğrulanmamış' ,zh_cn: '此设备还未进行认证' ,zh_tw: '這個設備還未進行認證' + ,hu: 'A berendezés még nincs hitelesítve' } ,'Sensor' : { cs: 'Senzor' @@ -4491,6 +4671,7 @@ function init() { ,ko: '센서' ,tr: 'Sensor' ,zh_cn: 'CGM探头' + ,hu: 'Szenzor' } ,'Finger' : { cs: 'Glukoměr' @@ -4516,6 +4697,7 @@ function init() { ,ko: '손가락' ,tr: 'Parmak' ,zh_cn: '手指' + ,hu: 'Új' } ,'Manual' : { cs: 'Ručně' @@ -4541,6 +4723,7 @@ function init() { ,ko: '수' ,tr: 'Elle' ,zh_cn: '手动' + ,hu: 'Kézi' } ,'Scale' : { cs: 'Měřítko' @@ -4567,6 +4750,7 @@ function init() { ,tr: 'Ölçek' ,zh_cn: '函数' ,zh_tw: '函數' + ,hu: 'Mérték' } ,'Linear' : { cs: 'Lineární' @@ -4593,6 +4777,7 @@ function init() { ,tr: 'Doğrusal' //çizgisel ,zh_cn: '线性' ,zh_tw: '線性' + ,hu: 'Lineáris' } ,'Logarithmic' : { cs: 'Logaritmické' @@ -4619,6 +4804,7 @@ function init() { ,tr: 'Logaritmik' ,zh_cn: '对数' ,zh_tw: '對數' + ,hu: 'Logaritmikus' } ,'Logarithmic (Dynamic)' : { cs: 'Logaritmické (Dynamické)' @@ -4645,6 +4831,7 @@ function init() { ,tr: 'Logaritmik (Dinamik)' ,zh_cn: '对数(动态)' ,zh_tw: '對數(動態)' + ,hu: 'Logaritmikus (Dinamikus)' } ,'Insulin-on-Board' : { cs: 'IOB' @@ -4671,6 +4858,7 @@ function init() { ,tr: 'Aktif İnsülin (IOB)' ,zh_cn: '活性胰岛素(IOB)' ,zh_tw: '活性胰島素(IOB)' + ,hu: 'Aktív inzulin (IOB)' } ,'Carbs-on-Board' : { cs: 'COB' @@ -4697,6 +4885,7 @@ function init() { ,tr: 'Aktif Karbonhidrat (COB)' ,zh_cn: '活性碳水化合物(COB)' ,zh_tw: '活性碳水化合物(COB)' + ,hu: 'Aktív szénhidrát (COB)' } ,'Bolus Wizard Preview' : { cs: 'BWP-Náhled bolusového kalk.' @@ -4723,6 +4912,7 @@ function init() { ,tr: 'Bolus hesaplama Sihirbazı Önizlemesi (BWP)' //İnsülin etkinlik süresi hesaplaması ,zh_cn: '大剂量向导预览(BWP)' ,zh_tw: '大劑量嚮導預覽(BWP)' + ,hu: 'Bolus Varázsló' } ,'Value Loaded' : { cs: 'Hodnoty načteny' @@ -4749,6 +4939,7 @@ function init() { ,tr: 'Yüklenen Değer' ,zh_cn: '数值已读取' ,zh_tw: '數值已讀取' + ,hu: 'Érték betöltve' } ,'Cannula Age' : { cs: 'CAGE-Stáří kanyly' @@ -4775,6 +4966,7 @@ function init() { ,tr: 'Kanül yaşı' ,zh_cn: '管路使用时间(CAGE)' ,zh_tw: '管路使用時間(CAGE)' + ,hu: 'Kanula élettartalma (CAGE)' } ,'Basal Profile' : { cs: 'Bazál' @@ -4801,6 +4993,7 @@ function init() { ,tr: 'Bazal Profil' ,zh_cn: '基础率配置文件' ,zh_tw: '基礎率配置文件' + ,hu: 'Bazál profil' } ,'Silence for 30 minutes' : { cs: 'Ztlumit na 30 minut' @@ -4827,6 +5020,7 @@ function init() { ,tr: '30 dakika sessizlik' ,zh_cn: '静音30分钟' ,zh_tw: '靜音30分鐘' + ,hu: 'Lehalkítás 30 percre' } ,'Silence for 60 minutes' : { cs: 'Ztlumit na 60 minut' @@ -4853,7 +5047,8 @@ function init() { ,tr: '60 dakika sessizlik' ,zh_cn: '静音60分钟' ,zh_tw: '靜音60分鐘' - } + ,hu: 'Lehalkítás 60 percre' + } ,'Silence for 90 minutes' : { cs: 'Ztlumit na 90 minut' ,he: 'השתק לתשעים דקות' @@ -4879,7 +5074,8 @@ function init() { ,tr: '90 dakika sessizlik' ,zh_cn: '静音90分钟' ,zh_tw: '靜音90分鐘' - } + ,hu: 'Lehalkítás 90 percre' + } ,'Silence for 120 minutes' : { cs: 'Ztlumit na 120 minut' ,he: 'השתק לשעתיים' @@ -4905,7 +5101,8 @@ function init() { ,tr: '120 dakika sessizlik' ,zh_cn: '静音2小时' ,zh_tw: '靜音2小時' - } + ,hu: 'Lehalkítás 120 percre' + } ,'Settings' : { cs: 'Nastavení' ,he: 'הגדרות' @@ -4931,6 +5128,7 @@ function init() { ,tr: 'Ayarlar' ,zh_cn: '设置' ,zh_tw: '設置' + ,hu: 'Beállítások' } ,'Units' : { cs: 'Jednotky' @@ -4956,6 +5154,7 @@ function init() { ,tr: 'Birim' //Birim Ünite ,zh_cn: '计量单位' ,zh_tw: '计量單位' + ,hu: 'Egységek' } ,'Date format' : { cs: 'Formát datumu' @@ -4982,6 +5181,7 @@ function init() { ,tr: 'Veri formatı' ,zh_cn: '时间格式' ,zh_tw: '時間格式' + ,hu: 'Időformátum' } ,'12 hours' : { cs: '12 hodin' @@ -5008,6 +5208,7 @@ function init() { ,tr: '12 saat' ,zh_cn: '12小时制' ,zh_tw: '12小時制' + ,hu: '12 óra' } ,'24 hours' : { cs: '24 hodin' @@ -5034,6 +5235,7 @@ function init() { ,tr: '24 saat' ,zh_cn: '24小时制' ,zh_tw: '24小時制' + ,hu: '24 óra' } ,'Log a Treatment' : { cs: 'Záznam ošetření' @@ -5059,6 +5261,7 @@ function init() { ,ko: 'Treatment 로그' ,tr: 'Tedaviyi günlüğe kaydet' ,zh_cn: '记录操作' + ,hu: 'Kezelés bejegyzése' } ,'BG Check' : { cs: 'Kontrola glykémie' @@ -5084,6 +5287,7 @@ function init() { ,ko: '혈당 체크' ,tr: 'KŞ Kontol' ,zh_cn: '测量血糖' + ,hu: 'Cukorszint ellenőrzés' } ,'Meal Bolus' : { cs: 'Bolus na jídlo' @@ -5109,6 +5313,7 @@ function init() { ,ko: '식사 인슐린' ,tr: 'Yemek bolus' ,zh_cn: '正餐大剂量' + ,hu: 'Étel bólus' } ,'Snack Bolus' : { cs: 'Bolus na svačinu' @@ -5134,6 +5339,7 @@ function init() { ,ko: '스넥 인슐린' ,tr: 'Aperatif (Snack) Bolus' ,zh_cn: '加餐大剂量' + ,hu: 'Tízórai/Uzsonna bólus' } ,'Correction Bolus' : { cs: 'Bolus na glykémii' @@ -5159,6 +5365,7 @@ function init() { ,ko: '수정 인슐린' ,tr: 'Düzeltme Bolusu' ,zh_cn: '临时大剂量' + ,hu: 'Korrekciós bólus' } ,'Carb Correction' : { cs: 'Přídavek sacharidů' @@ -5184,6 +5391,7 @@ function init() { ,ko: '탄수화물 수정' ,tr: 'Karbonhidrat Düzeltme' ,zh_cn: '碳水修正' + ,hu: 'Szénhidrát korrekció' } ,'Note' : { cs: 'Poznámka' @@ -5209,6 +5417,7 @@ function init() { ,ko: '메모' ,tr: 'Not' ,zh_cn: '备忘' + ,hu: 'Jegyzet' } ,'Question' : { cs: 'Otázka' @@ -5234,6 +5443,7 @@ function init() { ,ko: '질문' ,tr: 'Soru' ,zh_cn: '问题' + ,hu: 'Kérdés' } ,'Exercise' : { cs: 'Cvičení' @@ -5259,6 +5469,7 @@ function init() { ,ko: '운동' ,tr: 'Egzersiz' ,zh_cn: '运动' + ,hu: 'Edzés' } ,'Pump Site Change' : { cs: 'Výměna setu' @@ -5284,6 +5495,7 @@ function init() { ,ko: '펌프 위치 변경' ,tr: 'Pompa Kanül değişimi' ,zh_cn: '更换胰岛素输注部位' + ,hu: 'Pumpa szett csere' } ,'CGM Sensor Start' : { cs: 'Spuštění sensoru' @@ -5309,6 +5521,7 @@ function init() { ,ko: 'CGM 센서 시작' ,tr: 'CGM Sensörü Başlat' ,zh_cn: '启动CGM(连续血糖监测)探头' + ,hu: 'CGM Szenzor Indítása' } ,'CGM Sensor Stop' : { cs: 'CGM Sensor Stop' @@ -5334,6 +5547,7 @@ function init() { ,ko: 'CGM Sensor Stop' ,tr: 'CGM Sensor Stop' ,zh_cn: 'CGM Sensor Stop' + ,hu: 'CGM Szenzor Leállítása' } ,'CGM Sensor Insert' : { cs: 'Výměna sensoru' @@ -5359,6 +5573,7 @@ function init() { ,ko: 'CGM 센서 삽입' ,tr: 'CGM Sensor yerleştir' ,zh_cn: '植入CGM(连续血糖监测)探头' + ,hu: 'CGM Szenzor Csere' } ,'Dexcom Sensor Start' : { cs: 'Spuštění sensoru' @@ -5384,7 +5599,8 @@ function init() { ,ko: 'Dexcom 센서 시작' ,tr: 'Dexcom Sensör Başlat' ,zh_cn: '启动Dexcom探头' - } + ,hu: 'Dexcom Szenzor Indítása' + } ,'Dexcom Sensor Change' : { cs: 'Výměna sensoru' ,de: 'Dexcom Sensor Wechsel' @@ -5409,7 +5625,8 @@ function init() { ,ko: 'Dexcom 센서 교체' ,tr: 'Dexcom Sensör değiştir' ,zh_cn: '更换Dexcom探头' - } + ,hu: 'Dexcom Szenzor Csere' + } ,'Insulin Cartridge Change' : { cs: 'Výměna inzulínu' ,de: 'Insulin Ampullenwechsel' @@ -5434,6 +5651,7 @@ function init() { ,ko: '인슐린 카트리지 교체' ,tr: 'İnsülin rezervuar değişimi' ,zh_cn: '更换胰岛素储液器' + ,hu: 'Inzulin Tartály Csere' } ,'D.A.D. Alert' : { cs: 'D.A.D. Alert' @@ -5459,6 +5677,7 @@ function init() { ,ko: 'D.A.D(Diabetes Alert Dog) 알림' ,tr: 'D.A.D(Diabetes Alert Dog)' ,zh_cn: 'D.A.D(低血糖通报犬)警告' + ,hu: 'D.A.D Figyelmeztetés' } ,'Glucose Reading' : { cs: 'Hodnota glykémie' @@ -5483,6 +5702,7 @@ function init() { ,ko: '혈당 읽기' ,tr: 'Glikoz Değeri' ,zh_cn: '血糖数值' + ,hu: 'Vércukorszint Érték' } ,'Measurement Method' : { cs: 'Metoda měření' @@ -5508,6 +5728,7 @@ function init() { ,ko: '측정 방법' ,tr: 'Ölçüm Metodu' ,zh_cn: '测量方法' + ,hu: 'Cukorszint mérés metódusa' } ,'Meter' : { cs: 'Glukoměr' @@ -5533,6 +5754,7 @@ function init() { ,ko: '혈당 측정기' ,tr: 'Glikometre' ,zh_cn: '血糖仪' + ,hu: 'Cukorszint mérő' } ,'Insulin Given' : { cs: 'Inzulín' @@ -5558,6 +5780,7 @@ function init() { ,ko: '인슐린 요구량' ,tr: 'Verilen İnsülin' ,zh_cn: '胰岛素输注量' + ,hu: 'Inzulin Beadva' } ,'Amount in grams' : { cs: 'Množství v gramech' @@ -5583,6 +5806,7 @@ function init() { ,ko: '합계(grams)' ,tr: 'Gram cinsinden miktar' ,zh_cn: '总量(g)' + ,hu: 'Adag grammokban (g)' } ,'Amount in units' : { cs: 'Množství v jednotkách' @@ -5608,6 +5832,7 @@ function init() { ,ko: '합계(units)' ,tr: 'Birim miktarı' ,zh_cn: '总量(U)' + ,hu: 'Adag egységekben' } ,'View all treatments' : { cs: 'Zobraz všechny ošetření' @@ -5633,6 +5858,7 @@ function init() { ,ko: '모든 treatments 보기' ,tr: 'Tüm tedavileri görüntüle' ,zh_cn: '查看所有操作' + ,hu: 'Összes kezelés mutatása' } ,'Enable Alarms' : { cs: 'Povolit alarmy' @@ -5659,6 +5885,7 @@ function init() { ,tr: 'Alarmları Etkinleştir' ,zh_cn: '启用报警' ,zh_tw: '啟用報警' + ,hu: 'Figyelmeztetők bekapcsolása' } ,'Pump Battery Change' : { nl: 'Pompbatterij vervangen' @@ -5672,6 +5899,7 @@ function init() { ,pl: 'Zmiana baterii w pompie' ,ru: 'замена батареи помпы' ,tr: 'Pompa pil değişimi' + ,hu: 'Pumpa elem csere' } ,'Pump Battery Low Alarm' : { nl: 'Pompbatterij bijna leeg Alarm' @@ -5685,6 +5913,7 @@ function init() { ,pl: 'Alarm! Niski poziom baterii w pompie' ,ru: 'Внимание! низкий заряд батареи помпы' ,tr: 'Pompa Düşük pil alarmı' + ,hu: 'Alacsony pumpa töltöttség figyelmeztetés' } ,'Pump Battery change overdue!' : { // batteryage.js nl: 'Pompbatterij moet vervangen worden!' @@ -5698,6 +5927,7 @@ function init() { , pl: 'Bateria pompy musi być wymieniona!' ,ru: 'пропущен срок замены батареи!' ,tr: 'Pompa pil değişimi gecikti!' + ,hu: 'A pumpa eleme cserére szorul' } ,'When enabled an alarm may sound.' : { cs: 'Při povoleném alarmu zní zvuk' @@ -5724,6 +5954,7 @@ function init() { ,tr: 'Etkinleştirilirse, alarm çalar.' ,zh_cn: '启用后可发出声音报警' ,zh_tw: '啟用後可發出聲音報警' + ,hu: 'Bekapcsoláskor hang figyelmeztetés várható' } ,'Urgent High Alarm' : { cs: 'Urgentní vysoká glykémie' @@ -5750,6 +5981,7 @@ function init() { ,tr: 'Acil Yüksek Alarm' //Dikkat yüksek alarm ,zh_cn: '血糖过高报警' ,zh_tw: '血糖過高報警' + ,hu: 'Nagyon magas cukorszint figyelmeztetés' } ,'High Alarm' : { cs: 'Vysoká glykémie' @@ -5776,6 +6008,7 @@ function init() { ,tr: 'Yüksek Alarmı' ,zh_cn: '高血糖报警' ,zh_tw: '高血糖報警' + ,hu: 'Magas cukorszint fegyelmeztetés' } ,'Low Alarm' : { cs: 'Nízká glykémie' @@ -5802,6 +6035,7 @@ function init() { ,tr: 'Düşük Alarmı' ,zh_cn: '低血糖报警' ,zh_tw: '低血糖報警' + ,hu: 'Alacsony cukorszint figyelmeztetés' } ,'Urgent Low Alarm' : { cs: 'Urgentní nízká glykémie' @@ -5828,6 +6062,7 @@ function init() { ,tr: 'Acil Düşük Alarmı' ,zh_cn: '血糖过低报警' ,zh_tw: '血糖過低報警' + ,hu: 'Nagyon alacsony cukorszint figyelmeztetés' } ,'Stale Data: Warn' : { cs: 'Zastaralá data' @@ -5854,6 +6089,7 @@ function init() { ,tr: 'Eski Veri: Uyarı' //Uyarı: veri artık geçerli değil ,zh_cn: '数据过期:提醒' ,zh_tw: '數據過期:提醒' + ,hu: 'Figyelmeztetés: Az adatok öregnek tűnnek' } ,'Stale Data: Urgent' : { cs: 'Zastaralá data urgentní' @@ -5880,6 +6116,7 @@ function init() { ,tr: 'Eski Veri: Acil' ,zh_cn: '数据过期:警告' ,zh_tw: '數據過期:警告' + ,hu: 'Figyelmeztetés: Az adatok nagyon öregnek tűnnek' } ,'mins' : { cs: 'min' @@ -5906,6 +6143,7 @@ function init() { ,tr: 'dk.' ,zh_cn: '分' ,zh_tw: '分' + ,hu: 'perc' } ,'Night Mode' : { cs: 'Noční mód' @@ -5932,6 +6170,7 @@ function init() { ,tr: 'Gece Modu' ,zh_cn: '夜间模式' ,zh_tw: '夜間模式' + ,hu: 'Éjjeli üzemmód' } ,'When enabled the page will be dimmed from 10pm - 6am.' : { cs: 'Když je povoleno, obrazovka je ztlumena 22:00 - 6:00' @@ -5958,6 +6197,7 @@ function init() { ,tr: 'Etkinleştirildiğinde, ekran akşam 22\'den sabah 6\'ya kadar kararır.' ,zh_cn: '启用后将在夜间22点至早晨6点降低页面亮度' ,zh_tw: '啟用後將在夜間22點至早晨6點降低頁面亮度' + ,hu: 'Ezt bekapcsolva a képernyő halványabb lesz 22-től 6-ig' } ,'Enable' : { cs: 'Povoleno' @@ -5984,6 +6224,7 @@ function init() { ,tr: 'Etkinleştir' ,zh_cn: '启用' ,zh_tw: '啟用' + ,hu: 'Engedélyezve' } ,'Show Raw BG Data' : { cs: 'Zobraz RAW data' @@ -6010,6 +6251,7 @@ function init() { ,tr: 'Ham KŞ verilerini göster' ,zh_cn: '显示原始血糖数据' ,zh_tw: '顯示原始血糖數據' + ,hu: 'Nyers BG adatok mutatása' } ,'Never' : { cs: 'Nikdy' @@ -6036,6 +6278,7 @@ function init() { ,tr: 'Hiçbir zaman' //Asla ,zh_cn: '不显示' ,zh_tw: '不顯示' + ,hu: 'Soha' } ,'Always' : { cs: 'Vždy' @@ -6062,6 +6305,7 @@ function init() { ,tr: 'Her zaman' ,zh_cn: '一直显示' ,zh_tw: '一直顯示' + ,hu: 'Mindíg' } ,'When there is noise' : { cs: 'Při šumu' @@ -6088,6 +6332,7 @@ function init() { ,tr: 'Gürültü olduğunda' ,zh_cn: '当有噪声时显示' ,zh_tw: '當有噪聲時顯示' + ,hu: 'Ha zavar van:' } ,'When enabled small white dots will be displayed for raw BG data' : { cs: 'Když je povoleno, malé tečky budou zobrazeny pro RAW data' @@ -6114,6 +6359,7 @@ function init() { ,tr: 'Etkinleştirildiğinde, ham KŞ verileri için küçük beyaz noktalar görüntülenecektir.' ,zh_cn: '启用后将使用小白点标注原始血糖数据' ,zh_tw: '啟用後將使用小白點標註原始血糖數據' + ,hu: 'Bekapcsolasnál kis fehért pontok fogják jelezni a nyers BG adatokat' } ,'Custom Title' : { cs: 'Vlastní název stránky' @@ -6140,6 +6386,7 @@ function init() { ,tr: 'Özel Başlık' ,zh_cn: '自定义标题' ,zh_tw: '自定義標題' + ,hu: 'Saját Cím' } ,'Theme' : { cs: 'Téma' @@ -6166,6 +6413,7 @@ function init() { ,tr: 'Tema' ,zh_cn: '主题' ,zh_tw: '主題' + ,hu: 'Téma' } ,'Default' : { cs: 'Výchozí' @@ -6192,6 +6440,7 @@ function init() { ,tr: 'Varsayılan' ,zh_cn: '默认' ,zh_tw: '默認' + ,hu: 'Alap' } ,'Colors' : { cs: 'Barevné' @@ -6218,6 +6467,7 @@ function init() { ,tr: 'Renkler' ,zh_cn: '彩色' ,zh_tw: '彩色' + ,hu: 'Színek' } ,'Colorblind-friendly colors' : { cs: 'Pro barvoslepé' @@ -6244,6 +6494,7 @@ function init() { ,pl: 'Kolory dla niedowidzących' ,tr: 'Renk körü dostu görünüm' ,ru: 'Цветовая гамма для людей с нарушениями восприятия цвета' + ,hu: 'Beállítás színvakok számára' } ,'Reset, and use defaults' : { cs: 'Vymaž a nastav výchozí hodnoty' @@ -6270,6 +6521,7 @@ function init() { ,tr: 'Sıfırla ve varsayılanları kullan' ,zh_cn: '使用默认值重置' ,zh_tw: '使用默認值重置' + ,hu: 'Visszaállítás a kiinduló állapotba' } ,'Calibrations' : { cs: 'Kalibrace' @@ -6295,6 +6547,7 @@ function init() { ,ko: '보정' ,tr: 'Kalibrasyon' ,zh_cn: '校准' + ,hu: 'Kalibráció' } ,'Alarm Test / Smartphone Enable' : { cs: 'Test alarmu' @@ -6321,6 +6574,7 @@ function init() { ,tr: 'Alarm Testi / Akıllı Telefon için Etkin' ,zh_cn: '报警测试/智能手机启用' ,zh_tw: '報警測試/智能手機啟用' + ,hu: 'Figyelmeztetés teszt / Mobiltelefon aktiválása' } ,'Bolus Wizard' : { cs: 'Bolusový kalkulátor' @@ -6347,6 +6601,7 @@ function init() { ,tr: 'Bolus Hesaplayıcısı' ,zh_cn: '大剂量向导' ,zh_tw: '大劑量嚮導' + ,hu: 'Bólus Varázsló' } ,'in the future' : { cs: 'v budoucnosti' @@ -6373,6 +6628,7 @@ function init() { ,tr: 'gelecekte' ,zh_cn: '在未来' ,zh_tw: '在未來' + ,hu: 'a jövőben' } ,'time ago' : { cs: 'min zpět' @@ -6399,6 +6655,7 @@ function init() { ,tr: 'süre önce' //yakın zamanda ,zh_cn: '在过去' ,zh_tw: '在過去' + ,hu: 'idő elött' } ,'hr ago' : { cs: 'hod zpět' @@ -6425,6 +6682,7 @@ function init() { ,tr: 'saat önce' ,zh_cn: '小时前' ,zh_tw: '小時前' + ,hu: 'óra elött' } ,'hrs ago' : { cs: 'hod zpět' @@ -6451,6 +6709,7 @@ function init() { ,tr: 'saat önce' ,zh_cn: '小时前' ,zh_tw: '小時前' + ,hu: 'órája' } ,'min ago' : { cs: 'min zpět' @@ -6477,6 +6736,7 @@ function init() { ,tr: 'dk. önce' ,zh_cn: '分钟前' ,zh_tw: '分鐘前' + ,hu: 'perce' } ,'mins ago' : { cs: 'min zpět' @@ -6503,6 +6763,7 @@ function init() { ,tr: 'dakika önce' ,zh_cn: '分钟前' ,zh_tw: '分鐘前' + ,hu: 'perce' } ,'day ago' : { cs: 'den zpět' @@ -6529,6 +6790,7 @@ function init() { ,tr: 'gün önce' ,zh_cn: '天前' ,zh_tw: '天前' + ,hu: 'napja' } ,'days ago' : { cs: 'dnů zpět' @@ -6555,6 +6817,7 @@ function init() { ,tr: 'günler önce' ,zh_cn: '天前' ,zh_tw: '天前' + ,hu: 'napja' } ,'long ago' : { cs: 'dlouho zpět' @@ -6581,6 +6844,7 @@ function init() { ,tr: 'uzun zaman önce' ,zh_cn: '很长时间前' ,zh_tw: '很長時間前' + ,hu: 'nagyon régen' } ,'Clean' : { cs: 'Čistý' @@ -6607,6 +6871,7 @@ function init() { ,tr: 'Temiz' ,zh_cn: '无' ,zh_tw: '無' + ,hu: 'Tiszta' } ,'Light' : { cs: 'Lehký' @@ -6633,6 +6898,7 @@ function init() { ,tr: 'Kolay' ,zh_cn: '轻度' ,zh_tw: '輕度' + ,hu: 'Könnyű' } ,'Medium' : { cs: 'Střední' @@ -6659,6 +6925,7 @@ function init() { ,tr: 'Orta' ,zh_cn: '中度' ,zh_tw: '中度' + ,hu: 'Közepes' } ,'Heavy' : { cs: 'Velký' @@ -6685,6 +6952,7 @@ function init() { ,zh_cn: '重度' ,zh_tw: '嚴重' ,he: 'כבד' + ,hu: 'Nehéz' } ,'Treatment type' : { cs: 'Typ ošetření' @@ -6710,7 +6978,8 @@ function init() { ,tr: 'Tedavi tipi' ,zh_cn: '操作类型' ,he: 'סוג הטיפול' - } + ,hu: 'Kezelés típusa' + } ,'Raw BG' : { cs: 'Glykémie z RAW dat' ,de: 'Roh-BG' @@ -6733,7 +7002,8 @@ function init() { ,ko: 'Raw 혈당' ,tr: 'Ham KŞ' ,zh_cn: '原始血糖' - } + ,hu: 'Nyers BG' + } ,'Device' : { cs: 'Zařízení' ,de: 'Gerät' @@ -6758,7 +7028,8 @@ function init() { ,tr: 'Cihaz' ,zh_cn: '设备' ,he: 'התקן' - } + ,hu: 'Berendezés' + } ,'Noise' : { cs: 'Šum' ,he: 'רַעַשׁ' @@ -6783,6 +7054,7 @@ function init() { ,ko: '노이즈' ,tr: 'parazit' // gürültü ,zh_cn: '噪声' + ,hu: 'Zavar' } ,'Calibration' : { cs: 'Kalibrace' @@ -6808,6 +7080,7 @@ function init() { ,ko: '보정' ,tr: 'Kalibrasyon' ,zh_cn: '校准' + ,hu: 'Kalibráció' } ,'Show Plugins' : { cs: 'Zobrazuj pluginy' @@ -6832,8 +7105,8 @@ function init() { ,nl: 'Laat Plug-Ins zien' ,ko: '플러그인 보기' ,tr: 'Eklentileri Göster' - ,zh_cn: '显示插件' - ,zh_tw: '顯示插件' + ,zh_cn: '校准' + ,hu: 'Mutasd a kiegészítőket' } ,'About' : { cs: 'O aplikaci' @@ -6860,6 +7133,7 @@ function init() { ,tr: 'Hakkında' ,zh_cn: '关于' ,zh_tw: '關於' + ,hu: 'Az aplikációról' } ,'Value in' : { cs: 'Hodnota v' @@ -6885,6 +7159,7 @@ function init() { ,ko: '값' ,tr: 'Değer cinsinden' ,zh_cn: '数值' + ,hu: 'Érték' } ,'Carb Time' : { cs: 'Čas jídla' @@ -6909,7 +7184,8 @@ function init() { ,nl: 'Koolhydraten tijd' ,ko: '탄수화물 시간' ,tr: 'Karbonhidratların alım zamanı' - ,zh_cn: '碳水时间' + ,zh_cn: '数值' + ,hu: 'Étkezés ideje' } ,'Language' : { cs: 'Jazyk' @@ -6936,6 +7212,7 @@ function init() { ,tr: 'Dil' ,zh_cn: '语言' ,zh_tw: '語言' + ,hu: 'Nyelv' } ,'Add new' : { cs: 'Přidat nový' @@ -6961,6 +7238,7 @@ function init() { ,ja: '新たに加える' ,tr: 'Yeni ekle' ,zh_cn: '新增' + ,hu: 'Új hozzáadása' } ,'g' : { // grams shortcut cs: 'g' @@ -6986,6 +7264,7 @@ function init() { ,tr: 'g' ,zh_cn: '克' ,zh_tw: '克' + ,hu: 'g' } ,'ml' : { // milliliters shortcut cs: 'ml' @@ -7010,7 +7289,8 @@ function init() { ,ja: 'ml' ,tr: 'ml' ,zh_cn: '毫升' - ,zh_tw: '毫升' + ,zh_tw: '克' + ,hu: 'ml' } ,'pcs' : { // pieces shortcut cs: 'ks' @@ -7036,6 +7316,7 @@ function init() { ,tr: 'parça' ,zh_cn: '件' ,zh_tw: '件' + ,hu: 'db' } ,'Drag&drop food here' : { cs: 'Sem táhni & pusť jídlo' @@ -7060,6 +7341,7 @@ function init() { ,tr: 'Yiyecekleri buraya sürükle bırak' ,zh_cn: '拖放食物到这' ,nl: 'Maaltijd naar hier verplaatsen' + ,hu: 'Húzd ide és ereszd el az ételt' } ,'Care Portal' : { cs: 'Portál ošetření' @@ -7084,6 +7366,7 @@ function init() { ,tr: 'Care Portal' ,zh_cn: '服务面板' ,zh_tw: '服務面板' + ,hu: 'Care portál' } ,'Medium/Unknown' : { // GI of food cs: 'Střední/Neznámá' @@ -7108,6 +7391,7 @@ function init() { ,it: 'Media/Sconosciuto' ,tr: 'Orta/Bilinmeyen' ,zh_cn: '中等/不知道' + ,hu: 'Átlagos/Ismeretlen' } ,'IN THE FUTURE' : { cs: 'V BUDOUCNOSTI' @@ -7132,6 +7416,7 @@ function init() { ,it: 'NEL FUTURO' ,tr: 'GELECEKTE' ,zh_cn: '在未来' + ,hu: 'A JÖVŐBEN' } ,'Update' : { // Update button cs: 'Aktualizovat' @@ -7157,6 +7442,7 @@ function init() { ,tr: 'Güncelleştirme' ,zh_cn: '更新认证状态' ,zh_tw: '更新認證狀態' + ,hu: 'Frissítés' } ,'Order' : { cs: 'Pořadí' @@ -7181,6 +7467,7 @@ function init() { ,ko: '순서' ,tr: 'Sıra' ,zh_cn: '排序' + ,hu: 'Sorrend' } ,'oldest on top' : { cs: 'nejstarší nahoře' @@ -7205,7 +7492,8 @@ function init() { ,ko: '오래된 것 부터' ,tr: 'en eski üste' ,zh_cn: '按时间升序排列' - } + ,hu: 'legöregebb a telejére' + } ,'newest on top' : { cs: 'nejnovější nahoře' ,he: 'החדש ביותר למעלה' @@ -7229,6 +7517,7 @@ function init() { ,ko: '새로운 것 부터' ,tr: 'en yeni üste' ,zh_cn: '按时间降序排列' + ,hu: 'legújabb a tetejére' } ,'All sensor events' : { cs: 'Všechny události sensoru' @@ -7254,6 +7543,7 @@ function init() { ,ko: '모든 센서 이벤트' ,tr: 'Tüm sensör olayları' ,zh_cn: '所有探头事件' + ,hu: 'Az összes szenzor esemény' } ,'Remove future items from mongo database' : { cs: 'Odebrání položek v budoucnosti z Mongo databáze' @@ -7279,6 +7569,7 @@ function init() { ,tr: 'Gelecekteki öğeleri mongo veritabanından kaldır' ,zh_cn: '从数据库中清除所有未来条目' ,zh_tw: '從數據庫中清除所有未來條目' + ,hu: 'Töröld az összes jövőben lévő adatot az adatbázisból' } ,'Find and remove treatments in the future' : { cs: 'Najít a odstranit záznamy ošetření v budoucnosti' @@ -7304,6 +7595,7 @@ function init() { ,tr: 'Gelecekte tedavileri bulun ve kaldır' ,zh_cn: '查找并清除所有未来的操作' ,zh_tw: '查找並清除所有未來的操作' + ,hu: 'Töröld az összes kezelést a jövőben az adatbázisból' } ,'This task find and remove treatments in the future.' : { cs: 'Tento úkol najde a odstraní ošetření v budoucnosti.' @@ -7329,6 +7621,7 @@ function init() { ,tr: 'Bu görev gelecekte tedavileri bul ve kaldır.' ,zh_cn: '此功能查找并清除所有未来的操作。' ,zh_tw: '此功能查找並清除所有未來的操作。' + ,hu: 'Ez a feladat megkeresi és eltávolítja az összes jövőben lévő kezelést' } ,'Remove treatments in the future' : { cs: 'Odstraň ošetření v budoucnosti' @@ -7354,6 +7647,7 @@ function init() { ,tr: 'Gelecekte tedavileri kaldır' ,zh_cn: '清除未来操作' ,zh_tw: '清除未來操作' + ,hu: 'Jövőbeli kerelések eltávolítésa' } ,'Find and remove entries in the future' : { cs: 'Najít a odstranit CGM data v budoucnosti' @@ -7379,6 +7673,7 @@ function init() { ,tr: 'Gelecekteki girdileri bul ve kaldır' ,zh_cn: '查找并清除所有的未来的记录' ,zh_tw: '查找並清除所有的未來的記錄' + ,hu: 'Jövőbeli bejegyzések eltávolítása' } ,'This task find and remove CGM data in the future created by uploader with wrong date/time.' : { cs: 'Tento úkol najde a odstraní CGM data v budoucnosti vzniklé špatně nastaveným datem v uploaderu.' @@ -7404,6 +7699,7 @@ function init() { ,tr: 'Yükleyicinin oluşturduğu gelecekteki CGM verilerinin yanlış tarih/saat olanlarını bul ve kaldır.' ,zh_cn: '此功能查找并清除所有上传时日期时间错误导致生成在未来时间的CGM数据。' ,zh_tw: '此功能查找並清除所有上傳時日期時間錯誤導致生成在未來時間的CGM數據。' + ,hu: 'Ez a feladat megkeresi és eltávolítja az összes CGM adatot amit a feltöltő rossz idővel-dátummal töltött fel' } ,'Remove entries in the future' : { cs: 'Odstraň CGM data v budoucnosti' @@ -7429,6 +7725,7 @@ function init() { ,tr: 'Gelecekteki girdileri kaldır' ,zh_cn: '清除未来记录' ,zh_tw: '清除未來記錄' + ,hu: 'Jövőbeli bejegyzések törlése' } ,'Loading database ...' : { cs: 'Nahrávám databázi ...' @@ -7454,6 +7751,7 @@ function init() { ,tr: 'Veritabanı yükleniyor ...' ,zh_cn: '载入数据库...' ,zh_tw: '載入數據庫...' + ,hu: 'Adatbázis betöltése...' } ,'Database contains %1 future records' : { cs: 'Databáze obsahuje %1 záznamů v budoucnosti' @@ -7479,6 +7777,7 @@ function init() { ,tr: 'Veritabanı %1 gelecekteki girdileri içeriyor' ,zh_cn: '数据库包含%1条未来记录' ,zh_tw: '數據庫包含%1條未來記錄' + ,hu: 'Az adatbázis %1 jövöbeli adatot tartalmaz' } ,'Remove %1 selected records?' : { cs: 'Odstranit %1 vybraných záznamů' @@ -7504,6 +7803,7 @@ function init() { ,tr: 'Seçilen %1 kayıtlar kaldırılsın? ' ,zh_cn: '清除%1条选择的记录?' ,zh_tw: '清除%1條選擇的記錄?' + ,hu: 'Kitöröljük a %1 kiválasztott adatot?' } ,'Error loading database' : { cs: 'Chyba při nahrávání databáze' @@ -7529,6 +7829,7 @@ function init() { ,tr: 'Veritabanını yüklerken hata oluştu' ,zh_cn: '载入数据库错误' ,zh_tw: '載入數據庫錯誤' + ,hu: 'Hiba az adatbázis betöltése közben' } ,'Record %1 removed ...' : { cs: 'Záznam %1 odstraněn ...' @@ -7554,6 +7855,7 @@ function init() { ,tr: '%1 kaydı silindi ...' ,zh_cn: '%1条记录已清除' ,zh_tw: '%1條記錄已清除' + ,hu: 'A %1 bejegyzés törölve...' } ,'Error removing record %1' : { cs: 'Chyba při odstaňování záznamu %1' @@ -7579,6 +7881,7 @@ function init() { ,tr: '%1 kayıt kaldırılırken hata oluştu' ,zh_cn: '%1条记录清除出错' ,zh_tw: '%1條記錄清除出錯' + ,hu: 'Hiba lépett fel a %1 bejegyzés törlése közben' } ,'Deleting records ...' : { cs: 'Odstraňování záznamů ...' @@ -7604,12 +7907,14 @@ function init() { ,tr: 'Kayıtlar siliniyor ...' ,zh_cn: '正在删除记录...' ,zh_tw: '正在刪除記錄...' + ,hu: 'Bejegyzések törlése...' } ,'%1 records deleted' : { hr: 'obrisano %1 zapisa' ,de: '%1 Einträge gelöscht' , pl: '%1 rekordów zostało usuniętych' ,ru: '% записей удалено' + ,hu: '%1 bejegyzés törölve' } ,'Clean Mongo status database' : { cs: 'Vyčištění Mongo databáze statusů' @@ -7634,6 +7939,7 @@ function init() { ,ko: 'Mongo 상태 데이터베이스를 지우세요.' ,tr: 'Mongo durum veritabanını temizle' ,zh_cn: '清除状态数据库' + ,hu: 'Mongo állapot (status) adatbázis tisztítása' } ,'Delete all documents from devicestatus collection' : { cs: 'Odstranění všech záznamů z kolekce devicestatus' @@ -7658,6 +7964,7 @@ function init() { ,tr: 'Devicestatus koleksiyonundan tüm dokümanları sil' ,zh_cn: '从设备状态采集删除所有文档' ,nl: 'Verwijder alle documenten uit "devicestatus" database' + ,hu: 'Az összes "devicestatus" dokumentum törlése' } ,'This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.' : { cs: 'Tento úkol odstraní všechny dokumenty z kolekce devicestatus. Je to vhodné udělat, pokud se ukazatel stavu baterie neobnovuje správně.' @@ -7681,6 +7988,7 @@ function init() { ,tr: 'Bu görev tüm durumları Devicestatus koleksiyonundan kaldırır. Yükleyici pil durumu güncellenmiyorsa kullanışlıdır.' ,zh_cn: '此功能从设备状态采集中删除所有文档。适用于上传设备电量信息不能正常同步时使用。' ,nl: 'Dit commando verwijdert alle documenten uit "devicestatus" database. Handig wanneer de batterij status niet correct wordt geupload.' + ,hu: 'Ez a feladat kitörli az összes "devicestatus" dokumentumot. Hasznos ha a feltöltő elem állapota nem jelenik meg helyesen.' } ,'Delete all documents' : { cs: 'Odstranit všechny dokumenty' @@ -7705,6 +8013,7 @@ function init() { ,ko: '모든 문서들을 지우세요' ,tr: 'Tüm Belgeleri sil' ,zh_cn: '删除所有文档' + ,hu: 'Az összes dokumentum törlése' } ,'Delete all documents from devicestatus collection?' : { cs: 'Odstranit všechny dokumenty z kolekce devicestatus?' @@ -7729,6 +8038,7 @@ function init() { ,tr: 'Tüm Devicestatus koleksiyon belgeleri silinsin mi?' ,zh_cn: '从设备状态采集删除所有文档?' ,nl: 'Wil je alle data van "devicestatus" database verwijderen?' + ,hu: 'Az összes dokumentum törlése a "devicestatus" gyűjteményből?' } ,'Database contains %1 records' : { cs: 'Databáze obsahuje %1 záznamů' @@ -7753,6 +8063,7 @@ function init() { ,ko: '데이터베이스는 %1 기록을 포함합니다.' ,tr: 'Veritabanı %1 kayıt içeriyor' ,zh_cn: '数据库包含%1条记录' + ,hu: 'Az adatbázis %1 bejegyzést tartalmaz' } ,'All records removed ...' : { cs: 'Všechny záznamy odstraněny ...' @@ -7777,60 +8088,70 @@ function init() { ,ko: '모든 기록들이 지워졌습니다.' ,tr: 'Tüm kayıtlar kaldırıldı ...' ,zh_cn: '所有记录已经被清除' + ,hu: 'Az összes bejegyzés törölve...' } ,'Delete all documents from devicestatus collection older than 30 days' : { hr: 'Obriši sve statuse starije od 30 dana' ,ru: 'Удалить все записи коллекции devicestatus старше 30 дней' ,de: 'Alle Dokumente der Gerätestatus-Sammlung löschen, die älter als 30 Tage sind' , pl: 'Usuń wszystkie dokumenty z kolekcji devicestatus starsze niż 30 dni' + , hu: 'Az összes "devicestatus" dokumentum törlése ami 30 napnál öregebb' } ,'Number of Days to Keep:' : { hr: 'Broj dana za sačuvati:' ,ru: 'Оставить дней' ,de: 'Daten löschen, die älter sind (in Tagen) als:' , pl: 'Ilość dni do zachowania:' + , hu: 'Mentés ennyi napra:' } ,'This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.' : { hr: 'Ovo uklanja sve statuse starije od 30 dana. Korisno kada se status baterije uploadera ne osvježava ispravno.' , pl: 'To narzędzie usuwa wszystkie dokumenty z kolekcji devicestatus starsze niż 30 dni. Przydatne, gdy status baterii uploadera nie jest aktualizowany.' ,ru: 'Это удалит все документы коллекции devicestatus которым более 30 дней. Полезно, когда статус батареи не обновляется или обновляется неверно.' ,de: 'Diese Aufgabe entfernt alle Dokumente aus der Gerätestatus-Sammlung, die älter sind als 30 Tage. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.' + ,hu: 'Ez a feladat törli az összes "devicestatus" dokumentumot a gyűjteményből ami 30 napnál öregebb. Hasznos ha a feltöltő elem állapota nem jelenik meg rendesen. ' } ,'Delete old documents from devicestatus collection?' : { hr: 'Obriši stare statuse' ,de: 'Alte Dokumente aus der Gerätestatus-Sammlung entfernen?' , pl: 'Czy na pewno chcesz usunąć stare dokumenty z kolekcji devicestatus?' ,ru: 'Удалить старыые документы коллекции devicestatus' + ,hu: 'Kitorli az öreg dokumentumokat a "devicestatus" gyűjteményből?' } ,'Clean Mongo entries (glucose entries) database' : { hr: 'Obriši GUK zapise iz baze' ,de: 'Mongo-Einträge (Glukose-Einträge) Datenbank bereinigen' , pl: 'Wyczyść bazę wpisów (wpisy glukozy) Mongo' ,ru: 'Очистить записи данных в базе Mongo' + ,hu: 'Mongo bejegyzés adatbázis tisztítása' } ,'Delete all documents from entries collection older than 180 days' : { hr: 'Obriši sve zapise starije od 180 dana' ,de: 'Alle Dokumente aus der Einträge-Sammlung löschen, die älter sind als 180 Tage' , pl: 'Usuń wszystkie dokumenty z kolekcji wpisów starsze niż 180 dni' ,ru: 'Удалить все документы коллекции entries старше 180 дней ' + ,hu: 'Az összes bejegyzés gyűjtemény törlése ami 180 napnál öregebb' } ,'This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.' : { hr: 'Ovo briše sve zapise starije od 180 dana. Korisno kada se status baterije uploadera ne osvježava.' ,de: 'Diese Aufgabe entfernt alle Dokumente aus der Einträge-Sammlung, die älter sind als 180 Tage. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.' , pl: 'To narzędzie usuwa wszystkie dokumenty z kolekcji wpisów starsze niż 180 dni. Przydatne, gdy status baterii uploadera nie jest aktualizowany.' ,ru: 'Это удалит все документы коллекции entries старше 180 дней. Полезно, когда статус батареи загрузчика должным образом не обновляется' + ,hu: 'A feladat kitörli az összes bejegyzésekből álló dokumentumot ami 180 napnál öregebb. Hasznos ha a feltöltő elem állapota nem jelenik meg helyesen.' } ,'Delete old documents' : { hr: 'Obriši stare zapise' ,de: 'Alte Dokumente löschen' , pl: 'Usuń stare dokumenty' ,ru: 'Удалить старые документы' + ,hu: 'Öreg dokumentumok törlése' } ,'Delete old documents from entries collection?' : { hr: 'Obriši stare zapise?' ,de: 'Alte Dokumente aus der Einträge-Sammlung entfernen?' , pl: 'Czy na pewno chcesz usunąć stare dokumenty z kolekcji wpisów?' ,ru: 'Удалить старые документы коллекции entries?' + ,hu: 'Az öreg dokumentumok törlése a bejegyzések gyűjteményéből?' } ,'%1 is not a valid number' : { hr: '%1 nije valjan broj' @@ -7838,36 +8159,42 @@ function init() { ,he: 'זה לא מיספר %1' , pl: '%1 nie jest poprawną liczbą' ,ru: '% не является допустимым значением' + ,hu: 'A %1 nem érvényes szám' } ,'%1 is not a valid number - must be more than 2' : { hr: '%1 nije valjan broj - mora biti veći od 2' ,de: '%1 ist keine gültige Zahl - Eingabe muss größer als 2 sein' , pl: '%1 nie jest poprawną liczbą - musi być większe od 2' ,ru: '% не является допустимым значением - должно быть больше 2' + ,hu: 'A %1 nem érvényes szám - nagyobb számnak kell lennie mint a 2' } ,'Clean Mongo treatments database' : { hr: 'Obriši tretmane iz baze' ,de: 'Mongo-Behandlungsdatenbank bereinigen' , pl: 'Wyczyść bazę leczenia Mongo' ,ru: 'Очистить базу лечения Mongo' + ,hu: 'Mondo kezelési datbázisának törlése' } ,'Delete all documents from treatments collection older than 180 days' : { hr: 'Obriši tretmane starije od 180 dana iz baze' ,de: 'Alle Dokumente aus der Behandlungs-Sammlung löschen, die älter sind als 180 Tage' , pl: 'Usuń wszystkie dokumenty z kolekcji leczenia starsze niż 180 dni' ,ru: 'Удалить все документы коллекции treatments старше 180 дней' + ,hu: 'Töröld az összes 180 napnál öregebb kezelési dokumentumot' } ,'This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.' : { hr: 'Ovo briše sve tretmane starije od 180 dana iz baze. Korisno kada se status baterije uploadera ne osvježava.' ,de: 'Diese Aufgabe entfernt alle Dokumente aus der Behandlungs-Sammlung, die älter sind als 180 Tage. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.' , pl: 'To narzędzie usuwa wszystkie dokumenty z kolekcji leczenia starsze niż 180 dni. Przydatne, gdy status baterii uploadera nie jest aktualizowany.' ,ru: 'Это удалит все документы коллекции treatments старше 180 дней. Полезно, когда статус батареи загрузчика не обновляется должным образом' + ,hu: 'A feladat eltávolítja az összes kezelési dokumentumot ami öregebb 180 napnál. Hasznos ha a feltöltő elem állapota nem jelenik meg helyesen.' } ,'Delete old documents from treatments collection?' : { hr: 'Obriši stare tretmane?' ,ru: 'Удалить старые документы из коллекции treatments?' ,de: 'Alte Dokumente aus der Behandlungs-Sammlung entfernen?' , pl: 'Czy na pewno chcesz usunąć stare dokumenty z kolekcji leczenia?' + , hu: 'Törölni az összes doumentumot a kezelési gyűjteményből?' } ,'Admin Tools' : { cs: 'Nástroje pro správu' @@ -7894,6 +8221,7 @@ function init() { ,tr: 'Yönetici araçları' ,zh_cn: '管理工具' ,zh_tw: '管理工具' + ,hu: 'Adminisztrációs eszközök' } ,'Nightscout reporting' : { cs: 'Nightscout - Výkazy' @@ -7918,6 +8246,7 @@ function init() { ,ko: 'Nightscout 보고서' ,tr: 'NightScout raporları' ,zh_cn: 'Nightscout报表生成器' + ,hu: 'Nightscout jelentések' } ,'Cancel' : { cs: 'Zrušit' @@ -7943,6 +8272,7 @@ function init() { ,ko: '취소' ,tr: 'İptal' ,zh_cn: '取消' + ,hu: 'Vissza' } ,'Edit treatment' : { cs: 'Upravit ošetření' @@ -7967,6 +8297,7 @@ function init() { ,ko: 'Treatments 편집' ,tr: 'Tedaviyi düzenle' ,zh_cn: '编辑操作' + ,hu: 'Kezelés szerkesztése' } ,'Duration' : { cs: 'Doba trvání' @@ -7991,6 +8322,7 @@ function init() { ,ko: '기간' ,tr: 'süre' ,zh_cn: '持续' + ,hu: 'Behelyezés óta eltelt idő' } ,'Duration in minutes' : { cs: 'Doba trvání v minutách' @@ -8015,6 +8347,7 @@ function init() { ,ko: '분당 지속 기간' ,tr: 'Süre dakika cinsinden' ,zh_cn: '持续时间(分钟)' + ,hu: 'Idő percekben' } ,'Temp Basal' : { cs: 'Dočasný bazál' @@ -8038,6 +8371,7 @@ function init() { ,ko: '임시 basal' ,tr: 'Geçici Bazal Oranı' ,zh_cn: '临时基础率' + ,hu: 'Átmeneti bazál' } ,'Temp Basal Start' : { cs: 'Dočasný bazál začátek' @@ -8061,6 +8395,7 @@ function init() { ,ko: '임시 basal 시작' ,tr: 'Geçici Bazal Oranını Başlanğıcı' ,zh_cn: '临时基础率开始' + ,hu: 'Átmeneti bazál Kezdete' } ,'Temp Basal End' : { cs: 'Dočasný bazál konec' @@ -8084,6 +8419,7 @@ function init() { ,ko: '임시 basal 종료' ,tr: 'Geçici bazal oranını Bitişi' ,zh_cn: '临时基础率结束' + ,hu: 'Átmeneti bazál Vége' } ,'Percent' : { // value in % for temp basal cs: 'Procenta' @@ -8108,6 +8444,7 @@ function init() { ,ko: '퍼센트' ,tr: 'Yüzde' ,zh_cn: '百分比' + ,hu: 'Százalék' } ,'Basal change in %' : { cs: 'Změna bazálu v %' @@ -8131,6 +8468,7 @@ function init() { ,ko: '% 이내의 basal 변경' ,tr: 'Bazal değişimi % cinsinden' ,zh_cn: '基础率变化百分比' + ,hu: 'Bazál változása %' } ,'Basal value' : { // absolute value for temp basal cs: 'Hodnota bazálu' @@ -8154,6 +8492,7 @@ function init() { ,ko: 'Basal' ,tr: 'Bazal değeri' ,zh_cn: '基础率值' + ,hu: 'Bazál értéke' } ,'Absolute basal value' : { cs: 'Hodnota bazálu' @@ -8177,6 +8516,7 @@ function init() { ,ko: '절대적인 basal' ,tr: 'Mutlak bazal değeri' ,zh_cn: '绝对基础率值' + ,hu: 'Abszolút bazál érték' } ,'Announcement' : { cs: 'Oznámení' @@ -8201,6 +8541,7 @@ function init() { ,ko: '공지' ,tr: 'Duyuru' ,zh_cn: '通告' + ,hu: 'Közlemény' } ,'Loading temp basal data' : { cs: 'Nahrávám dočasné bazály' @@ -8224,6 +8565,7 @@ function init() { ,ko: '임시 basal 로딩' ,tr: 'Geçici bazal verileri yükleniyor' ,zh_cn: '载入临时基础率数据' + ,hu: 'Az étmeneti bazál adatainak betöltése' } ,'Save current record before changing to new?' : { cs: 'Uložit současný záznam před změnou na nový?' @@ -8248,6 +8590,7 @@ function init() { ,it: 'Salvare i dati correnti prima di cambiarli?' ,tr: 'Yenisine geçmeden önce mevcut girişleri kaydet?' ,zh_cn: '在修改至新值前保存当前记录?' + ,hu: 'Elmentsem az aktuális adatokat mielőtt újra váltunk?' } ,'Profile Switch' : { cs: 'Přepnutí profilu' @@ -8272,6 +8615,7 @@ function init() { ,it: 'Cambio profilo' ,tr: 'Profil Değiştir' ,zh_cn: '切换配置文件' + ,hu: 'Profil csere' } ,'Profile' : { cs: 'Profil' @@ -8296,6 +8640,7 @@ function init() { ,ko: '프로파일' ,tr: 'Profil' ,zh_cn: '配置文件' + ,hu: 'Profil' } ,'General profile settings' : { cs: 'Obecná nastavení profilu' @@ -8320,6 +8665,7 @@ function init() { ,it: 'Impostazioni generali profilo' ,tr: 'Genel profil ayarları' ,zh_cn: '通用配置文件设置' + ,hu: 'Általános profil beállítások' } ,'Title' : { cs: 'Název' @@ -8344,6 +8690,7 @@ function init() { ,it: 'Titolo' ,tr: 'Başlık' ,zh_cn: '标题' + ,hu: 'Elnevezés' } ,'Database records' : { cs: 'Záznamy v databázi' @@ -8368,6 +8715,7 @@ function init() { ,tr: 'Veritabanı kayıtları' ,zh_cn: '数据库记录' ,nl: 'Database gegevens' + ,hu: 'Adatbázis bejegyzések' } ,'Add new record' : { cs: 'Přidat nový záznam' @@ -8393,6 +8741,7 @@ function init() { ,ja: '新しい記録を加える' ,tr: 'Yeni kayıt ekle' ,zh_cn: '新增记录' + ,hu: 'Új bejegyzés hozzáadása' } ,'Remove this record' : { cs: 'Vymazat tento záznam' @@ -8418,6 +8767,7 @@ function init() { ,ja: 'この記録を除く' ,tr: 'Bu kaydı kaldır' ,zh_cn: '删除记录' + ,hu: 'Bejegyzés törlése' } ,'Clone this record to new' : { cs: 'Zkopíruj tento záznam do nového' @@ -8442,6 +8792,7 @@ function init() { ,it: 'Clona questo record in uno nuovo' ,tr: 'Bu kaydı yeniden kopyala' ,zh_cn: '复制记录' + ,hu: 'A kiválasztott bejegyzés másolása' } ,'Record valid from' : { cs: 'Záznam platný od' @@ -8466,6 +8817,7 @@ function init() { ,it: 'Record valido da' ,tr: 'Kayıt itibaren geçerli' ,zh_cn: '有效记录,从' + ,hu: 'Bejegyzés érvényessége' } ,'Stored profiles' : { cs: 'Uložené profily' @@ -8490,6 +8842,7 @@ function init() { ,it: 'Profili salvati' ,tr: 'Kaydedilmiş profiller' //Kayıtlı profiller,Saklanan profiller ,zh_cn: '配置文件已存储' + ,hu: 'Tárolt profilok' } ,'Timezone' : { cs: 'Časová zóna' @@ -8514,6 +8867,7 @@ function init() { ,it: 'Fuso orario' ,tr: 'Saat dilimi' ,zh_cn: '时区' + ,hu: 'Időzóna' } ,'Duration of Insulin Activity (DIA)' : { cs: 'Doba působnosti inzulínu (DIA)' @@ -8538,6 +8892,7 @@ function init() { ,it: 'Durata Attività Insulinica (DIA)' ,tr: 'İnsülin Etki Süresi (DIA)' ,zh_cn: '胰岛素作用时间(DIA)' + ,hu: 'Inzulin aktivitás időtartalma' } ,'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.' : { cs: 'Představuje typickou dobu, po kterou inzulín působí. Bývá různá podle pacienta a inzulínu. Typicky 3-4 hodiny pro pacienty s pumpou.' @@ -8562,6 +8917,7 @@ function init() { ,it: 'Rappresenta la durata tipica nel quale l\'insulina ha effetto. Varia in base al paziente ed al tipo d\'insulina. Tipicamente 3-4 ore per la maggior parte dei microinfusori e dei pazienti. Chiamata anche durata d\'azione insulinica.' ,tr: 'İnsülinin etki ettiği tipik süreye karşılık gelir. Hastaya ve insülin tipine göre değişir. Çoğu pompa insülini ve çoğu hasta için genellikle 3-4 saattir. Bazen de insülin etki süresi de denir.' ,zh_cn: '体现典型的胰岛素活性持续时间。 通过百分比和胰岛素类型体现。对于大多数胰岛素和患者来说是3至4个小时。也称为胰岛素生命周期。' + ,hu: 'Kimutatja hogy általában meddig hat az inzulin. Változó különböző pácienseknél és inzulinoknál. Általában 3-4 óra között mozog. Néha inzulin élettartalomnak is nevezik.' } ,'Insulin to carb ratio (I:C)' : { cs: 'Inzulíno-sacharidový poměr (I:C).' @@ -8586,6 +8942,7 @@ function init() { ,it: 'Rapporto Insulina-Carboidrati (I:C)' ,tr: 'İnsülin/Karbonhidrat oranı (I:C)' ,zh_cn: '碳水化合物系数(ICR)' + ,hu: 'Inzulin-szénhidrát arány' } ,'Hours:' : { cs: 'Hodin:' @@ -8610,6 +8967,7 @@ function init() { ,it: 'Ore:' ,tr: 'Saat:' ,zh_cn: '小时:' + ,hu: 'Óra:' } ,'hours' : { cs: 'hodin' @@ -8634,6 +8992,7 @@ function init() { ,it: 'ore' ,tr: 'saat' ,zh_cn: '小时' + ,hu: 'óra' } ,'g/hour' : { cs: 'g/hod' @@ -8657,6 +9016,7 @@ function init() { ,it: 'g/ora' ,tr: 'g/saat' ,zh_cn: 'g/小时' + ,hu: 'g/óra' } ,'g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.' : { cs: 'gramy na jednotku inzulínu. Poměr, jaké množství sacharidů pokryje jednotku inzulínu.' @@ -8681,6 +9041,7 @@ function init() { ,tr: 'İnsülin ünite başına g karbonhidrat. İnsülin ünite başına kaç gram karbonhidrat tüketildiği oranıdır.' ,zh_cn: '克碳水每单位胰岛素。每单位胰岛素可以抵消的碳水化合物克值比例。' ,nl: 'G KH per Eh insuline. De verhouding tussen hoeveel grammen koohlhydraten er verwerkt kunnen worden per eenheid insuline.' + ,hu: 'g szénhidrát per egység inzulin. Az arány, hogy hány gramm szénhidrát fed le bizonyos egységnyi inzulint' } ,'Insulin Sensitivity Factor (ISF)' : { cs: 'Citlivost inzulínu (ISF)' @@ -8705,6 +9066,7 @@ function init() { ,it: 'Fattore di Sensibilità Insulinica (ISF)' ,tr: '(ISF) İnsülin Duyarlılık Faktörü' ,zh_cn: '胰岛素敏感系数(ISF)' + ,hu: 'Inzulin Érzékenységi Faktor (ISF)' } ,'mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.' : { cs: 'mg/dL nebo mmol/L na jednotku inzulínu. Poměr, jak se změní glykémie po podaní jednotky inzulínu' @@ -8729,6 +9091,7 @@ function init() { ,it: 'mg/dL o mmol/L per U insulina. Il rapporto di quanto la glicemia varia per ogni U di correzione insulinica.' ,tr: 'Ünite insülin başına mg/dL veya mmol/L. Her bir Ünite düzeltme insülin ile KŞ\'nin ne kadar değiştiğini gösteren orandır.' ,zh_cn: 'mg/dL或mmol/L每单位胰岛素。每单位输入胰岛素导致血糖变化的比例' + ,hu: 'mg/dL vagy mmol/L per inzulin egység. Az aránya annak hogy mennyire változik a cukorszint bizonyos egység inzulintól' } ,'Carbs activity / absorption rate' : { cs: 'Rychlost absorbce sacharidů' @@ -8753,8 +9116,9 @@ function init() { ,it: 'Attività carboidrati / Velocità di assorbimento' ,tr: 'Karbonhidrat aktivitesi / emilim oranı' ,zh_cn: '碳水化合物活性/吸收率' + ,hu: 'Szénhidrátok felszívódásának gyorsasága' } - ,'grams peUr 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).' : { cs: 'gramy za jednotku času. Reprezentuje jak změnu COB za jednoku času, tak množství sacharidů, které se za tu dobu projevily. Křivka absorbce sacharidů je mnohem méně pochopitelná než IOB, ale může být aproximována počáteční pauzou následovanou konstantní hodnotou absorbce (g/hod).' ,he: 'גרם ליחידת זמן. מייצג הן את השינוי בפחמימות ליחידת זמן והן את כמות הפחמימות אשר אמורות להיכנס לתוקף במהלך אותה תקופה. ספיגת הפחמימות / פעילות הם פחות מובן מאשר פעילות האינסולין, אך ניתן להתקרב באמצעות עיכוב ראשוני ואחריו שיעור קבוע של קליטה (g / hr) ' ,el: 'Γραμμάρια ανά μονάδα χρόνου. Αναπαριστά τόσο την μεταβολή του COB στη μονάδα του χρόνου. Οι καμπύλες της απορρόφησης υδατανθράκων και της άσκησης δεν έχουν κατανοηθεί πλήρως από την επιστημονική κοινότητα, αλλά μπορούν να προσεγγιστούν βάζοντας μία αρχική καθυστέρηση ακολουθούμενη από έναν σταθερό ρυθμό απορρόφησης (g/hr).' @@ -8777,6 +9141,7 @@ function init() { ,tr: 'Ur birim zaman başına gram. Birim zamanda (COB) Aktif Krabonhidratdaki değişimin yanı sıra o zaman üzerinde etki etmesi gereken karbonhidrat miktarını ifade eder. Karbonhidrat emme/aktivite eğrileri, insülin aktivitesinden daha zor anlaşılmaktadır, ancak bir başlangıç gecikmesi ve ardından sabit bir emilim oranı (g/hr) kullanılarak yaklaşık olarak tahmin edilebilmektedir.' ,zh_cn: '克每单位时间。表示每单位时间COB(活性碳水化合物)的变化,以及在该时间应该生效的碳水化合物的量。碳水化合物活性/吸收曲线比胰岛素活性难理解,但可以使用初始延迟,接着恒定吸收速率(克/小时)来近似模拟。' ,nl: 'grammen per tijdseenheid. Geeft de wijzigingen in COB per tijdseenheid alsookde hoeveelheid KH dat impact zou moeten hebben over deze tijdspanne. KH absorbtie / activiteits curveszijn minder eenvoudig uitzetbaar, maar kunnen geschat worden door gebruik te maken van een startvertreging en daarna een constante curve van absorbtie (g/u).' + ,hu: 'gramm per idő egység. Kifejezi a COB változását es a szénhidrátok felszívódását bizonyos idő elteltével. A szénhidrát felszívódásának tengelye nehezebben értelmezhető mint az inzulin aktivitás (IOB), de hasonló lehet a kezdeti késedelemhez és a felszívódáshoz (g/óra). ' } ,'Basal rates [unit/hour]' : { cs: 'Bazály [U/hod].' @@ -8801,6 +9166,7 @@ function init() { ,it: 'Basale [unità/ora]' ,tr: 'Bazal oranı [ünite/saat]' ,zh_cn: '基础率 [U/小时]' + ,hu: 'Bazál [egység/óra]' } ,'Target BG range [mg/dL,mmol/L]' : { cs: 'Cílový rozsah glykémií [mg/dL,mmol/L]' @@ -8825,6 +9191,7 @@ function init() { ,it: 'Obiettivo d\'intervallo glicemico [mg/dL,mmol/L]' ,tr: 'Hedef KŞ aralığı [mg / dL, mmol / L]' ,zh_cn: '目标血糖范围 [mg/dL,mmol/L]' + ,hu: 'Cukorszint választott tartomány [mg/dL,mmol/L]' } ,'Start of record validity' : { cs: 'Začátek platnosti záznamu' @@ -8849,6 +9216,7 @@ function init() { ,it: 'Inizio di validità del dato' ,tr: 'Kayıt geçerliliği başlangıcı' ,zh_cn: '有效记录开始' + ,hu: 'Bejegyzés kezdetének érvényessége' } ,'Icicle' : { cs: 'Rampouch' @@ -8873,6 +9241,7 @@ function init() { ,tr: 'Buzsaçağı' //Sarkıt ,zh_cn: 'Icicle' ,zh_tw: 'Icicle' + ,hu: 'Inverzió' } ,'Render Basal' : { cs: 'Zobrazení bazálu' @@ -8898,6 +9267,7 @@ function init() { ,tr: 'Bazal Grafik' ,zh_cn: '使用基础率' ,zh_tw: '使用基礎率' + ,hu: 'Bazál megjelenítése' } ,'Profile used' : { cs: 'Použitý profil' @@ -8922,6 +9292,7 @@ function init() { ,it: 'Profilo usato' ,tr: 'Kullanılan profil' ,zh_cn: '配置文件已使用' + ,hu: 'Használatban lévő profil' } ,'Calculation is in target range.' : { cs: 'Kalkulace je v cílovém rozsahu.' @@ -8946,6 +9317,7 @@ function init() { ,it: 'Calcolo all\'interno dell\'intervallo' ,tr: 'Hesaplama hedef aralıktadır.' ,zh_cn: '预计在目标范围内' + ,hu: 'A számítás a cél tartományban található' } ,'Loading profile records ...' : { cs: 'Nahrávám profily ...' @@ -8970,6 +9342,7 @@ function init() { ,it: 'Caricamento dati del profilo ...' ,tr: 'Profil kayıtları yükleniyor ...' ,zh_cn: '载入配置文件记录...' + ,hu: 'Profil bejegyzéseinek betöltése...' } ,'Values loaded.' : { cs: 'Data nahrána.' @@ -8994,6 +9367,7 @@ function init() { ,it: 'Valori caricati.' ,tr: 'Değerler yüklendi.' ,zh_cn: '已载入数值' + ,hu: 'Értékek betöltése.' } ,'Default values used.' : { cs: 'Použity výchozí hodnoty.' @@ -9018,6 +9392,7 @@ function init() { ,it: 'Valori standard usati.' ,tr: 'Varsayılan değerler kullanıldı.' ,zh_cn: '已使用默认值' + ,hu: 'Alap értékek használva.' } ,'Error. Default values used.' : { cs: 'CHYBA: Použity výchozí hodnoty.' @@ -9042,6 +9417,7 @@ function init() { ,it: 'Errore. Valori standard usati.' ,tr: 'Hata. Varsayılan değerler kullanıldı.' ,zh_cn: '错误,已使用默认值' + ,hu: 'Hiba: Alap értékek használva' } ,'Time ranges of target_low and target_high don\'t match. Values are restored to defaults.' : { cs: 'Rozsahy časů pro limity glykémií si neodpovídají. Budou nastaveny výchozí hodnoty.' @@ -9066,6 +9442,7 @@ function init() { ,nl: 'Tijdspanne van laag en hoog doel zijn niet correct. Standaard waarden worden gebruikt' ,tr: 'Target_low ve target_high öğelerinin zaman aralıkları eşleşmiyor. Değerler varsayılanlara geri yüklendi.' ,zh_cn: '时间范围内的目标高低血糖值不匹配。已恢复使用默认值。' + ,hu: 'A cukorszint-cél időtartománya nem egyezik. Visszaállítás az alapértékekre' } ,'Valid from:' : { cs: 'Platné od:' @@ -9090,6 +9467,7 @@ function init() { ,it: 'Valido da:' ,tr: 'Tarihinden itibaren geçerli' ,zh_cn: '生效从:' + ,hu: 'Érvényes:' } ,'Save current record before switching to new?' : { cs: 'Uložit současný záznam před přepnutím na nový?' @@ -9114,7 +9492,8 @@ function init() { ,it: 'Salvare il dato corrente prima di passare ad uno nuovo?' ,tr: 'Yenisine geçmeden önce mevcut kaydı kaydet' ,zh_cn: '切换至新记录前保存当前记录?' - } + ,hu: 'Elmentsem az aktuális adatokat mielőtt újra válunk?' + } ,'Add new interval before' : { cs: 'Přidat nový interval před' ,he: 'הוסף מרווח חדש לפני ' @@ -9138,6 +9517,7 @@ function init() { ,it: 'Aggiungere prima un nuovo intervallo' ,tr: 'Daha önce yeni aralık ekle' ,zh_cn: '在此前新增区间' + ,hu: 'Új intervallum hozzáadása elötte' } ,'Delete interval' : { cs: 'Smazat interval' @@ -9162,6 +9542,7 @@ function init() { ,it: 'Elimina intervallo' ,tr: 'Aralığı sil' ,zh_cn: '删除区间' + ,hu: 'Intervallum törlése' } ,'I:C' : { cs: 'I:C' @@ -9185,6 +9566,7 @@ function init() { ,it: 'I:C' ,tr: 'İ:K' ,zh_cn: 'ICR' + ,hu: 'I:C' } ,'ISF' : { cs: 'ISF' @@ -9208,6 +9590,7 @@ function init() { ,it: 'ISF' ,tr: 'ISF' ,zh_cn: 'ISF' + ,hu: 'ISF' } ,'Combo Bolus' : { cs: 'Kombinovaný bolus' @@ -9232,6 +9615,7 @@ function init() { ,it: 'Combo Bolo' ,tr: 'Kombo (Yayma) Bolus' ,zh_cn: '双波' + ,hu: 'Kombinált bólus' } ,'Difference' : { cs: 'Rozdíl' @@ -9256,6 +9640,7 @@ function init() { ,it: 'Differenza' ,tr: 'fark' ,zh_cn: '差别' + ,hu: 'Különbség' } ,'New time' : { cs: 'Nový čas' @@ -9280,6 +9665,7 @@ function init() { ,it: 'Nuovo Orario' ,tr: 'Yeni zaman' ,zh_cn: '新时间' + ,hu: 'Új idő:' } ,'Edit Mode' : { cs: 'Editační mód' @@ -9306,6 +9692,7 @@ function init() { ,tr: 'Düzenleme Modu' ,zh_cn: '编辑模式' ,zh_tw: '編輯模式' + ,hu: 'Szerkesztési mód' } ,'When enabled icon to start edit mode is visible' : { cs: 'Pokud je povoleno, ikona pro vstup do editačního módu je zobrazena' @@ -9331,6 +9718,7 @@ function init() { ,tr: 'Etkinleştirildiğinde düzenleme modunun başında simgesi görünecektir.' ,zh_cn: '启用后开始编辑模式图标可见' ,zh_tw: '啟用後開始編輯模式圖標可見' + ,hu: 'Engedélyezés után a szerkesztési ikon látható' } ,'Operation' : { cs: 'Operace' @@ -9355,6 +9743,7 @@ function init() { ,it: 'Operazione' ,tr: 'İşlem' //Operasyon ,zh_cn: '操作' + ,hu: 'Operáció' } ,'Move' : { cs: 'Přesunout' @@ -9379,6 +9768,7 @@ function init() { ,it: 'Muovi' ,tr: 'Taşı' ,zh_cn: '移动' + ,hu: 'Áthelyezés' } ,'Delete' : { cs: 'Odstranit' @@ -9404,6 +9794,7 @@ function init() { ,ja: '削除' ,tr: 'Sil' ,zh_cn: '删除' + ,hu: 'Törlés' } ,'Move insulin' : { cs: 'Přesunout inzulín' @@ -9428,6 +9819,7 @@ function init() { ,it: 'Muovi Insulina' ,tr: 'İnsülini taşı' ,zh_cn: '移动胰岛素' + ,hu: 'Inzulin áthelyezése' } ,'Move carbs' : { cs: 'Přesunout sacharidy' @@ -9452,6 +9844,7 @@ function init() { ,it: 'Muovi carboidrati' ,tr: 'Karbonhidratları taşı' ,zh_cn: '移动碳水' + ,hu: 'Szénhidrát áthelyezése' } ,'Remove insulin' : { cs: 'Odstranit inzulín' @@ -9476,6 +9869,7 @@ function init() { ,it: 'Rimuovi insulina' ,tr: 'İnsülini kaldır' ,zh_cn: '去除胰岛素' + ,hu: 'Inzulin törlése' } ,'Remove carbs' : { cs: 'Odstranit sacharidy' @@ -9500,6 +9894,7 @@ function init() { ,it: 'Rimuovi carboidrati' ,tr: 'Karbonhidratları kaldır' ,zh_cn: '去除碳水' + ,hu: 'Szénhidrát törlése' } ,'Change treatment time to %1 ?' : { cs: 'Změnit čas ošetření na %1 ?' @@ -9524,6 +9919,7 @@ function init() { ,it: 'Cambiare tempo alla somministrazione a %1 ?' ,tr: 'Tedavi tarihini %1 e değiştirilsin mi?' ,zh_cn: '修改操作时间到%1?' + ,hu: 'A kezelés időpontjának áthelyezése %1?' } ,'Change carbs time to %1 ?' : { cs: 'Změnit čas sacharidů na %1 ?' @@ -9548,6 +9944,7 @@ function init() { ,it: 'Cambiare durata carboidrati a %1 ?' ,tr: 'Karbonhidrat zamanını %1 e değiştirilsin mi?' ,zh_cn: '修改碳水时间到%1?' + ,hu: 'Szénhidrát időpontjának áthelyezése %1' } ,'Change insulin time to %1 ?' : { cs: 'Změnit čas inzulínu na %1 ?' @@ -9572,6 +9969,7 @@ function init() { ,it: 'Cambiare durata insulina a %1 ?' ,tr: 'İnsülin tarihini %1 e değiştirilsin mi?' // zamanı ,zh_cn: '修改胰岛素时间到%1?' + ,hu: 'Inzulin időpont áthelyezése %1' } ,'Remove treatment ?' : { cs: 'Odstranit ošetření ?' @@ -9596,6 +9994,7 @@ function init() { ,it: 'Rimuovere somministrazione ?' ,tr: 'Tedavi kaldırılsın mı? ' ,zh_cn: '去除操作?' + ,hu: 'Kezelés törlése?' } ,'Remove insulin from treatment ?' : { cs: 'Odstranit inzulín z ošetření ?' @@ -9620,6 +10019,7 @@ function init() { ,it: 'Rimuovere insulina dalla somministrazione ?' ,tr: 'İnsülini tedaviden çıkartılsın mı?' ,zh_cn: '从操作中去除胰岛素?' + ,hu: 'Inzulin törlése a kezelésből?' } ,'Remove carbs from treatment ?' : { cs: 'Odstranit sacharidy z ošetření ?' @@ -9644,6 +10044,7 @@ function init() { ,it: 'Rimuovere carboidrati dalla somministrazione ?' ,tr: 'Karbonhidratları tedaviden çıkartılsın mı ?' // kaldırılsın mı ,zh_cn: '从操作中去除碳水化合物?' + ,hu: 'Szénhidrát törlése a kezelésből?' } ,'Rendering' : { cs: 'Vykresluji' @@ -9668,6 +10069,7 @@ function init() { ,it: 'Traduzione' ,tr: 'Grafik oluşturuluyor...' ,zh_cn: '渲染' + ,hu: 'Kirajzolás' } ,'Loading OpenAPS data of' : { cs: 'Nahrávám OpenAPS data z' @@ -9692,6 +10094,7 @@ function init() { ,nl: 'OpenAPS gegevens opladen van' ,tr: 'dan OpenAPS verileri yükleniyor' ,zh_cn: '载入OpenAPS数据从' + ,hu: 'OpenAPS adatainak betöltése innen' } ,'Loading profile switch data' : { cs: 'Nahrávám data přepnutí profilu' @@ -9716,6 +10119,7 @@ function init() { ,nl: 'Ophalen van data om profiel te wisselen' ,tr: 'Veri profili değişikliği yükleniyor' ,zh_cn: '载入配置文件交换数据' + ,hu: 'Profil változás adatainak betöltése' } ,'Redirecting you to the Profile Editor to create a new profile.' : { cs: 'Chybě nastavený profil.\nNení definovaný žádný platný profil k času zobrazení.\nProvádím přesměrování na editor profilu.' @@ -9740,6 +10144,7 @@ function init() { ,nl: 'Verkeerde profiel instellingen.\ngeen profiel beschibaar voor getoonde tijd.\nVerder naar profiel editor om een profiel te maken.' ,tr: 'Yanlış profil ayarı.\nGörüntülenen zamana göre profil tanımlanmamış.\nYeni profil oluşturmak için profil düzenleyicisine yönlendiriliyor.' ,zh_cn: '配置文件设置错误。\n没有配置文件定义为显示时间。\n返回配置文件编辑器以新建配置文件。' + ,hu: 'Átirányítás a profil szerkesztőre, hogy egy új profilt készítsen' } ,'Pump' : { cs: 'Pumpa' @@ -9764,6 +10169,7 @@ function init() { ,it: 'Pompa' ,tr: 'Pompa' ,zh_cn: '胰岛素泵' + ,hu: 'Pumpa' } ,'Sensor Age' : { cs: 'Stáří senzoru (SAGE)' @@ -9789,6 +10195,7 @@ function init() { ,tr: '(SAGE) Sensör yaşı ' ,zh_cn: '探头使用时间(SAGE)' ,zh_tw: '探頭使用時間(SAGE)' + ,hu: 'Szenzor élettartalma (SAGE)' } ,'Insulin Age' : { cs: 'Stáří inzulínu (IAGE)' @@ -9814,6 +10221,7 @@ function init() { ,tr: '(IAGE) İnsülin yaşı' ,zh_cn: '胰岛素使用时间(IAGE)' ,zh_tw: '胰島素使用時間(IAGE)' + ,hu: 'Inzulin élettartalma (IAGE)' } ,'Temporary target' : { cs: 'Dočasný cíl' @@ -9838,6 +10246,7 @@ function init() { ,it: 'Obiettivo Temporaneo' ,tr: 'Geçici hedef' ,zh_cn: '临时目标' + ,hu: 'Átmeneti cél' } ,'Reason' : { cs: 'Důvod' @@ -9862,6 +10271,7 @@ function init() { ,it: 'Ragionare' ,tr: 'Neden' // Gerekçe ,zh_cn: '原因' + ,hu: 'Indok' } ,'Eating soon' : { cs: 'Následuje jídlo' @@ -9885,6 +10295,7 @@ function init() { ,it: 'Mangiare prossimamente' ,tr: 'Yakında yemek' // Kısa zamanda yemek yenecek ,zh_cn: '接近用餐时间' + ,hu: 'Hamarosan eszem' } ,'Top' : { cs: 'Horní' @@ -9909,6 +10320,7 @@ function init() { ,tr: 'Üst' ,zh_cn: '顶部' ,pl: 'Góra' + ,hu: 'Felső' } ,'Bottom' : { cs: 'Dolní' @@ -9933,6 +10345,7 @@ function init() { ,tr: 'Alt' //aşağı, alt, düşük ,zh_cn: '底部' ,pl: "Dół" + ,hu: "Alsó" } ,'Activity' : { cs: 'Aktivita' @@ -9957,6 +10370,7 @@ function init() { ,tr: 'Aktivite' ,zh_cn: '有效的' ,pl: 'Aktywność' + ,hu: 'Aktivitás' } ,'Targets' : { cs: 'Cíl' @@ -9981,6 +10395,7 @@ function init() { ,tr: 'Hedefler' ,zh_cn: '目标' ,pl: 'Cele' + ,hu: 'Célok' } ,'Bolus insulin:' : { cs: 'Bolusový inzulín:' @@ -10005,6 +10420,7 @@ function init() { ,tr: 'Bolus insülin:' ,zh_cn: '大剂量胰岛素' ,pl: 'Bolus insuliny' + ,hu: 'Bólus inzulin' } ,'Base basal insulin:' : { cs: 'Základní bazální inzulín:' @@ -10029,6 +10445,7 @@ function init() { ,tr: 'Temel bazal insülin' ,zh_cn: '基础率胰岛素' ,pl: 'Bazowa dawka insuliny' + ,hu: 'Általános bazal inzulin' } ,'Positive temp basal insulin:' : { cs: 'Pozitivní dočasný bazální inzulín:' @@ -10053,6 +10470,7 @@ function init() { ,nl: 'Extra tijdelijke basaal insuline' ,tr: 'Pozitif geçici bazal insülin:' ,zh_cn: '实际临时基础率胰岛素' + ,hu: 'Pozitív átmeneti bazál inzulin' } ,'Negative temp basal insulin:' : { cs:'Negativní dočasný bazální inzulín:' @@ -10077,6 +10495,7 @@ function init() { ,nl: 'Negatieve tijdelijke basaal insuline' ,tr: 'Negatif geçici bazal insülin:' ,zh_cn: '其余临时基础率胰岛素' + ,hu: 'Negatív átmeneti bazál inzulin' } ,'Total basal insulin:' : { cs: 'Celkový bazální inzulín:' @@ -10101,6 +10520,7 @@ function init() { ,nl: 'Totaal basaal insuline' ,tr: 'Toplam bazal insülin:' ,zh_cn: '基础率胰岛素合计' + ,hu: 'Teljes bazál inzulin' } ,'Total daily insulin:' : { cs:'Celkový denní inzulín:' @@ -10125,6 +10545,7 @@ function init() { ,nl: 'Totaal dagelijkse insuline' ,tr: 'Günlük toplam insülin:' ,zh_cn: '每日胰岛素合计' + ,hu: 'Teljes napi inzulin' } ,'Unable to %1 Role' : { // PUT or POST cs: 'Chyba volání %1 Role:' @@ -10148,6 +10569,7 @@ function init() { ,nl: 'Kan %1 rol niet verwijderen' ,tr: '%1 Rolü yapılandırılamadı' ,zh_cn: '%1角色不可用' + ,hu: 'Hiba a %1 szabály hívásánál' } ,'Unable to delete Role' : { cs: 'Nelze odstranit Roli:' @@ -10171,6 +10593,7 @@ function init() { ,tr: 'Rol silinemedi' ,zh_cn: '无法删除角色' ,pl: 'Nie można usunąć roli' + ,hu: 'Nem lehetett a Szerepet törölni' } ,'Database contains %1 roles' : { cs: 'Databáze obsahuje %1 rolí' @@ -10194,6 +10617,7 @@ function init() { ,nl: 'Database bevat %1 rollen' ,tr: 'Veritabanı %1 rol içerir' ,zh_cn: '数据库包含%1个角色' + ,hu: 'Az adatbázis %1 szerepet tartalmaz' } ,'Edit Role' : { cs:'Editovat roli' @@ -10217,6 +10641,7 @@ function init() { ,nl: 'Pas rol aan' ,tr: 'Rolü düzenle' ,zh_cn: '编辑角色' + ,hu: 'Szerep szerkesztése' } ,'admin, school, family, etc' : { cs: 'administrátor, škola, rodina atd...' @@ -10240,6 +10665,7 @@ function init() { ,nl: 'admin, school, familie, etc' ,tr: 'yönetici, okul, aile, vb' ,zh_cn: '政府、学校、家庭等' + ,hu: 'admin, iskola, család, stb' } ,'Permissions' : { cs: 'Oprávnění' @@ -10263,6 +10689,7 @@ function init() { ,nl: 'Rechten' ,tr: 'İzinler' ,zh_cn: '权限' + ,hu: 'Engedély' } ,'Are you sure you want to delete: ' : { cs: 'Opravdu vymazat: ' @@ -10286,6 +10713,7 @@ function init() { ,nl: 'Weet u het zeker dat u wilt verwijderen?' ,tr: 'Silmek istediğinizden emin misiniz:' ,zh_cn: '你确定要删除:' + ,hu: 'Biztos, hogy törölni szeretnéd: ' } ,'Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.' : { cs: 'Každá role má 1 nebo více oprávnění. Oprávnění * je zástupný znak, oprávnění jsou hiearchie používající : jako oddělovač.' @@ -10308,6 +10736,7 @@ function init() { ,nl: 'Elke rol heeft mintens 1 machtiging. De * machtiging is een wildcard, machtigingen hebben een hyrarchie door gebruik te maken van : als scheidingsteken.' ,tr: 'Her rolün bir veya daha fazla izni vardır.*izni bir yer tutucudur ve izinler ayırıcı olarak : ile hiyerarşiktir.' ,zh_cn: '每个角色都具有一个或多个权限。权限设置时使用*作为通配符,层次结构使用:作为分隔符。' + ,hu: 'Minden szerepnek egy vagy több engedélye van. A * engedély helyettesítő engedély amely a hierarchiához : használja elválasztásnak.' } ,'Add new Role' : { cs: 'Přidat novou roli' @@ -10331,6 +10760,7 @@ function init() { ,tr: 'Yeni Rol ekle' ,zh_cn: '添加新角色' ,pl: 'Dodaj nową rolę' + ,hu: 'Új szerep hozzáadása' } ,'Roles - Groups of People, Devices, etc' : { cs: 'Role - Skupiny lidí, zařízení atd.' @@ -10354,6 +10784,7 @@ function init() { ,tr: 'Roller - İnsan grupları, Cihazlar vb.' ,zh_cn: '角色 - 一组人或设备等' ,pl: 'Role - Grupy ludzi, urządzeń, itp' + ,hu: 'Szerepek - Emberek csoportja, berendezések, stb.' } ,'Edit this role' : { cs: 'Editovat tuto roli' @@ -10377,6 +10808,7 @@ function init() { ,tr: 'Bu rolü düzenle' ,zh_cn: '编辑角色' ,pl: 'Edytuj rolę' + ,hu: 'Szerep szerkesztése' } ,'Admin authorized' : { cs: 'Admin autorizován' @@ -10401,6 +10833,7 @@ function init() { ,zh_cn: '已授权' ,zh_tw: '已授權' ,pl: 'Administrator autoryzowany' + ,hu: 'Adminisztrátor engedélyezve' } ,'Subjects - People, Devices, etc' : { cs: 'Subjekty - Lidé, zařízení atd.' @@ -10423,7 +10856,8 @@ function init() { ,nl: 'Onderwerpen - Mensen, apparaten etc' ,tr: 'Konular - İnsanlar, Cihazlar, vb.' ,zh_cn: '用户 - 人、设备等' - ,pl: 'Obiekty - ludzie, urządzenia itp' + ,pl: 'Obiekty - ludzie, urządzenia itp' + ,hu: 'Semélyek - Emberek csoportja, berendezések, stb.' } ,'Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.' : { cs: 'Každý subjekt má svůj unikátní token a 1 nebo více rolí. Klikem na přístupový token se otevře nové okno pro tento subjekt. Tento link je možné sdílet.' @@ -10447,6 +10881,7 @@ function init() { ,tr: 'Her konu benzersiz bir erişim anahtarı ve bir veya daha fazla rol alır. Seçilen konuyla ilgili yeni bir görünüm elde etmek için erişim tuşuna tıklayın. Bu gizli bağlantı paylaşılabilinir.' ,zh_cn: '每个用户具有唯一的访问令牌和一个或多个角色。在访问令牌上单击打开新窗口查看已选择用户,此时该链接可分享。' ,pl: 'Każdy obiekt będzie miał unikalny token dostępu i jedną lub więcej ról. Kliknij token dostępu, aby otworzyć nowy widok z wybranym obiektem, ten tajny link może być następnie udostępniony' + ,hu: 'Mindegyik személynek egy egyedi hozzáférése lesz 1 vagy több szereppel. Kattints a tokenre, hogy egy új nézetet kapj - a kapott linket megoszthatod velük.' } ,'Add new Subject' : { cs: 'Přidat nový subjekt' @@ -10470,6 +10905,7 @@ function init() { ,tr: 'Yeni konu ekle' ,zh_cn: '添加新用户' ,pl: 'Dodaj obiekt' + ,hu: 'Új személy hozzáadása' } ,'Unable to %1 Subject' : { // PUT or POST cs: 'Chyba volání %1 Subjektu:' @@ -10493,6 +10929,7 @@ function init() { ,tr: '%1 konu yapılamıyor' ,zh_cn: '%1用户不可用' ,pl: 'Nie można %1 obiektu' + ,hu: 'A %1 személy hozáadása nem sikerült' } ,'Unable to delete Subject' : { cs: 'Nelze odstranit Subjekt:' @@ -10516,6 +10953,7 @@ function init() { ,tr: 'Konu silinemedi' ,zh_cn: '无法删除用户' ,pl: 'Nie można usunąć obiektu' + ,hu: 'A személyt nem sikerült törölni' } ,'Database contains %1 subjects' : { cs: 'Databáze obsahuje %1 subjektů' @@ -10539,6 +10977,7 @@ function init() { ,tr: 'Veritabanı %1 konu içeriyor' ,zh_cn: '数据库包含%1个用户' ,pl: 'Baza danych zawiera %1 obiektów' + ,hu: 'Az adatbázis %1 személyt tartalmaz' } ,'Edit Subject' : { cs:'Editovat subjekt' @@ -10562,6 +11001,7 @@ function init() { ,tr: 'Konuyu düzenle' ,zh_cn: '编辑用户' ,pl: 'Edytuj obiekt' + ,hu: 'Személy szerkesztése' } ,'person, device, etc' : { cs:'osoba, zařízeni atd.' @@ -10585,6 +11025,7 @@ function init() { ,tr: 'kişi, cihaz, vb' ,zh_cn: '人、设备等' ,pl: 'osoba, urządzenie, itp' + ,hu: 'személy, berendezés, stb.' } ,'role1, role2' : { cs:'role1, role2' @@ -10608,6 +11049,7 @@ function init() { ,tr: 'rol1, rol2' ,zh_cn: '角色1、角色2' ,pl: 'rola1, rola2' + ,hu: 'szerep1, szerep2' } ,'Edit this subject' : { cs:'Editovat tento subjekt' @@ -10631,6 +11073,7 @@ function init() { ,tr: 'Bu konuyu düzenle' ,zh_cn: '编辑此用户' ,pl: 'Edytuj ten obiekt' + ,hu: 'A kiválasztott személy szerkesztése' } ,'Delete this subject' : { cs:'Smazat tento subjekt' @@ -10654,6 +11097,7 @@ function init() { ,tr: 'Bu konuyu sil' ,zh_cn: '删除此用户' ,pl: 'Usuń ten obiekt' + ,hu: 'A kiválasztott személy törlése' } ,'Roles' : { cs:'Role' @@ -10677,6 +11121,7 @@ function init() { ,tr: 'Roller' ,zh_cn: '角色' ,pl: 'Role' + ,hu: 'Szerepek' } ,'Access Token' : { cs:'Přístupový token' @@ -10700,6 +11145,7 @@ function init() { ,tr: 'Erişim Simgesi (Access Token)' ,zh_cn: '访问令牌' ,pl: 'Token dostępu' + ,hu: 'Hozzáférési token' } ,'hour ago' : { cs:'hodina zpět' @@ -10723,6 +11169,7 @@ function init() { ,tr: 'saat önce' ,zh_cn: '小时前' ,pl: 'Godzię temu' + ,hu: 'órája' } ,'hours ago' : { cs:'hodin zpět' @@ -10746,6 +11193,7 @@ function init() { ,tr: 'saat önce' ,zh_cn: '小时前' ,pl: 'Godzin temu' + ,hu: 'órája' } ,'Silence for %1 minutes' : { cs:'Ztlumit na %1 minut' @@ -10770,6 +11218,7 @@ function init() { ,zh_cn: '静音%1分钟' ,zh_tw: '靜音%1分鐘' ,pl: 'Wycisz na %1 minut' + ,hul: 'Lehalkítás %1 percre' } ,'Check BG' : { cs:'Zkontrolovat glykémii' @@ -10793,6 +11242,7 @@ function init() { ,tr: 'KŞ\'ini kontrol et' ,zh_cn: '测量血糖' ,pl: 'Sprawdź glukozę z krwi' + ,hu: 'Ellenőrizd a cukorszintet' } ,'BASAL' : { cs: 'BAZÁL' @@ -10817,6 +11267,7 @@ function init() { ,zh_cn: '基础率' ,zh_tw: '基礎率' ,pl: 'BAZA' + ,hu: 'BAZÁL' } ,'Current basal' : { cs:'Současný bazál' @@ -10840,6 +11291,7 @@ function init() { ,tr: 'Geçerli Bazal' ,zh_cn: '当前基础率' ,pl: 'Dawka podstawowa' + ,hu: 'Aktuális bazál' } ,'Sensitivity' : { cs:'Citlivost (ISF)' @@ -10863,6 +11315,7 @@ function init() { ,tr: 'Duyarlılık Faktörü (ISF)' ,zh_cn: '胰岛素敏感系数' ,pl: 'Wrażliwość' + ,hu: 'Inzulin érzékenység' } ,'Current Carb Ratio' : { cs:'Sacharidový poměr (I:C)' @@ -10886,6 +11339,7 @@ function init() { ,tr: 'Geçerli Karbonhidrat oranı I/C (ICR)' ,zh_cn: '当前碳水化合物系数' ,pl: 'Obecny przelicznik węglowodanowy' + ,hu: 'Aktuális szénhidrát arány' } ,'Basal timezone' : { cs:'Časová zóna' @@ -10909,6 +11363,7 @@ function init() { ,tr: 'Bazal saat dilimi' ,zh_cn: '基础率时区' ,pl: 'Strefa czasowa dawki podstawowej' + ,hu: 'Bazál időzóna' } ,'Active profile' : { cs:'Aktivní profil' @@ -10932,6 +11387,7 @@ function init() { ,tr: 'Aktif profil' ,zh_cn: '当前配置文件' ,pl: 'Profil aktywny' + ,hu: 'Aktív profil' } ,'Active temp basal' : { cs:'Aktivní dočasný bazál' @@ -10955,6 +11411,7 @@ function init() { ,tr: 'Aktif geçici bazal oranı' ,zh_cn: '当前临时基础率' ,pl: 'Aktywa tymczasowa dawka podstawowa' + ,hu: 'Aktív átmeneti bazál' } ,'Active temp basal start' : { cs:'Začátek dočasného bazálu' @@ -10978,6 +11435,7 @@ function init() { ,tr: 'Aktif geçici bazal oranı başlangıcı' ,zh_cn: '当前临时基础率开始' ,pl: 'Start aktywnej tymczasowej dawki podstawowej' + ,hu: 'Aktív átmeneti bazál kezdete' } ,'Active temp basal duration' : { cs:'Trvání dočasného bazálu' @@ -11001,6 +11459,7 @@ function init() { ,zh_cn: '当前临时基础率期间' ,pl: 'Czas trwania aktywnej tymczasowej dawki podstawowej' ,tr: 'Aktif geçici bazal süresi' + ,hu: 'Aktív átmeneti bazál időtartalma' } ,'Active temp basal remaining' : { cs:'Zbývající dočasný bazál' @@ -11024,6 +11483,7 @@ function init() { ,zh_cn: '当前临时基础率剩余' ,pl: 'Pozostała aktywna tymczasowa dawka podstawowa' ,tr: 'Aktif geçici bazal kalan' + ,hu: 'Átmeneti bazál visszamaradó ideje' } ,'Basal profile value' : { cs: 'Základní hodnota bazálu' @@ -11047,6 +11507,7 @@ function init() { ,zh_cn: '基础率配置文件值' ,pl: 'Wartość profilu podstawowego' ,tr: 'Bazal profil değeri' + ,hu: 'Bazál profil értéke' } ,'Active combo bolus' : { cs:'Aktivní kombinovaný bolus' @@ -11070,6 +11531,7 @@ function init() { ,zh_cn: '当前双波大剂量' ,pl: 'Aktywny bolus złożony' ,tr: 'Aktive kombo bolus' + ,hu: 'Aktív kombinált bólus' } ,'Active combo bolus start' : { cs: 'Začátek kombinovaného bolusu' @@ -11093,6 +11555,7 @@ function init() { ,zh_cn: '当前双波大剂量开始' ,pl: 'Start aktywnego bolusa złożonego' ,tr: 'Aktif gecikmeli bolus başlangıcı' + ,hu: 'Aktív kombinált bólus kezdete' } ,'Active combo bolus duration' : { cs: 'Trvání kombinovaného bolusu' @@ -11116,6 +11579,7 @@ function init() { ,zh_cn: '当前双波大剂量期间' ,pl: 'Czas trwania aktywnego bolusa złożonego' ,tr: 'Active combo bolus süresi' + ,hu: 'Aktív kombinált bólus időtartalma' } ,'Active combo bolus remaining' : { cs: 'Zbývající kombinovaný bolus' @@ -11139,6 +11603,7 @@ function init() { ,zh_cn: '当前双波大剂量剩余' ,pl: 'Pozostały aktywny bolus złożony' ,tr: 'Aktif kombo (yayım) bolus kaldı' + ,hu: 'Aktív kombinált bólus fennmaradó idő' } ,'BG Delta' : { cs:'Změna glykémie' @@ -11163,6 +11628,7 @@ function init() { ,zh_tw: '血糖增量' ,pl: 'Zmiana glikemii' ,tr: 'KŞ farkı' + ,hu: 'Cukorszint változása' } ,'Elapsed Time' : { cs:'Dosažený čas' @@ -11187,6 +11653,7 @@ function init() { ,zh_tw: '所需時間' ,pl: 'Upłynął czas' ,tr: 'Geçen zaman' + ,hu: 'Eltelt idő' } ,'Absolute Delta' : { cs:'Absolutní rozdíl' @@ -11211,6 +11678,7 @@ function init() { ,zh_tw: '絕對增量' ,pl: 'różnica absolutna' ,tr: 'Mutlak fark' + ,hu: 'Abszolút külonbség' } ,'Interpolated' : { cs:'Interpolováno' @@ -11235,6 +11703,7 @@ function init() { ,zh_tw: '插值' ,pl: 'Interpolowany' ,tr: 'Aralıklı' + ,hu: 'Interpolált' } ,'BWP' : { // Bolus Wizard Preview cs: 'KALK' @@ -11259,6 +11728,7 @@ function init() { ,zh_tw: 'BWP' ,pl: 'Kalkulator bolusa' ,tr: 'BWP' + ,hu: 'BWP' } ,'Urgent' : { cs:'Urgentní' @@ -11284,6 +11754,7 @@ function init() { ,zh_tw: '緊急' ,pl:'Pilny' ,tr: 'Acil' + ,hu: 'Sűrgős' } ,'Warning' : { cs:'Varování' @@ -11308,6 +11779,7 @@ function init() { ,zh_tw: '警告' ,pl: 'Ostrzeżenie' ,tr: 'Uyarı' + ,hu: 'Figyelmeztetés' } ,'Info' : { cs: 'Informativní' @@ -11332,6 +11804,7 @@ function init() { ,zh_tw: '資訊' ,pl: 'Informacja' ,tr: 'Info' + ,hu: 'Információ' } ,'Lowest' : { cs: 'Nejnižší' @@ -11356,6 +11829,7 @@ function init() { ,zh_cn: '血糖极低' ,zh_tw: '血糖極低' ,pl: 'Niski' + ,hu: 'Legalacsonyabb' } ,'Snoozing high alarm since there is enough IOB' : { cs:'Vypínání alarmu vyskoké glykémie, protože je dostatek IOB' @@ -11379,6 +11853,7 @@ function init() { ,tr: 'Yeterli IOB(Aktif İnsülin) olduğundan KŞ yüksek uyarımını ertele' ,zh_cn: '有足够的IOB(活性胰岛素),暂停高血糖警报' ,pl: 'Wycisz alarm wysokiej glikemi, jest wystarczająco dużo aktywnej insuliny' + ,hu: 'Magas cukor riasztás késleltetése mivel elegendő inzulin van kiadva (IOB)' } ,'Check BG, time to bolus?' : { cs:'Zkontrolovat glykémii, čas na bolus?' @@ -11402,6 +11877,7 @@ function init() { ,tr: 'KŞine bakın, gerekirse bolus verin?' ,zh_cn: '测量血糖,该输注大剂量了?' ,pl: 'Sprawdź glikemię, czas na bolusa ?' + ,hu: 'Ellenőrizd a cukorszintet. Ideje bóluszt adni?' } ,'Notice' : { cs:'Poznámka' @@ -11425,6 +11901,7 @@ function init() { ,tr: 'Not' ,zh_cn: '提示' ,pl: 'Uwaga' + ,hu: 'Megjegyzés' } ,'required info missing' : { cs:'chybějící informace' @@ -11448,6 +11925,7 @@ function init() { ,tr: 'gerekli bilgi eksik' ,zh_cn: '所需信息不全' ,pl: 'brak wymaganych informacji' + ,hu: 'Szükséges információ hiányos' } ,'Insulin on Board' : { cs:'Aktivní inzulín' @@ -11471,6 +11949,7 @@ function init() { ,tr: '(IOB) Aktif İnsülin' ,zh_cn: '活性胰岛素(IOB)' ,pl: 'Aktywna insulina' + ,hu: 'Aktív inzulin (IOB)' } ,'Current target' : { cs:'Aktuální cílová hodnota' @@ -11494,6 +11973,7 @@ function init() { ,tr: 'Mevcut hedef' ,zh_cn: '当前目标' ,pl: 'Aktualny cel' + ,hu: 'Jelenlegi cél' } ,'Expected effect' : { cs:'Očekávaný efekt' @@ -11517,6 +11997,7 @@ function init() { ,tr: 'Beklenen etki' ,zh_cn: '预期效果' ,pl: 'Oczekiwany efekt' + ,hu: 'Elvárt efektus' } ,'Expected outcome' : { cs:'Očekávaný výsledek' @@ -11540,6 +12021,7 @@ function init() { ,tr: 'Beklenen sonuç' ,zh_cn: '预期结果' ,pl: 'Oczekowany resultat' + ,hu: 'Elvárt eredmény' } ,'Carb Equivalent' : { cs:'Ekvivalent v sacharidech' @@ -11563,6 +12045,7 @@ function init() { ,tr: 'Karbonhidrat eşdeğeri' ,zh_cn: '碳水当量' ,pl: 'Odpowiednik w węglowodanach' + ,hu: 'Szénhidrát megfelelője' } ,'Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs' : { cs:'Nadbytek inzulínu: o %1U více, než na dosažení spodní hranice cíle. Nepočítáno se sacharidy.' @@ -11586,6 +12069,7 @@ function init() { ,it: 'L\'eccesso d\'insulina equivalente %1U più che necessari per raggiungere l\'obiettivo basso, non rappresentano i carboidrati.' ,tr: 'Fazla insülin: Karbonhidratları dikkate alınmadan, alt hedefe ulaşmak için gerekenden %1U\'den daha fazla' //??? ,zh_cn: '胰岛素超过至血糖下限目标所需剂量%1单位,不计算碳水化合物' + ,hu: 'Felesleges inzulin megegyező %1U egységgel az alacsony cél eléréséhez, nem számolva a szénhidrátokkal' } ,'Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS' : { cs:'Nadbytek inzulínu: o %1U více, než na dosažení spodní hranice cíle. UJISTĚTE SE, ŽE JE TO POKRYTO SACHARIDY' @@ -11609,6 +12093,7 @@ function init() { ,tr: 'Fazla insülin: Alt KŞ hedefine ulaşmak için gerekenden %1 daha fazla insülin.IOB(Aktif İnsülin) Karbonhidrat tarafından karşılandığından emin olun.' ,zh_cn: '胰岛素超过至血糖下限目标所需剂量%1单位,确认IOB(活性胰岛素)被碳水化合物覆盖' ,pl: 'Nadmiar insuliny: o %1J więcej niż potrzeba, aby osiągnąć cel dolnej granicy. UPEWNIJ SIĘ, ŻE AKTYWNA INSULINA JEST POKRYTA WĘGLOWODANAMI' + ,hu: 'Felesleges inzulin megegyező %1U egységgel az alacsony cél eléréséhez. FONTOS, HOGY A IOB LEGYEN SZÉNHIDRÁTTAL TAKARVA' } ,'%1U reduction needed in active insulin to reach low target, too much basal?' : { cs:'Nutné snížení aktivního inzulínu o %1U k dosažení spodního cíle. Příliž mnoho bazálu?' @@ -11632,6 +12117,7 @@ function init() { ,tr: 'Alt KŞ hedefi için %1U aktif insülin azaltılmalı, bazal oranı çok mu yüksek?' ,zh_cn: '活性胰岛素已可至血糖下限目标,需减少%1单位,基础率过高?' ,pl: '%1J potrzebnej redukcji w aktywnej insulinie, aby osiągnąć niski cel dolnej granicy, Za duża dawka podstawowa ?' + ,hu: '%1U egységnyi inzulin redukció szükséges az alacsony cél eléréséhez, túl magas a bazál?' } ,'basal adjustment out of range, give carbs?' : { cs:'úprava změnou bazálu není možná. Podat sacharidy?' @@ -11655,6 +12141,7 @@ function init() { ,tr: 'Bazal oran ayarlaması limit dışı, karbonhidrat alınsın mı?' ,zh_cn: '基础率调整在范围之外,需要碳水化合物?' ,pl: 'dawka podstawowa poza zakresem, podać węglowodany?' + ,hu: 'bazál változtatása az arányokon kívül esik, szénhidrát bevitele?' } ,'basal adjustment out of range, give bolus?' : { cs:'úprava změnou bazálu není možná. Podat bolus?' @@ -11678,6 +12165,7 @@ function init() { ,tr: 'Bazal oran ayarlaması limit dışı, bolus alınsın mı?' ,zh_cn: '基础率调整在范围之外,需要大剂量?' ,pl: 'dawka podstawowa poza zakresem, podać insulinę?' + ,hu: 'bazál változtatása az arányokon kívül esik, bólusz beadása?' } ,'above high' : { cs:'nad horním' @@ -11702,6 +12190,7 @@ function init() { ,zh_cn: '血糖过高' ,zh_tw: '血糖過高' ,pl: 'powyżej wysokiego' + ,hu: 'magas felett' } ,'below low' : { cs:'pod spodním' @@ -11726,6 +12215,7 @@ function init() { ,zh_cn: '血糖过低' ,zh_tw: '血糖過低' ,pl: 'poniżej niskiego' + ,hu: 'alacsony alatt' } ,'Projected BG %1 target' : { cs:'Předpokládaná glykémie %1 cílem' @@ -11749,6 +12239,7 @@ function init() { ,tr: 'Beklenen KŞ %1 hedefi' ,zh_cn: '预计血糖%1目标' ,pl: 'Oczekiwany poziom glikemii %1' + ,hu: 'Kiszámított BG cél %1' } ,'aiming at' : { cs:'s cílem' @@ -11772,6 +12263,7 @@ function init() { ,tr: 'istenen sonuç' ,zh_cn: '目标在' ,pl: 'pożądany wynik' + ,hu: 'cél' } ,'Bolus %1 units' : { cs:'Bolus %1 jednotek' @@ -11795,6 +12287,7 @@ function init() { ,tr: 'Bolus %1 Ünite' ,zh_cn: '大剂量%1单位' ,pl: 'Bolus %1 jednostek' + ,hu: 'Bólus %1 egységet' } ,'or adjust basal' : { cs:'nebo úprava bazálu' @@ -11818,6 +12311,7 @@ function init() { ,tr: 'ya da bazal ayarlama' ,zh_cn: '或调整基础率' ,pl: 'lub dostosuj dawkę bazową' + ,hu: 'vagy a bazál változtatása' } ,'Check BG using glucometer before correcting!' : { cs:'Před korekcí zkontrolujte glukometrem glykémii!' @@ -11841,6 +12335,7 @@ function init() { ,zh_cn: '校正前请使用血糖仪测量血糖!' ,pl: 'Sprawdź glikemię z krwi przed podaniem korekty!' ,tr: 'Düzeltme bolusu öncesi glikometreyle parmaktan KŞini kontrol edin!' + ,hu: 'Ellenőrizd a cukorszintet mérővel korrekció előtt!' } ,'Basal reduction to account %1 units:' : { cs:'Úprava bazálu pro náhradu bolusu %1 U ' @@ -11864,6 +12359,7 @@ function init() { ,zh_cn: '基础率减少到%1单位' ,pl: 'Dawka bazowa zredukowana do 1% J' ,tr: '%1 birimi telafi etmek için azaltılmış Bazaloranı:' + ,hu: 'A bazál csökkentése %1 egység kiszámításához:' } ,'30m temp basal' : { cs:'30ti minutový dočasný bazál' @@ -11887,6 +12383,7 @@ function init() { ,zh_cn: '30分钟临时基础率' ,pl: '30 minut tymczasowej dawki bazowej' ,tr: '30 dk. geçici Bazal ' + ,hu: '30p általános bazál' } ,'1h temp basal' : { cs:'hodinový dočasný bazál' @@ -11910,6 +12407,7 @@ function init() { ,zh_cn: '1小时临时基础率' ,pl: '1 godzina tymczasowej dawki bazowej' ,tr: '1 sa. geçici bazal' + ,hu: '10 általános bazál' } ,'Cannula change overdue!' : { cs:'Čas na výměnu set vypršel!' @@ -11933,6 +12431,7 @@ function init() { ,zh_cn: '超过更换管路的时间' ,pl: 'Przekroczono czas wymiany wkłucia!' ,tr: 'Kanül değişimi gecikmiş!' + ,hu: 'Kanil cseréjének ideje elmúlt' } ,'Time to change cannula' : { cs:'Čas na výměnu setu' @@ -11956,6 +12455,7 @@ function init() { ,zh_cn: '已到更换管路的时间' ,pl: 'Czas do wymiany wkłucia' ,tr: 'Kanül değiştirme zamanı' + ,hu: 'Ideje kicserélni a kanilt' } ,'Change cannula soon' : { cs:'Blíží se čas na výměnu setu' @@ -11978,6 +12478,7 @@ function init() { ,zh_cn: '接近更换管路的时间' ,pl: 'Wkrótce wymiana wkłucia' ,tr: 'Yakında kanül değiştirin' + ,hu: 'Hamarosan cseréld ki a kanilt' } ,'Cannula age %1 hours' : { cs:'Stáří setu %1 hodin' @@ -12001,6 +12502,7 @@ function init() { ,zh_cn: '管路已使用%1小时' ,pl: 'Czas od wymiany wkłucia %1 godzin' ,tr: 'Kanül yaşı %1 saat' + ,hu: 'Kamil életkora %1 óra' } ,'Inserted' : { cs:'Nasazený' @@ -12025,6 +12527,7 @@ function init() { ,zh_tw: '已植入' ,pl: 'Zamontowano' ,tr: 'Yerleştirilmiş' + ,hu: 'Behelyezve' } ,'CAGE' : { @@ -12050,6 +12553,7 @@ function init() { ,zh_tw: '管路' ,pl: 'Wiek wkłucia' ,tr: 'CAGE' + ,hu: 'CAGE' } ,'COB' : { cs:'SACH' @@ -12073,6 +12577,7 @@ function init() { ,zh_cn: '活性碳水COB' ,pl: 'Aktywne węglowodany' ,tr: 'COB' + ,hu: 'COB' } ,'Last Carbs' : { cs:'Poslední sacharidy' @@ -12096,6 +12601,7 @@ function init() { ,zh_cn: '上次碳水' ,pl: 'Ostatnie węglowodany' ,tr: 'Son Karbonhidrat' + ,hu: 'Utolsó szénhidrátok' } ,'IAGE' : { cs:'INZ' @@ -12120,6 +12626,7 @@ function init() { ,zh_tw: '胰島素' ,pl: 'Wiek insuliny' ,tr: 'IAGE' + ,hu: 'IAGE' } ,'Insulin reservoir change overdue!' : { cs:'Čas na výměnu zásobníku vypršel!' @@ -12143,6 +12650,7 @@ function init() { ,zh_cn: '超过更换胰岛素储液器的时间' ,pl: 'Przekroczono czas wymiany zbiornika na insulinę!' ,tr: 'İnsülin rezervuarı değişimi gecikmiş!' + ,hu: 'Inzulin tartály cseréjének ideje elmúlt' } ,'Time to change insulin reservoir' : { cs:'Čas na výměnu zásobníku' @@ -12166,6 +12674,7 @@ function init() { ,zh_cn: '已到更换胰岛素储液器的时间' ,pl: 'Czas do zmiany zbiornika na insulinę!' ,tr: 'İnsülin rezervuarını değiştirme zamanı!' + ,hu: 'Itt az ideje az inzulin tartály cseréjének' } ,'Change insulin reservoir soon' : { cs:'Blíží se čas na výměnu zásobníku' @@ -12189,6 +12698,7 @@ function init() { ,zh_cn: '接近更换胰岛素储液器的时间' ,pl: 'Wkrótce wymiana zbiornika na insulinę!' ,tr: 'Yakında insülin rezervuarını değiştirin' + ,hu: 'Hamarosan cseréld ki az inzulin tartályt' } ,'Insulin reservoir age %1 hours' : { cs:'Stáří zásobníku %1 hodin' @@ -12212,6 +12722,7 @@ function init() { ,zh_cn: '胰岛素储液器已使用%1小时' ,pl: 'Wiek zbiornika na insulinę %1 godzin' ,tr: 'İnsülin rezervuar yaşı %1 saat' + ,hu: 'Az inzulin tartály %1 órája volt cserélve' } ,'Changed' : { cs:'Vyměněno' @@ -12235,6 +12746,7 @@ function init() { ,zh_cn: '已更换' ,pl: 'Wymieniono' ,tr: 'Değişmiş' + ,hu: 'Cserélve' } ,'IOB' : { cs:'IOB' @@ -12258,6 +12770,7 @@ function init() { ,zh_cn: '活性胰岛素IOB' ,pl: 'Aktywna insulina' ,tr: 'IOB' + ,hu: 'IOB' } ,'Careportal IOB' : { cs:'IOB z ošetření' @@ -12281,6 +12794,7 @@ function init() { ,zh_cn: '服务面板IOB(活性胰岛素)' ,pl: 'Aktywna insulina z portalu' ,tr: 'Careportal IOB (Aktif İnsülin)' + ,hu: 'Careportal IOB érték' } ,'Last Bolus' : { cs:'Poslední bolus' @@ -12304,6 +12818,7 @@ function init() { ,zh_cn: '上次大剂量' ,pl: 'Ostatni bolus' ,tr: 'Son Bolus' + ,hu: 'Utolsó bólus' } ,'Basal IOB' : { cs:'IOB z bazálů' @@ -12327,6 +12842,7 @@ function init() { ,zh_cn: '基础率IOB(活性胰岛素)' ,pl: 'Aktywna insulina z dawki bazowej' ,tr: 'Bazal IOB' + ,hu: 'Bazál IOB' } ,'Source' : { cs:'Zdroj' @@ -12350,6 +12866,7 @@ function init() { ,zh_cn: '来源' ,pl: 'Źródło' ,tr: 'Kaynak' + ,hu: 'Forrás' } ,'Stale data, check rig?' : { cs:'Zastaralá data, zkontrolovat mobil?' @@ -12373,6 +12890,7 @@ function init() { ,nl: 'Geen data, controleer uploader' ,zh_cn: '数据过期,检查一下设备?' ,tr: 'Veri güncel değil, vericiyi kontrol et?' + ,hu: 'Öreg adatok, ellenőrizd a feltöltőt' } ,'Last received:' : { cs:'Naposledy přijato:' @@ -12396,6 +12914,7 @@ function init() { ,zh_cn: '上次接收:' ,pl: 'Ostatnio odebrane:' ,tr: 'Son alınan:' + ,hu: 'Utóljára fogadott:' } ,'%1m ago' : { cs:'%1m zpět' @@ -12419,6 +12938,7 @@ function init() { ,zh_cn: '%1分钟前' ,pl: '%1 minut temu' ,tr: '%1 dk. önce' + ,hu: '%1p ezelőtt' } ,'%1h ago' : { cs:'%1h zpět' @@ -12442,6 +12962,7 @@ function init() { ,zh_cn: '%1小时前' ,pl: '%1 godzin temu' ,tr: '%1 sa. önce' + ,hu: '%1ó ezelőtt' } ,'%1d ago' : { cs:'%1d zpět' @@ -12465,6 +12986,7 @@ function init() { ,zh_cn: '%1天前' ,pl: '%1 dni temu' ,tr: '%1 gün önce' + ,hu: '%1n ezelőtt' } ,'RETRO' : { cs:'RETRO' @@ -12488,6 +13010,7 @@ function init() { ,zh_cn: '历史数据' ,pl: 'RETRO' ,tr: 'RETRO Geçmiş' + ,hu: 'RETRO' } ,'SAGE' : { cs:'SENZ' @@ -12512,6 +13035,7 @@ function init() { ,zh_tw: '探頭' ,pl: 'Wiek sensora' ,tr: 'SAGE' + ,hu: 'SAGE' } ,'Sensor change/restart overdue!' : { cs:'Čas na výměnu senzoru vypršel!' @@ -12535,6 +13059,7 @@ function init() { ,zh_cn: '超过更换/重启探头的时间' ,pl: 'Przekroczono czas wymiany/restartu sensora!' ,tr: 'Sensör değişimi/yeniden başlatma gecikti!' + ,hu: 'Szenzor cseréjének / újraindításának ideje lejárt' } ,'Time to change/restart sensor' : { cs:'Čas na výměnu senzoru' @@ -12558,6 +13083,7 @@ function init() { ,zh_cn: '已到更换/重启探头的时间' ,pl: 'Czas do wymiany/restartu sensora' ,tr: 'Sensörü değiştirme/yeniden başlatma zamanı' + ,hu: 'Ideje a szenzort cserélni / újraindítani' } ,'Change/restart sensor soon' : { cs:'Blíží se čas na výměnu senzoru' @@ -12581,6 +13107,7 @@ function init() { ,zh_cn: '接近更换/重启探头的时间' ,pl: 'Wkrótce czas wymiany/restartu sensora' ,tr: 'Sensörü yakında değiştir/yeniden başlat' + ,hu: 'Hamarosan indítsd újra vagy cseréld ki a szenzort' } ,'Sensor age %1 days %2 hours' : { cs:'Stáří senzoru %1 dní %2 hodin' @@ -12604,6 +13131,7 @@ function init() { ,zh_cn: '探头使用了%1天%2小时' ,pl: 'Wiek sensora: %1 dni %2 godzin' ,tr: 'Sensör yaşı %1 gün %2 saat' + ,hu: 'Szenzor ideje %1 nap és %2 óra' } ,'Sensor Insert' : { cs: 'Výměna sensoru' @@ -12627,6 +13155,7 @@ function init() { ,zh_cn: '植入探头' ,pl: 'Zamontuj sensor' ,tr: 'Sensor yerleştirme' + ,hu: 'Szenzor behelyezve' } ,'Sensor Start' : { cs: 'Znovuspuštění sensoru' @@ -12650,6 +13179,7 @@ function init() { ,nl: 'Sensor start' ,zh_cn: '启动探头' ,tr: 'Sensör başlatma' + ,hu: 'Szenzor indítása' } ,'days' : { cs: 'dní' @@ -12673,6 +13203,7 @@ function init() { ,zh_cn: '天' ,pl: 'dni' ,tr: 'Gün' + ,hu: 'napok' } ,'Insulin distribution' : { cs: 'Rozložení inzulínu' @@ -12693,6 +13224,7 @@ function init() { ,hr: 'Raspodjela inzulina' ,pl: 'podawanie insuliny' ,tr: 'İnsülin dağılımı' + ,hu: 'Inzulin disztribúció' } ,'To see this report, press SHOW while in this view' : { cs: 'Pro zobrazení toho výkazu stiskněte Zobraz na této záložce' @@ -12713,6 +13245,7 @@ function init() { ,hr: 'Za prikaz ovog izvješća, pritisnite PRIKAŽI na ovom prozoru' ,pl: 'Aby wyświetlić ten raport, naciśnij przycisk POKAŻ w tym widoku' ,tr: 'Bu raporu görmek için bu görünümde GÖSTER düğmesine basın.' + ,hu: 'A jelentés megtekintéséhez kattints a MUTASD gombra' } ,'AR2 Forecast' : { cs: 'AR2 predikci' @@ -12733,6 +13266,7 @@ function init() { ,hr: 'AR2 procjena' ,pl: 'Prognoza AR2' ,tr: 'AR2 Tahmini' + ,hu: 'AR2 előrejelzés' } ,'OpenAPS Forecasts' : { cs: 'OpenAPS predikci' @@ -12753,6 +13287,7 @@ function init() { ,hr: 'OpenAPS prognoze' ,pl: 'Prognoza OpenAPS' ,tr: 'OpenAPS Tahminleri' + ,hu: 'OpenAPS előrejelzés' } ,'Temporary Target' : { cs: 'Dočasný cíl glykémie' @@ -12773,6 +13308,7 @@ function init() { ,hr: 'Privremeni cilj' ,pl: 'Cel tymczasowy' ,tr: 'Geçici Hedef' + ,hu: 'Átmeneti cél' } ,'Temporary Target Cancel' : { cs: 'Dočasný cíl glykémie konec' @@ -12793,6 +13329,7 @@ function init() { ,hr: 'Otkaz privremenog cilja' ,pl: 'Zel tymczasowy anulowany' ,tr: 'Geçici Hedef İptal' + ,hu: 'Átmeneti cél törlése' } ,'OpenAPS Offline' : { cs: 'OpenAPS vypnuto' @@ -12813,6 +13350,7 @@ function init() { ,hr: 'OpenAPS odspojen' ,pl: 'OpenAPS nieaktywny' ,tr: 'OpenAPS Offline (çevrimdışı)' + ,hu: 'OpenAPS nem elérhető (offline)' } ,'Profiles' : { cs: 'Profily' @@ -12833,6 +13371,7 @@ function init() { ,hr: 'Profili' ,pl: 'Profile' ,tr: 'Profiller' + ,hu: 'Profilok' } ,'Time in fluctuation' : { cs: 'Doba měnící se glykémie' @@ -12853,6 +13392,7 @@ function init() { ,hr: 'Vrijeme u fluktuaciji' ,pl: 'Czas fluaktacji (odchyleń)' ,tr: 'Dalgalanmada geçen süre' + ,hu: 'Kilengésben töltött idő' } ,'Time in rapid fluctuation' : { cs: 'Doba rychle se měnící glykémie' @@ -12873,6 +13413,7 @@ function init() { ,hr: 'Vrijeme u brzoj fluktuaciji' ,pl: 'Czas szybkich fluaktacji (odchyleń)' ,tr: 'Hızlı dalgalanmalarda geçen süre' + ,hu: 'Magas kilengésekben töltött idő' } ,'This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:' : { cs: 'Toto je pouze hrubý odhad, který může být nepřesný a nenahrazuje kontrolu z krve. Vzorec je převzatý z:' @@ -12893,6 +13434,7 @@ function init() { ,hr: 'Ovo je samo gruba procjena koja može biti neprecizna i ne mijenja testiranje iz krvi. Formula je uzeta iz:' ,pl: 'To tylko przybliżona ocena, która może być bardzo niedokładna i nie może zastąpić faktycznego poziomu cukru we krwi. Zastosowano formułę:' ,tr: 'Bu bir kaba tahmindir ve çok hata içerebilir gerçek kan şekeri testlerinin yerini tutmayacaktır. Kullanılan formülde buradandır:' + ,hu: 'Ez egy nagyon durva számítás ami nem pontos és nem helyettesíti a cukorszint mérését. A képlet a következő helyről lett véve:' } , 'Filter by hours' : { cs: ' Filtr podle hodin' @@ -12912,6 +13454,7 @@ function init() { ,hr: 'Filter po satima' ,pl: 'Filtruj po godzinach' ,tr: 'Saatlere göre filtrele' + ,hu: 'Megszűrni órák alapján' } , 'Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.' : { cs: 'Doba měnící se glykémie a rapidně se měnící glykémie měří % času ve zkoumaném období, během kterého se glykémie měnila relativně rychle nebo rapidně. Nižší hodnota je lepší.' @@ -12931,6 +13474,7 @@ function init() { ,hr: 'Vrijeme u fluktuaciji i vrijeme u brzoj fluktuaciji mjere % vremena u gledanom periodu, tijekom kojeg se GUK mijenja relativno brzo ili brzo. Niže vrijednosti su bolje.' ,pl: 'Czas fluktuacji i szybki czas fluktuacji mierzą % czasu w badanym okresie, w którym poziom glukozy we krwi zmieniał się szybko lub bardzo szybko. Preferowane są wolniejsze zmiany' ,tr: 'Dalgalanmadaki zaman ve Hızlı dalgalanmadaki zaman, kan şekerinin nispeten hızlı veya çok hızlı bir şekilde değiştiği, incelenen dönemdeki zamanın %\'sini ölçer. Düşük değerler daha iyidir.' + ,hu: 'A sima és magas kilengésnél mért idő százalékban kifelyezve, ahol a cukorszint aránylag nagyokat változott. A kisebb értékek jobbak ebben az esetben' } , 'Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.' : { cs: 'Průměrná celková denní změna je součet absolutních hodnoty všech glykémií za sledované období, děleno počtem dní. Nižší hodnota je lepší.' @@ -12950,6 +13494,7 @@ function init() { ,hr: 'Srednja ukupna dnevna promjena je suma apsolutnih vrijednosti svih pomaka u gledanom periodu, podijeljeno s brojem dana. Niže vrijednosti su bolje.' ,pl: 'Sednia całkowita dziennych zmian jest sumą wszystkich zmian glikemii w badanym okresie, podzielonym przez liczbę dni. Mniejsze są lepsze' ,tr: 'Toplam Günlük Değişim, incelenen süre için, gün sayısına bölünen tüm glukoz değerlerinin mutlak değerinin toplamıdır. Düşük değer daha iyidir.' + ,hu: 'Az átlagos napi változás az abszolút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.' } , 'Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.' : { cs: 'Průměrná hodinová změna je součet absolutní hodnoty všech glykémií za sledované období, dělených počtem hodin v daném období. Nižší hodnota je lepší.' @@ -12969,6 +13514,7 @@ function init() { ,hr: 'Srednja ukupna promjena po satu je suma apsolutnih vrijednosti svih pomaka u gledanom periodu, podijeljeno s brojem sati. Niže vrijednosti su bolje.' ,pl: 'Sednia całkowita godzinnych zmian jest sumą wszystkich zmian glikemii w badanym okresie, podzielonym przez liczbę godzin. Mniejsze są lepsze' ,tr: 'Saat başına ortalama değişim, gözlem periyodu üzerindeki tüm glikoz değişikliklerinin mutlak değerlerinin saat sayısına bölünmesiyle elde edilen toplam değerdir. Düşük değerler daha iyidir.' + ,hu: 'Az átlagos óránkénti változás az abszút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.' } , 'GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.' : { cs: '">zde.' @@ -13009,6 +13556,7 @@ function init() { ,hr: '">ovdje.' ,pl: '">tutaj.' ,tr: '">buradan.' + ,hu: '">itt találhatóak.' } , 'Mean Total Daily Change' : { cs: 'Průměrná celková denní změna' @@ -13029,6 +13577,7 @@ function init() { ,hr: 'Srednja ukupna dnevna promjena' ,pl: 'Średnia całkowita dziennych zmian' ,tr: 'Günde toplam ortalama değişim' + ,hu: 'Áltagos napi változás' } , 'Mean Hourly Change' : { cs: 'Průměrná hodinová změna' @@ -13049,6 +13598,7 @@ function init() { ,hr: 'Srednja ukupna promjena po satu' ,pl: 'Średnia całkowita godzinnych zmian' ,tr: 'Saatte ortalama değişim' + ,hu: 'Átlagos óránkénti változás' } , 'FortyFiveDown': { bg: 'slightly dropping' @@ -13075,6 +13625,7 @@ function init() { , tr: 'biraz düşen' , zh_cn: '缓慢下降' , zh_tw: 'slightly dropping' + , hu: 'lassan csökken' }, 'FortyFiveUp': { @@ -13102,6 +13653,7 @@ function init() { , tr: 'biraz yükselen' , zh_cn: '缓慢上升' , zh_tw: 'slightly rising' + , hu: 'lassan növekszik' }, 'Flat': { bg: 'holding' @@ -13128,6 +13680,7 @@ function init() { , tr: 'sabit' , zh_cn: '平' , zh_tw: 'holding' + , hu: 'stabil' }, 'SingleUp': { bg: 'rising' @@ -13154,6 +13707,7 @@ function init() { , tr: 'yükseliyor' , zh_cn: '上升' , zh_tw: 'rising' + , hu: 'emelkedik' }, 'SingleDown': { bg: 'dropping' @@ -13180,6 +13734,7 @@ function init() { , tr: 'düşüyor' , zh_cn: '下降' , zh_tw: 'dropping' + , hu: 'csökken' }, 'DoubleDown': { bg: 'rapidly dropping' @@ -13206,6 +13761,7 @@ function init() { , tr: 'hızlı düşen' , zh_cn: '快速下降' , zh_tw: 'rapidly dropping' + , hu: 'gyorsan csökken' }, 'DoubleUp': { bg: 'rapidly rising' @@ -13232,6 +13788,7 @@ function init() { , tr: 'hızla yükselen' , zh_cn: '快速上升' , zh_tw: 'rapidly rising' + , hu: 'gyorsan emelkedik' }, 'virtAsstUnknown': { bg: 'That value is unknown at the moment. Please see your Nightscout site for more details.' @@ -13258,6 +13815,7 @@ function init() { , tr: 'That value is unknown at the moment. Please see your Nightscout site for more details.' , zh_cn: 'That value is unknown at the moment. Please see your Nightscout site for more details.' , zh_tw: 'That value is unknown at the moment. Please see your Nightscout site for more details.' + , hu: 'Az adat ismeretlen. Kérem nézd meg a Nightscout oldalt részletekért' }, 'virtAsstTitleAR2Forecast': { bg: 'AR2 Forecast' @@ -13284,6 +13842,7 @@ function init() { , tr: 'AR2 Forecast' , zh_cn: 'AR2 Forecast' , zh_tw: 'AR2 Forecast' + , hu: 'AR2 Előrejelzés' }, 'virtAsstTitleCurrentBasal': { bg: 'Current Basal' @@ -13310,6 +13869,7 @@ function init() { , tr: 'Current Basal' , zh_cn: 'Current Basal' , zh_tw: 'Current Basal' + , hu: 'Jelenlegi Bazál' }, 'virtAsstTitleCurrentCOB': { bg: 'Current COB' @@ -13336,6 +13896,7 @@ function init() { , tr: 'Current COB' , zh_cn: 'Current COB' , zh_tw: 'Current COB' + , hu: 'Jelenlegi COB' }, 'virtAsstTitleCurrentIOB': { bg: 'Current IOB' @@ -13362,6 +13923,7 @@ function init() { , tr: 'Current IOB' , zh_cn: 'Current IOB' , zh_tw: 'Current IOB' + , hu: 'Jelenlegi IOB' }, 'virtAsstTitleLaunch': { bg: 'Welcome to Nightscout' @@ -13388,6 +13950,7 @@ function init() { , tr: 'Welcome to Nightscout' , zh_cn: 'Welcome to Nightscout' , zh_tw: 'Welcome to Nightscout' + , hu: 'Üdvözöllek a Nightscouton' }, 'virtAsstTitleLoopForecast': { bg: 'Loop Forecast' @@ -13414,6 +13977,7 @@ function init() { , tr: 'Loop Forecast' , zh_cn: 'Loop Forecast' , zh_tw: 'Loop Forecast' + , hu: 'Loop Előrejelzés' }, 'virtAsstTitleLastLoop': { bg: 'Last Loop' @@ -13440,6 +14004,7 @@ function init() { , tr: 'Last Loop' , zh_cn: 'Last Loop' , zh_tw: 'Last Loop' + , hu: 'Utolsó Loop' }, 'virtAsstTitleOpenAPSForecast': { bg: 'OpenAPS Forecast' @@ -13466,6 +14031,7 @@ function init() { , tr: 'OpenAPS Forecast' , zh_cn: 'OpenAPS Forecast' , zh_tw: 'OpenAPS Forecast' + , hu: 'OpenAPS Előrejelzés' }, 'virtAsstTitlePumpReservoir': { bg: 'Insulin Remaining' @@ -13492,6 +14058,7 @@ function init() { , tr: 'Insulin Remaining' , zh_cn: 'Insulin Remaining' , zh_tw: 'Insulin Remaining' + , hu: 'Fennmaradó inzulin' }, 'virtAsstTitlePumpBattery': { bg: 'Pump Battery' @@ -13518,6 +14085,7 @@ function init() { , tr: 'Pump Battery' , zh_cn: 'Pump Battery' , zh_tw: 'Pump Battery' + , hu: 'Pumpa töltöttsége' }, 'virtAsstTitleRawBG': { bg: 'Current Raw BG' @@ -13544,6 +14112,7 @@ function init() { , tr: 'Current Raw BG' , zh_cn: 'Current Raw BG' , zh_tw: 'Current Raw BG' + , hu: 'Jelenlegi nyers cukorszint' }, 'virtAsstTitleUploaderBattery': { bg: 'Uploader Battery' @@ -13569,7 +14138,8 @@ function init() { , sv: 'Uploader Battery' , tr: 'Uploader Battery' , zh_cn: 'Uploader Battery' - , zh_tw: 'Uploader Battery' + , zh_tw: 'Current Raw BG' + , hu: 'Feltöltő töltöttsége' }, 'virtAsstTitleCurrentBG': { bg: 'Current BG' @@ -13596,6 +14166,7 @@ function init() { , tr: 'Current BG' , zh_cn: 'Current BG' , zh_tw: 'Current BG' + , hu: 'Jelenlegi Cukorszint' }, 'virtAsstTitleFullStatus': { bg: 'Full Status' @@ -13622,6 +14193,7 @@ function init() { , tr: 'Full Status' , zh_cn: 'Full Status' , zh_tw: 'Full Status' + , hu: 'Teljes Státusz' }, 'virtAsstTitleCGMMode': { bg: 'CGM Mode' @@ -13648,6 +14220,7 @@ function init() { , tr: 'CGM Mode' , zh_cn: 'CGM Mode' , zh_tw: 'CGM Mode' + , hu: 'CGM Mód' }, 'virtAsstTitleCGMStatus': { bg: 'CGM Status' @@ -13674,6 +14247,7 @@ function init() { , tr: 'CGM Status' , zh_cn: 'CGM Status' , zh_tw: 'CGM Status' + , hu: 'CGM Státusz' }, 'virtAsstTitleCGMSessionAge': { bg: 'CGM Session Age' @@ -13700,6 +14274,7 @@ function init() { , tr: 'CGM Session Age' , zh_cn: 'CGM Session Age' , zh_tw: 'CGM Session Age' + , hu: 'CGM életkora' }, 'virtAsstTitleCGMTxStatus': { bg: 'CGM Transmitter Status' @@ -13726,6 +14301,7 @@ function init() { , tr: 'CGM Transmitter Status' , zh_cn: 'CGM Transmitter Status' , zh_tw: 'CGM Transmitter Status' + , hu: 'CGM kapcsolat státusza' }, 'virtAsstTitleCGMTxAge': { bg: 'CGM Transmitter Age' @@ -13778,6 +14354,7 @@ function init() { , tr: 'CGM Noise' , zh_cn: 'CGM Noise' , zh_tw: 'CGM Noise' + , hu: 'CGM Zaj' }, 'virtAsstTitleDelta': { bg: 'Blood Glucose Delta' @@ -13804,6 +14381,7 @@ function init() { , tr: 'Blood Glucose Delta' , zh_cn: 'Blood Glucose Delta' , zh_tw: 'Blood Glucose Delta' + , hu: 'Csukoszint delta' }, 'virtAsstStatus': { bg: '%1 and %2 as of %3.' @@ -13830,6 +14408,7 @@ function init() { , tr: '%1 ve %2 e kadar %3.' , zh_cn: '%1 和 %2 到 %3.' , zh_tw: '%1 and %2 as of %3.' + , hu: '%1 es %2 %3-tól.' }, 'virtAsstBasal': { bg: '%1 současný bazál je %2 jednotek za hodinu' @@ -13856,6 +14435,7 @@ function init() { , tr: '%1 geçerli bazal oranı saatte %2 ünite' , zh_cn: '%1 当前基础率是 %2 U/小时' , zh_tw: '%1 current basal is %2 units per hour' + , hu: '%1 a jelenlegi bazál %2 egység óránként' }, 'virtAsstBasalTemp': { bg: '%1 dočasný bazál %2 jednotek za hodinu skončí %3' @@ -13882,6 +14462,7 @@ function init() { , tr: '%1 geçici bazal %2 ünite %3 sona eriyor' , zh_cn: '%1 临时基础率 %2 U/小时将会在 %3结束' , zh_tw: '%1 temp basal of %2 units per hour will end %3' + , hu: '%1 átmeneti bazál %2 egység óránként ami %3 -kor jár le' }, 'virtAsstIob': { bg: 'a máte %1 jednotek aktivního inzulínu.' @@ -13908,6 +14489,7 @@ function init() { , tr: 've Sizde %1 aktif insulin var' , zh_cn: '并且你有 %1 的活性胰岛素.' , zh_tw: 'and you have %1 insulin on board.' + , hu: 'és neked %1 inzulin van a testedben.' }, 'virtAsstIobIntent': { bg: 'Máte %1 jednotek aktivního inzulínu' @@ -13934,6 +14516,7 @@ function init() { , tr: 'Sizde %1 aktif insülin var' , zh_cn: '你有 %1 的活性胰岛素' , zh_tw: 'You have %1 insulin on board' + , hu: 'Neked %1 inzulin van a testedben' }, 'virtAsstIobUnits': { bg: '%1 units of' @@ -13960,6 +14543,7 @@ function init() { , tr: 'hala %1 birim' , zh_cn: '%1 单位' , zh_tw: '%1 units of' + , hu: '%1 egység' }, 'virtAsstLaunch': { bg: 'What would you like to check on Nightscout?' @@ -13986,6 +14570,7 @@ function init() { , tr: 'What would you like to check on Nightscout?' , zh_cn: 'What would you like to check on Nightscout?' , zh_tw: 'What would you like to check on Nightscout?' + , hu: 'Mit szeretnél ellenőrizni a Nightscout oldalon?' }, 'virtAsstPreamble': { bg: 'Your' @@ -14012,6 +14597,7 @@ function init() { , tr: 'Senin' , zh_cn: '你的' , zh_tw: 'Your' + , hu: 'A tied' }, 'virtAsstPreamble3person': { bg: '%1 has a ' @@ -14038,6 +14624,7 @@ function init() { , tr: '%1 bir tane var' , zh_cn: '%1 有一个 ' , zh_tw: '%1 has a ' + , hu: '%1 -nak van ' }, 'virtAsstNoInsulin': { bg: 'no' @@ -14064,6 +14651,7 @@ function init() { , tr: 'yok' , zh_cn: '否' , zh_tw: 'no' + , hu: 'semmilyen' }, 'virtAsstUploadBattery': { bg: 'Your uploader battery is at %1' @@ -14081,6 +14669,7 @@ function init() { , pl: 'Twoja bateria ma %1' , ru: 'батарея загрузчика %1' , tr: 'Yükleyici piliniz %1' + , hu: 'A felöltőd töltöttsége %1' }, 'virtAsstReservoir': { bg: 'You have %1 units remaining' @@ -14098,6 +14687,7 @@ function init() { , pl: 'W zbiorniku pozostało %1 jednostek' , ru: 'остается %1 ед' , tr: '%1 birim kaldı' + , hu: '%1 egység maradt hátra' }, 'virtAsstPumpBattery': { bg: 'Your pump battery is at %1 %2' @@ -14115,6 +14705,7 @@ function init() { , pl: 'Bateria pompy jest w %1 %2' , ru: 'батарея помпы %1 %2' , tr: 'Pompa piliniz %1 %2' + , hu: 'A pumpád töltöttsége %1 %2' }, 'virtAsstUploaderBattery': { bg: 'Your uploader battery is at %1' @@ -14132,6 +14723,7 @@ function init() { , pl: 'Your uploader battery is at %1' , ru: 'Батарея загрузчика %1' , tr: 'Your uploader battery is at %1' + , hu: 'A feltöltőd töltöttsége %1' }, 'virtAsstLastLoop': { bg: 'The last successful loop was %1' @@ -14149,6 +14741,7 @@ function init() { , pl: 'Ostatnia pomyślna pętla była %1' , ru: 'недавний успешный цикл был %1' , tr: 'Son başarılı döngü %1 oldu' + , hu: 'Az utolsó sikeres loop %1-kor volt' }, 'virtAsstLoopNotAvailable': { bg: 'Loop plugin does not seem to be enabled' @@ -14166,6 +14759,7 @@ function init() { , pl: 'Plugin Loop prawdopodobnie nie jest włączona' , ru: 'Расширение ЗЦ Loop не активировано' , tr: 'Döngü eklentisi etkin görünmüyor' + , hu: 'A loop kiegészítés valószínűleg nincs bekapcsolva' }, 'virtAsstLoopForecastAround': { bg: 'According to the loop forecast you are expected to be around %1 over the next %2' @@ -14183,6 +14777,7 @@ function init() { , pl: 'Zgodnie z prognozą pętli, glikemia around %1 będzie podczas następnego %2' , ru: 'по прогнозу алгоритма ЗЦ ожидается около %1 за последующие %2' , tr: 'Döngü tahminine göre sonraki %2 ye göre around %1 olması bekleniyor' + , hu: 'A loop előrejelzése alapján a követlező %2 időszakban körülbelül %1 lesz' }, 'virtAsstLoopForecastBetween': { bg: 'According to the loop forecast you are expected to be between %1 and %2 over the next %3' @@ -14200,6 +14795,7 @@ function init() { , pl: 'Zgodnie z prognozą pętli, glikemia between %1 and %2 będzie podczas następnego %3' , ru: 'по прогнозу алгоритма ЗЦ ожидается между %1 и %2 за последующие %3' , tr: 'Döngü tahminine göre sonraki %3 ye göre between %1 and %2 olması bekleniyor' + , hu: 'A loop előrejelzése alapján a követlező %3 időszakban %1 és %2 között leszel' }, 'virtAsstAR2ForecastAround': { bg: 'According to the AR2 forecast you are expected to be around %1 over the next %2' @@ -14217,6 +14813,7 @@ function init() { , pl: 'According to the AR2 forecast you are expected to be around %1 over the next %2' , ru: 'По прогнозу AR2 ожидается около %1 в следующие %2' , tr: 'According to the AR2 forecast you are expected to be around %1 over the next %2' + , hu: 'Az AR2ües előrejelzés alapján a követlező %2 időszakban körülbelül %1 lesz' }, 'virtAsstAR2ForecastBetween': { bg: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' @@ -14234,6 +14831,7 @@ function init() { , pl: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' , ru: 'По прогнозу AR2 ожидается между %1 и %2 в следующие %3' , tr: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' + , hu: 'Az AR2 előrejelzése alapján a követlező %3 időszakban %1 és %2 között leszel' }, 'virtAsstForecastUnavailable': { bg: 'Unable to forecast with the data that is available' @@ -14251,6 +14849,7 @@ function init() { , pl: 'Prognoza pętli nie jest możliwa, z dostępnymi danymi.' , ru: 'прогноз при таких данных невозможен' , tr: 'Mevcut verilerle tahmin edilemedi' + , hu: 'Nem tudok előrejelzést készíteni hiányos adatokból' }, 'virtAsstRawBG': { en: 'Your raw bg is %1' @@ -14268,6 +14867,7 @@ function init() { , pl: 'Glikemia RAW wynosi %1' , ru: 'ваши необработанные данные RAW %1' , tr: 'Ham kan şekeriniz %1' + , hu: 'A nyers cukorszinted %1' }, 'virtAsstOpenAPSForecast': { en: 'The OpenAPS Eventual BG is %1' @@ -14285,6 +14885,7 @@ function init() { , pl: 'Glikemia prognozowana przez OpenAPS wynosi %1' , ru: 'OpenAPS прогнозирует ваш СК как %1 ' , tr: 'OpenAPS tarafından tahmin edilen kan şekeri %1' + , hu: 'Az OpenAPS cukorszinted %1' }, 'virtAsstCob3person': { bg: '%1 has %2 carbohydrates on board' @@ -14311,6 +14912,7 @@ function init() { , tr: '%1 has %2 carbohydrates on board' , zh_cn: '%1 has %2 carbohydrates on board' , zh_tw: '%1 has %2 carbohydrates on board' + , hu: '%1 -nak %2 szénhodrátja van a testében' }, 'virtAsstCob': { bg: 'You have %1 carbohydrates on board' @@ -14337,6 +14939,7 @@ function init() { , tr: 'You have %1 carbohydrates on board' , zh_cn: 'You have %1 carbohydrates on board' , zh_tw: 'You have %1 carbohydrates on board' + , hu: 'Neked %1 szénhidrát van a testedben' }, 'virtAsstCGMMode': { bg: 'Your CGM mode was %1 as of %2.' @@ -14363,6 +14966,7 @@ function init() { , tr: 'Your CGM mode was %1 as of %2.' , zh_cn: 'Your CGM mode was %1 as of %2.' , zh_tw: 'Your CGM mode was %1 as of %2.' + , hu: 'A CGM módod %1 volt %2 -kor.' }, 'virtAsstCGMStatus': { bg: 'Your CGM status was %1 as of %2.' @@ -14389,6 +14993,7 @@ function init() { , tr: 'Your CGM status was %1 as of %2.' , zh_cn: 'Your CGM status was %1 as of %2.' , zh_tw: 'Your CGM status was %1 as of %2.' + , hu: 'A CGM státuszod %1 volt %2 -kor.' }, 'virtAsstCGMSessAge': { bg: 'Your CGM session has been active for %1 days and %2 hours.' @@ -14415,6 +15020,7 @@ function init() { , tr: 'Your CGM session has been active for %1 days and %2 hours.' , zh_cn: 'Your CGM session has been active for %1 days and %2 hours.' , zh_tw: 'Your CGM session has been active for %1 days and %2 hours.' + , hu: 'A CGM kapcsolatod %1 napja és %2 órája aktív' }, 'virtAsstCGMSessNotStarted': { bg: 'There is no active CGM session at the moment.' @@ -14441,6 +15047,7 @@ function init() { , tr: 'There is no active CGM session at the moment.' , zh_cn: 'There is no active CGM session at the moment.' , zh_tw: 'There is no active CGM session at the moment.' + , hu: 'Jelenleg nincs aktív CGM kapcsolatod' }, 'virtAsstCGMTxStatus': { bg: 'Your CGM transmitter status was %1 as of %2.' @@ -14467,6 +15074,7 @@ function init() { , tr: 'Your CGM transmitter status was %1 as of %2.' , zh_cn: 'Your CGM transmitter status was %1 as of %2.' , zh_tw: 'Your CGM transmitter status was %1 as of %2.' + , hu: 'A CGM jeladód státusza %1 volt %2-kor' }, 'virtAsstCGMTxAge': { bg: 'Your CGM transmitter is %1 days old.' @@ -14493,6 +15101,7 @@ function init() { , tr: 'Your CGM transmitter is %1 days old.' , zh_cn: 'Your CGM transmitter is %1 days old.' , zh_tw: 'Your CGM transmitter is %1 days old.' + , hu: 'A CGM jeladód %1 napos.' }, 'virtAsstCGMNoise': { bg: 'Your CGM noise was %1 as of %2.' @@ -14519,6 +15128,7 @@ function init() { , tr: 'Your CGM noise was %1 as of %2.' , zh_cn: 'Your CGM noise was %1 as of %2.' , zh_tw: 'Your CGM noise was %1 as of %2.' + , hu: 'A CGM jeladó zaja %1 volt %2-kor' }, 'virtAsstCGMBattOne': { bg: 'Your CGM battery was %1 volts as of %2.' @@ -14545,6 +15155,7 @@ function init() { , tr: 'Your CGM battery was %1 volts as of %2.' , zh_cn: 'Your CGM battery was %1 volts as of %2.' , zh_tw: 'Your CGM battery was %1 volts as of %2.' + , hu: 'A CGM töltöttsége %1 VOLT volt %2-kor' }, 'virtAsstCGMBattTwo': { bg: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' @@ -14571,6 +15182,7 @@ function init() { , tr: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' , zh_cn: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' , zh_tw: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' + , hu: 'A CGM töltöttsége %1 és %2 VOLT volt %3-kor' }, 'virtAsstDelta': { bg: 'Your delta was %1 between %2 and %3.' @@ -14597,6 +15209,7 @@ function init() { , tr: 'Your delta was %1 between %2 and %3.' , zh_cn: 'Your delta was %1 between %2 and %3.' , zh_tw: 'Your delta was %1 between %2 and %3.' + , hu: 'A deltád %1 volt %2 és %3 között' }, 'virtAsstUnknownIntentTitle': { en: 'Unknown Intent' @@ -14613,7 +15226,7 @@ function init() { , hr: 'Unknown Intent' , pl: 'Unknown Intent' , ru: 'Неизвестное намерение' - , tr: 'Unknown Intent' + , tr: 'Ismeretlen szándék' }, 'virtAsstUnknownIntentText': { en: 'I\'m sorry, I don\'t know what you\'re asking for.' @@ -14631,6 +15244,7 @@ function init() { , pl: 'I\'m sorry, I don\'t know what you\'re asking for.' , ru: 'Ваш запрос непонятен' , tr: 'I\'m sorry, I don\'t know what you\'re asking for.' + , hu: 'Sajnálom, nem tudom mit szeretnél tőlem.' }, 'Fat [g]': { cs: 'Tuk [g]' @@ -14651,6 +15265,7 @@ function init() { ,pl: 'Tłuszcz [g]' ,tr: 'Yağ [g]' ,he: '[g] שמן' + ,hu: 'Zsír [g]' }, 'Protein [g]': { cs: 'Proteiny [g]' @@ -14671,6 +15286,7 @@ function init() { ,pl: 'Białko [g]' ,tr: 'Protein [g]' ,he: '[g] חלבון' + ,hu: 'Protein [g]' }, 'Energy [kJ]': { cs: 'Energie [kJ]' @@ -14691,6 +15307,7 @@ function init() { ,pl: 'Energia [kJ}' ,tr: 'Enerji [kJ]' ,he: '[kJ] אנרגיה' + ,hu: 'Energia [kJ]' }, 'Clock Views:': { cs: 'Hodiny:' @@ -14711,6 +15328,7 @@ function init() { ,pl: 'Widoki zegarów' ,tr: 'Saat Görünümü' ,he: 'צגים השעון' + ,hu: 'Óra:' }, 'Clock': { cs: 'Hodiny' @@ -14730,6 +15348,7 @@ function init() { ,ru: 'часы' ,tr: 'Saat' ,he: 'שעון' + ,hu: 'Óra:' }, 'Color': { cs: 'Barva' @@ -14749,6 +15368,7 @@ function init() { ,ru: 'цвет' ,tr: 'Renk' ,he: 'צבע' + ,hu: 'Szinek' }, 'Simple': { cs: 'Jednoduchý' @@ -14768,6 +15388,7 @@ function init() { ,ru: 'простой' ,tr: 'Basit' ,he: 'פשוט' + ,hu: 'Csak cukor' }, 'TDD average': { cs: 'Průměrná denní dávka' @@ -14785,6 +15406,7 @@ function init() { , pl: 'Średnia dawka dzienna' , ru: 'средняя суточная доза инсулина' , tr: 'Ortalama günlük Toplam Doz (TDD)' + , hu: 'Átlagos napi adag (TDD)' }, 'Carbs average': { cs: 'Průměrné množství sacharidů' @@ -14802,7 +15424,8 @@ function init() { , pl: 'Średnia ilość węglowodanów' , ru: 'среднее кол-во углеводов за сутки' , tr: 'Günde ortalama karbonhidrat' - ,he: 'פחמימות ממוצע' + , he: 'פחמימות ממוצע' + , hu: 'Szenhidrát átlag' }, 'Eating Soon': { cs: 'Blížící se jídlo' @@ -14821,6 +15444,7 @@ function init() { , ru: 'Ожидаемый прием пищи' , tr: 'Yakında Yenecek' , he: 'אוכל בקרוב' + , hu: 'Hamarosan evés' }, 'Last entry {0} minutes ago': { cs: 'Poslední hodnota {0} minut zpět' @@ -14838,6 +15462,7 @@ function init() { , pl: 'Ostatni wpis przed {0} minutami' , ru: 'предыдущая запись {0} минут назад' , tr: 'Son giriş {0} dakika önce' + , hu: 'Utolsó bejegyzés {0} volt' }, 'change': { cs: 'změna' @@ -14856,6 +15481,7 @@ function init() { , ru: 'замена' , tr: 'değişiklik' , he: 'שינוי' + , hu: 'változás' }, 'Speech': { cs: 'Hlas' @@ -14874,6 +15500,7 @@ function init() { , ru: 'речь' , tr: 'Konuş' , he: 'דיבור' + , hu: 'Beszéd' }, 'Target Top': { cs: 'Horní cíl' @@ -14892,6 +15519,7 @@ function init() { , de: 'Oberes Ziel' , tr: 'Hedef Üst' , he: 'ראש היעד' + , hu: 'Felsó cél' }, 'Target Bottom': { cs: 'Dolní cíl' @@ -14910,6 +15538,7 @@ function init() { , de: 'Unteres Ziel' , tr: 'Hedef Alt' , he: 'תחתית היעד' + , hu: 'Alsó cél' }, 'Canceled': { cs: 'Zrušený' @@ -14928,6 +15557,7 @@ function init() { , de: 'Abgebrochen' , tr: 'İptal edildi' , he: 'מבוטל' + , hu: 'Megszüntetett' }, 'Meter BG': { cs: 'Hodnota z glukoměru' @@ -14946,6 +15576,7 @@ function init() { , de: 'Wert Blutzuckermessgerät' , tr: 'Glikometre KŞ' , he: 'סוכר הדם של מד' + , hu: 'Cukorszint a mérőből' }, 'predicted': { cs: 'přepověď' @@ -14964,6 +15595,7 @@ function init() { , de: 'vorhergesagt' , tr: 'tahmin' , he: 'חזה' + , hu: 'előrejelzés' }, 'future': { cs: 'budoucnost' @@ -14982,6 +15614,7 @@ function init() { , de: 'Zukunft' , tr: 'gelecek' , he: 'עתיד' + , hu: 'jövő' }, 'ago': { cs: 'zpět' @@ -14999,6 +15632,7 @@ function init() { , de: 'vor' , tr: 'önce' , he: 'לפני' + , hu: 'ezelött' }, 'Last data received': { cs: 'Poslední data přiajata' @@ -15017,6 +15651,7 @@ function init() { , de: 'Zuletzt Daten empfangen' , tr: 'Son veri alındı' , he: 'הנתונים המקבל אחרונים' + , hu: 'Utólsó adatok fogadva' }, 'Clock View': { cs: 'Hodiny' @@ -15037,6 +15672,7 @@ function init() { ,pl: 'Widok zegara' ,tr: 'Saat Görünümü' ,he: 'צג השעון' + ,hu: 'Idő' }, 'Protein': { fi: 'Proteiini' @@ -15047,6 +15683,7 @@ function init() { ,ru: 'Белки' ,he: 'חלבון' ,nl: 'Eiwit' + ,hu: 'Protein' }, 'Fat': { fi: 'Rasva' @@ -15057,6 +15694,7 @@ function init() { ,ru: 'Жиры' ,he: 'שמן' ,nl: 'Vet' + ,hu: 'Zsír' }, 'Protein average': { fi: 'Proteiini keskiarvo' @@ -15067,6 +15705,7 @@ function init() { ,ru: 'Средний белок' ,he: 'חלבון ממוצע' ,nl: 'eiwitgemiddelde' + ,hu: 'Protein átlag' }, 'Fat average': { fi: 'Rasva keskiarvo' @@ -15077,6 +15716,7 @@ function init() { ,ru: 'Средний жир' ,he: 'שמן ממוצע' ,nl: 'Vetgemiddelde' + ,hu: 'Zsír átlag' }, 'Total carbs': { fi: 'Hiilihydraatit yhteensä' @@ -15087,6 +15727,7 @@ function init() { ,ru: 'Всего углеводов' ,he: 'כל פחמימות' ,nl: 'Totaal koolhydraten' + ,hu: 'Összes szénhidrát' }, 'Total protein': { fi: 'Proteiini yhteensä' @@ -15097,6 +15738,7 @@ function init() { ,ru: 'Всего белков' ,he: 'כל חלבונים' ,nl: 'Totaal eiwitten' + ,hu: 'Összes protein' }, 'Total fat': { fi: 'Rasva yhteensä' @@ -15107,40 +15749,49 @@ function init() { ,ru: 'Всего жиров' ,he: 'כל שומנים' ,nl: 'Totaal vetten' + ,hu: 'Összes zsír' }, 'Database Size': { pl: 'Rozmiar Bazy Danych' ,nl: 'Grootte database' + ,hu: 'Adatbázis mérete' }, 'Database Size near its limits!': { pl: 'Rozmiar bazy danych zbliża się do limitu!' ,nl: 'Database grootte nadert limiet!' + ,hu: 'Az adatbázis majdnem megtelt!' }, 'Database size is %1 MiB out of %2 MiB. Please backup and clean up database!': { pl: 'Baza danych zajmuje %1 MiB z dozwolonych %2 MiB. Proszę zrób kopię zapasową i oczyść bazę danych!' ,nl: 'Database grootte is %1 MiB van de %2 MiB. Maak een backup en verwijder oude data' + ,hu: 'Az adatbázis mérete %1 MiB a rendelkezésre álló %2 MiB-ból. Készítsen biztonsági másolatot!' }, 'Database file size': { pl: 'Rozmiar pliku bazy danych' ,nl: 'Database bestandsgrootte' + ,hu: 'Adatbázis file mérete' }, '%1 MiB of %2 MiB (%3%)': { pl: '%1 MiB z %2 MiB (%3%)' ,nl: '%1 MiB van de %2 MiB (%3%)' + ,hu: '%1 MiB %2 MiB-ból (%3%)' }, 'Data size': { pl: 'Rozmiar danych' ,nl: 'Datagrootte' + ,hu: 'Adatok mérete' }, 'virtAsstDatabaseSize': { en: '%1 MiB. That is %2% of available database space.' ,pl: '%1 MiB co stanowi %2% przestrzeni dostępnej dla bazy danych' ,nl: '%1 MiB dat is %2% van de beschikbaare database ruimte' + ,hu: '%1 MiB ami %2% a rendelkezésre álló méretből' }, 'virtAsstTitleDatabaseSize': { en: 'Database file size' ,pl: 'Rozmiar pliku bazy danych' ,nl: 'Database bestandsgrootte' + ,hu: 'Adatbázis file méret' } }; From 6a84be1fc0b488542ccbbbb6c083fd4f0d4ca6c1 Mon Sep 17 00:00:00 2001 From: bjornoleh <63544115+bjornoleh@users.noreply.github.com> Date: Wed, 11 Nov 2020 16:06:36 +0100 Subject: [PATCH 008/194] Update language.js (#6193) Isfjell -> Istapp Co-authored-by: Sulka Haro --- lib/language.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/language.js b/lib/language.js index 989cc441a9c..ca66f6a8f24 100644 --- a/lib/language.js +++ b/lib/language.js @@ -9228,7 +9228,7 @@ function init() { ,es: 'Inverso' ,ro: 'Țurțure' ,sv: 'Istapp' - ,nb: 'Isfjell' + ,nb: 'Istapp' ,fi: 'Jääpuikko' ,bg: 'Висящ' ,hr: 'Padajuće' From 60424d38b089f9393f556690d6ed1f9586d6e65e Mon Sep 17 00:00:00 2001 From: Matt Gaide Date: Wed, 11 Nov 2020 07:12:47 -0800 Subject: [PATCH 009/194] #5991 Typo in translation (#6217) Co-authored-by: Sulka Haro --- lib/language.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/language.js b/lib/language.js index ca66f6a8f24..a0196a9db86 100644 --- a/lib/language.js +++ b/lib/language.js @@ -953,7 +953,7 @@ function init() { ,zh_cn: '记录包括' ,hu: 'Jegyzet tartalmazza' } - ,'Target bg range bottom' : { + ,'Target BG range bottom' : { cs: 'Cílová glykémie spodní' ,de: 'Vorgabe unteres BG-Ziel' ,es: 'Objetivo inferior de glucemia' From 92ac5968714127ad14b70596ec33e28520d9165c Mon Sep 17 00:00:00 2001 From: Lukas Herzog Date: Wed, 11 Nov 2020 18:20:52 +0100 Subject: [PATCH 010/194] add missing translations (#6346) Co-authored-by: Sulka Haro --- lib/language.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/language.js b/lib/language.js index a0196a9db86..5246208ff1c 100644 --- a/lib/language.js +++ b/lib/language.js @@ -3148,12 +3148,14 @@ function init() { fi: 'API salaisuus tai avain' ,pl: 'Twój hash API lub token' ,ru: 'Ваш пароль API или код доступа ' + ,de: 'Deine API-Prüfsumme oder Token' ,hu: 'Az API jelszo' } ,'Remember this device. (Do not enable this on public computers.)' : { fi: 'Muista tämä laite (Älä valitse julkisilla tietokoneilla)' , pl: 'Zapamiętaj to urządzenie (Nie używaj tej opcji korzystając z publicznych komputerów.)' ,ru: 'Запомнить это устройство (Не применяйте в общем доступе)' + ,de: 'An dieses Gerät erinnern. (Nicht auf öffentlichen Geräten verwenden)' ,hu: 'A berendezés megjegyzése. (Csak saját berendezésen használd' } ,'Treatments' : { @@ -15754,43 +15756,51 @@ function init() { 'Database Size': { pl: 'Rozmiar Bazy Danych' ,nl: 'Grootte database' + ,de: 'Datenbankgröße' ,hu: 'Adatbázis mérete' }, 'Database Size near its limits!': { pl: 'Rozmiar bazy danych zbliża się do limitu!' ,nl: 'Database grootte nadert limiet!' + ,de: 'Datenbank fast voll!' ,hu: 'Az adatbázis majdnem megtelt!' }, 'Database size is %1 MiB out of %2 MiB. Please backup and clean up database!': { pl: 'Baza danych zajmuje %1 MiB z dozwolonych %2 MiB. Proszę zrób kopię zapasową i oczyść bazę danych!' ,nl: 'Database grootte is %1 MiB van de %2 MiB. Maak een backup en verwijder oude data' + ,de: 'Die Datenbankgröße beträgt %1 MiB von %2 MiB. Bitte sichere deine Daten und bereinige die Datenbank!' ,hu: 'Az adatbázis mérete %1 MiB a rendelkezésre álló %2 MiB-ból. Készítsen biztonsági másolatot!' }, 'Database file size': { pl: 'Rozmiar pliku bazy danych' ,nl: 'Database bestandsgrootte' + ,de: 'Datenbank-Dateigröße' ,hu: 'Adatbázis file mérete' }, '%1 MiB of %2 MiB (%3%)': { pl: '%1 MiB z %2 MiB (%3%)' ,nl: '%1 MiB van de %2 MiB (%3%)' + ,de: '%1 MiB von %2 MiB (%3%)' ,hu: '%1 MiB %2 MiB-ból (%3%)' }, 'Data size': { pl: 'Rozmiar danych' ,nl: 'Datagrootte' + ,de: 'Datengröße' ,hu: 'Adatok mérete' }, 'virtAsstDatabaseSize': { en: '%1 MiB. That is %2% of available database space.' ,pl: '%1 MiB co stanowi %2% przestrzeni dostępnej dla bazy danych' ,nl: '%1 MiB dat is %2% van de beschikbaare database ruimte' + ,de: '%1 MiB. Das sind %2% des verfügbaren Datenbank-Speicherplatzes.' ,hu: '%1 MiB ami %2% a rendelkezésre álló méretből' }, 'virtAsstTitleDatabaseSize': { en: 'Database file size' ,pl: 'Rozmiar pliku bazy danych' ,nl: 'Database bestandsgrootte' + ,de: 'Datenbank-Dateigröße' ,hu: 'Adatbázis file méret' } }; From ead1370490865501c8471ca78c4a08b4a0c6a773 Mon Sep 17 00:00:00 2001 From: Caleb Date: Thu, 12 Nov 2020 00:11:12 -0700 Subject: [PATCH 011/194] Updated Alexa's intents because Amazon required new ones yet again. (#6457) --- docs/plugins/alexa-templates/en-us.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/plugins/alexa-templates/en-us.json b/docs/plugins/alexa-templates/en-us.json index e890172dcba..20bf8c290d1 100644 --- a/docs/plugins/alexa-templates/en-us.json +++ b/docs/plugins/alexa-templates/en-us.json @@ -68,6 +68,14 @@ { "name": "AMAZON.StopIntent", "samples": [] + }, + { + "name": "AMAZON.CancelIntent", + "samples": [] + }, + { + "name": "AMAZON.HelpIntent", + "samples": [] } ], "types": [ From 376c790710999844040c69c587b795da48dedbd4 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sat, 14 Nov 2020 11:05:43 +0200 Subject: [PATCH 012/194] Add runtime state tracking to Nightscout, where client now checks if the server has loaded initial data from Mongo before the user is directed to the UI --- lib/api/status.js | 1 + lib/client/index.js | 6 ++++++ lib/plugins/ar2.js | 2 -- lib/plugins/index.js | 1 + lib/sandbox.js | 1 + lib/server/bootevent.js | 11 +++++++++++ lib/settings.js | 2 +- 7 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/api/status.js b/lib/api/status.js index b630d629593..56196114a07 100644 --- a/lib/api/status.js +++ b/lib/api/status.js @@ -32,6 +32,7 @@ function configure (app, wares, env, ctx) { , settings: settings , extendedSettings: extended , authorized: ctx.authorization.authorize(authToken) + , runtimeState: ctx.runtimeState }; var badge = 'http://img.shields.io/badge/Nightscout-OK-green'; diff --git a/lib/client/index.js b/lib/client/index.js index c329c5cec0b..aeb40642e2d 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -62,6 +62,12 @@ client.init = function init (callback) { , url: src , headers: client.headers() }).done(function success (serverSettings) { + if (serverSettings.runtimeState !== 'loaded') { + console.log('Server is still loading data'); + $('#loadingMessageText').html('Server is loading data, retrying load in 2 seconds'); + window.setTimeout(window.Nightscout.client.init(), 2000); + return; + } client.settingsFailed = false; console.log('Application appears to be online'); $('#centerMessagePanel').hide(); diff --git a/lib/plugins/ar2.js b/lib/plugins/ar2.js index 7a5d5e5dcfa..5232feb0245 100644 --- a/lib/plugins/ar2.js +++ b/lib/plugins/ar2.js @@ -67,8 +67,6 @@ function init (ctx) { var prop = sbx.properties.ar2; - console.log('ar2', prop); - if (prop && prop.level) { const notify = { level: prop.level diff --git a/lib/plugins/index.js b/lib/plugins/index.js index 77a87bcd94d..d6bae73bdbc 100644 --- a/lib/plugins/index.js +++ b/lib/plugins/index.js @@ -75,6 +75,7 @@ function init (ctx) { , require('./timeago')(ctx) , require('./basalprofile')(ctx) , require('./dbsize')(ctx) + , require('./runtimestate')(ctx) ]; plugins.registerServerDefaults = function registerServerDefaults () { diff --git a/lib/sandbox.js b/lib/sandbox.js index 4bcee3b40e4..6805bee6982 100644 --- a/lib/sandbox.js +++ b/lib/sandbox.js @@ -45,6 +45,7 @@ function init () { reset(); sbx.runtimeEnvironment = 'server'; + sbx.runtimeState = ctx.runtimeState; sbx.time = Date.now(); sbx.settings = env.settings; sbx.data = ctx.ddata.clone(); diff --git a/lib/server/bootevent.js b/lib/server/bootevent.js index 4ee45e054d5..2c75fad59c3 100644 --- a/lib/server/bootevent.js +++ b/lib/server/bootevent.js @@ -6,6 +6,11 @@ var UPDATE_THROTTLE = 5000; function boot (env, language) { + function startBoot(ctx, next) { + ctx.runtimeState = 'booting'; + next(); + } + ////////////////////////////////////////////////// // Check Node version. // Latest Node 8 LTS and Latest Node 10 LTS are recommended and supported. @@ -255,6 +260,10 @@ function boot (env, language) { ctx.bus.emit('data-processed'); }); + ctx.bus.on('data-processed', function processed ( ) { + ctx.runtimeState = 'loaded'; + }); + ctx.bus.on('notification', ctx.pushnotify.emitNotification); next( ); @@ -289,12 +298,14 @@ function boot (env, language) { return next(); } + ctx.runtimeState = 'booted'; ctx.bus.uptime( ); next( ); } return require('bootevent')( ) + .acquire(startBoot) .acquire(checkNodeVersion) .acquire(checkEnv) .acquire(augmentSettings) diff --git a/lib/settings.js b/lib/settings.js index 845cea07628..9a02d75f647 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -167,7 +167,7 @@ function init () { } //TODO: getting sent in status.json, shouldn't be - settings.DEFAULT_FEATURES = ['bgnow', 'delta', 'direction', 'timeago', 'devicestatus', 'upbat', 'errorcodes', 'profile', 'dbsize']; + settings.DEFAULT_FEATURES = ['bgnow', 'delta', 'direction', 'timeago', 'devicestatus', 'upbat', 'errorcodes', 'profile', 'dbsize', 'runtimestate']; var wasSet = []; From 978f20553f5d477162ad406323e8254dd1065c29 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sat, 14 Nov 2020 11:06:32 +0200 Subject: [PATCH 013/194] Add file missing from previous commit --- lib/plugins/runtimestate.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lib/plugins/runtimestate.js diff --git a/lib/plugins/runtimestate.js b/lib/plugins/runtimestate.js new file mode 100644 index 00000000000..0447da0cc00 --- /dev/null +++ b/lib/plugins/runtimestate.js @@ -0,0 +1,23 @@ +'use strict'; + +function init() { + + var runtime = { + name: 'runtimestate' + , label: 'Runtime state' + , pluginType: 'fake' + }; + + runtime.setProperties = function setProperties(sbx) { + sbx.offerProperty('runtimestate', function setProp ( ) { + return { + state: sbx.runtimeState + }; + }); + }; + + return runtime; + +} + +module.exports = init; \ No newline at end of file From 5f59c1d48e2cf6b993cca31ede0e076102460ad7 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sat, 14 Nov 2020 12:00:04 +0200 Subject: [PATCH 014/194] Update app.json --- app.json | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/app.json b/app.json index 717e783dea3..9f77094f565 100644 --- a/app.json +++ b/app.json @@ -2,6 +2,11 @@ "name": "CGM Remote Monitor", "repository": "https://github.com/nightscout/cgm-remote-monitor", "env": { + "MONGODB_URI": { + "description": "The MongoDB Connection String to connect to your MongoDB cluster. If you don't have this from MongoDB Atlas, please re-read installation instructions at http://nightscout.github.io/nightscout/new_user/ before continuing", + "value": "", + "required": true + }, "ALARM_HIGH": { "description": "Default setting for new browser views, for the High alarm (triggered when BG crosses BG_TARGET_TOP). ('on' or 'off')", "value": "on", @@ -122,16 +127,6 @@ "value": "US", "required": false }, - "MONGODB_URI": { - "description": "The MongoDB Connection String to connect to your MongoDB cluster", - "value": "", - "required": true - }, - "MONGO_COLLECTION": { - "description": "The Mongo collection where CGM data is stored.", - "value": "entries", - "required": true - }, "NIGHT_MODE": { "description": "Default setting for new browser views, for whether Night Mode should be enabled. ('on' or 'off')", "value": "off", From 384de77714eb46e75fc09276de47fdf9b9433d6f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sat, 14 Nov 2020 14:48:10 +0200 Subject: [PATCH 015/194] Fix unit tests --- tests/fixtures/default-server-settings.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/fixtures/default-server-settings.js b/tests/fixtures/default-server-settings.js index 113a5fa4aeb..ac3d31d25a0 100644 --- a/tests/fixtures/default-server-settings.js +++ b/tests/fixtures/default-server-settings.js @@ -33,4 +33,5 @@ module.exports = { } , extendedSettings: { } } + , runtimeState: 'loaded' }; \ No newline at end of file From d7f472aad635a0e501f2e6d5167fb0cf43bd471b Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sat, 14 Nov 2020 16:00:41 +0200 Subject: [PATCH 016/194] Fix the read detection to work correctly with MongoDB Atlas --- lib/server/booterror.js | 2 +- lib/server/bootevent.js | 4 ++-- lib/storage/mongo-storage.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/server/booterror.js b/lib/server/booterror.js index d8735e94451..92de6cbc81b 100644 --- a/lib/server/booterror.js +++ b/lib/server/booterror.js @@ -26,7 +26,7 @@ function bootError(env, ctx) { } else { message = JSON.stringify(_.pick(obj.err, Object.getOwnPropertyNames(obj.err))); } - return '
' + obj.desc + '
' + message.replace(/\\n/g, '
') + '
'; + return '
' + obj.desc + '
' + message.replace(/\\n/g, '
') + '
'; }).join(' '); res.render('error.html', { diff --git a/lib/server/bootevent.js b/lib/server/bootevent.js index 2c75fad59c3..ff4e9110f00 100644 --- a/lib/server/bootevent.js +++ b/lib/server/bootevent.js @@ -133,7 +133,7 @@ function boot (env, language) { if (err) { console.info('ERROR CONNECTING TO MONGO', err); ctx.bootErrors = ctx.bootErrors || [ ]; - ctx.bootErrors.push({'desc': 'Unable to connect to Mongo', err: err}); + ctx.bootErrors.push({'desc': 'Unable to connect to Mongo', err: err.message}); } console.log('Mongo Storage system ready'); ctx.store = store; @@ -143,7 +143,7 @@ function boot (env, language) { } catch (err) { console.info('ERROR CONNECTING TO MONGO', err); ctx.bootErrors = ctx.bootErrors || [ ]; - ctx.bootErrors.push({'desc': 'Unable to connect to Mongo', err: err}); + ctx.bootErrors.push({'desc': 'Unable to connect to Mongo', err: err.message}); next(); } } diff --git a/lib/storage/mongo-storage.js b/lib/storage/mongo-storage.js index 28dea49ac75..8c2533873c7 100644 --- a/lib/storage/mongo-storage.js +++ b/lib/storage/mongo-storage.js @@ -47,7 +47,7 @@ function init (env, cb, forceNewConnection) { mongo.db.command({ connectionStatus: 1 }).then( result => { const roles = result.authInfo.authenticatedUserRoles; - if (roles.lenght > 0 && roles[0].role == 'read') { + if (roles.length > 0 && roles[0].role == 'readAnyDatabase') { console.error('Mongo user is read only'); cb(new Error('MongoDB connection is in read only mode! Go back to MongoDB configuration and check your database user has read and write access.'), null); } From a9692d19b7dbe63d81a0d92709e0834b3d71bc54 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 15 Nov 2020 10:30:29 +0200 Subject: [PATCH 017/194] * Added basal and careportal to default plugins * Changed report BG target to allow fractional numbers --- lib/settings.js | 2 +- views/reportindex.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/settings.js b/lib/settings.js index 9a02d75f647..98a53b93a83 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -167,7 +167,7 @@ function init () { } //TODO: getting sent in status.json, shouldn't be - settings.DEFAULT_FEATURES = ['bgnow', 'delta', 'direction', 'timeago', 'devicestatus', 'upbat', 'errorcodes', 'profile', 'dbsize', 'runtimestate']; + settings.DEFAULT_FEATURES = ['bgnow', 'delta', 'direction', 'timeago', 'devicestatus', 'upbat', 'errorcodes', 'profile', 'dbsize', 'runtimestate', 'basal', 'careportal']; var wasSet = []; diff --git a/views/reportindex.html b/views/reportindex.html index 8d02bf08f58..ea1284b6cd4 100644 --- a/views/reportindex.html +++ b/views/reportindex.html @@ -94,9 +94,9 @@ Target BG range bottom: - + top: - + From e7d080adf8d9c34499ed7a5cbcbab37e12dead78 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 15 Nov 2020 10:46:35 +0200 Subject: [PATCH 018/194] Increase load interval to 5 seconds --- lib/client/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/client/index.js b/lib/client/index.js index aeb40642e2d..53515e3b943 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -64,8 +64,8 @@ client.init = function init (callback) { }).done(function success (serverSettings) { if (serverSettings.runtimeState !== 'loaded') { console.log('Server is still loading data'); - $('#loadingMessageText').html('Server is loading data, retrying load in 2 seconds'); - window.setTimeout(window.Nightscout.client.init(), 2000); + $('#loadingMessageText').html('Server is starting and still loading data, retrying load in 5 seconds'); + window.setTimeout(window.Nightscout.client.init(), 5000); return; } client.settingsFailed = false; @@ -77,8 +77,8 @@ client.init = function init (callback) { // check if we couldn't reach the server at all, show offline message if (!jqXHR.readyState) { console.log('Application appears to be OFFLINE'); - $('#loadingMessageText').html('Connecting to Nightscout server failed, retrying every 2 seconds'); - window.setTimeout(window.Nightscout.client.init(), 2000); + $('#loadingMessageText').html('Connecting to Nightscout server failed, retrying every 5 seconds'); + window.setTimeout(window.Nightscout.client.init(), 5000); return; } From cb14de0514d4531950adb6ef1bf19239fa5095dd Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 15 Nov 2020 11:29:01 +0200 Subject: [PATCH 019/194] Bump version to 14.0.8 --- npm-shrinkwrap.json | 2 +- package.json | 2 +- swagger.json | 2 +- swagger.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index a137dcd1533..7e931e6c718 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "nightscout", - "version": "14.0.7", + "version": "14.0.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index bbc6f063262..9988c2f9f8e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nightscout", - "version": "14.0.7", + "version": "14.0.8", "description": "Nightscout acts as a web-based CGM (Continuous Glucose Montinor) to allow multiple caregivers to remotely view a patients glucose data in realtime.", "license": "AGPL-3.0", "author": "Nightscout Team", diff --git a/swagger.json b/swagger.json index d4f9cbde296..2535b401c64 100755 --- a/swagger.json +++ b/swagger.json @@ -8,7 +8,7 @@ "info": { "title": "Nightscout API", "description": "Own your DData with the Nightscout API", - "version": "14.0.7", + "version": "14.0.8", "license": { "name": "AGPL 3", "url": "https://www.gnu.org/licenses/agpl.txt" diff --git a/swagger.yaml b/swagger.yaml index 98d89401be6..9c6d360c6c6 100755 --- a/swagger.yaml +++ b/swagger.yaml @@ -4,7 +4,7 @@ servers: info: title: Nightscout API description: Own your DData with the Nightscout API - version: 14.0.7 + version: 14.0.8 license: name: AGPL 3 url: 'https://www.gnu.org/licenses/agpl.txt' From 695e98b4279f5f06dbe6654c0305a9ac83e4b584 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 15 Nov 2020 13:23:03 +0200 Subject: [PATCH 020/194] Create codeql-analysis.yml --- .github/workflows/codeql-analysis.yml | 68 +++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 00000000000..ab1a7b17096 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,68 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# ******** NOTE ******** + +name: "CodeQL" + +on: + push: + branches: [ dev ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ master ] + schedule: + - cron: '43 23 * * 3' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [ 'javascript' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 From c9156bd2309765828d92d1c5be64c8189036a9c2 Mon Sep 17 00:00:00 2001 From: bjornoleh <63544115+bjornoleh@users.noreply.github.com> Date: Tue, 17 Nov 2020 11:03:21 +0100 Subject: [PATCH 021/194] Revised Norwegian (nb) translations (#6525) * Revised translation (nb) Revised translation after a first pass through the Norwegian (nb) translation. * Added missing translations in Day to day report Missing translation of 'Bolus average , 'Basal average' and 'Base basal average' from daytoday.js * Translate (nb) missing translations in Day to day report * Minor changes Day to day report * Missing translation from glucosedistributon.js of 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.') * Translate (nb) Out of range RMS.... 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' * Translate (nb) Reports: Percentile Chart * Reports - Treatments: Added missing translation of 'Carbs/Food/Time' from cgm-remote-monitor\lib\report_plugins\treatments.js * Transkate (nb) Carbs/Food/Time * Nitpicking --- lib/language.js | 332 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 258 insertions(+), 74 deletions(-) diff --git a/lib/language.js b/lib/language.js index 5246208ff1c..633d7d7edb0 100644 --- a/lib/language.js +++ b/lib/language.js @@ -526,7 +526,7 @@ function init() { ,ja: '今日' ,dk: 'I dag' ,fi: 'Tänään' - ,nb: 'Idag' + ,nb: 'I dag' ,he: 'היום' ,pl: 'Dziś' ,ru: 'Сегодня' @@ -708,7 +708,7 @@ function init() { ,ja: 'between' ,dk: 'between' ,fi: 'between' - ,nb: 'between' + ,nb: 'mellom' ,he: 'between' ,pl: 'between' ,ru: 'между' @@ -734,7 +734,7 @@ function init() { ,ja: 'around' ,dk: 'around' ,fi: 'around' - ,nb: 'around' + ,nb: 'rundt' ,he: 'around' ,pl: 'around' ,ru: 'около' @@ -760,7 +760,7 @@ function init() { ,ja: 'and' ,dk: 'and' ,fi: 'and' - ,nb: 'and' + ,nb: 'og' ,he: 'and' ,pl: 'and' ,ru: 'и' @@ -1359,7 +1359,7 @@ function init() { ,ja: 'データなし' ,dk: 'Ingen' ,fi: 'tyhjä' - ,nb: 'ingen' + ,nb: 'Ingen' ,he: 'ללא' ,pl: 'brak' ,ru: 'Нет' @@ -1463,7 +1463,7 @@ function init() { ,it: 'Week to week' ,dk: 'Week to week' ,fi: 'Week to week' - ,nb: 'Week to week' + ,nb: 'Uke for uke' ,he: 'Week to week' ,pl: 'Tydzień po tygodniu' ,ru: 'По неделям' @@ -1514,7 +1514,7 @@ function init() { ,ja: 'パーセント図' ,dk: 'Procentgraf' ,fi: 'Suhteellinen kuvaaja' - ,nb: 'Prosentgraf' + ,nb: 'Persentildiagram' ,he: 'טבלת עשירונים' ,pl: 'Wykres percentyl' ,ru: 'Процентильная диаграмма' @@ -1584,6 +1584,7 @@ function init() { ,he: 'netIOB סטטיסטיקת' ,de: 'netIOB Statistiken' ,fi: 'netIOB tilasto' + ,nb: 'netIOB statistikk' ,bg: 'netIOB татистика' ,hr: 'netIOB statistika' , pl: 'Statystyki netIOP' @@ -1596,6 +1597,7 @@ function init() { ,sv: 'temp basal måste vara synlig för denna rapport' ,de: 'temporäre Basalraten müssen für diesen Report sichtbar sein' ,fi: 'tämä raportti vaatii, että basaalien piirto on päällä' + ,nb: 'midlertidig basal må være synlig for å vise denne rapporten' ,bg: 'временните базали трябва да са показани за да се покаже тази това' ,hr: 'temp bazali moraju biti prikazani kako bi se vidio ovaj izvještaj' ,he: 'חובה לאפשר רמה בזלית זמנית כדי לרות דוח זה' @@ -2035,7 +2037,7 @@ function init() { ,ja: 'グルコース(%)レポート' ,dk: 'Glukoserapport i procent' ,fi: 'Verensokeriarvojen jakauma' - ,nb: 'Glukoserapport i prosent' + ,nb: 'Persentildiagram for blodsukker' ,he: 'דוח אחוזון סוכר' ,pl: 'Tabela centylowa glikemii' ,ru: 'Процентильная ГК' @@ -2087,7 +2089,7 @@ function init() { ,ja: '合計日数' ,dk: 'antal dage' ,fi: 'päivän arvio' - ,nb: 'antall dager' + ,nb: 'dager' ,he: 'מספר ימים' ,pl: 'dni łącznie' ,ru: 'всего дней' @@ -2112,7 +2114,7 @@ function init() { ,it: 'Giorni totali' ,dk: 'antal dage' ,fi: 'päivän arvio' - ,nb: 'antall dager' + ,nb: 'Totalt per dag' ,he: 'מספר ימים' ,pl: 'dni łącznie' ,ru: 'всего за сутки' @@ -2138,7 +2140,7 @@ function init() { ,ja: '総合' ,dk: 'Gennemsnit' ,fi: 'Yhteenveto' - ,nb: 'Generelt' + ,nb: 'Totalt' ,he: 'סך הכל' ,pl: 'Ogółem' ,ru: 'Суммарно' @@ -2190,7 +2192,7 @@ function init() { ,ja: '%精度' ,dk: '% af aflæsningerne' ,fi: '% lukemista' - ,nb: '% af avlesningene' + ,nb: '% av avlesningene' ,he: 'אחוז קריאות' ,pl: '% Odczytów' ,ru: '% измерений' @@ -2294,7 +2296,7 @@ function init() { ,ja: '最大値' ,dk: 'Max' ,fi: 'Maks' - ,nb: 'Max' + ,nb: 'Maks' ,he: 'מקסימאלי' ,pl: 'Max' ,ru: 'Макс' @@ -2426,7 +2428,7 @@ function init() { ,ja: '保存されたAPI secret hashを使用する' ,dk: 'Anvender gemt API-nøgle' ,fi: 'Tallennettu salainen API-tarkiste käytössä' - ,nb: 'Bruker lagret API nøkkel' + ,nb: 'Bruker lagret API-nøkkel' ,pl: 'Korzystając z zapisanego poufnego hasha API' ,ru: 'Применение сохраненного пароля API' ,sk: 'Používam uložený API hash heslo' @@ -2452,7 +2454,7 @@ function init() { ,ja: 'API secret hashがまだ保存されていません。API secretの入力が必要です。' ,dk: 'Mangler API-nøgle. Du skal indtaste API nøglen' ,fi: 'Salainen API-tarkiste puuttuu. Syötä API tarkiste.' - ,nb: 'Mangler API nøkkel. Du må skrive inn API hemmelighet.' + ,nb: 'Mangler API-nøkkel. Du må skrive inn API-hemmelighet.' ,he:'הכנס את הסיסמא הסודית של ה API' ,pl: 'Nie ma żadnego poufnego hasha API zapisanego. Należy wprowadzić poufny hash API.' ,ru: 'Пароля API нет в памяти. Введите пароль API' @@ -2505,7 +2507,7 @@ function init() { ,ja: 'エラー:データベースを読み込めません' ,dk: 'Fejl: Database kan ikke indlæses' ,fi: 'Virhe: Tietokannan lataaminen epäonnistui' - ,nb: 'Feil: Database kan ikke leses' + ,nb: 'Feil: Database kunne ikke leses' ,he: 'שגיאה: לא ניתן לטעון בסיס נתונים' ,pl: 'Błąd, baza danych nie może być załadowana' ,ru: 'Ошибка: Не удалось загрузить базу данных' @@ -2519,7 +2521,7 @@ function init() { ,'Error' : { cs: 'Error' ,he: 'Error' - ,nb: 'Error' + ,nb: 'Feil' ,fr: 'Error' ,ro: 'Error' ,el: 'Error' @@ -2557,7 +2559,7 @@ function init() { ,ja: '新しい記録を作る' ,dk: 'Opret ny post' ,fi: 'Luo uusi tallenne' - ,nb: 'Lager ny registrering' + ,nb: 'Opprette ny registrering' ,he: 'צור רשומה חדשה' ,pl: 'Tworzenie nowego wpisu' ,ru: 'Создайте новую запись' @@ -2583,7 +2585,7 @@ function init() { ,ja: '保存' ,dk: 'Gemmer post' ,fi: 'Tallenna' - ,nb: 'Lagrer registrering' + ,nb: 'Lagre registrering' ,he: 'שמור רשומה' ,pl: 'Zapisz wpis' ,ru: 'Сохраните запись' @@ -2818,7 +2820,7 @@ function init() { ,ja: 'APIシークレットは12文字以上の長さが必要です' ,dk: 'Din API nøgle skal være mindst 12 tegn lang' ,fi: 'API-avaimen tulee olla ainakin 12 merkin mittainen' - ,nb: 'Din API nøkkel må være minst 12 tegn lang' + ,nb: 'Din API-nøkkel må være minst 12 tegn lang' ,pl: 'Twój poufny klucz API musi zawierać co majmniej 12 znaków' ,ru: 'Ваш пароль API должен иметь не менее 12 знаков' ,sk: 'Vaše API heslo musí mať najmenej 12 znakov' @@ -2845,7 +2847,7 @@ function init() { ,ja: 'APIシークレットは正しくありません' ,dk: 'Forkert API-nøgle' ,fi: 'Väärä API-avain' - ,nb: 'Ugyldig API nøkkel' + ,nb: 'Ugyldig API-nøkkel' ,pl: 'Błędny klucz API' ,ru: 'Плохой пароль API' ,sk: 'Nesprávne API heslo' @@ -2872,7 +2874,7 @@ function init() { ,ja: 'APIシークレットを保存出来ました' ,dk: 'Hemmelig API-hash gemt' ,fi: 'API salaisuus talletettu' - ,nb: 'API nøkkel lagret' + ,nb: 'API-nøkkel lagret' ,pl: 'Poufne klucz API zapisane' ,ru: 'Хэш пароля API сохранен' ,sk: 'Hash API hesla uložený' @@ -2951,7 +2953,7 @@ function init() { ,ja: '食事編集' ,dk: 'Mad editor' ,fi: 'Muokkaa ruokia' - ,nb: 'Mat editor' + ,nb: 'Mat-editor' ,pl: 'Edytor posiłków' ,ru: 'Редактор продуктов' ,sk: 'Editor jedál' @@ -3146,6 +3148,7 @@ function init() { } ,'Your API secret or token' : { fi: 'API salaisuus tai avain' + ,nb: 'Din API-nøkkel eller passord' ,pl: 'Twój hash API lub token' ,ru: 'Ваш пароль API или код доступа ' ,de: 'Deine API-Prüfsumme oder Token' @@ -3153,6 +3156,7 @@ function init() { } ,'Remember this device. (Do not enable this on public computers.)' : { fi: 'Muista tämä laite (Älä valitse julkisilla tietokoneilla)' + ,nb: 'Husk denne enheten (Ikke velg dette på offentlige eller delte datamaskiner)' , pl: 'Zapamiętaj to urządzenie (Nie używaj tej opcji korzystając z publicznych komputerów.)' ,ru: 'Запомнить это устройство (Не применяйте в общем доступе)' ,de: 'An dieses Gerät erinnern. (Nicht auf öffentlichen Geräten verwenden)' @@ -3226,7 +3230,7 @@ function init() { ,ja: 'イベント' ,dk: 'Hændelsestype' ,fi: 'Tapahtumatyyppi' - ,nb: 'Type' + ,nb: 'Hendelsestype' ,he: 'סוג אירוע' ,pl: 'Typ zdarzenia' ,ru: 'Тип события' @@ -3330,7 +3334,7 @@ function init() { ,ja: '摂取糖質量' ,dk: 'Antal kulhydrater' ,fi: 'Hiilihydraatit' - ,nb: 'Karbo' + ,nb: 'Karbohydrat' ,he: 'פחמימות שנאכלו' ,pl: 'Węglowodany spożyte' ,ru: 'Дано углеводов' @@ -3382,7 +3386,7 @@ function init() { ,ja: 'イベント時間' ,dk: 'Tidspunkt for hændelsen' ,fi: 'Aika' - ,nb: 'Tidspunkt for hendelsen' + ,nb: 'Tidspunkt' ,he: 'זמן האירוע' ,pl: 'Czas zdarzenia' ,ru: 'Время события' @@ -3461,7 +3465,7 @@ function init() { ,ja: 'ボーラス計算機能使用' ,dk: 'Anvend BS-korrektion i beregning' ,fi: 'Käytä korjausannosta laskentaan' - ,nb: 'Bruk blodsukkerkorrigering i beregning' + ,nb: 'Bruk blodsukkerkorrigering i beregningen' ,pl: 'Użyj BG w obliczeniach korekty' ,ru: 'При расчете учитывать коррекцию ГК' ,sk: 'Použite korekciu na glykémiu' @@ -3643,7 +3647,7 @@ function init() { ,ja: '糖質量計算機能を使用' ,dk: 'Benyt kulhydratkorrektion i beregning' ,fi: 'Käytä hiilihydraattikorjausta laskennassa' - ,nb: 'Bruk karbohydratkorrigering i beregning' + ,nb: 'Bruk karbohydratkorrigering i beregningen' ,pl: 'Użyj wartość węglowodanów w obliczeniach korekty' ,ru: 'Пользоваться коррекцией на углеводы при расчете' ,sk: 'Použite korekciu na sacharidy' @@ -3669,7 +3673,7 @@ function init() { ,ja: 'COB補正計算を使用' ,dk: 'Benyt aktive kulhydrater i beregning' ,fi: 'Käytä aktiivisia hiilihydraatteja laskennassa' - ,nb: 'Benytt aktive karbohydrater i beregning' + ,nb: 'Bruk aktive karbohydrater i beregningen' ,pl: 'Użyj COB do obliczenia korekty' ,ru: 'Учитывать активные углеводы COB при расчете' ,sk: 'Použite korekciu na COB' @@ -3773,7 +3777,7 @@ function init() { ,ja: '治療にインスリン補正を入力する。' ,dk: 'Indtast insulinkorrektion' ,fi: 'Syötä insuliinikorjaus' - ,nb: 'Task inn insulinkorrigering' + ,nb: 'Angi insulinkorrigering' ,pl: 'Wprowadź wartość korekty w leczeniu' ,ru: 'Внести коррекцию инсулина в лечение' ,sk: 'Zadajte korekciu inzulínu do ošetrenia' @@ -4187,7 +4191,7 @@ function init() { ,ja: '追加メモ、コメント' ,dk: 'Ekstra noter, kommentarer' ,fi: 'Lisähuomiot, kommentit' - ,nb: 'Ekstra notater, kommentarer' + ,nb: 'Notater' ,he: 'הערות נוספות' ,pl: 'Uwagi dodatkowe' ,ru: 'Дополнительные примечания' @@ -4214,7 +4218,7 @@ function init() { ,ja: '振り返りモード' ,dk: 'Retro mode' ,fi: 'VANHENTUNEET TIEDOT' - ,nb: 'Retro mode' + ,nb: 'Retro-modus' ,nl: 'Retro mode' ,pl: 'Tryb RETRO' ,ru: 'режим РЕТРО' @@ -4345,7 +4349,7 @@ function init() { ,ja: '報告' ,dk: 'Rapporteringsværktøj' ,fi: 'Raportointityökalu' - ,nb: 'Rapporteringsverktøy' + ,nb: 'Rapporter' ,pl: 'Raporty' ,ru: 'Отчеты' ,sk: 'Správy' @@ -4898,7 +4902,7 @@ function init() { ,dk: 'Bolus Wizard (BWP)' ,it: 'BWP-Calcolatore di bolo' ,ja: 'BWP・ボーラスウィザード参照' - ,nb: 'Boluskalkulator' + ,nb: 'Boluskalkulator (BWP)' ,el: 'Εργαλείο Εκτίμησης Επάρκειας Ινσουλίνης (BWP)' ,ro: 'BWP-Sugestie de bolusare' ,bg: 'Болус калкулатор' @@ -5540,7 +5544,7 @@ function init() { ,ja: 'CGM Sensor Stop' ,dk: 'CGM Sensor Stop' ,fi: 'CGM Sensor Stop' - ,nb: 'CGM Sensor Stop' + ,nb: 'CGM Sensor Stopp' ,he: 'CGM Sensor Stop' ,pl: 'CGM Sensor Stop' ,ru: 'Стоп сенсор' @@ -5895,6 +5899,7 @@ function init() { ,dk: 'Udskift pumpebatteri' ,de: 'Pumpenbatterie wechseln' ,fi: 'Pumpun patterin vaihto' + ,nb: 'Bytte av pumpebatteri' ,bg: 'Смяна на батерия на помпата' ,hr: 'Zamjena baterije pumpe' ,ja: 'ポンプバッテリー交換' @@ -5909,6 +5914,7 @@ function init() { ,dk: 'Pumpebatteri lav Alarm' ,de: 'Pumpenbatterie niedrig Alarm' ,fi: 'Varoitus! Pumpun patteri loppumassa' + ,nb: 'Pumpebatteri Lav alarm' ,bg: 'Аларма за слаба батерия на помпата' ,hr: 'Upozorenje slabe baterije pumpe' ,ja: 'ポンプバッテリーが低下' @@ -5923,6 +5929,7 @@ function init() { ,dk: 'Pumpebatteri skal skiftes!' ,de: 'Pumpenbatterie Wechsel überfällig!' ,fi: 'Pumpun patterin vaihto myöhässä!' + ,nb: 'Pumpebatteriet må byttes!' ,bg: 'Смяната на батерията на помпата - наложителна' ,hr: 'Prošao je rok za zamjenu baterije pumpe!' ,ja: 'ポンプバッテリー交換期限切れてます!' @@ -6352,7 +6359,7 @@ function init() { ,ja: '有効にすると、小さい白ドットが素のBGデータ用に表示されます' ,dk: 'Ved aktivering vil små hvide prikker blive vist for rå BG tal' ,fi: 'Aktivoituna raaka VS tieto piirtyy aikajanalle valkoisina pisteinä' - ,nb: 'Ved aktivering vil små hvite prikker bli vist for rå BG tall' + ,nb: 'Ved aktivering vil små hvite prikker bli vist for ubehandlede BG-data' ,pl: 'Gdy funkcja jest włączona, małe białe kropki pojawią się na surowych danych BG' ,ru: 'При активации данные RAW будут видны как мелкие белые точки' ,sk: 'Keď je povolené, malé bodky budú zobrazovať RAW dáta.' @@ -6675,7 +6682,7 @@ function init() { ,ja: '時間前' ,dk: 'time siden' ,fi: 'tunti sitten' - ,nb: 'Time siden' + ,nb: 't siden' ,pl: 'godzina temu' ,ru: 'час назад' ,sk: 'hod. pred' @@ -6702,7 +6709,7 @@ function init() { ,ja: '時間前' ,dk: 'timer siden' ,fi: 'tuntia sitten' - ,nb: 'Timer siden' + ,nb: 't siden' ,pl: 'godzin temu' ,ru: 'часов назад' ,sk: 'hod. pred' @@ -6729,7 +6736,7 @@ function init() { ,ja: '分前' ,dk: 'minut siden' ,fi: 'minuutti sitten' - ,nb: 'minutter siden' + ,nb: 'min siden' ,pl: 'minuta temu' ,ru: 'мин назад' ,sk: 'min. pred' @@ -6756,7 +6763,7 @@ function init() { ,ja: '分前' ,dk: 'minutter siden' ,fi: 'minuuttia sitten' - ,nb: 'minutter siden' + ,nb: 'min siden' ,pl: 'minut temu' ,ru: 'минут назад' ,sk: 'min. pred' @@ -7279,7 +7286,7 @@ function init() { ,ro: 'ml' ,bg: 'мл' ,hr: 'ml' - ,nb: 'ml' + ,nb: 'mL' ,fi: 'ml' ,pl: 'ml' ,pt: 'mL' @@ -7680,7 +7687,7 @@ function init() { ,'This task find and remove CGM data in the future created by uploader with wrong date/time.' : { cs: 'Tento úkol najde a odstraní CGM data v budoucnosti vzniklé špatně nastaveným datem v uploaderu.' ,he: 'משימה זו מוצאת נתונים של סנסור סוכר ומסירה אותם בעתיד, שנוצרו על ידי העלאת נתונים עם תאריך / שעה שגויים' - ,nb: 'Finn og fjern fremtidige cgm data lastet opp med feil dato/tid' + ,nb: 'Finn og fjern fremtidige cgm data som er lastet opp med feil dato/tid' ,fr: 'Cet outil cherche et efface les valeurs CGM dont la date est dans le futur' ,el: 'Αυτή η ενέργεια αφαιρεί δεδομένα αιθητήρα τα οποία εισήχθησαν με λάθος ημερομηνία και ώρα, από τη βάση δεδομένων' ,de: 'Finde und entferne CGM-Daten in der Zukunft, die vom Uploader mit falschem Datum/Uhrzeit erstellt wurden.' @@ -7810,7 +7817,7 @@ function init() { ,'Error loading database' : { cs: 'Chyba při nahrávání databáze' ,he: 'שגיאה בטעינת מסד הנתונים ' - ,nb: 'Feil udner lasting av database' + ,nb: 'Feil under lasting av database' ,fr: 'Erreur chargement de la base de données' ,de: 'Fehler beim Laden der Datenbank' ,es: 'Error al cargar base de datos' @@ -8098,6 +8105,7 @@ function init() { ,de: 'Alle Dokumente der Gerätestatus-Sammlung löschen, die älter als 30 Tage sind' , pl: 'Usuń wszystkie dokumenty z kolekcji devicestatus starsze niż 30 dni' , hu: 'Az összes "devicestatus" dokumentum törlése ami 30 napnál öregebb' + } ,'Number of Days to Keep:' : { hr: 'Broj dana za sačuvati:' @@ -8201,7 +8209,7 @@ function init() { ,'Admin Tools' : { cs: 'Nástroje pro správu' ,he: 'כלי אדמיניסטרציה ' - ,nb: 'Administrasjonsoppgaver' + ,nb: 'Administrasjonsverktøy' ,ro: 'Instrumente de administrare' ,de: 'Administrator-Werkzeuge' ,es: 'Herramientas Administrativas' @@ -8228,7 +8236,7 @@ function init() { ,'Nightscout reporting' : { cs: 'Nightscout - Výkazy' ,he: 'דוחות נייססקאוט' - ,nb: 'Nightscout - rapporter' + ,nb: 'Rapporter' ,ro: 'Rapoarte Nightscout' ,fr: 'Rapports Nightscout' ,el: 'Αναφορές' @@ -8460,7 +8468,7 @@ function init() { ,es: 'Basal modificado en %' ,dk: 'Basal ændring i %' ,it: 'Variazione basale in %' - ,nb: 'Basal endring i %' + ,nb: 'Basal-endring i %' ,fi: 'Basaalimuutos prosenteissa' ,pl: 'Zmiana dawki podstawowej w %' ,pt: 'Mudança de basal em %' @@ -8806,7 +8814,7 @@ function init() { ,de: 'Eintrag gültig ab' ,es: 'Registro válido desde' ,dk: 'Hændelse gyldig fra' - ,nb: 'Rad gyldig fra' + ,nb: 'Oppføring gyldig fra' ,fi: 'Merkintä voimassa alkaen' ,bg: 'Записът е валиден от ' ,hr: 'Zapis vrijedi od' @@ -8878,7 +8886,7 @@ function init() { ,fr: 'Durée d\'action de l\'insuline' ,el: 'Διάρκεια Δράσης Ινσουλίνης(DIA)' ,sv: 'Verkningstid för insulin (DIA)' - ,nb: 'Insulin varighet' + ,nb: 'Insulin-varighet (DIA)' ,de: 'Dauer der Insulinaktivität (DIA)' ,es: 'Duración Insulina Activa (DIA)' ,dk: 'Varighed af insulin aktivitet (DIA)' @@ -8906,7 +8914,7 @@ function init() { ,de: 'Entspricht der typischen Dauer in der das Insulin wirkt. Variiert je nach Patient und Insulintyp. Häufig 3-4 Stunden für die meisten Pumpeninsuline und die meisten Patienten. Manchmal auch Insulin-Wirkungsdauer genannt.' ,dk: 'Representerer den typiske tid hvor insulinen virker. Varierer per patient og per insulin type. Typisk 3-4 timer for de fleste pumpe insulin og for de fleste patienter. Nogle gange kaldes dette også insulin-livs-tid.' ,sv: 'Beskriver under hur lång tid insulinet verkar. Varierar mellan patienter. Typisk varaktighet 3-4 timmar.' - ,nb: 'Representerer typisk insulinvarighet. Varierer per pasient og per insulin type. Vanligvis 3-4 timer for de fleste typer insulin og de fleste pasientene. Noen ganger også kalt insulinlevetid.' + ,nb: 'Representerer typisk insulinvarighet. Varierer per pasient og per insulintype. Vanligvis 3-4 timer for de fleste typer insulin og de fleste pasientene. Noen ganger også kalt insulin-levetid eller Duration of Insulin Activity, DIA.' ,fi: 'Kertoo insuliinin tyypillisen vaikutusajan. Vaihtelee potilaan ja insuliinin tyypin mukaan. Tyypillisesti 3-4 tuntia pumpuissa käytettävällä insuliinilla.' ,bg: 'Представя типичната продължителност на действието на инсулина. Варира между отделните пациенти и различни инсулини. Обикновено е 3-4 часа за пациентите с помпа. Нарича се още живот на инсулина ' ,hr: 'Predstavlja uobičajeno trajanje djelovanje inzulina. Varira po vrstama inzulina i osobama. Tipično je to 3-4 sata za inzuline u pumpama za većinu osoba. Ponekad se naziva i vijek inzulina' @@ -9002,7 +9010,7 @@ function init() { ,ro: 'g/oră' ,fr: 'g/heure' ,sv: 'g/timme' - ,nb: 'g/t' + ,nb: 'g/time' ,de: 'g/Std' ,es: 'gr/hora' ,dk: 'g/time' @@ -9055,7 +9063,7 @@ function init() { ,el: 'Ευαισθησία στην Ινοσυλίνη (ISF)' ,sv: 'Insulinkänslighetsfaktor (ISF)' ,dk: 'Insulinfølsomhedsfaktor (ISF)' - ,nb: 'Insulinfølsomhetsfaktor' + ,nb: 'Insulinfølsomhetsfaktor (ISF)' ,fi: 'Insuliiniherkkyys (ISF)' ,bg: 'Фактор на инсулинова чувствителност ISF ' ,hr: 'Faktor inzulinske osjetljivosti (ISF)' @@ -9080,7 +9088,7 @@ function init() { ,es: 'mg/dl o mmol/L por unidad Insulina. La relación de la caída de glucosa y cada unidad de insulina de corrección administrada.' ,sv: 'mg/dl eller mmol per enhet insulin. Hur varje enhet insulin sänker blodsockret' ,dk: 'mg/dl eller mmol per enhed insulin. Beskriver hvor mange mmol eller mg/dl blodsukkeret sænkes per enhed insulin (Insulinfølsomheden)' - ,nb: 'mg/dl eller mmol/l per enhet insulin. Beskriver hvor mye blodsukkeret senkes per enhet insulin.' + ,nb: 'mg/dl eller mmol/L per enhet insulin. Beskriver hvor mye blodsukkeret senkes per enhet insulin.' ,fi: 'mg/dL tai mmol/L / 1 yksikkö insuliinia. Suhde, joka kertoo montako yksikköä verensokeria yksi yksikkö insuliinia laskee.' ,bg: 'мг/дл или ммол към 1 единица инсулин. Съотношението как се променя кръвната захар със всяка единица инсулинова корекция' ,hr: 'md/dL ili mmol/L po jedinici inzulina. Omjer koliko se GUK mijenja sa jednom jedinicom korekcije inzulina.' @@ -9155,7 +9163,7 @@ function init() { ,es: 'Tasas basales [Unidad/hora]' ,fr: 'Débit basal (Unités/ heure)' ,sv: 'Basal [enhet/t]' - ,nb: 'Basal [enhet/t]' + ,nb: 'Basal [enhet/time]' ,fi: 'Basaali [yksikköä/tunti]' ,bg: 'Базална стойност [единица/час]' ,hr: 'Bazali [jedinica/sat]' @@ -9180,7 +9188,7 @@ function init() { ,es: 'Intervalo glucemia dentro del objetivo [mg/dL,mmol/L]' ,fr: 'Cible d\'intervalle de glycémie' ,sv: 'Önskvärt blodsockerintervall [mg/dl,mmol]' - ,nb: 'Ønsket blodsukkerintervall [mg/dl,mmmol/l]' + ,nb: 'Ønsket blodsukkerintervall [mg/dl, mmmol/L]' ,fi: 'Tavoitealue [mg/dL tai mmol/L]' ,bg: 'Целеви диапазон на КЗ [мг/дл , ммол]' ,hr: 'Ciljani raspon GUK [mg/dL,mmol/L]' @@ -9474,7 +9482,7 @@ function init() { ,'Save current record before switching to new?' : { cs: 'Uložit současný záznam před přepnutím na nový?' ,he: 'שמור את הרשומה הנוכחית לפני המעבר ל חדש? ' - ,nb: 'Lagre før nytte til ny?' + ,nb: 'Lagre før bytte til ny?' ,fr: 'Sauvegarder cetter entrée avant de procéder à l\'entrée suivante?' ,el: 'Αποθήκευση αλλαγών πριν γίνει εναλλαγή στο νέο προφίλ? ' ,de: 'Aktuellen Datensatz speichern?' @@ -9549,7 +9557,7 @@ function init() { ,'I:C' : { cs: 'I:C' ,he: 'יחס אינסולין לפחמימות ' - ,nb: 'IKH' + ,nb: 'IK' ,fr: 'I:C' ,ro: 'ICR' ,de: 'IE:KH' @@ -9933,7 +9941,7 @@ function init() { ,fr: 'Modifier l\'horaire des glucides? Nouveau: %1' ,el: 'Αλλαγή του χρόνου πρόσληψης υδατανθράκων σε %1?' ,sv: 'Ändra kolhydratstid till %1 ?' - ,nb: 'Endre Karbohydrattid til %1 ?' + ,nb: 'Endre karbohydrattid til %1 ?' ,bg: 'Да променя ли времето на ВХ с %1?' ,hr: 'Promijeni vrijeme UGH na %1?' ,fi: 'Muuta hiilihydraattien aika? Uusi: %1' @@ -10058,7 +10066,7 @@ function init() { ,es: 'Gráfica' ,el: 'Απεικόνιση' ,sv: 'Rendering' - ,nb: 'Rendering' + ,nb: 'Tegner grafikk' ,bg: 'Показване на графика' ,hr: 'Iscrtavanje' ,fi: 'Piirrän graafeja' @@ -11473,7 +11481,7 @@ function init() { ,ru: 'Остается актуального временного базала' ,sk: 'Zostatok dočasného bazálu' ,sv: 'Återstående tempbasaltid' - ,nb: 'Gjenstående midlertidig basal tid' + ,nb: 'Gjenstående tid for midlertidig basal' ,pt: 'Basal temporária ativa restante' ,es: 'Basal temporal activa restante' ,fi: 'Aktiivista tilapäisbasaalia jäljellä' @@ -11616,7 +11624,7 @@ function init() { ,fr: 'Différence de glycémie' ,ru: 'Изменение гликемии' ,sv: 'BS deltavärde' - ,nb: 'BS forskjell' + ,nb: 'BS deltaverdi' ,fi: 'VS muutos' ,pt: 'Diferença de glicemia' ,es: 'Diferencia de glucemia' @@ -11845,7 +11853,7 @@ function init() { ,es: 'Ignorar alarma de Hiperglucemia al tener suficiente insulina activa' ,ru: 'Отключение предупреждение о высоком СК ввиду достаточности инсулина в организме' ,sv: 'Snoozar höglarm då aktivt insulin är tillräckligt' - ,nb: 'Utsetter høyalarm siden det er nok aktivt insulin' + ,nb: 'Utsetter høy-alarm siden det er nok aktivt insulin' ,fi: 'Korkean sokerin varoitus poistettu riittävän insuliinin vuoksi' ,pt: 'Ignorar alarme de hiper em função de IOB suficiente' ,sk: 'Odloženie alarmu vysokej glykémie, pretože je dostatok IOB' @@ -12230,7 +12238,7 @@ function init() { ,hr: 'Procjena GUK %1 cilja' ,ru: 'Расчетная целевая гликемия %1' ,sv: 'Önskat BS %1 mål' - ,nb: 'Ønsket BS %1 mål' + ,nb: 'Predikert BS %1 mål' ,fi: 'Laskettu VS %1 tavoitteen' ,pt: 'Meta de glicemia estimada %1' ,sk: 'Predpokladaná glykémia %1 cieľ' @@ -12543,7 +12551,7 @@ function init() { ,fr: 'CAGE' ,ru: 'КатПомп' ,sv: 'Nål' - ,nb: 'Nål alder' + ,nb: 'Nålalder' ,fi: 'KIKÄ' ,pt: 'ICAT' ,es: 'Cánula desde' @@ -12953,7 +12961,7 @@ function init() { ,bg: 'преди %1 час' ,hr: 'prije %1 sati' ,sv: '%1h sedan' - ,nb: '%1h siden' + ,nb: '%1t siden' ,fi: '%1h sitten' ,pt: '%1h atrás' ,es: '%1h. atrás' @@ -13098,7 +13106,7 @@ function init() { ,bg: 'Смени/рестартирай сензора скоро' ,hr: 'Zamijena/restart senzora uskoro' ,sv: 'Byt/starta om sensorn snart' - ,nb: 'Bytt/restarta sensoren snart' + ,nb: 'Bytt/restart sensoren snart' ,fi: 'Vaihda/käynnistä sensori uudelleen pian' ,pt: 'Mudar/reiniciar sensor em breve' ,es: 'Cambiar/Reiniciar sensor en breve' @@ -13122,7 +13130,7 @@ function init() { ,bg: 'Сензорът е на %1 дни %2 часа ' ,hr: 'Starost senzora %1 dana i %2 sati' ,sv: 'Sensorålder %1 dagar %2 timmar' - ,nb: 'Sensoralder %1 dag %2 timer' + ,nb: 'Sensoralder %1 dager %2 timer' ,fi: 'Sensorin ikä %1 päivää, %2 tuntia' ,pt: 'Idade do sensor %1 dias %2 horas' ,es: 'Sensor desde %1 días %2 horas' @@ -13227,6 +13235,7 @@ function init() { ,pl: 'podawanie insuliny' ,tr: 'İnsülin dağılımı' ,hu: 'Inzulin disztribúció' + ,nb: 'Insulinfordeling' } ,'To see this report, press SHOW while in this view' : { cs: 'Pro zobrazení toho výkazu stiskněte Zobraz na této záložce' @@ -13248,6 +13257,7 @@ function init() { ,pl: 'Aby wyświetlić ten raport, naciśnij przycisk POKAŻ w tym widoku' ,tr: 'Bu raporu görmek için bu görünümde GÖSTER düğmesine basın.' ,hu: 'A jelentés megtekintéséhez kattints a MUTASD gombra' + ,nb: 'Klikk på "VIS" for å se denne rapporten' } ,'AR2 Forecast' : { cs: 'AR2 predikci' @@ -13269,6 +13279,7 @@ function init() { ,pl: 'Prognoza AR2' ,tr: 'AR2 Tahmini' ,hu: 'AR2 előrejelzés' + ,nb: 'AR2-prediksjon' } ,'OpenAPS Forecasts' : { cs: 'OpenAPS predikci' @@ -13290,6 +13301,7 @@ function init() { ,pl: 'Prognoza OpenAPS' ,tr: 'OpenAPS Tahminleri' ,hu: 'OpenAPS előrejelzés' + ,nb: 'OpenAPS-prediksjon' } ,'Temporary Target' : { cs: 'Dočasný cíl glykémie' @@ -13311,6 +13323,7 @@ function init() { ,pl: 'Cel tymczasowy' ,tr: 'Geçici Hedef' ,hu: 'Átmeneti cél' + ,nb: 'Midlertidig mål' } ,'Temporary Target Cancel' : { cs: 'Dočasný cíl glykémie konec' @@ -13332,6 +13345,7 @@ function init() { ,pl: 'Zel tymczasowy anulowany' ,tr: 'Geçici Hedef İptal' ,hu: 'Átmeneti cél törlése' + ,nb: 'Avslutt midlertidig mål' } ,'OpenAPS Offline' : { cs: 'OpenAPS vypnuto' @@ -13353,6 +13367,7 @@ function init() { ,pl: 'OpenAPS nieaktywny' ,tr: 'OpenAPS Offline (çevrimdışı)' ,hu: 'OpenAPS nem elérhető (offline)' + ,nb: 'OpenAPS offline' } ,'Profiles' : { cs: 'Profily' @@ -13369,6 +13384,7 @@ function init() { ,nl: 'Profielen' ,zh_cn: '配置文件' ,sv: 'Profiler' + ,nb: 'Profiler' ,bg: 'Профили' ,hr: 'Profili' ,pl: 'Profile' @@ -13395,6 +13411,7 @@ function init() { ,pl: 'Czas fluaktacji (odchyleń)' ,tr: 'Dalgalanmada geçen süre' ,hu: 'Kilengésben töltött idő' + ,nb: 'Tid i fluktuasjon' } ,'Time in rapid fluctuation' : { cs: 'Doba rychle se měnící glykémie' @@ -13416,6 +13433,7 @@ function init() { ,pl: 'Czas szybkich fluaktacji (odchyleń)' ,tr: 'Hızlı dalgalanmalarda geçen süre' ,hu: 'Magas kilengésekben töltött idő' + ,nb: 'Tid i hurtig fluktuasjon' } ,'This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:' : { cs: 'Toto je pouze hrubý odhad, který může být nepřesný a nenahrazuje kontrolu z krve. Vzorec je převzatý z:' @@ -13437,6 +13455,7 @@ function init() { ,pl: 'To tylko przybliżona ocena, która może być bardzo niedokładna i nie może zastąpić faktycznego poziomu cukru we krwi. Zastosowano formułę:' ,tr: 'Bu bir kaba tahmindir ve çok hata içerebilir gerçek kan şekeri testlerinin yerini tutmayacaktır. Kullanılan formülde buradandır:' ,hu: 'Ez egy nagyon durva számítás ami nem pontos és nem helyettesíti a cukorszint mérését. A képlet a következő helyről lett véve:' + ,nb: 'Dette er kun et grovt estimat som kan være misvisende. Det erstatter ikke en blodprøve. Formelen er hentet fra:' } , 'Filter by hours' : { cs: ' Filtr podle hodin' @@ -13457,6 +13476,7 @@ function init() { ,pl: 'Filtruj po godzinach' ,tr: 'Saatlere göre filtrele' ,hu: 'Megszűrni órák alapján' + ,nb: 'Filtrer per time' } , 'Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.' : { cs: 'Doba měnící se glykémie a rapidně se měnící glykémie měří % času ve zkoumaném období, během kterého se glykémie měnila relativně rychle nebo rapidně. Nižší hodnota je lepší.' @@ -13477,6 +13497,7 @@ function init() { ,pl: 'Czas fluktuacji i szybki czas fluktuacji mierzą % czasu w badanym okresie, w którym poziom glukozy we krwi zmieniał się szybko lub bardzo szybko. Preferowane są wolniejsze zmiany' ,tr: 'Dalgalanmadaki zaman ve Hızlı dalgalanmadaki zaman, kan şekerinin nispeten hızlı veya çok hızlı bir şekilde değiştiği, incelenen dönemdeki zamanın %\'sini ölçer. Düşük değerler daha iyidir.' ,hu: 'A sima és magas kilengésnél mért idő százalékban kifelyezve, ahol a cukorszint aránylag nagyokat változott. A kisebb értékek jobbak ebben az esetben' + ,nb: 'Tid i fluktuasjon og tid i hurtig fluktuasjon måler % av tiden i den aktuelle periodn der blodsukkeret har endret seg relativt raskt. Lave verdier er best.' } , 'Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.' : { cs: 'Průměrná celková denní změna je součet absolutních hodnoty všech glykémií za sledované období, děleno počtem dní. Nižší hodnota je lepší.' @@ -13497,6 +13518,8 @@ function init() { ,pl: 'Sednia całkowita dziennych zmian jest sumą wszystkich zmian glikemii w badanym okresie, podzielonym przez liczbę dni. Mniejsze są lepsze' ,tr: 'Toplam Günlük Değişim, incelenen süre için, gün sayısına bölünen tüm glukoz değerlerinin mutlak değerinin toplamıdır. Düşük değer daha iyidir.' ,hu: 'Az átlagos napi változás az abszolút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.' + ,nb: 'Gjennomsnitt total daglig endring er summen av absolutverdier av alle glukoseendringer i den aktuelle perioden, divideret med antall dager. Lave verdier er best.' + } , 'Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.' : { cs: 'Průměrná hodinová změna je součet absolutní hodnoty všech glykémií za sledované období, dělených počtem hodin v daném období. Nižší hodnota je lepší.' @@ -13517,7 +13540,32 @@ function init() { ,pl: 'Sednia całkowita godzinnych zmian jest sumą wszystkich zmian glikemii w badanym okresie, podzielonym przez liczbę godzin. Mniejsze są lepsze' ,tr: 'Saat başına ortalama değişim, gözlem periyodu üzerindeki tüm glikoz değişikliklerinin mutlak değerlerinin saat sayısına bölünmesiyle elde edilen toplam değerdir. Düşük değerler daha iyidir.' ,hu: 'Az átlagos óránkénti változás az abszút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.' - } + ,nb: 'Gjennomsnitt endring per time er summen av absoluttverdier av alle glukoseendringer i den aktuelle perioden divideret med antall timer. Lave verdier er best.' + } + , 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' : { + cs: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,he: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,nb: 'Out of Range RMS er beregnet ved å ta kvadratet av avstanden utenfor målområdet for alle blodsukkerverdier i den aktuelle perioden, summere dem, dele på antallet, og ta kvadratroten av resultatet. Dette målet er lignende som prodentvis tid i målområdet, men vekter målinger som ligger langt utenfor målområdet høyere. Lave verdier er best.' + ,ro: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,de: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,dk: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,es: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,fr: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,sv: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,fi: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,bg: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,hr: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,pl: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,pt: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,nl: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,ru: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,sk: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,ko: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,it: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,tr: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,zh_cn: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + ,hu: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' + } , 'GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.' : { cs: '">zde.' @@ -13559,6 +13608,7 @@ function init() { ,pl: '">tutaj.' ,tr: '">buradan.' ,hu: '">itt találhatóak.' + ,nb: '">her.' } , 'Mean Total Daily Change' : { cs: 'Průměrná celková denní změna' @@ -13580,6 +13630,7 @@ function init() { ,pl: 'Średnia całkowita dziennych zmian' ,tr: 'Günde toplam ortalama değişim' ,hu: 'Áltagos napi változás' + ,nb: 'Gjennomsnitt total daglig endring' } , 'Mean Hourly Change' : { cs: 'Průměrná hodinová změna' @@ -13601,6 +13652,7 @@ function init() { ,pl: 'Średnia całkowita godzinnych zmian' ,tr: 'Saatte ortalama değişim' ,hu: 'Átlagos óránkénti változás' + ,nb: 'Gjennomsnitt endring per time' } , 'FortyFiveDown': { bg: 'slightly dropping' @@ -13752,7 +13804,7 @@ function init() { , hr: 'brzo padajuće' , it: 'rapida diminuzione' , ko: 'rapidly dropping' - , nb: 'hurtig stigende' + , nb: 'hurtig fallende' , pl: 'szybko spada' , pt: 'rapidly dropping' , ro: 'scădere bruscă' @@ -13779,7 +13831,7 @@ function init() { , hr: 'brzo rastuće' , it: 'rapido aumento' , ko: 'rapidly rising' - , nb: 'hurtig fallende' + , nb: 'hurtig stigende' , pl: 'szybko rośnie' , pt: 'rapidly rising' , ro: 'creștere rapidă' @@ -15268,6 +15320,7 @@ function init() { ,tr: 'Yağ [g]' ,he: '[g] שמן' ,hu: 'Zsír [g]' + ,nb: 'Fett [g]' }, 'Protein [g]': { cs: 'Proteiny [g]' @@ -15289,6 +15342,7 @@ function init() { ,tr: 'Protein [g]' ,he: '[g] חלבון' ,hu: 'Protein [g]' + ,nb: 'Protein [g]' }, 'Energy [kJ]': { cs: 'Energie [kJ]' @@ -15310,6 +15364,7 @@ function init() { ,tr: 'Enerji [kJ]' ,he: '[kJ] אנרגיה' ,hu: 'Energia [kJ]' + ,nb: 'Energi [kJ]' }, 'Clock Views:': { cs: 'Hodiny:' @@ -15331,6 +15386,7 @@ function init() { ,tr: 'Saat Görünümü' ,he: 'צגים השעון' ,hu: 'Óra:' + ,nb: 'Klokkevisning:' }, 'Clock': { cs: 'Hodiny' @@ -15351,6 +15407,7 @@ function init() { ,tr: 'Saat' ,he: 'שעון' ,hu: 'Óra:' + ,nb: 'Klokke' }, 'Color': { cs: 'Barva' @@ -15371,6 +15428,7 @@ function init() { ,tr: 'Renk' ,he: 'צבע' ,hu: 'Szinek' + ,nb: 'Farge' }, 'Simple': { cs: 'Jednoduchý' @@ -15391,8 +15449,9 @@ function init() { ,tr: 'Basit' ,he: 'פשוט' ,hu: 'Csak cukor' + ,nb: 'Enkel' }, - 'TDD average': { + 'TDD average' : { cs: 'Průměrná denní dávka' , fi: 'Päivän kokonaisinsuliinin keskiarvo' , ko: 'TDD average' @@ -15409,7 +15468,80 @@ function init() { , ru: 'средняя суточная доза инсулина' , tr: 'Ortalama günlük Toplam Doz (TDD)' , hu: 'Átlagos napi adag (TDD)' + , nb: 'Gjennomsnitt TDD' }, + 'Bolus average' : { + cs: 'Bolus average' + ,he: 'Bolus average' + ,nb: 'Gjennomsnitt bolus' + ,ro: 'Bolus average' + ,de: 'Bolus average' + ,dk: 'Bolus average' + ,es: 'Bolus average' + ,fr: 'Bolus average' + ,sv: 'Bolus average' + ,fi: 'Bolus average' + ,bg: 'Bolus average' + ,hr: 'Bolus average' + ,pl: 'Bolus average' + ,pt: 'Bolus average' + ,nl: 'Bolus average' + ,ru: 'Bolus average' + ,sk: 'Bolus average' + ,ko: 'Bolus average' + ,it: 'Bolus average' + ,tr: 'Bolus average' + ,zh_cn: 'Bolus average' + ,hu: 'Bolus average' + }, + 'Basal average' : { + cs: 'Basal average' + ,he: 'Basal average' + ,nb: 'Gjennomsnitt basal' + ,ro: 'Basal average' + ,de: 'Basal average' + ,dk: 'Basal average' + ,es: 'Basal average' + ,fr: 'Basal average' + ,sv: 'Basal average' + ,fi: 'Basal average' + ,bg: 'Basal average' + ,hr: 'Basal average' + ,pl: 'Basal average' + ,pt: 'Basal average' + ,nl: 'Basal average' + ,ru: 'Basal average' + ,sk: 'Basal average' + ,ko: 'Basal average' + ,it: 'Basal average' + ,tr: 'Basal average' + ,zh_cn: 'Basal average' + ,hu: 'Basal average' + }, + 'Base basal average:' : { + cs: 'Base basal average' + ,he: 'Base basal average' + ,nb: 'Programmert gj.snitt basal' + ,ro: 'Base basal average' + ,de: 'Base basal average' + ,dk: 'Base basal average' + ,es: 'Base basal average' + ,fr: 'Base basal average' + ,sv: 'Base basal average' + ,fi: 'Base basal average' + ,bg: 'Base basal average' + ,hr: 'Base basal average' + ,pl: 'Base basal average' + ,pt: 'Base basal average' + ,nl: 'Base basal average' + ,ru: 'Base basal average' + ,sk: 'Base basal average' + ,ko: 'Base basal average' + ,it: 'Base basal average' + ,tr: 'Base basal average' + ,zh_cn: 'Base basal average' + ,hu: 'Base basal average' + }, 'Carbs average': { cs: 'Průměrné množství sacharidů' , fi: 'Hiilihydraatit keskiarvo' @@ -15428,6 +15560,7 @@ function init() { , tr: 'Günde ortalama karbonhidrat' , he: 'פחמימות ממוצע' , hu: 'Szenhidrát átlag' + , nb: 'Gjennomsnitt totale karbohydrater' }, 'Eating Soon': { cs: 'Blížící se jídlo' @@ -15447,6 +15580,7 @@ function init() { , tr: 'Yakında Yenecek' , he: 'אוכל בקרוב' , hu: 'Hamarosan evés' + , nb: 'Spiser snart' }, 'Last entry {0} minutes ago': { cs: 'Poslední hodnota {0} minut zpět' @@ -15465,6 +15599,7 @@ function init() { , ru: 'предыдущая запись {0} минут назад' , tr: 'Son giriş {0} dakika önce' , hu: 'Utolsó bejegyzés {0} volt' + , dk: 'Siste verdi {0} minutter siden' }, 'change': { cs: 'změna' @@ -15484,6 +15619,7 @@ function init() { , tr: 'değişiklik' , he: 'שינוי' , hu: 'változás' + , dk: 'endre' }, 'Speech': { cs: 'Hlas' @@ -15503,6 +15639,7 @@ function init() { , tr: 'Konuş' , he: 'דיבור' , hu: 'Beszéd' + , nb: 'Tale' }, 'Target Top': { cs: 'Horní cíl' @@ -15522,6 +15659,7 @@ function init() { , tr: 'Hedef Üst' , he: 'ראש היעד' , hu: 'Felsó cél' + , nb: 'Høyt mål' }, 'Target Bottom': { cs: 'Dolní cíl' @@ -15541,6 +15679,7 @@ function init() { , tr: 'Hedef Alt' , he: 'תחתית היעד' , hu: 'Alsó cél' + , nb: 'Lavt mål' }, 'Canceled': { cs: 'Zrušený' @@ -15560,6 +15699,7 @@ function init() { , tr: 'İptal edildi' , he: 'מבוטל' , hu: 'Megszüntetett' + , dk: 'Avbrutt' }, 'Meter BG': { cs: 'Hodnota z glukoměru' @@ -15579,6 +15719,7 @@ function init() { , tr: 'Glikometre KŞ' , he: 'סוכר הדם של מד' , hu: 'Cukorszint a mérőből' + , nb: 'Blodsukkermåler BS' }, 'predicted': { cs: 'přepověď' @@ -15598,6 +15739,7 @@ function init() { , tr: 'tahmin' , he: 'חזה' , hu: 'előrejelzés' + , nb: 'predikert' }, 'future': { cs: 'budoucnost' @@ -15617,6 +15759,7 @@ function init() { , tr: 'gelecek' , he: 'עתיד' , hu: 'jövő' + , nb: 'Fremtid' }, 'ago': { cs: 'zpět' @@ -15635,6 +15778,7 @@ function init() { , tr: 'önce' , he: 'לפני' , hu: 'ezelött' + , nb: 'Siden' }, 'Last data received': { cs: 'Poslední data přiajata' @@ -15654,6 +15798,7 @@ function init() { , tr: 'Son veri alındı' , he: 'הנתונים המקבל אחרונים' , hu: 'Utólsó adatok fogadva' + , nb: 'Siste data mottatt' }, 'Clock View': { cs: 'Hodiny' @@ -15675,6 +15820,7 @@ function init() { ,tr: 'Saat Görünümü' ,he: 'צג השעון' ,hu: 'Idő' + , nb: 'Klokkevisning' }, 'Protein': { fi: 'Proteiini' @@ -15686,6 +15832,7 @@ function init() { ,he: 'חלבון' ,nl: 'Eiwit' ,hu: 'Protein' + , nb: 'Protein' }, 'Fat': { fi: 'Rasva' @@ -15697,8 +15844,9 @@ function init() { ,he: 'שמן' ,nl: 'Vet' ,hu: 'Zsír' + , nb: 'Fett' }, - 'Protein average': { + 'Protein average' : { fi: 'Proteiini keskiarvo' ,de: 'Proteine Durchschnitt' ,tr: 'Protein Ortalaması' @@ -15708,8 +15856,9 @@ function init() { ,he: 'חלבון ממוצע' ,nl: 'eiwitgemiddelde' ,hu: 'Protein átlag' + , nb: 'Gjennomsnitt protein' }, - 'Fat average': { + 'Fat average' : { fi: 'Rasva keskiarvo' ,de: 'Fett Durchschnitt' ,tr: 'Yağ Ortalaması' @@ -15719,8 +15868,9 @@ function init() { ,he: 'שמן ממוצע' ,nl: 'Vetgemiddelde' ,hu: 'Zsír átlag' + , nb: 'Gjennomsnitt fett' }, - 'Total carbs': { + 'Total carbs' : { fi: 'Hiilihydraatit yhteensä' , de: 'Kohlenhydrate gesamt' ,tr: 'Toplam Karbonhidrat' @@ -15730,6 +15880,7 @@ function init() { ,he: 'כל פחמימות' ,nl: 'Totaal koolhydraten' ,hu: 'Összes szénhidrát' + , nb: 'Totale karbohydrater' }, 'Total protein': { fi: 'Proteiini yhteensä' @@ -15741,6 +15892,7 @@ function init() { ,he: 'כל חלבונים' ,nl: 'Totaal eiwitten' ,hu: 'Összes protein' + , nb: 'Totalt protein' }, 'Total fat': { fi: 'Rasva yhteensä' @@ -15752,42 +15904,50 @@ function init() { ,he: 'כל שומנים' ,nl: 'Totaal vetten' ,hu: 'Összes zsír' + , nb: 'Totalt fett' }, 'Database Size': { pl: 'Rozmiar Bazy Danych' ,nl: 'Grootte database' ,de: 'Datenbankgröße' ,hu: 'Adatbázis mérete' + , nb: 'Databasestørrelse' }, 'Database Size near its limits!': { pl: 'Rozmiar bazy danych zbliża się do limitu!' ,nl: 'Database grootte nadert limiet!' ,de: 'Datenbank fast voll!' ,hu: 'Az adatbázis majdnem megtelt!' + , nb: 'Databasestørrelsen nærmer seg grensene' }, 'Database size is %1 MiB out of %2 MiB. Please backup and clean up database!': { pl: 'Baza danych zajmuje %1 MiB z dozwolonych %2 MiB. Proszę zrób kopię zapasową i oczyść bazę danych!' ,nl: 'Database grootte is %1 MiB van de %2 MiB. Maak een backup en verwijder oude data' ,de: 'Die Datenbankgröße beträgt %1 MiB von %2 MiB. Bitte sichere deine Daten und bereinige die Datenbank!' ,hu: 'Az adatbázis mérete %1 MiB a rendelkezésre álló %2 MiB-ból. Készítsen biztonsági másolatot!' + , nb: 'Databasestørrelsen er %1 MiB av %2 MiB. Vennligst ta backup og rydd i databasen!' }, 'Database file size': { pl: 'Rozmiar pliku bazy danych' ,nl: 'Database bestandsgrootte' ,de: 'Datenbank-Dateigröße' ,hu: 'Adatbázis file mérete' + , nb: 'Database filstørrelse' + }, '%1 MiB of %2 MiB (%3%)': { pl: '%1 MiB z %2 MiB (%3%)' ,nl: '%1 MiB van de %2 MiB (%3%)' ,de: '%1 MiB von %2 MiB (%3%)' ,hu: '%1 MiB %2 MiB-ból (%3%)' + ,nb: '%1 MiB av %2 MiB (%3%)' }, 'Data size': { pl: 'Rozmiar danych' ,nl: 'Datagrootte' ,de: 'Datengröße' ,hu: 'Adatok mérete' + ,nb: 'Datastørrelse' }, 'virtAsstDatabaseSize': { en: '%1 MiB. That is %2% of available database space.' @@ -15802,7 +15962,31 @@ function init() { ,nl: 'Database bestandsgrootte' ,de: 'Datenbank-Dateigröße' ,hu: 'Adatbázis file méret' - } + }, + 'Carbs/Food/Time' : { + cs: 'Carbs/Food/Time' + ,he: 'Carbs/Food/Time' + ,nb: 'Karbo/Mat/Abs.tid' + ,ro: 'Carbs/Food/Time' + ,de: 'Carbs/Food/Time' + ,dk: 'Carbs/Food/Time' + ,es: 'Carbs/Food/Time' + ,fr: 'Carbs/Food/Time' + ,sv: 'Carbs/Food/Time' + ,fi: 'Carbs/Food/Time' + ,bg: 'Carbs/Food/Time' + ,hr: 'Carbs/Food/Time' + ,pl: 'Carbs/Food/Time' + ,pt: 'Carbs/Food/Time' + ,nl: 'Carbs/Food/Time' + ,ru: 'Carbs/Food/Time' + ,sk: 'Carbs/Food/Time' + ,ko: 'Carbs/Food/Time' + ,it: 'Carbs/Food/Time' + ,tr: 'Carbs/Food/Time' + ,zh_cn: 'Carbs/Food/Time' + ,hu: 'Carbs/Food/Time' + } }; language.translations = translations; From 4ace12594e9f85fc4af086b42d601308236f0b9a Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 17 Nov 2020 14:17:17 +0200 Subject: [PATCH 022/194] Move localisation to Crowdin (#6518) * Update Crowdin configuration file * Update Crowdin configuration file * Add languages for pushing * Update Crowdin configuration file * Update source file en.json * New translations en.json (Finnish) * New translations en.json (Finnish) * New translations en.json (Romanian) * New translations en.json (Dutch) * New translations en.json (Croatian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Swedish) * New translations en.json (Slovenian) * New translations en.json (Russian) * New translations en.json (Polish) * New translations en.json (Korean) * New translations en.json (French) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Hungarian) * New translations en.json (Hebrew) * New translations en.json (Greek) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (Norwegian Bokmal) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * Remove folders * New translations en.json (Romanian) * New translations en.json (Korean) * New translations en.json (Croatian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Turkish) * New translations en.json (Swedish) * New translations en.json (Slovenian) * New translations en.json (Russian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Japanese) * New translations en.json (French) * New translations en.json (Italian) * New translations en.json (Hungarian) * New translations en.json (Hebrew) * New translations en.json (Finnish) * New translations en.json (Greek) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Norwegian Bokmal) * New translations en.json (Romanian) * New translations en.json (Korean) * New translations en.json (Croatian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Turkish) * New translations en.json (Swedish) * New translations en.json (Slovenian) * New translations en.json (Russian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Japanese) * New translations en.json (French) * New translations en.json (Italian) * New translations en.json (Hungarian) * New translations en.json (Hebrew) * New translations en.json (Finnish) * New translations en.json (Greek) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Norwegian Bokmal) * Update Crowdin configuration file * New translations en.json (Spanish) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Italian) * New translations en.json (Croatian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Turkish) * New translations en.json (Swedish) * New translations en.json (Slovenian) * New translations en.json (Russian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Hungarian) * New translations en.json (Hebrew) * New translations en.json (Finnish) * New translations en.json (Greek) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Norwegian Bokmal) * Loading all languages now works * * Fix unit tests * Have server load localizations * Adding some more keys * New Crowdin updates (#6531) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (Finnish) * New translations en.json (Japanese) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Swedish) * New translations en.json (Slovenian) * New translations en.json (Russian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Italian) * New translations en.json (Norwegian Bokmal) * New translations en.json (Hungarian) * New translations en.json (Hebrew) * New translations en.json (Greek) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Croatian) * Update source file en.json * New translations en.json (Norwegian Bokmal) * New translations en.json (Norwegian Bokmal) * Remove old translation status tool * Update CONTRIBUTING --- CONTRIBUTING.md | 41 +- app.js | 9 +- crowdin.yml | 3 + lib/client/index.js | 37 +- lib/language.js | 16043 +---------------------- server.js | 8 +- static/translations/js/translations.js | 54 - tests/api.alexa.test.js | 6 +- tests/ar2.test.js | 11 +- tests/basalprofileplugin.test.js | 13 +- tests/cob.test.js | 7 +- tests/dbsize.test.js | 35 +- tests/iob.test.js | 8 +- tests/language.test.js | 5 + tests/loop.test.js | 22 +- tests/openaps.test.js | 21 +- tests/pump.test.js | 20 +- tests/rawbg.test.js | 3 +- tests/upbat.test.js | 12 +- translations/bg_BG.json | 660 + translations/cs_CZ.json | 660 + translations/da_DK.json | 660 + translations/de_DE.json | 660 + translations/el_GR.json | 660 + translations/en/en.json | 1 + translations/es_ES.json | 660 + translations/fi_FI.json | 660 + translations/fr_FR.json | 660 + translations/he_IL.json | 660 + translations/hr_HR.json | 660 + translations/hu_HU.json | 660 + translations/it_IT.json | 660 + translations/ja_JP.json | 660 + translations/ko_KR.json | 660 + translations/nb_NO.json | 660 + translations/nl_NL.json | 660 + translations/pl_PL.json | 660 + translations/pt_BR.json | 660 + translations/ro_RO.json | 660 + translations/ru_RU.json | 660 + translations/sl_SI.json | 660 + translations/sv_SE.json | 660 + translations/tr_TR.json | 660 + translations/zh_CN.json | 660 + translations/zh_TW.json | 660 + views/translationsindex.html | 45 - 46 files changed, 16697 insertions(+), 16207 deletions(-) create mode 100644 crowdin.yml delete mode 100644 static/translations/js/translations.js create mode 100644 translations/bg_BG.json create mode 100644 translations/cs_CZ.json create mode 100644 translations/da_DK.json create mode 100644 translations/de_DE.json create mode 100644 translations/el_GR.json create mode 100644 translations/en/en.json create mode 100644 translations/es_ES.json create mode 100644 translations/fi_FI.json create mode 100644 translations/fr_FR.json create mode 100644 translations/he_IL.json create mode 100644 translations/hr_HR.json create mode 100644 translations/hu_HU.json create mode 100644 translations/it_IT.json create mode 100644 translations/ja_JP.json create mode 100644 translations/ko_KR.json create mode 100644 translations/nb_NO.json create mode 100644 translations/nl_NL.json create mode 100644 translations/pl_PL.json create mode 100644 translations/pt_BR.json create mode 100644 translations/ro_RO.json create mode 100644 translations/ru_RU.json create mode 100644 translations/sl_SI.json create mode 100644 translations/sv_SE.json create mode 100644 translations/tr_TR.json create mode 100644 translations/zh_CN.json create mode 100644 translations/zh_TW.json delete mode 100644 views/translationsindex.html diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7beea2d51a3..64a239ec74f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,6 +36,10 @@ [discord-img]: https://img.shields.io/discord/629952586895851530?label=discord%20chat [discord-url]: https://discord.gg/rTKhrqz +## Translations + +Please visit our [project in Crowdin](https://crowdin.com/project/nightscout) to translate Nigthscout. If you want to add a new language, please get in touch with the dev team in Gitter. + ## Installation for development Nightscout is a Node.js application. The basic installation of the software for local purposes is: @@ -188,8 +192,6 @@ Also if you can't code, it's possible to contribute by improving the documentati | Core developers: | [@jasoncalabrese] [@MilosKozak] [@PieterGit] [@sulkaharo] | | Former Core developers: (not active): | [@bewest] | | Contributing developers: | [@jpcunningh] [@scottleibrand] [@komarserjio] [@jweismann] | -| Release coordination 0.10.x: | [@PieterGit] [@sulkaharo] | -| Release coordination 0.11.x: | [@PieterGit] | | Issue/Pull request coordination: | Please volunteer | | Cleaning up git fork spam: | Please volunteer | | Documentation writers: | [@andrew-warrington] [@unsoluble] [@tynbendad] [@danamlewis] [@rarneson] | @@ -230,41 +232,6 @@ Also if you can't code, it's possible to contribute by improving the documentati | [`upbat` (Uploader Battery)](README.md#upbat-uploader-battery)| [@jpcunningh] | Please volunteer | | [`xdrip-js` (xDrip-js)](README.md#xdrip-js-xdrip-js)| [@jpcunningh] | Please volunteer | -### Translators - -See `/translations` of your Nightscout, to view the current translation coverage and the missing items. -Languages with less than 90% coverage will be removed in a future Nightscout versions. - -| Language | List of translators | Status -| ------------- | -------------------- |-------------------- | -| Български (`bg`) |Please volunteer| OK | -| Čeština (`cs`) |Please volunteer|OK | -| Deutsch (`de`) |[@viderehh] [@herzogmedia] |OK | -| Dansk (`dk`) | [@janrpn] |OK | -| Ελληνικά (`el`)|Please volunteer|Needs attention: 68.5%| -| English (`en`)|Please volunteer|OK| -| Español (`es`) |Please volunteer|OK| -| Suomi (`fi`)|[@sulkaharo] |OK| -| Français (`fr`)|Please volunteer|OK| -| עברית (`he`)| [@jakebloom] |OK| -| Hrvatski (`hr`)|[@OpossumGit]|OK| -| Italiano (`it`)|Please volunteer|OK| -| 日本語 (`ja`)|[@LuminaryXion]|Working on this| -| 한국어 (`ko`)|Please volunteer|Needs attention: 80.6%| -| Norsk (Bokmål) (`nb`)|Please volunteer|OK| -| Nederlands (`nl`)|[@PieterGit]|OK| -| Polski (`pl`)|[@Bartlomiejsz]|OK| -| Português (Brasil) (`pt`)|Please volunteer|OK| -| Română (`ro`)|Please volunteer|OK| -| Русский (`ru`)|[@apanasef]|OK| -| Slovenčina (`sk`)|Please volunteer|OK| -| Svenska (`sv`)|Please volunteer|OK| -| Türkçe (`tr`)|[@diabetlum]|OK| -| 中文(简体) (`zh_cn`) | [@jizhongwen]|OK| -| 中文(繁體) (`zh_tw`) | [@jizhongwen]|Needs attention: 25.0% -| 日本語 (`ja_jp`) | [@LuminaryXion]| - - ### List of all contributors | Contribution area | List of contributors | | ------------------------------------- | -------------------- | diff --git a/app.js b/app.js index 2a94b1dd3e9..f4e3496451d 100644 --- a/app.js +++ b/app.js @@ -154,6 +154,10 @@ function create (env, ctx) { // serve the static content app.use(staticFiles); + app.use('/translations', express.static('translations', { + maxAge + })); + if (ctx.bootErrors && ctx.bootErrors.length > 0) { const bootErrorView = require('./lib/server/booterror')(env, ctx); bootErrorView.setLocals(app.locals); @@ -220,11 +224,6 @@ function create (env, ctx) { , title: 'Nightscout reporting' , type: 'report' } - , "/translations": { - file: "translationsindex.html" - , title: 'Nightscout translations' - , type: 'translations' - } , "/split": { file: "frame.html" , title: '8-user view' diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 00000000000..fb25b791ec4 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,3 @@ +files: + - source: /translations/en/*.json + translation: /translations/%locale_with_underscore%.json diff --git a/lib/client/index.js b/lib/client/index.js index 53515e3b943..4b3ef9e5a1b 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -17,6 +17,8 @@ var receiveDData = require('./receiveddata'); var brushing = false; +var browserSettings; + var client = {}; $('#loadingMessageText').html('Connecting to server'); @@ -69,9 +71,7 @@ client.init = function init (callback) { return; } client.settingsFailed = false; - console.log('Application appears to be online'); - $('#centerMessagePanel').hide(); - client.load(serverSettings, callback); + client.loadLanguage(serverSettings, callback); }).fail(function fail (jqXHR) { // check if we couldn't reach the server at all, show offline message @@ -112,6 +112,33 @@ client.init = function init (callback) { }; +client.loadLanguage = function loadLanguage (serverSettings, callback) { + + $('#loadingMessageText').html('Loading language file'); + + browserSettings = require('./browser-settings'); + client.settings = browserSettings(client, serverSettings, $); + console.log('language is', client.settings.language); + + let filename = language.getFilename(client.settings.language); + + $.ajax({ + method: 'GET' + , url: '/translations/' + filename + }).done(function success (localization) { + language.offerTranslations(localization); + console.log('Application appears to be online'); + $('#centerMessagePanel').hide(); + client.load(serverSettings, callback); + }).fail(function fail () { + console.error('Loading localization failed, continuing with English'); + console.log('Application appears to be online'); + $('#centerMessagePanel').hide(); + client.load(serverSettings, callback); + }); + +} + client.load = function load (serverSettings, callback) { var FORMAT_TIME_12 = '%-I:%M %p' @@ -162,7 +189,6 @@ client.load = function load (serverSettings, callback) { .attr('class', 'tooltip') .style('opacity', 0); - var browserSettings = require('./browser-settings'); client.settings = browserSettings(client, serverSettings, $); language.set(client.settings.language).DOMtranslate($); @@ -1035,8 +1061,7 @@ client.load = function load (serverSettings, callback) { // Alarms and Text handling //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - client.authorizeSocket = function authorizeSocket() { + client.authorizeSocket = function authorizeSocket () { console.log('Authorizing socket'); var auth_data = { diff --git a/lib/language.js b/lib/language.js index 633d7d7edb0..1966f0e4ec0 100644 --- a/lib/language.js +++ b/lib/language.js @@ -2,7 +2,7 @@ var _ = require('lodash'); -function init() { +function init(fs) { function language() { return language; @@ -12,15991 +12,49 @@ function init() { language.lang = 'en'; language.languages = [ - { code: 'bg', language: 'Български', speechCode: 'bg-BG' } - , { code: 'cs', language: 'Čeština', speechCode: 'cs-CZ' } - , { code: 'de', language: 'Deutsch', speechCode: 'de-DE' } - , { code: 'dk', language: 'Dansk', speechCode: 'dk-DK' } - , { code: 'el', language: 'Ελληνικά', speechCode: 'el-GR'} - , { code: 'en', language: 'English', speechCode: 'en-US' } - , { code: 'es', language: 'Español', speechCode: 'es-ES' } - , { code: 'fi', language: 'Suomi', speechCode: 'fi-FI' } - , { code: 'fr', language: 'Français', speechCode: 'fr-FR' } - , { code: 'he', language: 'עברית', speechCode: 'he-IL' } - , { code: 'hr', language: 'Hrvatski', speechCode: 'hr-HR' } - , { code: 'hu', language: 'Magyar', speechCode: 'hu-HU' } - , { code: 'it', language: 'Italiano', speechCode: 'it-IT' } - , { code: 'ja', language: '日本語', speechCode: 'ja-JP' } - , { code: 'ko', language: '한국어', speechCode: 'ko-KR' } - , { code: 'nb', language: 'Norsk (Bokmål)', speechCode: 'no-NO' } - , { code: 'nl', language: 'Nederlands', speechCode: 'nl-NL' } - , { code: 'pl', language: 'Polski', speechCode: 'pl-PL' } - , { code: 'pt', language: 'Português (Brasil)', speechCode: 'pt-BR' } - , { code: 'ro', language: 'Română', speechCode: 'ro-RO' } - , { code: 'ru', language: 'Русский', speechCode: 'ru-RU' } - , { code: 'sk', language: 'Slovenčina', speechCode: 'sk-SK' } - , { code: 'sv', language: 'Svenska', speechCode: 'sv-SE' } - , { code: 'tr', language: 'Türkçe', speechCode: 'tr-TR' } - , { code: 'zh_cn', language: '中文(简体)', speechCode: 'cmn-Hans-CN' } - , { code: 'zh_tw', language: '中文(繁體)', speechCode: 'cmn-Hant-TW' } + { code: 'bg', file: 'bg_BG', language: 'Български', speechCode: 'bg-BG' } + , { code: 'cs', file: 'cs_CZ', language: 'Čeština', speechCode: 'cs-CZ' } + , { code: 'de', file: 'de_DE', language: 'Deutsch', speechCode: 'de-DE' } + , { code: 'dk', file: 'da_DK', language: 'Dansk', speechCode: 'dk-DK' } + , { code: 'el', file: 'el_GR', language: 'Ελληνικά', speechCode: 'el-GR'} + , { code: 'en', file: 'en_US', language: 'English', speechCode: 'en-US' } + , { code: 'es', file: 'es_ES', language: 'Español', speechCode: 'es-ES' } + , { code: 'fi', file: 'fi_FI', language: 'Suomi', speechCode: 'fi-FI' } + , { code: 'fr', file: 'fr_FR', language: 'Français', speechCode: 'fr-FR' } + , { code: 'he', file: 'he_IL', language: 'עברית', speechCode: 'he-IL' } + , { code: 'hr', file: 'hr_HR', language: 'Hrvatski', speechCode: 'hr-HR' } + , { code: 'hu', file: 'hu_HU', language: 'Magyar', speechCode: 'hu-HU' } + , { code: 'it', file: 'it_IT', language: 'Italiano', speechCode: 'it-IT' } + , { code: 'ja', file: 'ja_JP', language: '日本語', speechCode: 'ja-JP' } + , { code: 'ko', file: 'ko_KR', language: '한국어', speechCode: 'ko-KR' } + , { code: 'nb', file: 'nb_NO', language: 'Norsk (Bokmål)', speechCode: 'no-NO' } + , { code: 'nl', file: 'nl_NL', language: 'Nederlands', speechCode: 'nl-NL' } + , { code: 'pl', file: 'pl_PL', language: 'Polski', speechCode: 'pl-PL' } + , { code: 'pt', file: 'pr_BR', language: 'Português (Brasil)', speechCode: 'pt-BR' } + , { code: 'ro', file: 'ro_RO', language: 'Română', speechCode: 'ro-RO' } + , { code: 'ru', file: 'ru_RU', language: 'Русский', speechCode: 'ru-RU' } + , { code: 'sk', file: 'sl_SL', language: 'Slovenčina', speechCode: 'sk-SK' } + , { code: 'sv', file: 'sv_SE', language: 'Svenska', speechCode: 'sv-SE' } + , { code: 'tr', file: 'tr_TR', language: 'Türkçe', speechCode: 'tr-TR' } + , { code: 'zh_cn', file: 'zh_CN', language: '中文(简体)', speechCode: 'cmn-Hans-CN' } + , { code: 'zh_tw', file: 'zh_TW', language: '中文(繁體)', speechCode: 'cmn-Hant-TW' } ]; - var translations = { - // Server - 'Listening on port' : { - cs: 'Poslouchám na portu' - ,es: 'Escuchando en el puerto' - ,dk: 'Lytter på port' - ,fr: 'Ecoute sur port' - ,pt: 'Escutando porta' - ,sv: 'Lyssnar på port' - ,ro: 'Activ pe portul' - ,el: 'Σύνδεση στην πόρτα' - ,bg: 'Активиране на порта' - ,hr: 'Slušanje na portu' - ,it: 'Porta in ascolto' - ,ja: '接続可能' - ,fi: 'Kuuntelen porttia' - ,nb: 'Lytter på port' - ,he: 'מקשיב על פתחה' - ,pl: 'Słucham na porcie' - ,ru: 'Прослушивание порта' - ,sk: 'Načúvam na porte' - ,de: 'Lauscht auf Port' - ,nl: 'Luistert op poort' - ,ko: '포트에서 수신' - ,tr: 'Port dinleniyor' - ,zh_cn: '正在监听端口' - ,hu: 'Port figyelése' - } - // Client - ,'Mo' : { - cs: 'Po' - ,de: 'Mo' - ,es: 'Lu' - ,fr: 'Lu' - ,el: 'Δε' - ,pt: 'Seg' - ,sv: 'Mån' - ,ro: 'Lu' - ,bg: 'Пон' - ,hr: 'Pon' - ,it: 'Lun' - ,ja: '月' - ,dk: 'Man' - ,fi: 'Ma' - ,nb: 'Man' - ,he: 'ב' - ,pl: 'Pn' - ,ru: 'Пон' - ,sk: 'Po' - ,nl: 'Ma' - ,ko: '월' - ,tr: 'Pzt' - ,zh_cn: '一' - ,hu: 'Hé' - } - ,'Tu' : { - cs: 'Út' - ,de: 'Di' - ,es: 'Mar' - ,fr: 'Ma' - ,el: 'Τρ' - ,pt: 'Ter' - ,sv: 'Tis' - ,ro: 'Ma' - ,bg: 'Вт' - ,hr: 'Uto' - ,it: 'Mar' - ,ja: '火' - ,dk: 'Tir' - ,fi: 'Ti' - ,nb: 'Tir' - ,he: 'ג' - ,pl: 'Wt' - ,ru: 'Вт' - ,sk: 'Ut' - ,nl: 'Di' - ,ko: '화' - ,tr: 'Sal' - ,zh_cn: '二' - ,hu: 'Ke' - } - ,'We' : { - cs: 'St' - ,de: 'Mi' - ,es: 'Mie' - ,fr: 'Me' - ,el: 'Τε' - ,pt: 'Qua' - ,sv: 'Ons' - ,ro: 'Mie' - ,bg: 'Ср' - ,hr: 'Sri' - ,it: 'Mer' - ,ja: '水' - ,dk: 'Ons' - ,fi: 'Ke' - ,nb: 'Ons' - ,he: 'ד' - ,pl: 'Śr' - ,ru: 'Ср' - ,sk: 'St' - ,nl: 'Wo' - ,ko: '수' - ,tr: 'Çar' - ,zh_cn: '三' - ,hu: 'Sze' - } - ,'Th' : { - cs: 'Čt' - ,de: 'Do' - ,es: 'Jue' - ,fr: 'Je' - ,el: 'Πε' - ,pt: 'Qui' - ,sv: 'Tor' - ,ro: 'Jo' - ,bg: 'Четв' - ,hr: 'Čet' - ,it: 'Gio' - ,ja: '木' - ,dk: 'Tor' - ,fi: 'To' - ,nb: 'Tor' - ,he: 'ה' - ,pl: 'Cz' - ,ru: 'Чт' - ,sk: 'Št' - ,nl: 'Do' - ,ko: '목' - ,tr: 'Per' - ,zh_cn: '四' - ,hu: 'Csü' - } - ,'Fr' : { - cs: 'Pá' - ,de: 'Fr' - ,es: 'Vie' - ,fr: 'Ve' - ,el: 'Πα' - ,pt: 'Sex' - ,sv: 'Fre' - ,ro: 'Vi' - ,bg: 'Пет' - ,hr: 'Pet' - ,it: 'Ven' - ,ja: '金' - ,dk: 'Fre' - ,fi: 'Pe' - ,nb: 'Fre' - ,he: 'ו' - ,pl: 'Pt' - ,ru: 'Пт' - ,sk: 'Pi' - ,nl: 'Vr' - ,ko: '금' - ,tr: 'Cum' - ,zh_cn: '五' - ,hu: 'Pé' - } - ,'Sa' : { - cs: 'So' - ,de: 'Sa' - ,es: 'Sab' - ,fr: 'Sa' - ,el: 'Σα' - ,pt: 'Sab' - ,sv: 'Lör' - ,ro: 'Sa' - ,bg: 'Съб' - ,hr: 'Sub' - ,it: 'Sab' - ,ja: '土' - ,dk: 'Lør' - ,fi: 'La' - ,nb: 'Lør' - ,he: 'ש' - ,pl: 'So' - ,ru: 'Сб' - ,sk: 'So' - ,nl: 'Za' - ,ko: '토' - ,tr: 'Cmt' - ,zh_cn: '六' - ,hu: 'Szo' - } - ,'Su' : { - cs: 'Ne' - ,de: 'So' - ,es: 'Dom' - ,fr: 'Di' - ,el: 'Κυ' - ,pt: 'Dom' - ,sv: 'Sön' - ,ro: 'Du' - ,bg: 'Нед' - ,hr: 'Ned' - ,it: 'Dom' - ,ja: '日' - ,dk: 'Søn' - ,fi: 'Su' - ,nb: 'Søn' - ,he: 'א' - ,pl: 'Nd' - ,ru: 'Вс' - ,sk: 'Ne' - ,nl: 'Zo' - ,ko: '일' - ,tr: 'Paz' - ,zh_cn: '日' - ,hu: 'Vas' - } - ,'Monday' : { - cs: 'Pondělí' - ,de: 'Montag' - ,es: 'Lunes' - ,fr: 'Lundi' - ,el: 'Δευτέρα' - ,pt: 'Segunda' - ,sv: 'Måndag' - ,ro: 'Luni' - ,bg: 'Понеделник' - ,hr: 'Ponedjeljak' - ,it: 'Lunedì' - ,ja: '月曜日' - ,dk: 'Mandag' - ,fi: 'Maanantai' - ,nb: 'Mandag' - ,he: 'שני' - ,pl: 'Poniedziałek' - ,ru: 'Понедельник' - ,sk: 'Pondelok' - ,nl: 'Maandag' - ,ko: '월요일' - ,tr: 'Pazartesi' - ,zh_cn: '星期一' - ,hu: 'Hétfő' - } - ,'Tuesday' : { - cs: 'Úterý' - ,de: 'Dienstag' - ,es: 'Martes' - ,fr: 'Mardi' - ,el: 'Τρίτη' - ,pt: 'Terça' - ,ro: 'Marți' - ,bg: 'Вторник' - ,hr: 'Utorak' - ,sv: 'Tisdag' - ,it: 'Martedì' - ,ja: '火曜日' - ,dk: 'Tirsdag' - ,fi: 'Tiistai' - ,nb: 'Tirsdag' - ,he: 'שלישי' - ,pl: 'Wtorek' - ,ru: 'Вторник' - ,sk: 'Utorok' - ,nl: 'Dinsdag' - ,ko: '화요일' - ,tr: 'Salı' - ,zh_cn: '星期二' - ,hu: 'Kedd' - } - ,'Wednesday' : { - cs: 'Středa' - ,de: 'Mittwoch' - ,es: 'Miércoles' - ,fr: 'Mercredi' - ,el: 'Τετάρτη' - ,pt: 'Quarta' - ,sv: 'Onsdag' - ,ro: 'Miercuri' - ,bg: 'Сряда' - ,hr: 'Srijeda' - ,it: 'Mercoledì' - ,ja: '水曜日' - ,dk: 'Onsdag' - ,fi: 'Keskiviikko' - ,nb: 'Onsdag' - ,he: 'רביעי' - ,pl: 'Środa' - ,ru: 'Среда' - ,sk: 'Streda' - ,nl: 'Woensdag' - ,ko: '수요일' - ,tr: 'Çarşamba' - ,zh_cn: '星期三' - ,hu: 'Szerda' - } - ,'Thursday' : { - cs: 'Čtvrtek' - ,de: 'Donnerstag' - ,es: 'Jueves' - ,fr: 'Jeudi' - ,el: 'Πέμπτη' - ,pt: 'Quinta' - ,sv: 'Torsdag' - ,ro: 'Joi' - ,bg: 'Четвъртък' - ,hr: 'Četvrtak' - ,it: 'Giovedì' - ,ja: '木曜日' - ,dk: 'Torsdag' - ,fi: 'Torstai' - ,nb: 'Torsdag' - ,he: 'חמישי' - ,pl: 'Czwartek' - ,ru: 'Четверг' - ,sk: 'Štvrtok' - ,nl: 'Donderdag' - ,ko: '목요일' - ,tr: 'Perşembe' - ,zh_cn: '星期四' - ,hu: 'Csütörtök' - } - ,'Friday' : { - cs: 'Pátek' - ,de: 'Freitag' - ,fr: 'Vendredi' - ,el: 'Παρασκευή' - ,pt: 'Sexta' - ,sv: 'Fredag' - ,ro: 'Vineri' - ,es: 'Viernes' - ,bg: 'Петък' - ,hr: 'Petak' - ,it: 'Venerdì' - ,ja: '金曜日' - ,dk: 'Fredag' - ,fi: 'Perjantai' - ,nb: 'Fredag' - ,he: 'שישי' - ,pl: 'Piątek' - ,ru: 'Пятница' - ,sk: 'Piatok' - ,nl: 'Vrijdag' - ,ko: '금요일' - ,tr: 'Cuma' - ,zh_cn: '星期五' - ,hu: 'Péntek' - } - ,'Saturday' : { - cs: 'Sobota' - ,de: 'Samstag' - ,es: 'Sábado' - ,fr: 'Samedi' - ,el: 'Σάββατο' - ,pt: 'Sábado' - ,ro: 'Sâmbătă' - ,bg: 'Събота' - ,hr: 'Subota' - ,sv: 'Lördag' - ,it: 'Sabato' - ,ja: '土曜日' - ,dk: 'Lørdag' - ,fi: 'Lauantai' - ,nb: 'Lørdag' - ,he: 'שבת' - ,pl: 'Sobota' - ,ru: 'Суббота' - ,sk: 'Sobota' - ,nl: 'Zaterdag' - ,ko: '토요일' - ,tr: 'Cumartesi' - ,zh_cn: '星期六' - ,hu: 'Szombat' - } - ,'Sunday' : { - cs: 'Neděle' - ,de: 'Sonntag' - ,es: 'Domingo' - ,fr: 'Dimanche' - ,el: 'Κυριακή' - ,pt: 'Domingo' - ,ro: 'Duminică' - ,bg: 'Неделя' - ,hr: 'Nedjelja' - ,sv: 'Söndag' - ,it: 'Domenica' - ,ja: '日曜日' - ,dk: 'Søndag' - ,fi: 'Sunnuntai' - ,nb: 'Søndag' - ,he: 'ראשון' - ,pl: 'Niedziela' - ,ru: 'Воскресенье' - ,sk: 'Nedeľa' - ,nl: 'Zondag' - ,ko: '일요일' - ,tr: 'Pazar' - ,zh_cn: '星期日' - ,hu: 'Vasárnap' - } - ,'Category' : { - cs: 'Kategorie' - ,de: 'Kategorie' - ,es: 'Categoría' - ,fr: 'Catégorie' - ,el: 'Κατηγορία' - ,pt: 'Categoria' - ,sv: 'Kategori' - ,ro: 'Categorie' - ,bg: 'Категория' - ,hr: 'Kategorija' - ,it:'Categoria' - ,ja: 'カテゴリー' - ,dk: 'Kategori' - ,fi: 'Luokka' - ,nb: 'Kategori' - ,he: 'קטגוריה' - ,pl: 'Kategoria' - ,ru: 'Категория' - ,sk: 'Kategória' - ,nl: 'Categorie' - ,ko: '분류' - ,tr: 'Kategori' - ,zh_cn: '类别' - ,hu: 'Kategória' - } - ,'Subcategory' : { - cs: 'Podkategorie' - ,de: 'Unterkategorie' - ,es: 'Subcategoría' - ,fr: 'Sous-catégorie' - ,el: 'Υποκατηγορία' - ,pt: 'Subcategoria' - ,sv: 'Underkategori' - ,ro: 'Subcategorie' - ,bg: 'Подкатегория' - ,hr: 'Podkategorija' - ,it: 'Sottocategoria' - ,ja: 'サブカテゴリー' - ,dk: 'Underkategori' - ,fi: 'Alaluokka' - ,nb: 'Underkategori' - ,he: 'תת-קטגוריה' - ,pl: 'Podkategoria' - ,ru: 'Подкатегория' - ,sk: 'Podkategória' - ,nl: 'Subcategorie' - ,ko: '세부 분류' - ,tr: 'Altkategori' - ,zh_cn: '子类别' - ,hu: 'Alkategória' - } - ,'Name' : { - cs: 'Jméno' - ,de: 'Name' - ,es: 'Nombre' - ,fr: 'Nom' - ,el: 'Όνομα' - ,pt: 'Nome' - ,sv: 'Namn' - ,ro: 'Nume' - ,bg: 'Име' - ,hr: 'Ime' - ,it: 'Nome' - ,ja: '名前' - ,dk: 'Navn' - ,fi: 'Nimi' - ,nb: 'Navn' - ,he: 'שם' - ,pl: 'Imie' - ,ru: 'Имя' - ,sk: 'Meno' - ,nl: 'Naam' - ,ko: '프로파일 명' - ,tr: 'İsim' - ,zh_cn: '名称' - ,hu: 'Név' - } - ,'Today' : { - cs: 'Dnes' - ,de: 'Heute' - ,es: 'Hoy' - ,fr: 'Aujourd\'hui' - ,el: 'Σήμερα' - ,pt: 'Hoje' - ,ro: 'Astăzi' - ,bg: 'Днес' - ,hr: 'Danas' - ,sv: 'Idag' - ,it: 'Oggi' - ,ja: '今日' - ,dk: 'I dag' - ,fi: 'Tänään' - ,nb: 'I dag' - ,he: 'היום' - ,pl: 'Dziś' - ,ru: 'Сегодня' - ,sk: 'Dnes' - ,nl: 'Vandaag' - ,ko: '오늘' - ,tr: 'Bugün' - ,zh_cn: '今天' - ,hu: 'Ma' - } - ,'Last 2 days' : { - cs: 'Poslední 2 dny' - ,de: 'Letzten 2 Tage' - ,es: 'Últimos 2 días' - ,fr: '2 derniers jours' - ,el: 'Τελευταίες 2 μέρες' - ,pt: 'Últimos 2 dias' - ,ro: 'Ultimele 2 zile' - ,bg: 'Последните 2 дни' - ,hr: 'Posljednja 2 dana' - ,sv: 'Senaste 2 dagarna' - ,it: 'Ultimi 2 giorni' - ,ja: '直近の2日間' - ,dk: 'Sidste 2 dage' - ,fi: 'Edelliset 2 päivää' - ,nb: 'Siste 2 dager' - ,he: 'יומיים אחרונים' - ,pl: 'Ostatnie 2 dni' - ,ru: 'Прошедшие 2 дня' - ,sk: 'Posledné 2 dni' - ,nl: 'Afgelopen 2 dagen' - ,ko: '지난 2일' - ,tr: 'Son 2 gün' - ,zh_cn: '过去2天' - ,hu: 'Utolsó 2 nap' - } - ,'Last 3 days' : { - cs: 'Poslední 3 dny' - ,de: 'Letzten 3 Tage' - ,es: 'Últimos 3 días' - ,fr: '3 derniers jours' - ,el: 'Τελευταίες 3 μέρες' - ,pt: 'Últimos 3 dias' - ,sv: 'Senaste 3 dagarna' - ,ro: 'Ultimele 3 zile' - ,bg: 'Последните 3 дни' - ,hr: 'Posljednja 3 dana' - ,it: 'Ultimi 3 giorni' - ,ja: '直近の3日間' - ,dk: 'Sidste 3 dage' - ,fi: 'Edelliset 3 päivää' - ,nb: 'Siste 3 dager' - ,he: 'שלושה ימים אחרונים' - ,pl: 'Ostatnie 3 dni' - ,ru: 'Прошедшие 3 дня' - ,sk: 'Posledné 3 dni' - ,nl: 'Afgelopen 3 dagen' - ,ko: '지난 3일' - ,tr: 'Son 3 gün' - ,zh_cn: '过去3天' - ,hu: 'Utolsó 3 nap' - } - ,'Last week' : { - cs: 'Poslední týden' - ,de: 'Letzte Woche' - ,es: 'Semana pasada' - ,fr: 'Semaine Dernière' - ,el: 'Τελευταία εβδομάδα' - ,pt: 'Semana passada' - ,ro: 'Săptămâna trecută' - ,bg: 'Последната седмица' - ,hr: 'Protekli tjedan' - ,sv: 'Senaste veckan' - ,it: 'Settimana scorsa' - ,ja: '直近の1週間' - ,dk: 'Sidste uge' - ,fi: 'Viime viikko' - ,nb: 'Siste uke' - ,he: 'שבוע אחרון' - ,pl: 'Ostatni tydzień' - ,ru: 'Прошедшая неделя' - ,sk: 'Posledný týždeň' - ,nl: 'Afgelopen week' - ,ko: '지난주' - ,tr: 'Geçen Hafta' - ,zh_cn: '上周' - ,hu: 'Előző hét' - } - ,'Last 2 weeks' : { - cs: 'Poslední 2 týdny' - ,de: 'Letzten 2 Wochen' - ,es: 'Últimas 2 semanas' - ,fr: '2 dernières semaines' - ,el: 'Τελευταίες 2 εβδομάδες' - ,pt: 'Últimas 2 semanas' - ,ro: 'Ultimele 2 săptămâni' - ,bg: 'Последните 2 седмици' - ,hr: 'Protekla 2 tjedna' - ,sv: 'Senaste 2 veckorna' - ,it: 'Ultime 2 settimane' - ,ja: '直近の2週間' - ,dk: 'Sidste 2 uger' - ,fi: 'Viimeiset 2 viikkoa' - ,nb: 'Siste 2 uker' - ,he: 'שבועיים אחרונים' - ,pl: 'Ostatnie 2 tygodnie' - ,ru: 'Прошедшие 2 недели' - ,sk: 'Posledné 2 týždne' - ,nl: 'Afgelopen 2 weken' - ,ko: '지난 2주' - ,tr: 'Son 2 hafta' - ,zh_cn: '过去2周' - ,hu: 'Előző 2 hét' - } - ,'Last month' : { - cs: 'Poslední měsíc' - ,de: 'Letzter Monat' - ,es: 'Mes pasado' - ,fr: 'Mois dernier' - ,el: 'Τελευταίος μήνας' - ,pt: 'Mês passado' - ,ro: 'Ultima lună' - ,bg: 'Последният месец' - ,hr: 'Protekli mjesec' - ,sv: 'Senaste månaden' - ,it: 'Mese scorso' - ,ja: '直近の1ヶ月' - ,dk: 'Sidste måned' - ,fi: 'Viime kuu' - ,nb: 'Siste måned' - ,he: 'חודש אחרון' - ,pl: 'Ostatni miesiąc' - ,ru: 'Прошедший месяц' - ,sk: 'Posledný mesiac' - ,nl: 'Afgelopen maand' - ,ko: '지난달' - ,tr: 'Geçen Ay' - ,zh_cn: '上个月' - ,hu: 'Előző hónap' - } - ,'Last 3 months' : { - cs: 'Poslední 3 měsíce' - ,de: 'Letzten 3 Monate' - ,es: 'Últimos 3 meses' - ,fr: '3 derniers mois' - ,el: 'Τελευταίοι 3 μήνες' - ,pt: 'Últimos 3 meses' - ,ro: 'Ultimele 3 luni' - ,bg: 'Последните 3 месеца' - ,hr: 'Protekla 3 mjeseca' - ,sv: 'Senaste 3 månaderna' - ,it: 'Ultimi 3 mesi' - ,ja: '直近の3ヶ月' - ,dk: 'Sidste 3 måneder' - ,fi: 'Viimeiset 3 kuukautta' - ,nb: 'Siste 3 måneder' - ,he: 'שלושה חודשים אחרונים' - ,pl: 'Ostatnie 3 miesiące' - ,ru: 'Прошедшие 3 месяца' - ,sk: 'Posledné 3 mesiace' - ,nl: 'Afgelopen 3 maanden' - ,ko: '지난 3달' - ,tr: 'Son 3 ay' - ,zh_cn: '过去3个月' - ,hu: 'Előző 3 hónap' - } - , 'between': { - cs: 'between' - ,de: 'between' - ,es: 'between' - ,fr: 'between' - ,el: 'between' - ,pt: 'between' - ,sv: 'between' - ,ro: 'between' - ,bg: 'between' - ,hr: 'between' - ,it: 'between' - ,ja: 'between' - ,dk: 'between' - ,fi: 'between' - ,nb: 'mellom' - ,he: 'between' - ,pl: 'between' - ,ru: 'между' - ,sk: 'between' - ,nl: 'tussen' - ,ko: 'between' - ,tr: 'between' - ,zh_cn: 'between' - ,hu: 'között' - } - , 'around': { - cs: 'around' - ,de: 'around' - ,es: 'around' - ,fr: 'around' - ,el: 'around' - ,pt: 'around' - ,sv: 'around' - ,ro: 'around' - ,bg: 'around' - ,hr: 'around' - ,it: 'around' - ,ja: 'around' - ,dk: 'around' - ,fi: 'around' - ,nb: 'rundt' - ,he: 'around' - ,pl: 'around' - ,ru: 'около' - ,sk: 'around' - ,nl: 'rond' - ,ko: 'around' - ,tr: 'around' - ,zh_cn: 'around' - ,hu: 'körülbelül' - } - , 'and': { - cs: 'and' - ,de: 'and' - ,es: 'and' - ,fr: 'and' - ,el: 'and' - ,pt: 'and' - ,sv: 'and' - ,ro: 'and' - ,bg: 'and' - ,hr: 'and' - ,it: 'and' - ,ja: 'and' - ,dk: 'and' - ,fi: 'and' - ,nb: 'og' - ,he: 'and' - ,pl: 'and' - ,ru: 'и' - ,sk: 'and' - ,nl: 'en' - ,ko: 'and' - ,tr: 'and' - ,zh_cn: 'and' - ,hu: 'és' - } - ,'From' : { - cs: 'Od' - ,de: 'Von' - ,es: 'Desde' - ,fr: 'Du' - ,el: 'Από' - ,pt: 'De' - ,sv: 'Från' - ,ro: 'De la' - ,bg: 'От' - ,hr: 'Od' - ,it: 'Da' - ,ja: '開始日' - ,dk: 'Fra' - ,fi: 'Alkaen' - ,nb: 'Fra' - ,he: 'מ' - ,pl: 'Od' - ,ru: 'С' - ,sk: 'Od' - ,nl: 'Van' - ,ko: '시작일' - ,tr: 'Başlangıç' - ,zh_cn: '从' - ,hu: 'Tól' - } - ,'To' : { - cs: 'Do' - ,de: 'Bis' - ,es: 'Hasta' - ,fr: 'Au' - ,el: 'Έως' - ,pt: 'a' - ,ro: 'La' - ,bg: 'До' - ,hr: 'Do' - ,sv: 'Till' - ,it: 'A' - ,ja: '終了日' - ,dk: 'Til' - ,fi: 'Asti' - ,nb: 'Til' - ,he: 'עד' - ,pl: 'Do' - ,ru: 'По' - ,sk: 'Do' - ,nl: 'Tot' - ,ko: '종료일' - ,tr: 'Bitiş' - ,zh_cn: '到' - ,hu: 'Ig' - } - ,'Notes' : { - cs: 'Poznámky' - ,de: 'Notiz' - ,es: 'Notas' - ,fr: 'Notes' - ,el: 'Σημειώσεις' - ,pt: 'Notas' - ,sv: 'Notering' - ,ro: 'Note' - ,bg: 'Бележки' - ,hr: 'Bilješke' - ,it: 'Note' - ,ja: 'メモ' - ,dk: 'Noter' - ,fi: 'Merkinnät' - ,nb: 'Notater' - ,he: 'הערות' - ,pl: 'Uwagi' - ,ru: 'Примечания' - ,sk: 'Poznámky' - ,nl: 'Notities' - ,ko: '메모' - ,tr: 'Not' - ,zh_cn: '记录' - ,hu: 'Jegyzetek' - } - ,'Food' : { - cs: 'Jídlo' - ,de: 'Ernährung' - ,es: 'Comida' - ,fr: 'Nourriture' - ,el: 'Φαγητό' - ,pt: 'Comida' - ,sv: 'Föda' - ,ro: 'Mâncare' - ,bg: 'Храна' - ,hr: 'Hrana' - ,it: 'Cibo' - ,ja: '食事' - ,dk: 'Mad' - ,fi: 'Ruoka' - ,nb: 'Mat' - ,he: 'אוכל' - ,pl: 'Jedzenie' - ,ru: 'Еда' - ,sk: 'Jedlo' - ,nl: 'Voeding' - ,ko: '음식' - ,tr: 'Gıda' - ,zh_cn: '食物' - ,hu: 'Étel' - } - ,'Insulin' : { - cs: 'Inzulín' - ,de: 'Insulin' - ,es: 'Insulina' - ,fr: 'Insuline' - ,el: 'Ινσουλίνη' - ,pt: 'Insulina' - ,ro: 'Insulină' - ,bg: 'Инсулин' - ,hr: 'Inzulin' - ,sv: 'Insulin' - ,it: 'Insulina' - ,ja: 'インスリン' - ,dk: 'Insulin' - ,fi: 'Insuliini' - ,nb: 'Insulin' - ,he: 'אינסולין' - ,pl: 'Insulina' - ,ru: 'Инсулин' - ,sk: 'Inzulín' - ,nl: 'Insuline' - ,ko: '인슐린' - ,tr: 'İnsülin' - ,zh_cn: '胰岛素' - ,hu: 'Inzulin' - } - ,'Carbs' : { - cs: 'Sacharidy' - ,de: 'Kohlenhydrate' - ,es: 'Hidratos de carbono' - ,fr: 'Glucides' - ,el: 'Υδατάνθρακες' - ,pt: 'Carboidrato' - ,ro: 'Carbohidrați' - ,bg: 'Въглехидрати' - ,hr: 'Ugljikohidrati' - ,sv: 'Kolhydrater' - ,it: 'Carboidrati' - ,ja: '炭水化物' - ,dk: 'Kulhydrater' - ,fi: 'Hiilihydraatit' - ,nb: 'Karbohydrater' - ,he: 'פחמימות' - ,pl: 'Węglowodany' - ,ru: 'Углеводы' - ,sk: 'Sacharidy' - ,nl: 'Koolhydraten' - ,ko: '탄수화물' - ,tr: 'Karbonhidrat' - ,zh_cn: '碳水化合物' - ,hu: 'Szénhidrát' - } - ,'Notes contain' : { - cs: 'Poznámky obsahují' - ,de: 'Notizen enthalten' - ,he: 'ההערות מכילות' - ,es: 'Contenido de las notas' - ,fr: 'Notes contiennent' - ,el: 'Οι σημειώσεις περιέχουν' - ,pt: 'Notas contém' - ,ro: 'Conținut note' - ,bg: 'бележките съдържат' - ,hr: 'Sadržaj bilješki' - ,sv: 'Notering innehåller' - ,it: 'Contiene note' - ,ja: 'メモ内容' - ,dk: 'Noter indeholder' - ,fi: 'Merkinnät sisältävät' - ,nb: 'Notater inneholder' - ,pl: 'Zawierają uwagi' - ,ru: 'Примечания содержат' - ,sk: 'Poznámky obsahujú' - ,nl: 'Inhoud aantekening' - ,ko: '메모 포함' - ,tr: 'Notlar içerir' - ,zh_cn: '记录包括' - ,hu: 'Jegyzet tartalmazza' - } - ,'Target BG range bottom' : { - cs: 'Cílová glykémie spodní' - ,de: 'Vorgabe unteres BG-Ziel' - ,es: 'Objetivo inferior de glucemia' - ,fr: 'Limite inférieure glycémie' - ,el: 'Στόχος γλυκόζης - Κάτω όριο' - ,pt: 'Limite inferior de glicemia' - ,ro: 'Limită de jos a glicemiei' - ,bg: 'Долна граница на КЗ' - ,hr: 'Ciljna donja granica GUK-a' - ,sv: 'Gräns för nedre blodsockervärde' - ,it: 'Limite inferiore della glicemia' - ,ja: '目標血糖値 下限' - ,dk: 'Nedre grænse for blodsukkerværdier' - ,fi: 'Tavoitealueen alaraja' - ,nb: 'Nedre grense for blodsukkerverdier' - ,he: 'טווח מטרה סף תחתון' - ,pl: 'Docelowy zakres glikemii, dolny' - ,ru: 'Нижний порог целевых значений СК' - ,sk: 'Cieľová glykémia spodná' - ,nl: 'Ondergrens doelbereik glucose' - ,ko: '최저 목표 혈당 범위' - ,tr: 'Hedef KŞ aralığı düşük' - ,zh_cn: '目标血糖范围 下限' - ,hu: 'Alsó cukorszint határ' - } - ,'top' : { - cs: 'horní' - ,de: 'oben' - ,es: 'Superior' - ,fr: 'Supérieure' - ,el: 'Πάνω όριο' - ,pt: 'Superior' - ,ro: 'Sus' - ,bg: 'горна' - ,hr: 'Gornja' - ,sv: 'Toppen' - ,it: 'Superiore' - ,ja: '上限' - ,dk: 'Top' - ,fi: 'yläraja' - ,nb: 'Topp' - ,he: 'למעלה' - ,pl: 'górny' - ,ru: 'Верхний' - ,sk: 'horná' - ,nl: 'Top' - ,ko: '최고치' - ,tr: 'Üstü' - ,zh_cn: '上限' - ,hu: 'Felső' - } - ,'Show' : { - cs: 'Zobraz' - ,de: 'Zeigen' - ,es: 'Mostrar' - ,fr: 'Montrer' - ,el: 'Εμφάνιση' - ,pt: 'Mostrar' - ,ro: 'Arată' - ,sv: 'Visa' - ,bg: 'Покажи' - ,hr: 'Prikaži' - ,it: 'Mostra' - ,ja: '作成' - ,dk: 'Vis' - ,fi: 'Näytä' - ,nb: 'Vis' - ,he: 'הצג' - ,pl: 'Pokaż' - ,ru: 'Показать' - ,sk: 'Ukáž' - ,nl: 'Laat zien' - ,ko: '확인' - ,tr: 'Göster' - ,zh_cn: '生成' - ,hu: 'Mutasd' - } - ,'Display' : { - cs: 'Zobraz' - ,de: 'Anzeigen' - ,es: 'Visualizar' - ,fr: 'Afficher' - ,el: 'Εμφάνιση' - ,pt: 'Visualizar' - ,ro: 'Afișează' - ,bg: 'Покажи' - ,hr: 'Prikaži' - ,sv: 'Visa' - ,it: 'Schermo' - ,ja: '表示' - ,dk: 'Vis' - ,fi: 'Näyttö' - ,nb: 'Vis' - ,he: 'תצוגה' - ,pl: 'Wyświetl' - ,ru: 'Визуально' - ,sk: 'Zobraz' - ,nl: 'Weergeven' - ,ko: '출력' - ,tr: 'Görüntüle' - ,zh_cn: '显示' - ,hu: 'Ábrázol' - } - ,'Loading' : { - cs: 'Nahrávám' - ,de: 'Laden' - ,es: 'Cargando' - ,fr: 'Chargement' - ,el: 'Ανάκτηση' - ,pt: 'Carregando' - ,ro: 'Se încarcă' - ,bg: 'Зареждане' - ,hr: 'Učitavanje' - ,sv: 'Laddar' - ,it: 'Carico' - ,ja: 'ロード中' - ,dk: 'Indlæser' - ,fi: 'Lataan' - ,nb: 'Laster' - ,he: 'טוען' - ,pl: 'Ładowanie' - ,ru: 'Загрузка' - ,sk: 'Nahrávam' - ,nl: 'Laden' - ,ko: '로딩' - ,tr: 'Yükleniyor' - ,zh_cn: '载入中' - ,hu: 'Betöltés' - } - ,'Loading profile' : { - cs: 'Nahrávám profil' - ,de: 'Lade Profil' - ,es: 'Cargando perfil' - ,fr: 'Chargement du profil' - ,el: 'Ανάκτηση Προφίλ' - ,pt: 'Carregando perfil' - ,sv: 'Laddar profil' - ,ro: 'Încarc profilul' - ,bg: 'Зареждане на профил' - ,hr: 'Učitavanje profila' - ,it: 'Carico il profilo' - ,ja: 'プロフィールロード中' - ,dk: 'Indlæser profil' - ,fi: 'Lataan profiilia' - ,nb: 'Leser profil' - ,he: 'טוען פרופיל' - ,pl: 'Ładowanie profilu' - ,ru: 'Загрузка профиля' - ,sk: 'Nahrávam profil' - ,nl: 'Profiel laden' - ,ko: '프로파일 로딩' - ,tr: 'Profil yükleniyor' - ,zh_cn: '载入配置文件' - ,hu: 'Profil betöltése' - } - ,'Loading status' : { - cs: 'Nahrávám status' - ,de: 'Lade Status' - ,es: 'Cargando estado' - ,fr: 'Statut du chargement' - ,el: 'Ανάκτηση Κατάστασης' - ,pt: 'Carregando status' - ,sv: 'Laddar status' - ,ro: 'Încarc statusul' - ,bg: 'Зареждане на статус' - ,hr: 'Učitavanje statusa' - ,it: 'Stato di caricamento' - ,ja: 'ステータスロード中' - ,dk: 'Indlæsnings status' - ,fi: 'Lataan tilaa' - ,nb: 'Leser status' - ,he: 'טוען סטטוס' - ,pl: 'Status załadowania' - ,ru: 'Загрузка состояния' - ,sk: 'Nahrávam status' - ,nl: 'Laadstatus' - ,ko: '상태 로딩' - ,tr: 'Durum Yükleniyor' - ,zh_cn: '载入状态' - ,hu: 'Állapot betöltése' - } - ,'Loading food database' : { - cs: 'Nahrávám databázi jídel' - ,de: 'Lade Ernährungs-Datenbank' - ,es: 'Cargando base de datos de alimentos' - ,fr: 'Chargement de la base de données alimentaire' - ,el: 'Ανάκτηση Βάσης Δεδομένων Φαγητών' - ,pt: 'Carregando dados de alimentos' - ,sv: 'Laddar födoämnesdatabas' - ,ro: 'Încarc baza de date de alimente' - ,bg: 'Зареждане на данни с храни' - ,hr: 'Učitavanje baze podataka o hrani' - ,it: 'Carico database alimenti' - ,ja: '食事データベースロード中' - ,dk: 'Indlæser mad database' - ,fi: 'Lataan ruokatietokantaa' - ,nb: 'Leser matdatabase' - ,he: 'טוען נתוני אוכל' - ,pl: 'Ładowanie bazy posiłków' - ,ru: 'Загрузка БД продуктов' - ,sk: 'Nahrávam databázu jedál' - ,nl: 'Voeding database laden' - ,ko: '음식 데이터 베이스 로딩' - ,tr: 'Gıda veritabanı yükleniyor' - ,zh_cn: '载入食物数据库' - ,hu: 'Étel adatbázis betöltése' - } - ,'not displayed' : { - cs: 'není zobrazeno' - ,de: 'nicht angezeigt' - ,es: 'No mostrado' - ,fr: 'non affiché' - ,el: 'Δεν προβάλλεται' - ,pt: 'não mostrado' - ,ro: 'neafișat' - ,bg: 'Не се показва' - ,hr: 'Ne prikazuje se' - ,sv: 'Visas ej' - ,it: 'Non visualizzato' - ,ja: '表示できません' - ,dk: 'Vises ikke' - ,fi: 'ei näytetä' - ,nb: 'Vises ikke' - ,he: 'לא מוצג' - ,pl: 'Nie jest wyświetlany' - ,ru: 'Не показано' - ,sk: 'Nie je zobrazené' - ,nl: 'Niet weergegeven' - ,ko: '출력되지 않음' - ,tr: 'görüntülenmedi' - ,zh_cn: '未显示' - ,hu: 'nincs megjelenítve' - } - ,'Loading CGM data of' : { - cs: 'Nahrávám CGM data' - ,de: 'Lade CGM-Daten von' - ,es: 'Cargando datos de CGM de' - ,fr: 'Chargement données CGM de' - ,el: 'Ανάκτηση δεδομένων CGM' - ,pt: 'Carregando dados de CGM de' - ,sv: 'Laddar CGM-data för' - ,ro: 'Încarc datele CGM ale lui' - ,bg: 'Зареждане на CGM данни от' - ,hr: 'Učitavanja podataka CGM-a' - ,it: 'Carico dati CGM' - ,ja: 'CGMデータロード中' - ,dk: 'Indlæser CGM-data for' - ,fi: 'Lataan sensoritietoja: ' - ,nb: 'Leser CGM-data for' - ,he: 'טוען נתוני חיישן סוכר של' - ,pl: 'Ładowanie danych z CGM' - ,ru: 'Загрузка данных мониторинга' - ,sk: 'Nahrávam CGM dáta' - ,nl: 'CGM data laden van' - ,ko: 'CGM 데이터 로딩' - ,tr: 'den CGM veriler yükleniyor' - ,zh_cn: '载入CGM(连续血糖监测)数据从' - ,hu: 'CGM adatok betöltése' - } - ,'Loading treatments data of' : { - cs: 'Nahrávám data ošetření' - ,de: 'Lade Behandlungsdaten von' - ,es: 'Cargando datos de tratamientos de' - ,fr: 'Chargement données traitement de' - ,el: 'Ανάκτηση δεδομένων ενεργειών' - ,pt: 'Carregando dados de tratamento de' - ,sv: 'Laddar behandlingsdata för' - ,ro: 'Încarc datele despre tratament pentru' - ,bg: 'Зареждане на въведените лечения от' - ,hr: 'Učitavanje podataka o tretmanu' - ,it: 'Carico dati dei trattamenti' - ,ja: '治療データロード中' - ,dk: 'Indlæser behandlingsdata for' - ,fi: 'Lataan toimenpidetietoja: ' - ,nb: 'Leser behandlingsdata for' - ,he: 'טוען נתוני טיפולים של' - ,pl: 'Ładowanie danych leczenia' - ,ru: 'Загрузка данных лечения' - ,sk: 'Nahrávam dáta ošetrenia' - ,nl: 'Behandel gegevens laden van' - ,ko: '처리 데이터 로딩' - ,tr: 'dan Tedavi verilerini yükle' - ,zh_cn: '载入操作数据从' - ,hu: 'Kezelés adatainak betöltése' - } - ,'Processing data of' : { - cs: 'Zpracovávám data' - ,de: 'Verarbeite Daten von' - ,es: 'Procesando datos de' - ,fr: 'Traitement des données de' - ,el: 'Επεξεργασία Δεδομένων' - ,pt: 'Processando dados de' - ,sv: 'Behandlar data för' - ,ro: 'Procesez datele pentru' - ,bg: 'Зареждане на данни от' - ,hr: 'Obrada podataka' - ,it: 'Elaborazione dei dati' - ,ja: 'データ処理中の日付:' - ,dk: 'Behandler data for' - ,fi: 'Käsittelen tietoja: ' - ,nb: 'Behandler data for' - ,he: 'מעבד נתונים של' - ,pl: 'Przetwarzanie danych' - ,ru: 'Обработка данных от' - ,sk: 'Spracovávam dáta' - ,nl: 'Gegevens verwerken van' - ,ko: '데이터 처리 중' - ,tr: 'dan Veri işleme' - ,zh_cn: '处理数据从' - ,hu: 'Adatok feldolgozása' - } - ,'Portion' : { - cs: 'Porce' - ,de: 'Abschnitt' - ,es: 'Porción' - ,fr: 'Portion' - ,el: 'Μερίδα' - ,pt: 'Porção' - ,ro: 'Porție' - ,bg: 'Порция' - ,hr: 'Dio' - ,sv: 'Portion' - ,it: 'Porzione' - ,ja: '一食分' - ,dk: 'Portion' - ,fi: 'Annos' - ,nb: 'Porsjon' - ,he: 'מנה' - ,pl: 'Część' - ,ru: 'Порция' - ,sk: 'Porcia' - ,nl: 'Portie' - ,ko: '부분' - ,tr: 'Porsiyon' - ,zh_cn: '部分' - ,hu: 'Porció' - } - ,'Size' : { - cs: 'Rozměr' - ,de: 'Größe' - ,es: 'Tamaño' - ,fr: 'Taille' - ,el: 'Μέγεθος' - ,pt: 'Tamanho' - ,ro: 'Mărime' - ,sv: 'Storlek' - ,bg: 'Големина' - ,hr: 'Veličina' - ,it: 'Formato' - ,ja: '量' - ,dk: 'Størrelse' - ,fi: 'Koko' - ,nb: 'Størrelse' - ,he: 'גודל' - ,pl: 'Rozmiar' - ,ru: 'Объем' - ,sk: 'Veľkosť' - ,nl: 'Grootte' - ,ko: '크기' - ,tr: 'Boyut' - ,zh_cn: '大小' - ,hu: 'Méret' - } - ,'(none)' : { - cs: '(Žádný)' - ,de: '(nichts)' - ,es: '(ninguno)' - ,fr: '(aucun)' - ,el: '(κενό)' - ,pt: '(nenhum)' - ,sv: '(tom)' - ,ro: '(fără)' - ,bg: '(няма)' - ,hr: '(Prazno)' - ,it: '(Nessuno)' - ,ja: '(データなし)' - ,dk: '(ingen)' - ,fi: '(tyhjä)' - ,nb: '(ingen)' - ,he: '(ללא)' - ,pl: '(brak)' - ,ru: '(нет)' - ,sk: '(žiadny)' - ,nl: '(geen)' - ,ko: '(없음)' - ,tr: '(hiç)' - ,zh_cn: '(无)' - ,zh_tw: '(無)' - ,hu: '(semmilyen)' - } - ,'None' : { - cs: 'Žádný' - ,de: 'Nichts' - ,es: 'Ninguno' - ,fr: 'aucun' - ,el: 'Κενό' - ,pt: 'nenhum' - ,sv: 'tom' - ,ro: 'fără' - ,bg: 'няма' - ,hr: 'Prazno' - ,it: 'Nessuno' - ,ja: 'データなし' - ,dk: 'Ingen' - ,fi: 'tyhjä' - ,nb: 'Ingen' - ,he: 'ללא' - ,pl: 'brak' - ,ru: 'Нет' - ,sk: 'Žiadny' - ,nl: 'geen' - ,ko: '없음' - ,tr: 'Hiç' - ,zh_cn: '无' - ,zh_tw: '無' - ,hu: 'Semmilyen' - } - ,'' : { - cs: '<Žádný>' - ,de: '' - ,es: '' - ,fr: '' - ,el: '<κενό>' - ,pt: '' - ,sv: '' - ,ro: '' - ,bg: '<няма>' - ,hr: '' - ,it: '' - ,ja: '<データなし>' - ,dk: '' - ,fi: '' - ,nb: '' - ,he: '<ללא>' - ,pl: '' - ,ru: '<нет>' - ,sk: '<žiadny>' - ,nl: '' - ,ko: '<없음>' - ,tr: '' - ,zh_cn: '<无>' - ,hu: '' - } - ,'Result is empty' : { - cs: 'Prázdný výsledek' - ,de: 'Ergebnis ist leer' - ,es: 'Resultado vacío' - ,fr: 'Pas de résultat' - ,el: 'Δεν υπάρχουν αποτελέσματα' - ,pt: 'Resultado vazio' - ,sv: 'Resultat saknas' - ,ro: 'Fără rezultat' - ,bg: 'Няма резултат' - ,hr: 'Prazan rezultat' - ,it: 'Risultato vuoto' - ,ja: '結果がありません' - ,dk: 'Tomt resultat' - ,fi: 'Ei tuloksia' - ,nb: 'Tomt resultat' - ,he: 'אין תוצאה' - ,pl: 'Brak wyniku' - ,ru: 'Результата нет ' - ,sk: 'Prázdny výsledok' - ,nl: 'Geen resultaat' - ,ko: '결과 없음' - ,tr: 'Sonuç boş' - ,zh_cn: '结果为空' - ,hu: 'Az eredmény üres' - } - ,'Day to day' : { - cs: 'Den po dni' - ,de: 'Von Tag zu Tag' - ,es: 'Día a día' - ,fr: 'jour par jour' - ,el: 'Ανά ημέρα' - ,pt: 'Dia a dia' - ,sv: 'Dag för dag' - ,ro: 'Zi cu zi' - ,bg: 'Ден за ден' - ,hr: 'Svakodnevno' - ,it: 'Giorno per giorno' - ,ja: '日差' - ,dk: 'Dag til dag' - ,fi: 'Päivittäinen' - ,nb: 'Dag til dag' - ,he: 'יום ביומו' - ,pl: 'Dzień po dniu' - ,ru: 'По дням' - ,sk: 'Deň po dni' - ,nl: 'Dag tot Dag' - ,ko: '일별 그래프' - ,tr: 'Günden Güne' - ,zh_cn: '日到日' - ,hu: 'Napi' - } - ,'Week to week' : { - cs: 'Week to week' - ,de: 'Woche zu Woche' - ,es: 'Week to week' - ,fr: 'Week to week' - ,el: 'Week to week' - ,pt: 'Week to week' - ,sv: 'Week to week' - ,ro: 'Week to week' - ,bg: 'Week to week' - ,hr: 'Tjedno' - ,it: 'Week to week' - ,dk: 'Week to week' - ,fi: 'Week to week' - ,nb: 'Uke for uke' - ,he: 'Week to week' - ,pl: 'Tydzień po tygodniu' - ,ru: 'По неделям' - ,sk: 'Week to week' - ,nl: 'Week to week' - ,ko: '주별 그래프' - ,zh_cn: 'Week to week' - ,hu: 'Heti' - } - ,'Daily Stats' : { - cs: 'Denní statistiky' - ,de: 'Tägliche Statistik' - ,es: 'Estadísticas diarias' - ,fr: 'Stats quotidiennes' - ,el: 'Ημερήσια Στατιστικά' - ,pt: 'Estatísticas diárias' - ,sv: 'Dygnsstatistik' - ,ro: 'Statistici zilnice' - ,bg: 'Дневна статистика' - ,hr: 'Dnevna statistika' - ,it: 'Statistiche giornaliere' - ,ja: '1日統計' - ,dk: 'Daglig statistik' - ,fi: 'Päivittäiset tilastot' - ,nb: 'Daglig statistikk' - ,he: 'סטטיסטיקה יומית' - ,pl: 'Statystyki dzienne' - ,ru: 'Ежедневная статистика' - ,sk: 'Denné štatistiky' - ,nl: 'Dagelijkse statistiek' - ,ko: '일간 통계' - ,tr: 'Günlük İstatistikler' - ,zh_cn: '每日状态' - ,hu: 'Napi statisztika' - } - ,'Percentile Chart' : { - cs: 'Percentil' - ,de: 'Perzentil-Diagramm' - ,es: 'Percentiles' - ,fr: 'Percentiles' - ,el: 'Γράφημα Εκατοστημορίων' - ,pt: 'Percentis' - ,ro: 'Grafic percentile' - ,bg: 'Процентна графика' - ,hr: 'Percentili' - ,sv: 'Procentgraf' - ,it: 'Grafico percentile' - ,ja: 'パーセント図' - ,dk: 'Procentgraf' - ,fi: 'Suhteellinen kuvaaja' - ,nb: 'Persentildiagram' - ,he: 'טבלת עשירונים' - ,pl: 'Wykres percentyl' - ,ru: 'Процентильная диаграмма' - ,sk: 'Percentil' - ,nl: 'Procentuele grafiek' - ,ko: '백분위 그래프' - ,tr: 'Yüzdelik Grafiği' - ,zh_cn: '百分位图形' - ,hu: 'Százalékos' - } - ,'Distribution' : { - cs: 'Rozložení' - ,de: 'Verteilung' - ,es: 'Distribución' - ,fr: 'Distribution' - ,el: 'Κατανομή' - ,pt: 'Distribuição' - ,ro: 'Distribuție' - ,bg: 'Разпределение' - ,hr: 'Distribucija' - ,sv: 'Distribution' - ,it: 'Distribuzione' - ,ja: '配分' - ,dk: 'Distribution' - ,fi: 'Jakauma' - ,nb: 'Distribusjon' - ,he: 'התפלגות' - ,pl: 'Dystrybucja' - ,ru: 'Распределение' - ,sk: 'Distribúcia' - ,nl: 'Verdeling' - ,ko: '분포' - ,tr: 'Dağılım' - ,zh_cn: '分布' - ,hu: 'Szétosztás' - } - ,'Hourly stats' : { - cs: 'Statistika po hodinách' - ,de: 'Stündliche Statistik' - ,es: 'Estadísticas por hora' - ,fr: 'Statistiques horaires' - ,el: 'Ωριαία Στατιστικά' - ,pt: 'Estatísticas por hora' - ,sv: 'Timmstatistik' - ,ro: 'Statistici orare' - ,bg: 'Статистика по часове' - ,hr: 'Statistika po satu' - ,it: 'Statistiche per ore' - ,ja: '1時間統計' - ,dk: 'Timestatistik' - ,fi: 'Tunneittainen tilasto' - ,nb: 'Timestatistikk' - ,he: 'סטטיסטיקה שעתית' - ,pl: 'Statystyki godzinowe' - ,ru: 'Почасовая статистика' - ,sk: 'Hodinové štatistiky' - ,nl: 'Statistieken per uur' - ,ko: '시간대별 통계' - ,tr: 'Saatlik istatistikler' - ,zh_cn: '每小时状态' - ,hu: 'Óránkra való szétosztás' - } - ,'netIOB stats': { // hourlystats.js - nl: 'netIOB stats' - ,sv: 'netIOB statistik' - ,dk: 'netIOB statistik' - ,he: 'netIOB סטטיסטיקת' - ,de: 'netIOB Statistiken' - ,fi: 'netIOB tilasto' - ,nb: 'netIOB statistikk' - ,bg: 'netIOB татистика' - ,hr: 'netIOB statistika' - , pl: 'Statystyki netIOP' - ,ru: 'статистика нетто активн инс netIOB' - ,tr: 'netIOB istatistikleri' - ,hu: 'netIOB statisztika' - } - ,'temp basals must be rendered to display this report': { //hourlystats.js - nl: 'tijdelijk basaal moet zichtbaar zijn voor dit rapport' - ,sv: 'temp basal måste vara synlig för denna rapport' - ,de: 'temporäre Basalraten müssen für diesen Report sichtbar sein' - ,fi: 'tämä raportti vaatii, että basaalien piirto on päällä' - ,nb: 'midlertidig basal må være synlig for å vise denne rapporten' - ,bg: 'временните базали трябва да са показани за да се покаже тази това' - ,hr: 'temp bazali moraju biti prikazani kako bi se vidio ovaj izvještaj' - ,he: 'חובה לאפשר רמה בזלית זמנית כדי לרות דוח זה' - , pl: 'Tymczasowa dawka podstawowa jest wymagana aby wyświetlić ten raport' - ,ru: 'для этого отчета требуется прорисовка врем базалов' - ,tr: 'Bu raporu görüntülemek için geçici bazal oluşturulmalıdır' - ,hu: 'Az átmeneti bazálnak meg kell lennie jelenítve az adott jelentls megtekintéséhez' - } - ,'Weekly success' : { - cs: 'Statistika po týdnech' - ,de: 'Wöchentlicher Erfolg' - ,es: 'Resultados semanales' - ,fr: 'Résultat hebdomadaire' - ,el: 'Εβδομαδιαία Στατιστικά' - ,pt: 'Resultados semanais' - ,ro: 'Rezultate săptămânale' - ,bg: 'Седмичен успех' - ,hr: 'Tjedni uspjeh' - ,sv: 'Veckoresultat' - ,it: 'Statistiche settimanali' - ,ja: '1週間統計' - ,dk: 'Uge resultat' - ,fi: 'Viikkotilasto' - ,he: 'הצלחה שבועית' - ,nb: 'Ukeresultat' - ,pl: 'Wyniki tygodniowe' - ,ru: 'Результаты недели' - ,sk: 'Týždenná úspešnosť' - ,nl: 'Wekelijkse successen' - ,ko: '주간 통계' - ,tr: 'Haftalık başarı' - ,zh_cn: '每周统计' - ,hu: 'Heti sikeresség' - } - ,'No data available' : { - cs: 'Žádná dostupná data' - ,de: 'Keine Daten verfügbar' - ,es: 'No hay datos disponibles' - ,fr: 'Pas de données disponibles' - ,el: 'Μη διαθέσιμα δεδομένα' - ,pt: 'Não há dados' - ,ro: 'Fără date' - ,bg: 'Няма данни за показване' - ,hr: 'Nema raspoloživih podataka' - ,sv: 'Data saknas' - ,it: 'Dati non disponibili' - ,ja: '利用できるデータがありません' - ,dk: 'Mangler data' - ,fi: 'Tietoja ei saatavilla' - ,nb: 'Mangler data' - ,he: 'אין מידע זמין' - ,pl: 'Brak danych' - ,ru: 'Нет данных' - ,sk: 'Žiadne dostupné dáta' - ,nl: 'Geen gegevens beschikbaar' - ,ko: '활용할 수 있는 데이터 없음' - ,tr: 'Veri yok' - ,zh_cn: '无可用数据' - ,hu: 'Nincs elérhető adat' - } - ,'Low' : { - cs: 'Nízká' - ,de: 'Tief' - ,es: 'Bajo' - ,fr: 'Bas' - ,el: 'Χαμηλά' - ,pt: 'Baixo' - ,sv: 'Låg' - ,ro: 'Prea jos' - ,bg: 'Ниска' - ,hr: 'Nizak' - ,it: 'Basso' - ,ja: '目標血糖値低値' - ,dk: 'Lav' - ,fi: 'Matala' - ,nb: 'Lav' - ,he: 'נמוך' - ,pl: 'Niski' - ,ru: 'Низкая ГК' - ,sk: 'Nízka' - ,nl: 'Laag' - ,ko: '낮음' - ,tr: 'Düşük' - ,zh_cn: '低血糖' - ,hu: 'Alacsony' - } - ,'In Range' : { - cs: 'V rozsahu' - ,de: 'Im Zielbereich' - ,es: 'En rango' - ,fr: 'dans la norme' - ,el: 'Στο στόχο' - ,pt: 'Na meta' - ,sv: 'Inom intervallet' - ,ro: 'În interval' - ,bg: 'В граници' - ,hr: 'U rasponu' - ,it: 'Nell\'intervallo' - ,ja: '目標血糖値範囲内' - ,dk: 'Indenfor intervallet' - ,fi: 'Tavoitealueella' - ,nb: 'Innenfor intervallet' - ,he: 'בטווח' - ,pl: 'W zakresie' - ,ru: 'В диапазоне' - ,sk: 'V rozsahu' - ,nl: 'Binnen bereik' - ,ko: '범위 안 ' - ,tr: 'Hedef alanında' - ,zh_cn: '范围内' - ,hu: 'Normális' - } - ,'Period' : { - cs: 'Období' - ,de: 'Zeitabschnitt' - ,es: 'Periodo' - ,fr: 'Période' - ,el: 'Περίοδος' - ,pt: 'Período' - ,sv: 'Period' - ,ro: 'Perioada' - ,bg: 'Период' - ,hr: 'Period' - ,it: 'Periodo' - ,ja: '期間' - ,dk: 'Periode' - ,fi: 'Aikaväli' - ,nb: 'Periode' - ,he: 'תקופה' - ,pl: 'Okres' - ,ru: 'Период' - ,sk: 'Obdobie' - ,nl: 'Periode' - ,ko: '기간 ' - ,tr: 'Periyot' - ,zh_cn: '期间' - ,hu: 'Időszak' - } - ,'High' : { - cs: 'Vysoká' - ,de: 'Hoch' - ,es: 'Alto' - ,fr: 'Haut' - ,el: 'Υψηλά' - ,pt: 'Alto' - ,sv: 'Hög' - ,ro: 'Prea sus' - ,bg: 'Висока' - ,hr: 'Visok' - ,it: 'Alto' - ,ja: '目標血糖値高値' - ,dk: 'Høj' - ,fi: 'Korkea' - ,nb: 'Høy' - ,he: 'גבוה' - ,pl: 'Wysoki' - ,ru: 'Высокая ГК' - ,sk: 'Vysoká' - ,nl: 'Hoog' - ,ko: '높음' - ,tr: 'Yüksek' - ,zh_cn: '高血糖' - ,hu: 'Magas' - } - ,'Average' : { - cs: 'Průměr' - ,de: 'Mittelwert' - ,es: 'Media' - ,fr: 'Moyenne' - ,el: 'Μέσος Όρος' - ,pt: 'Média' - ,sv: 'Genomsnittligt' - ,ro: 'Media' - ,bg: 'Средна' - ,hr: 'Prosjek' - ,it: 'Media' - ,ja: '平均値' - ,dk: 'Gennemsnit' - ,fi: 'Keskiarvo' - ,nb: 'Gjennomsnitt' - ,he: 'ממוצע' - ,pl: 'Średnia' - ,ru: 'Средняя' - ,sk: 'Priemer' - ,nl: 'Gemiddeld' - ,ko: '평균' - ,tr: 'Ortalama' - ,zh_cn: '平均' - ,hu: 'Átlagos' - } - ,'Low Quartile' : { - cs: 'Nízký kvartil' - ,de: 'Unteres Quartil' - ,es: 'Cuartil inferior' - ,fr: 'Quartile inférieur' - ,el: 'Τεταρτημόριο Χαμηλών' - ,pt: 'Quartil inferior' - ,ro: 'Pătrime inferioară' - ,bg: 'Ниска четвъртинка' - ,hr: 'Donji kvartil' - ,sv: 'Nedre kvadranten' - ,it: 'Quartile basso' - ,ja: '下四分位値' - ,dk: 'Nedre kvartil' - ,fi: 'Alin neljäsosa' - ,nb: 'Nedre kvartil' - ,he: 'רבעון תחתון' - ,pl: 'Dolny kwartyl' - ,ru: 'Нижняя четверть' - ,sk: 'Nizky kvartil' - ,nl: 'Eerste kwartiel' - ,ko: '낮은 4분위' - ,tr: 'Alt Çeyrek' - ,zh_cn: '下四分位数' - ,hu: 'Alacsony kvartil' - } - ,'Upper Quartile' : { - cs: 'Vysoký kvartil' - ,de: 'Oberes Quartil' - ,es: 'Cuartil superior' - ,fr: 'Quartile supérieur' - ,el: 'Τεταρτημόριο Υψηλών' - ,pt: 'Quartil superior' - ,ro: 'Pătrime superioară' - ,bg: 'Висока четвъртинка' - ,hr: 'Gornji kvartil' - ,sv: 'Övre kvadranten' - ,it: 'Quartile alto' - ,ja: '高四分位値' - ,dk: 'Øvre kvartil' - ,fi: 'Ylin neljäsosa' - ,nb: 'Øvre kvartil' - ,he: 'רבעון עליון' - ,pl: 'Górny kwartyl' - ,ru: 'Верхняя четверть' - ,sk: 'Vysoký kvartil' - ,nl: 'Derde kwartiel' - ,ko: '높은 4분위' - ,tr: 'Üst Çeyrek' - ,zh_cn: '上四分位数' - ,hu: 'Magas kvartil' - } - ,'Quartile' : { - cs: 'Kvartil' - ,de: 'Quartil' - ,es: 'Cuartil' - ,fr: 'Quartile' - ,el: 'Τεταρτημόριο' - ,pt: 'Quartil' - ,ro: 'Pătrime' - ,bg: 'Четвъртинка' - ,hr: 'Kvartil' - ,sv: 'Kvadrant' - ,it: 'Quartile' - ,ja: '四分位値' - ,dk: 'Kvartil' - ,fi: 'Neljäsosa' - ,nb: 'Kvartil' - ,he: 'רבעון' - ,pl: 'Kwartyl' - ,ru: 'Четверть' - ,sk: 'Kvartil' - ,nl: 'Kwartiel' - ,ko: '4분위' - ,tr: 'Çeyrek' - ,zh_cn: '四分位数' - ,hu: 'Kvartil' - } - ,'Date' : { - cs: 'Datum' - ,de: 'Datum' - ,es: 'Fecha' - ,fr: 'Date' - ,el: 'Ημερομηνία' - ,pt: 'Data' - ,sv: 'Datum' - ,ro: 'Data' - ,bg: 'Дата' - ,hr: 'Datum' - ,it: 'Data' - ,ja: '日付' - ,dk: 'Dato' - ,fi: 'Päivämäärä' - ,nb: 'Dato' - ,he: 'תאריך' - ,pl: 'Data' - ,ru: 'Дата' - ,sk: 'Dátum' - ,nl: 'Datum' - ,ko: '날짜' - ,tr: 'Tarih' - ,zh_cn: '日期' - ,hu: 'Dátum' - } - ,'Normal' : { - cs: 'Normální' - ,de: 'Normal' - ,es: 'Normal' - ,fr: 'Normale' - ,el: 'Εντός Στόχου' - ,pt: 'Normal' - ,sv: 'Normal' - ,ro: 'Normal' - ,bg: 'Нормалнa' - ,hr: 'Normalno' - ,it: 'Normale' - ,ja: '通常' - ,dk: 'Normal' - ,fi: 'Normaali' - ,nb: 'Normal' - ,he: 'נורמלי' - ,pl: 'Normalny' - ,ru: 'Норма' - ,sk: 'Normálny' - ,nl: 'Normaal' - ,ko: '보통' - ,tr: 'Normal' - ,zh_cn: '正常' - ,hu: 'Normális' - } - ,'Median' : { - cs: 'Medián' - ,de: 'Median' - ,es: 'Mediana' - ,fr: 'Médiane' - ,el: 'Διάμεσος' - ,pt: 'Mediana' - ,ro: 'Mediană' - ,bg: 'Средно' - ,hr: 'Srednje' - ,sv: 'Median' - ,it: 'Mediana' - ,ja: '中央値' - ,dk: 'Median' - ,fi: 'Mediaani' - ,nb: 'Median' - ,he: 'חציון' - ,pl: 'Mediana' - ,ru: 'Усредненный' - ,sk: 'Medián' - ,nl: 'Mediaan' - ,ko: '중간값' - ,tr: 'Orta Değer' - ,zh_cn: '中值' - ,hu: 'Medián' - } - ,'Readings' : { - cs: 'Záznamů' - ,de: 'Messwerte' - ,es: 'Valores' - ,fr: 'Valeurs' - ,el: 'Μετρήσεις' - ,pt: 'Valores' - ,sv: 'Avläsningar' - ,ro: 'Valori' - ,bg: 'Измервания' - ,hr: 'Vrijednosti' - ,it: 'Valori' - ,ja: '読み込み' - ,dk: 'Aflæsninger' - ,fi: 'Lukemia' - ,nb: 'Avlesning' - ,he: 'קריאות' - ,pl: 'Odczyty' - ,ru: 'Значения' - ,sk: 'Záznamy' - ,nl: 'Metingen' - ,ko: '혈당' - ,tr: 'Ölçüm' - ,zh_cn: '读数' - ,hu: 'Értékek' - } - ,'StDev' : { - cs: 'Směrodatná odchylka' - ,de: 'Standardabweichung' - ,es: 'Desviación estándar' - ,fr: 'Déviation St.' - ,el: 'Τυπική Απόκλιση' - ,pt: 'DesvPadr' - ,sv: 'StdDev' - ,ro: 'Standarddeviation' - ,bg: 'Стандартно отклонение' - ,hr: 'Standardna devijacija' - ,it: 'Dev.std' - ,ja: '標準偏差' - ,dk: 'Standard afvigelse' - ,fi: 'Keskijakauma' - ,nb: 'Standardavvik' - ,he: 'סטיית תקן' - ,pl: 'Stand. odchylenie' - ,nl: 'Std. deviatie' - ,ru: 'Стандартное отклонение' - ,sk: 'Štand. odch.' - ,ko: '표준 편차' - ,tr: 'Standart Sapma' - ,zh_cn: '标准偏差' - ,hu: 'Standard eltérés' - } - ,'Daily stats report' : { - cs: 'Denní statistiky' - ,de: 'Tagesstatistik Bericht' - ,es: 'Informe de estadísticas diarias' - ,fr: 'Rapport quotidien' - ,el: 'Ημερήσια Στατιστικά' - ,pt: 'Relatório diário' - ,ro: 'Raport statistică zilnică' - ,bg: 'Дневна статистика' - ,hr: 'Izvješće o dnevnim statistikama' - ,sv: 'Dygnsstatistik' - ,it: 'Statistiche giornaliere' - ,ja: '1日ごとの統計のレポート' - ,dk: 'Daglig statistik rapport' - ,fi: 'Päivittäinen tilasto' - ,nb: 'Daglig statistikkrapport' - ,he: 'דוח סטטיסטיקה יומית' - ,pl: 'Dzienne statystyki' - ,ru: 'Суточная статистика' - ,sk: 'Denné štatistiky' - ,nl: 'Dagelijkse statistieken' - ,ko: '일간 통계 보고서' - ,tr: 'Günlük istatistikler raporu' - ,zh_cn: '每日状态报表' - ,hu: 'Napi statisztikák' - } - ,'Glucose Percentile report' : { - cs: 'Tabulka percentil glykémií' - ,de: 'Glukose-Perzentil Bericht' - ,es: 'Informe de percetiles de glucemia' - ,fr: 'Rapport percentiles Glycémie' - ,el: 'Αναφορά Εκατοστημοριακής Κατάταξης τιμών Γλυκόζης' - ,pt: 'Relatório de Percentis de Glicemia' - ,sv: 'Glukosrapport i procent' - ,ro: 'Raport percentile glicemii' - ,bg: 'Графика на КЗ' - ,hr: 'Izvješće o postotku GUK-a' - ,it: 'Percentuale Glicemie' - ,ja: 'グルコース(%)レポート' - ,dk: 'Glukoserapport i procent' - ,fi: 'Verensokeriarvojen jakauma' - ,nb: 'Persentildiagram for blodsukker' - ,he: 'דוח אחוזון סוכר' - ,pl: 'Tabela centylowa glikemii' - ,ru: 'Процентильная ГК' - ,sk: 'Report percentilu glykémií' - ,nl: 'Glucose percentiel rapport' - ,ko: '혈당 백분위 보고서' - ,tr: 'Glikoz Yüzdelik raporu' - ,zh_cn: '血糖百分位报表' - ,hu: 'Cukorszint percentil jelentés' - } - ,'Glucose distribution' : { - cs: 'Rozložení glykémií' - ,de: 'Glukose Verteilung' - ,es: 'Distribución de glucemias' - ,fr: 'Distribution glycémies' - ,el: 'Κατανομή Τιμών Γλυκόζης' - ,pt: 'Distribuição de glicemias' - ,ro: 'Distribuție glicemie' - ,bg: 'Разпределение на КЗ' - ,hr: 'Distribucija GUK-a' - ,sv: 'Glukosdistribution' - ,it: 'Distribuzione glicemie' - ,ja: '血糖値の分布' - ,dk: 'Glukosefordeling' - ,fi: 'Glukoosijakauma' - ,nb: 'Glukosefordeling' - ,he: 'התפלגות סוכר' - ,pl: 'Rozkład glikemii' - ,ru: 'Распределение ГК' - ,sk: 'Rozloženie glykémie' - ,nl: 'Glucose verdeling' - ,ko: '혈당 분포' - ,tr: 'Glikoz dağılımı' - ,zh_cn: '血糖分布' - ,hu: 'Cukorszint szétosztása' - } - ,'days total' : { - cs: 'dní celkem' - ,de: 'Gesamttage' - ,es: 'Total de días' - ,fr: 'jours totaux' - ,el: 'ημέρες συνολικά' - ,pt: 'dias no total' - ,sv: 'antal dagar' - ,ro: 'total zile' - ,bg: 'общо за деня' - ,hr: 'ukupno dana' - ,it: 'Giorni totali' - ,ja: '合計日数' - ,dk: 'antal dage' - ,fi: 'päivän arvio' - ,nb: 'dager' - ,he: 'מספר ימים' - ,pl: 'dni łącznie' - ,ru: 'всего дней' - ,sk: 'dní celkom' - ,nl: 'Totaal dagen' - ,ko: '일 전체' - ,tr: 'toplam gün' - ,zh_cn: '天总计' - ,hu: 'nap összesen' - } - ,'Total per day' : { - cs: 'dní celkem' - ,de: 'Gesamt pro Tag' - ,es: 'Total de días' - ,fr: 'Total journalier' - ,el: 'ημέρες συνολικά' - ,pt: 'dias no total' - ,sv: 'antal dagar' - ,ro: 'total zile' - ,bg: 'общо за деня' - ,hr: 'Ukupno po danu' - ,it: 'Giorni totali' - ,dk: 'antal dage' - ,fi: 'päivän arvio' - ,nb: 'Totalt per dag' - ,he: 'מספר ימים' - ,pl: 'dni łącznie' - ,ru: 'всего за сутки' - ,sk: 'dní celkom' - ,nl: 'Totaal dagen' - ,ko: '하루 총량' - ,tr: 'Günlük toplam' - ,zh_cn: '天总计' - ,hu: 'Naponta összesen' - } - ,'Overall' : { - cs: 'Celkem' - ,de: 'Insgesamt' - ,es: 'General' - ,fr: 'En général' - ,el: 'Σύνολο' - ,pt: 'Geral' - ,sv: 'Genomsnitt' - ,ro: 'General' - ,bg: 'Общо' - ,hr: 'Sveukupno' - ,it: 'Generale' - ,ja: '総合' - ,dk: 'Gennemsnit' - ,fi: 'Yhteenveto' - ,nb: 'Totalt' - ,he: 'סך הכל' - ,pl: 'Ogółem' - ,ru: 'Суммарно' - ,sk: 'Súhrn' - ,nl: 'Totaal' - ,ko: '전체' - ,tr: 'Tüm' - ,zh_cn: '概览' - ,hu: 'Összesen' - } - ,'Range' : { - cs: 'Rozsah' - ,de: 'Bereich' - ,es: 'Intervalo' - ,fr: 'Intervalle' - ,el: 'Διάστημα' - ,pt: 'intervalo' - ,sv: 'Intervall' - ,ro: 'Interval' - ,bg: 'Диапазон' - ,hr: 'Raspon' - ,it: 'Intervallo' - ,ja: '範囲' - ,dk: 'Interval' - ,fi: 'Alue' - ,nb: 'Intervall' - ,he: 'טווח' - ,pl: 'Zakres' - ,ru: 'Диапазон' - ,sk: 'Rozsah' - ,nl: 'Bereik' - ,ko: '범위' - ,tr: 'Alan' - ,zh_cn: '范围' - ,hu: 'Tartomány' - } - ,'% of Readings' : { - cs: '% záznamů' - ,de: '% der Messwerte' - ,es: '% de valores' - ,fr: '% de valeurs' - ,el: '% των μετρήσεων' - ,pt: '% de valores' - ,sv: '% av avläsningar' - ,ro: '% de valori' - ,bg: '% от измервания' - ,hr: '% očitanja' - ,it: '% dei valori' - ,ja: '%精度' - ,dk: '% af aflæsningerne' - ,fi: '% lukemista' - ,nb: '% av avlesningene' - ,he: 'אחוז קריאות' - ,pl: '% Odczytów' - ,ru: '% измерений' - ,sk: '% záznamov' - ,nl: '% metingen' - ,ko: '수신된 혈당 비율(%)' - ,tr: '% Okumaların' - ,zh_cn: '%已读取' - ,hu: '% az értékeknek' - } - ,'# of Readings' : { - cs: 'počet záznamů' - ,de: 'Anzahl der Messwerte' - ,es: 'N° de valores' - ,fr: 'nbr de valeurs' - ,el: 'Πλήθος μετρήσεων' - ,pt: 'N° de valores' - ,sv: '# av avläsningar' - ,ro: 'nr. de valori' - ,bg: '№ от измервания' - ,hr: 'broj očitanja' - ,it: '# di valori' - ,ja: '#精度' - ,dk: 'Antal aflæsninger' - ,fi: 'Lukemien määrä' - ,nb: 'Antall avlesninger' - ,he: 'מספר קריאות' - ,pl: 'Ilość Odczytów' - ,ru: 'кол-во измерений' - ,sk: 'Počet záznamov' - ,nl: 'Aantal metingen' - ,ko: '수신된 혈당 개수(#)' - ,tr: '# Okumaların' - ,zh_cn: '#已读取' - ,hu: 'Olvasott értékek száma' - } - ,'Mean' : { - cs: 'Střední hodnota' - ,de: 'Mittelwert' - ,es: 'Media' - ,fr: 'Moyenne' - ,el: 'Μέσος Όρος' - ,pt: 'Média' - ,sv: 'Genomsnitt' - ,ro: 'Medie' - ,bg: 'Средна стойност' - ,hr: 'Prosjek' - ,it: 'Media' - ,ja: '意味' - ,dk: 'Gennemsnit' - ,fi: 'Keskiarvo' - ,nb: 'Gjennomsnitt' - ,he: 'ממוצע' - ,pl: 'Wartość średnia' - ,ru: 'Среднее значение' - ,sk: 'Stred' - ,nl: 'Gemiddeld' - ,ko: '평균' - ,tr: 'ortalama' - ,zh_cn: '平均' - ,hu: 'Közép' - } - ,'Standard Deviation' : { - cs: 'Standardní odchylka' - ,de: 'Standardabweichung' - ,es: 'Desviación estándar' - ,fr: 'Déviation Standard' - ,el: 'Τυπική Απόκλιση' - ,pt: 'Desvio padrão' - ,ro: 'Deviație standard' - ,bg: 'Стандартно отклонение' - ,hr: 'Standardna devijacija' - ,sv: 'Standardavvikelse' - ,it: 'Deviazione Standard' - ,ja: '標準偏差' - ,dk: 'Standardafvigelse' - ,fi: 'Keskijakauma' - ,nb: 'Standardavvik' - ,he: 'סטיית תקן' - ,pl: 'Standardowe odchylenie' - ,ru: 'Стандартное отклонение' - ,sk: 'Štandardná odchylka' - ,nl: 'Standaard deviatie' - ,ko: '표준 편차' - ,tr: 'Standart Sapma' - ,zh_cn: '标准偏差' - ,hu: 'Átlagos eltérés' - } - ,'Max' : { - cs: 'Max' - ,de: 'Max' - ,es: 'Max' - ,fr: 'Max' - ,el: 'Μέγιστο' - ,pt: 'Máx' - ,sv: 'Max' - ,ro: 'Max' - ,bg: 'Макс.' - ,hr: 'Max' - ,it: 'Max' - ,ja: '最大値' - ,dk: 'Max' - ,fi: 'Maks' - ,nb: 'Maks' - ,he: 'מקסימאלי' - ,pl: 'Max' - ,ru: 'Макс' - ,sk: 'Max' - ,nl: 'Max' - ,ko: '최대값' - ,tr: 'Max' - ,zh_cn: '最大值' - ,hu: 'Max' - } - ,'Min' : { - cs: 'Min' - ,de: 'Min' - ,es: 'Min' - ,fr: 'Min' - ,el: 'Ελάχιστο' - ,pt: 'Mín' - ,sv: 'Min' - ,ro: 'Min' - ,bg: 'Мин.' - ,hr: 'Min' - ,it: 'Min' - ,ja: '最小値' - ,dk: 'Min' - ,fi: 'Min' - ,nb: 'Min' - ,he: 'מינימאלי' - ,pl: 'Min' - ,ru: 'Мин' - ,sk: 'Min' - ,nl: 'Min' - ,ko: '최소값' - ,tr: 'Min' - ,zh_cn: '最小值' - ,hu: 'Min' - } - ,'A1c estimation*' : { - cs: 'Předpokládané HBA1c*' - ,de: 'Einschätzung HbA1c*' - ,es: 'Estimación de HbA1c*' - ,fr: 'Estimation HbA1c*' - ,el: 'Εκτίμηση HbA1c' - ,pt: 'HbA1c estimada*' - ,ro: 'HbA1C estimată' - ,bg: 'Очакван HbA1c' - ,hr: 'Procjena HbA1c-a' - ,sv: 'Beräknat A1c-värde ' - ,it: 'Stima A1c' - ,ja: '予想HbA1c' - ,dk: 'Beregnet A1c-værdi ' - ,fi: 'A1c arvio*' - ,nb: 'Beregnet HbA1c' - ,he: 'משוער A1c' - ,pl: 'HbA1c przewidywany' - ,ru: 'Ожидаемый HbA1c*' - ,sk: 'Odhadované HbA1C*' - ,nl: 'Geschatte HbA1C' - ,ko: '예상 당화혈 색소' - ,tr: 'Tahmini A1c *' - ,zh_cn: '糖化血红蛋白估算' - ,hu: 'Megközelítőleges HbA1c' - } - ,'Weekly Success' : { - cs: 'Týdenní úspěšnost' - ,de: 'Wöchtlicher Erfolg' - ,es: 'Resultados semanales' - ,fr: 'Réussite hebdomadaire' - ,el: 'Εβδομαδιαία Στατιστικά' - ,pt: 'Resultados semanais' - ,ro: 'Rezultate săptămânale' - ,bg: 'Седмичен успех' - ,hr: 'Tjedni uspjeh' - ,sv: 'Veckoresultat' - ,it: 'Risultati settimanali' - ,ja: '週間達成度' - ,dk: 'Uge resultat' - ,fi: 'Viikottainen tulos' - ,nb: 'Ukeresultat' - ,he: 'הצלחה שבועית' - ,pl: 'Wyniki tygodniowe' - ,ru: 'Итоги недели' - ,sk: 'Týždenná úspešnosť' - ,nl: 'Wekelijks succes' - ,ko: '주간 통계' - ,tr: 'Haftalık Başarı' - ,zh_cn: '每周统计' - ,hu: 'Heti sikeresség' - } - ,'There is not sufficient data to run this report. Select more days.' : { - cs: 'Není dostatek dat. Vyberte delší časové období.' - ,de: 'Für diesen Bericht sind nicht genug Daten verfügbar. Bitte weitere Tage auswählen.' - ,es: 'No hay datos suficientes para generar este informe. Seleccione más días.' - ,fr: 'Pas assez de données pour un rapport. Sélectionnez plus de jours.' - ,el: 'Μη επαρκή δεδομένα για αυτή την αναφορά.Παρακαλώ επιλέξτε περισσότερες ημέρες' - ,pt: 'Não há dados suficientes. Selecione mais dias' - ,ro: 'Nu sunt sufieciente date pentru acest raport. Selectați mai multe zile.' - ,bg: 'Няма достатъчно данни за показване. Изберете повече дни.' - ,hr: 'Nema dovoljno podataka za izvođenje izvještaja. Odaberite još dana.' - ,sv: 'Data saknas för att köra rapport. Välj fler dagar.' - ,it: 'Non ci sono dati sufficienti per eseguire questo rapporto. Selezionare più giorni.' - ,ja: 'レポートするためのデータが足りません。もっと多くの日を選択してください。' - ,dk: 'Der er utilstrækkeligt data til at generere rapporten. Vælg flere dage.' - ,fi: 'Raporttia ei voida luoda liian vähäisen tiedon vuoksi. Valitse useampia päiviä.' - ,nb: 'Der er ikke nok data til å lage rapporten. Velg flere dager.' - ,he: 'לא נמצא מספיק מידע ליצירת הדוח. בחר ימים נוספים.' - ,pl: 'Nie ma wystarczających danych dla tego raportu. Wybierz więcej dni.' - ,ru: 'Для этого отчета недостаточно данных. Выберите больше дней.' - ,sk: 'Nedostatok dát. Vyberte dlhšie časové obdobie.' - ,nl: 'Er zijn niet genoeg gegevens voor dit rapport, selecteer meer dagen.' - ,ko: '이 보고서를 실행하기 위한 데이터가 충분하지 않습니다. 더 많은 날들을 선택해 주세요.' - ,tr: 'Bu raporu çalıştırmak için yeterli veri yok. Daha fazla gün seçin.' - ,zh_cn: '没有足够的数据生成报表,请选择更长时间段。' - ,hu: 'Nincs elég adat a jelentés elkészítéséhez. Válassz több napot.' - } - // food editor - ,'Using stored API secret hash' : { - cs: 'Používám uložený hash API hesla' - ,he: 'משתמש בסיסמת ממשק תכנות יישומים הסודית ' - ,de: 'Gespeicherte API-Prüfsumme verwenden' - ,es: 'Usando hash del API secreto pre-almacenado' - ,fr: 'Utilisation du hash API existant' - ,el: 'Χρηση αποθηκευμένου συνθηματικού' - ,pt: 'Usando o hash de API existente' - ,ro: 'Utilizez cheie API secretă' - ,bg: 'Използване на запаметена API парола' - ,hr: 'Koristi se pohranjeni API tajni hash' - ,sv: 'Använd hemlig API-nyckel' - ,it: 'Stai utilizzando API hash segreta' - ,ja: '保存されたAPI secret hashを使用する' - ,dk: 'Anvender gemt API-nøgle' - ,fi: 'Tallennettu salainen API-tarkiste käytössä' - ,nb: 'Bruker lagret API-nøkkel' - ,pl: 'Korzystając z zapisanego poufnego hasha API' - ,ru: 'Применение сохраненного пароля API' - ,sk: 'Používam uložený API hash heslo' - ,nl: 'Gebruik opgeslagen geheime API Hash' - ,ko: '저장된 API secret hash를 사용 중' - ,tr: 'Kaydedilmiş API secret hash kullan' - ,zh_cn: '使用已存储的API密钥哈希值' - ,zh_tw: '使用已存儲的API密鑰哈希值' - ,hu: 'Az elmentett API hash jelszót használom' - } - ,'No API secret hash stored yet. You need to enter API secret.' : { - cs: 'Není uložený žádný hash API hesla. Musíte zadat API heslo.' - ,de: 'Keine API-Prüfsumme gespeichert. Bitte API-Prüfsumme eingeben.' - ,es: 'No se ha almacenado ningún hash todavía. Debe introducir su secreto API.' - ,fr: 'Pas de secret API existant. Vous devez en entrer un.' - ,el: 'Δεν υπάρχει αποθηκευμένο συνθηματικό API. Πρέπει να εισάγετε το συνθηματικό API' - ,pt: 'Hash de segredo de API inexistente. Insira um segredo de API.' - ,ro: 'Încă nu există cheie API secretă. Aceasta trebuie introdusă.' - ,bg: 'Няма запаметена API парола. Tрябва да въведете API парола' - ,hr: 'Nema pohranjenog API tajnog hasha. Unesite tajni API' - ,sv: 'Hemlig api-nyckel saknas. Du måste ange API hemlighet' - ,it: 'API hash segreto non è ancora memorizzato. È necessario inserire API segreto.' - ,ja: 'API secret hashがまだ保存されていません。API secretの入力が必要です。' - ,dk: 'Mangler API-nøgle. Du skal indtaste API nøglen' - ,fi: 'Salainen API-tarkiste puuttuu. Syötä API tarkiste.' - ,nb: 'Mangler API-nøkkel. Du må skrive inn API-hemmelighet.' - ,he:'הכנס את הסיסמא הסודית של ה API' - ,pl: 'Nie ma żadnego poufnego hasha API zapisanego. Należy wprowadzić poufny hash API.' - ,ru: 'Пароля API нет в памяти. Введите пароль API' - ,sk: 'Nieje uložené žiadne API hash heslo. Musíte zadať API heslo.' - ,nl: 'Er is nog geen geheime API Hash opgeslagen. U moet eerst een geheime API code invoeren.' - ,ko: 'API secret hash가 아직 저장되지 않았습니다. API secret를 입력해 주세요.' - ,tr: 'Henüz bir API secret hash saklanmadı. API parolasını girmeniz gerekiyor.' - ,zh_cn: '没有已存储的API密钥,请输入API密钥。' - ,zh_tw: '沒有已存儲的API密鑰,請輸入API密鑰。' - ,hu: 'Még nem lett a titkos API hash elmentve. Add meg a titkos API jelszót' - } - ,'Database loaded' : { - cs: 'Databáze načtena' - ,de: 'Datenbank geladen' - ,es: 'Base de datos cargada' - ,fr: 'Base de données chargée' - ,el: 'Συνδέθηκε με τη Βάση Δεδομένων' - ,pt: 'Banco de dados carregado' - ,ro: 'Baza de date încărcată' - ,bg: 'База с данни заредена' - ,hr: 'Baza podataka je učitana' - ,sv: 'Databas laddad' - ,it: 'Database caricato' - ,ja: 'データベースロード完了' - ,dk: 'Database indlæst' - ,fi: 'Tietokanta ladattu' - ,nb: 'Database lest' - ,he: 'בסיס נתונים נטען' - ,pl: 'Baza danych załadowana' - ,ru: 'База данных загружена' - ,sk: 'Databáza načítaná' - ,nl: 'Database geladen' - ,ko: '데이터베이스 로드' - ,tr: 'Veritabanı yüklendi' - ,zh_cn: '数据库已载入' - ,hu: 'Adatbázis betöltve' - } - ,'Error: Database failed to load' : { - cs: 'Chyba při načítání databáze' - ,de: 'Fehler: Datenbank konnte nicht geladen werden' - ,es: 'Error: Carga de base de datos fallida' - ,fr: 'Erreur: le chargement de la base de données a échoué' - ,el: 'Σφάλμα:Αποτυχία σύνδεσης με τη Βάση Δεδομένων' - ,pt: 'Erro: Banco de dados não carregado' - ,ro: 'Eroare: Nu s-a încărcat baza de date' - ,bg: 'ГРЕШКА. Базата с данни не успя да се зареди' - ,hr: 'Greška: Baza podataka nije učitana' - ,sv: 'Error: Databas kan ej laddas' - ,it: 'Errore: database non è stato caricato' - ,ja: 'エラー:データベースを読み込めません' - ,dk: 'Fejl: Database kan ikke indlæses' - ,fi: 'Virhe: Tietokannan lataaminen epäonnistui' - ,nb: 'Feil: Database kunne ikke leses' - ,he: 'שגיאה: לא ניתן לטעון בסיס נתונים' - ,pl: 'Błąd, baza danych nie może być załadowana' - ,ru: 'Ошибка: Не удалось загрузить базу данных' - ,sk: 'Chyba pri načítaní databázy' - ,nl: 'FOUT: Database niet geladen' - ,ko: '에러: 데이터베이스 로드 실패' - ,tr: 'Hata: Veritabanı yüklenemedi' - ,zh_cn: '错误:数据库载入失败' - ,hu: 'Hiba: Az adatbázist nem sikerült betölteni' - } - ,'Error' : { - cs: 'Error' - ,he: 'Error' - ,nb: 'Feil' - ,fr: 'Error' - ,ro: 'Error' - ,el: 'Error' - ,de: 'Error' - ,es: 'Error' - ,dk: 'Error' - ,sv: 'Error' - ,bg: 'Error' - ,hr: 'Greška' - ,it: 'Error' - ,fi: 'Error' - ,pl: 'Error' - ,pt: 'Error' - ,ru: 'Ошибка' - ,sk: 'Error' - ,nl: 'Error' - ,ko: 'Error' - ,tr: 'Error' - ,zh_cn: 'Error' - ,zh_tw: 'Error' - ,hu: 'Hiba' - } - ,'Create new record' : { - cs: 'Vytvořit nový záznam' - ,de: 'Erstelle neuen Datensatz' - ,es: 'Crear nuevo registro' - ,fr: 'Créer nouvel enregistrement' - ,el: 'Δημιουργία νέας εγγραφής' - ,pt: 'Criar novo registro' - ,ro: 'Crează înregistrare nouă' - ,bg: 'Създаване на нов запис' - ,hr: 'Kreiraj novi zapis' - ,sv: 'Skapa ny post' - ,it: 'Crea nuovo registro' - ,ja: '新しい記録を作る' - ,dk: 'Opret ny post' - ,fi: 'Luo uusi tallenne' - ,nb: 'Opprette ny registrering' - ,he: 'צור רשומה חדשה' - ,pl: 'Tworzenie nowego wpisu' - ,ru: 'Создайте новую запись' - ,sk: 'Vytovriť nový záznam' - ,nl: 'Opslaan' - ,ko: '새입력' - ,tr: 'Yeni kayıt oluştur' - ,zh_cn: '新增记录' - ,hu: 'Új bejegyzés' - } - ,'Save record' : { - cs: 'Uložit záznam' - ,de: 'Speichere Datensatz' - ,es: 'Guardar registro' - ,fr: 'Sauver enregistrement' - ,el: 'Αποθήκευση εγγραφής' - ,pt: 'Salvar registro' - ,ro: 'Salvează înregistrarea' - ,bg: 'Запази запис' - ,hr: 'Spremi zapis' - ,sv: 'Spara post' - ,it: 'Salva Registro' - ,ja: '保存' - ,dk: 'Gemmer post' - ,fi: 'Tallenna' - ,nb: 'Lagre registrering' - ,he: 'שמור רשומה' - ,pl: 'Zapisz wpis' - ,ru: 'Сохраните запись' - ,sk: 'Uložiť záznam' - ,nl: 'Sla op' - ,ko: '저장' - ,tr: 'Kayıtları kaydet' - ,zh_cn: '保存记录' - ,hu: 'Bejegyzés mentése' - } - ,'Portions' : { - cs: 'Porcí' - ,de: 'Portionen' - ,es: 'Porciones' - ,fr: 'Portions' - ,el: 'Μερίδα' - ,pt: 'Porções' - ,ro: 'Porții' - ,bg: 'Порции' - ,hr: 'Dijelovi' - ,sv: 'Portion' - ,it: 'Porzioni' - ,ja: '一食分' - ,dk: 'Portioner' - ,fi: 'Annokset' - ,nb: 'Porsjoner' - ,he: 'מנות' - ,pl: 'Porcja' - ,ru: 'Порции' - ,sk: 'Porcií' - ,nl: 'Porties' - ,ko: '부분' - ,tr: 'Porsiyonlar' - ,zh_cn: '部分' - ,hu: 'Porció' - } - ,'Unit' : { - cs: 'Jedn' - ,de: 'Einheit' - ,es: 'Unidades' - ,fr: 'Unités' - ,el: 'Μονάδα' - ,pt: 'Unidade' - ,ro: 'Unități' - ,bg: 'Единици' - ,hr: 'Jedinica' - ,sv: 'Enhet' - ,it: 'Unità' - ,ja: '単位' - ,dk: 'Enheder' - ,fi: 'Yksikkö' - ,nb: 'Enhet' - ,he: 'יחידות' - ,pl: 'Jednostka' - ,ru: 'Единица' - ,sk: 'Jednot.' - ,nl: 'Eenheid' - ,ko: '단위' - ,tr: 'Birim' - ,zh_cn: '单位' - ,hu: 'Egység' - } - ,'GI' : { - cs: 'GI' - ,he: 'GI' - ,de: 'GI' - ,es: 'IG' - ,fr: 'IG' - ,el: 'GI-Γλυκαιμικός Δείκτης' - ,pt: 'IG' - ,sv: 'GI' - ,ro: 'CI' - ,bg: 'ГИ' - ,hr: 'GI' - ,it: 'IG-Ind.Glic.' - ,ja: 'GI' - ,dk: 'GI' - ,fi: 'GI' - ,nb: 'GI' - ,pl: 'IG' - ,ru: 'гл индекс ГИ' - ,sk: 'GI' - ,nl: 'Glycemische index ' - ,ko: '혈당 지수' - ,tr: 'GI-Glisemik İndeks' - ,zh_cn: 'GI(血糖生成指数)' - ,hu: 'GI' - } - ,'Edit record' : { - cs: 'Upravit záznam' - ,de: 'Bearbeite Datensatz' - ,es: 'Editar registro' - ,fr: 'Modifier enregistrement' - ,el: 'Επεξεργασία εγγραφής' - ,pt: 'Editar registro' - ,ro: 'Editează înregistrarea' - ,bg: 'Редактирай запис' - ,hr: 'Uredi zapis' - ,sv: 'Editera post' - ,it: 'Modifica registro' - ,ja: '記録編集' - ,dk: 'Rediger post' - ,fi: 'Muokkaa tallennetta' - ,nb: 'Editere registrering' - ,he: 'ערוך רשומה' - ,pl: 'Edycja wpisu' - ,ru: 'Редактировать запись' - ,sk: 'Upraviť záznam' - ,nl: 'Bewerk invoer' - ,ko: '편집기록' - ,tr: 'Kaydı düzenle' - ,zh_cn: '编辑记录' - ,hu: 'Bejegyzés szerkesztése' - } - ,'Delete record' : { - cs: 'Smazat záznam' - ,de: 'Lösche Datensatz' - ,es: 'Borrar registro' - ,fr: 'Effacer enregistrement' - ,el: 'Διαγραφή εγγραφής' - ,pt: 'Apagar registro' - ,ro: 'Șterge înregistrarea' - ,bg: 'Изтрий запис' - ,hr: 'Izbriši zapis' - ,sv: 'Radera post' - ,it: 'Cancella registro' - ,ja: '記録削除' - ,dk: 'Slet post' - ,fi: 'Tuhoa tallenne' - ,nb: 'Slette registrering' - ,he: 'מחק רשומה' - ,pl: 'Usuń wpis' - ,ru: 'Стереть запись' - ,sk: 'Zmazať záznam' - ,nl: 'Verwijder invoer' - ,ko: '삭제기록' - ,tr: 'Kaydı sil' - ,zh_cn: '删除记录' - ,hu: 'Bejegyzés törlése' - } - ,'Move to the top' : { - cs: 'Přesuň na začátek' - ,de: 'Gehe zum Anfang' - ,es: 'Mover arriba' - ,fr: 'Déplacer au sommet' - ,el: 'Μετακίνηση πάνω' - ,pt: 'Mover para o topo' - ,sv: 'Gå till toppen' - ,ro: 'Mergi la început' - ,bg: 'Преместване в началото' - ,hr: 'Premjesti na vrh' - ,it: 'Spostare verso l\'alto' - ,ja: 'トップ画面へ' - ,dk: 'Gå til toppen' - ,fi: 'Siirrä ylimmäksi' - ,nb: 'Gå til toppen' - ,he: 'עבור למעלה' - ,pl: 'Przejdź do góry' - ,ru: 'Переместить наверх' - ,sk: 'Presunúť na začiatok' - ,nl: 'Ga naar boven' - ,ko: '맨처음으로 이동' - ,tr: 'En üste taşı' - ,zh_cn: '移至顶端' - ,hu: 'Áthelyezni az elejére' - } - ,'Hidden' : { - cs: 'Skrytý' - ,de: 'Verborgen' - ,es: 'Oculto' - ,fr: 'Caché' - ,el: 'Απόκρυψη' - ,pt: 'Oculto' - ,sv: 'Dold' - ,ro: 'Ascuns' - ,bg: 'Скрити' - ,hr: 'Skriveno' - ,it: 'Nascosto' - ,ja: '隠す' - ,dk: 'Skjult' - ,fi: 'Piilotettu' - ,nb: 'Skjult' - ,he: 'מוסתר' - ,pl: 'Ukryte' - ,ru: 'Скрыт' - ,sk: 'Skrytý' - ,nl: 'Verborgen' - ,ko: '숨김' - ,tr: 'Gizli' - ,zh_cn: '隐藏' - ,hu: 'Elrejtett' - } - ,'Hide after use' : { - cs: 'Skryj po použití' - ,de: 'Verberge nach Gebrauch' - ,es: 'Ocultar después de utilizar' - ,fr: 'Cacher après utilisation' - ,el: 'Απόκρυψη μετά τη χρήση' - ,pt: 'Ocultar após uso' - ,ro: 'Ascunde după folosireaa' - ,bg: 'Скрий след употреба' - ,hr: 'Sakrij nakon korištenja' - ,sv: 'Dölj efter användning' - ,it: 'Nascondi dopo l\'uso' - ,ja: '使用後に隠す' - ,dk: 'Skjul efter brug' - ,fi: 'Piilota käytön jälkeen' - ,nb: 'Skjul etter bruk' - ,he: 'הסתר לאחר שימוש' - ,pl: 'Ukryj po użyciu' - ,ru: 'Скрыть после использования' - ,sk: 'Skryť po použití' - ,nl: 'Verberg na gebruik' - ,ko: '사용 후 숨김' - ,tr: 'Kullandıktan sonra gizle' - ,zh_cn: '使用后隐藏' - ,hu: 'Elrejteni használat után' - } - ,'Your API secret must be at least 12 characters long' : { - cs: 'Vaše API heslo musí mít alespoň 12 znaků' - ,he: 'הסיסמא חייבת להיות באורך 12 תווים לפחות' - ,de: 'Deine API-Prüfsumme muss mindestens 12 Zeichen lang sein' - ,es: 'Su API secreo debe contener al menos 12 carácteres' - ,fr: 'Votre secret API doit contenir au moins 12 caractères' - ,el: 'Το συνθηματικό πρέπει να είναι τουλάχιστον 12 χαρακτήρων' - ,pt: 'Seu segredo de API deve conter no mínimo 12 caracteres' - ,ro: 'Cheia API trebuie să aibă mai mult de 12 caractere' - ,bg: 'Вашата АPI парола трябва да е дълга поне 12 символа' - ,hr: 'Vaš tajni API mora sadržavati barem 12 znakova' - ,sv: 'Hemlig API-nyckel måsta innehålla 12 tecken' - ,it: 'il vostro API secreto deve essere lungo almeno 12 caratteri' - ,ja: 'APIシークレットは12文字以上の長さが必要です' - ,dk: 'Din API nøgle skal være mindst 12 tegn lang' - ,fi: 'API-avaimen tulee olla ainakin 12 merkin mittainen' - ,nb: 'Din API-nøkkel må være minst 12 tegn lang' - ,pl: 'Twój poufny klucz API musi zawierać co majmniej 12 znaków' - ,ru: 'Ваш пароль API должен иметь не менее 12 знаков' - ,sk: 'Vaše API heslo musí mať najmenej 12 znakov' - ,nl: 'Uw API wachtwoord dient tenminste 12 karakters lang te zijn' - ,ko: 'API secret는 최소 12자 이상이여야 합니다.' - ,tr: 'PI parolanız en az 12 karakter uzunluğunda olmalıdır' - ,zh_cn: 'API密钥最少需要12个字符' - ,zh_tw: 'API密鑰最少需要12個字符' - ,hu: 'Az API jelszó több mint 12 karakterből kell hogy álljon' - } - ,'Bad API secret' : { - cs: 'Chybné API heslo' - ,de: 'Fehlerhafte API-Prüfsumme' - ,he: 'סיסמא שגויה' - ,es: 'API secreto incorrecto' - ,fr: 'Secret API erroné' - ,el: 'Λάθος συνθηματικό' - ,pt: 'Segredo de API incorreto' - ,ro: 'Cheie API greșită' - ,bg: 'Некоректна API парола' - ,hr: 'Neispravan tajni API' - ,sv: 'Felaktig API-nyckel' - ,it: 'API secreto non corretto' - ,ja: 'APIシークレットは正しくありません' - ,dk: 'Forkert API-nøgle' - ,fi: 'Väärä API-avain' - ,nb: 'Ugyldig API-nøkkel' - ,pl: 'Błędny klucz API' - ,ru: 'Плохой пароль API' - ,sk: 'Nesprávne API heslo' - ,nl: 'Onjuist API wachtwoord' - ,ko: '잘못된 API secret' - ,tr: 'Hatalı API parolası' - ,zh_cn: 'API密钥错误' - ,zh_tw: 'API密鑰錯誤' - ,hu: 'Helytelen API jelszó' - } - ,'API secret hash stored' : { - cs: 'Hash API hesla uložen' - ,he: 'סיסמא אוכסנה' - ,de: 'API-Prüfsumme gespeichert' - ,es: 'Hash del API secreto guardado' - ,fr: 'Hash API secret sauvegardé' - ,el: 'Το συνθηματικό αποθηκεύτηκε' - ,pt: 'Segredo de API guardado' - ,ro: 'Cheie API înregistrată' - ,bg: 'УРА! API парола запаметена' - ,hr: 'API tajni hash je pohranjen' - ,sv: 'Lagrad hemlig API-hash' - ,it: 'Hash API secreto memorizzato' - ,ja: 'APIシークレットを保存出来ました' - ,dk: 'Hemmelig API-hash gemt' - ,fi: 'API salaisuus talletettu' - ,nb: 'API-nøkkel lagret' - ,pl: 'Poufne klucz API zapisane' - ,ru: 'Хэш пароля API сохранен' - ,sk: 'Hash API hesla uložený' - ,nl: 'API wachtwoord opgeslagen' - ,ko: 'API secret hash가 저장 되었습니다.' - ,tr: 'API secret hash parolası saklandı' - ,zh_cn: 'API密钥已存储' - ,zh_tw: 'API密鑰已存儲' - ,hu: 'API jelszó elmentve' - } - ,'Status' : { - cs: 'Status' - ,de: 'Status' - ,es: 'Estado' - ,fr: 'Statut' - ,el: 'Κατάσταση' - ,pt: 'Status' - ,sv: 'Status' - ,ro: 'Status' - ,bg: 'Статус' - ,hr: 'Status' - ,it: 'Stato' - ,ja: '統計' - ,dk: 'Status' - ,fi: 'Tila' - ,nb: 'Status' - ,he: 'מצב מערכת' - ,pl: 'Status' - ,ru: 'Статус' - ,sk: 'Status' - ,nl: 'Status' - ,ko: '상태' - ,tr: 'Durum' - ,zh_cn: '状态' - ,hu: 'Állapot' - } - ,'Not loaded' : { - cs: 'Nenačtený' - ,he: 'לא נטען' - ,de: 'Nicht geladen' - ,es: 'No cargado' - ,fr: 'Non chargé' - ,el: 'Δεν έγινε μεταφόρτωση' - ,pt: 'Não carregado' - ,ro: 'Neîncărcat' - ,bg: 'Не е заредено' - ,hr: 'Nije učitano' - ,sv: 'Ej laddad' - ,it: 'Non caricato' - ,ja: '読み込めません' - ,dk: 'Ikke indlæst' - ,fi: 'Ei ladattu' - ,nb: 'Ikke lest' - ,pl: 'Nie załadowany' - ,ru: 'Не загружено' - ,sk: 'Nenačítaný' - ,nl: 'Niet geladen' - ,ko: '로드되지 않음' - ,tr: 'Yüklü değil' - ,zh_cn: '未载入' - ,hu: 'Nincs betöltve' - } - ,'Food Editor' : { - cs: 'Editor jídel' - ,he: 'עורך המזון' - ,de: 'Nahrungsmittel-Editor' - ,es: 'Editor de alimentos' - ,fr: 'Editeur aliments' - ,el: 'Επεξεργασία Δεδομένων Φαγητών' - ,pt: 'Editor de alimentos' - ,ro: 'Editor alimente' - ,bg: 'Редактор за храна' - ,hr: 'Editor hrane' - ,sv: 'Födoämneseditor' - ,it: 'NS - Database Alimenti' - ,ja: '食事編集' - ,dk: 'Mad editor' - ,fi: 'Muokkaa ruokia' - ,nb: 'Mat-editor' - ,pl: 'Edytor posiłków' - ,ru: 'Редактор продуктов' - ,sk: 'Editor jedál' - ,nl: 'Voeding beheer' - ,ko: '음식 편집' - ,tr: 'Gıda Editörü' - ,zh_cn: '食物编辑器' - ,hu: 'Étel szerkesztése' - } - ,'Your database' : { - cs: 'Vaše databáze' - ,de: 'Deine Datenbank' - ,es: 'Su base de datos' - ,fr: 'Votre base de données' - ,el: 'Η Βάση Δεδομένων σας' - ,pt: 'Seu banco de dados' - ,sv: 'Din databas' - ,ro: 'Baza de date' - ,bg: 'Твоята база с данни' - ,hr: 'Vaša baza podataka' - ,it: 'Vostro database' - ,ja: 'あなたのデータベース' - ,dk: 'Din database' - ,fi: 'Tietokantasi' - ,nb: 'Din database' - ,he: 'בסיס הנתונים שלך' - ,pl: 'Twoja baza danych' - ,ru: 'Ваша база данных ' - ,sk: 'Vaša databáza' - ,nl: 'Uw database' - ,ko: '당신의 데이터베이스' - ,tr: 'Sizin Veritabanınız' - ,zh_cn: '你的数据库' - ,hu: 'Ön adatbázisa' - } - ,'Filter' : { - cs: 'Filtr' - ,de: 'Filter' - ,es: 'Filtro' - ,fr: 'Filtre' - ,el: 'Φίλτρο' - ,pt: 'Filtro' - ,sv: 'Filter' - ,ro: 'Filtru' - ,bg: 'Филтър' - ,hr: 'Filter' - ,it: 'Filtro' - ,ja: 'フィルター' - ,dk: 'Filter' - ,fi: 'Suodatin' - ,nb: 'Filter' - ,nl: 'Filter' - ,he: 'סנן' - ,pl: 'Filtr' - ,ru: 'Фильтр' - ,sk: 'Filter' - ,ko: '필터' - ,tr: 'Filtre' - ,zh_cn: '过滤器' - ,hu: 'Filter' - } - ,'Save' : { - cs: 'Ulož' - ,de: 'Speichern' - ,es: 'Salvar' - ,fr: 'Sauver' - ,el: 'Αποθήκευση' - ,pt: 'Salvar' - ,ro: 'Salvează' - ,bg: 'Запази' - ,hr: 'Spremi' - ,sv: 'Spara' - ,it: 'Salva' - ,ja: '保存' - ,dk: 'Gem' - ,fi: 'Tallenna' - ,nb: 'Lagre' - ,he: 'שמור' - ,pl: 'Zapisz' - ,ru: 'Сохранить' - ,sk: 'Uložiť' - ,nl: 'Opslaan' - ,ko: '저장' - ,tr: 'Kaydet' - ,zh_cn: '保存' - ,zh_tw: '保存' - ,hu: 'Mentés' - } - ,'Clear' : { - cs: 'Vymaž' - ,de: 'Löschen' - ,es: 'Limpiar' - ,fr: 'Effacer' - ,el: 'Καθαρισμός' - ,pt: 'Apagar' - ,ro: 'Inițializare' - ,bg: 'Изчисти' - ,hr: 'Očisti' - ,sv: 'Rensa' - ,it: 'Pulisci' - ,ja: 'クリア' - ,dk: 'Rense' - ,fi: 'Tyhjennä' - ,nb: 'Tøm' - ,he: 'נקה' - ,pl: 'Wyczyść' - ,ru: 'Очистить' - ,sk: 'Vymazať' - ,nl: 'Leeg maken' - ,ko: '취소' - ,tr: 'Temizle' - ,zh_cn: '清除' - ,hu: 'Kitöröl' - } - ,'Record' : { - cs: 'Záznam' - ,de: 'Datensatz' - ,es: 'Guardar' - ,fr: 'Enregistrement' - ,el: 'Εγγραφή' - ,pt: 'Gravar' - ,sv: 'Post' - ,ro: 'Înregistrare' - ,bg: 'Запиши' - ,hr: 'Zapis' - ,it: 'Registro' - ,ja: '記録' - ,dk: 'Post' - ,fi: 'Tietue' - ,nb: 'Registrering' - ,he: 'רשומה' - ,pl: 'Wpis' - ,ru: 'Запись' - ,sk: 'Záznam' - ,nl: 'Toevoegen' - ,ko: '기록' - ,tr: 'Kayıt' - ,zh_cn: '记录' - ,hu: 'Bejegyzés' - } - ,'Quick picks' : { - cs: 'Rychlý výběr' - ,de: 'Schnellauswahl' - ,es: 'Selección rápida' - ,fr: 'Sélection rapide' - ,el: 'Γρήγορη επιλογή' - ,pt: 'Seleção rápida' - ,ro: 'Selecție rapidă' - ,bg: 'Бърз избор' - ,hr: 'Brzi izbor' - ,sv: 'Snabbval' - ,it: 'Scelta rapida' - ,ja: 'クイック選択' - ,dk: 'Hurtig valg' - ,fi: 'Nopeat valinnat' - ,nb: 'Hurtigvalg' - ,he: 'בחירה מהירה' - ,pl: 'Szybki wybór' - ,ru: 'Быстрый отбор' - ,sk: 'Rýchly výber' - ,nl: 'Snelkeuze' - ,ko: '빠른 선택' - ,tr: 'Hızlı seçim' - ,zh_cn: '快速选择' - ,hu: 'Gyors választás' - } - ,'Show hidden' : { - cs: 'Zobraz skryté' - ,de: 'Verborgenes zeigen' - ,es: 'Mostrar ocultos' - ,fr: 'Montrer cachés' - ,el: 'Εμφάνιση κρυφών εγγραφών' - ,pt: 'Mostrar ocultos' - ,ro: 'Arată înregistrările ascunse' - ,bg: 'Покажи скритото' - ,hr: 'Prikaži skriveno' - ,sv: 'Visa dolda' - ,it: 'Mostra nascosto' - ,ja: '表示する' - ,dk: 'Vis skjulte' - ,fi: 'Näytä piilotettu' - ,nb: 'Vis skjulte' - ,he: 'הצג נתונים מוסתרים' - ,pl: 'Pokaż ukryte' - ,ru: 'Показать скрытые' - ,sk: 'Zobraziť skryté' - ,nl: 'Laat verborgen zien' - ,ko: '숨김 보기' - ,tr: 'Gizli göster' - ,zh_cn: '显示隐藏值' - ,hu: 'Eltakart mutatása' - } - ,'Your API secret or token' : { - fi: 'API salaisuus tai avain' - ,nb: 'Din API-nøkkel eller passord' - ,pl: 'Twój hash API lub token' - ,ru: 'Ваш пароль API или код доступа ' - ,de: 'Deine API-Prüfsumme oder Token' - ,hu: 'Az API jelszo' - } - ,'Remember this device. (Do not enable this on public computers.)' : { - fi: 'Muista tämä laite (Älä valitse julkisilla tietokoneilla)' - ,nb: 'Husk denne enheten (Ikke velg dette på offentlige eller delte datamaskiner)' - , pl: 'Zapamiętaj to urządzenie (Nie używaj tej opcji korzystając z publicznych komputerów.)' - ,ru: 'Запомнить это устройство (Не применяйте в общем доступе)' - ,de: 'An dieses Gerät erinnern. (Nicht auf öffentlichen Geräten verwenden)' - ,hu: 'A berendezés megjegyzése. (Csak saját berendezésen használd' - } - ,'Treatments' : { - cs: 'Ošetření' - ,de: 'Behandlungen' - ,es: 'Tratamientos' - ,fr: 'Traitements' - ,el: 'Ενέργειες' - ,pt: 'Procedimentos' - ,sv: 'Behandling' - ,ro: 'Tratamente' - ,bg: 'Събития' - ,hr: 'Tretmani' - ,it: 'Somministrazioni' - ,ja: '治療' - ,dk: 'Behandling' - ,fi: 'Hoitotoimenpiteet' - ,nb: 'Behandlinger' - ,he: 'טיפולים' - ,pl: 'Leczenie' - ,ru: 'Лечение' - ,sk: 'Ošetrenie' - ,nl: 'Behandelingen' - ,ko: '관리' - ,tr: 'Tedaviler' - ,zh_cn: '操作' - ,hu: 'Kezelések' - } - ,'Time' : { - cs: 'Čas' - ,de: 'Zeit' - ,es: 'Hora' - ,fr: 'Heure' - ,el: 'Ώρα' - ,pt: 'Hora' - ,sv: 'Tid' - ,ro: 'Ora' - ,bg: 'Време' - ,hr: 'Vrijeme' - ,it: 'Tempo' - ,ja: '時間' - ,dk: 'Tid' - ,fi: 'Aika' - ,nb: 'Tid' - ,he: 'זמן' - ,pl: 'Czas' - ,ru: 'Время' - ,sk: 'Čas' - ,nl: 'Tijd' - ,ko: '시간' - ,tr: 'Zaman' - ,zh_cn: '时间' - ,zh_tw: '時間' - ,hu: 'Idő' - } - ,'Event Type' : { - cs: 'Typ události' - ,de: 'Ereignis-Typ' - ,es: 'Tipo de evento' - ,fr: 'Type d\'événement' - ,el: 'Ενέργεια' - ,pt: 'Tipo de evento' - ,sv: 'Händelsetyp' - ,ro: 'Tip eveniment' - ,bg: 'Вид събитие' - ,hr: 'Vrsta događaja' - ,it: 'Tipo di evento' - ,ja: 'イベント' - ,dk: 'Hændelsestype' - ,fi: 'Tapahtumatyyppi' - ,nb: 'Hendelsestype' - ,he: 'סוג אירוע' - ,pl: 'Typ zdarzenia' - ,ru: 'Тип события' - ,sk: 'Typ udalosti' - ,nl: 'Soort' - ,ko: '입력 유형' - ,tr: 'Etkinlik tipi' - ,zh_cn: '事件类型' - ,hu: 'Esemény típusa' - } - ,'Blood Glucose' : { - cs: 'Glykémie' - ,de: 'Blutglukose' - ,es: 'Glucemia' - ,fr: 'Glycémie' - ,el: 'Γλυκόζη Αίματος' - ,pt: 'Glicemia' - ,sv: 'Glukosvärde' - ,ro: 'Glicemie' - ,bg: 'Кръвна захар' - ,hr: 'GUK' - ,it: 'Glicemie' - ,ja: '血糖値' - ,dk: 'Glukoseværdi' - ,fi: 'Verensokeri' - ,nb: 'Blodsukker' - ,he: 'סוכר בדם' - ,pl: 'Glikemia z krwi' - ,ru: 'Гликемия' - ,sk: 'Glykémia' - ,nl: 'Bloed glucose' - ,ko: '혈당' - ,tr: 'Kan Şekeri' - ,zh_cn: '血糖值' - ,hu: 'Vércukor szint' - } - ,'Entered By' : { - cs: 'Zadal' - ,de: 'Eingabe durch' - ,es: 'Introducido por' - ,fr: 'Entré par' - ,el: 'Εισήχθη από' - ,pt: 'Inserido por' - ,sv: 'Inlagt av' - ,ro: 'Introdus de' - ,bg: 'Въведено от' - ,hr: 'Unos izvršio' - ,it: 'inserito da' - ,ja: '入力者' - ,dk: 'Indtastet af' - ,fi: 'Tiedot syötti' - ,nb: 'Lagt inn av' - ,he: 'הוזן על-ידי' - ,pl: 'Wprowadzono przez' - ,ru: 'Внесено через' - ,sk: 'Zadal' - ,nl: 'Ingevoerd door' - ,ko: '입력 내용' - ,tr: 'Tarafından girildi' - ,zh_cn: '输入人' - ,hu: 'Beírta' - } - ,'Delete this treatment?' : { - cs: 'Vymazat toto ošetření?' - ,de: 'Diese Behandlung löschen?' - ,es: '¿Borrar este tratamiento?' - ,fr: 'Effacer ce traitement?' - ,el: 'Διαγραφή ενέργειας' - ,pt: 'Apagar este procedimento?' - ,ro: 'Șterge acest eveniment?' - ,bg: 'Изтрий това събитие' - ,hr: 'Izbriši ovaj tretman?' - ,sv: 'Ta bort händelse?' - ,it: 'Eliminare questa somministrazione?' - ,ja: 'この治療データを削除しますか?' - ,dk: 'Slet denne hændelse?' - ,fi: 'Tuhoa tämä hoitotoimenpide?' - ,nb: 'Slett denne hendelsen?' - ,he: 'למחוק רשומה זו?' - ,pl: 'Usunąć te leczenie?' - ,ru: 'Удалить это событие?' - ,sk: 'Vymazať toto ošetrenie?' - ,nl: 'Verwijder' - ,ko: '이 대처를 지울까요?' - ,tr: 'Bu tedaviyi sil?' - ,zh_cn: '删除这个操作?' - ,hu: 'Kezelés törlése?' - } - ,'Carbs Given' : { - cs: 'Sacharidů' - ,de: 'Kohlenhydratgabe' - ,es: 'Hidratos de carbono dados' - ,fr: 'Glucides donnés' - ,el: 'Υδατάνθρακες' - ,pt: 'Carboidratos' - ,ro: 'Carbohidrați' - ,bg: 'ВХ' - ,hr: 'Količina UGH' - ,sv: 'Antal kolhydrater' - ,it: 'Carboidrati' - ,ja: '摂取糖質量' - ,dk: 'Antal kulhydrater' - ,fi: 'Hiilihydraatit' - ,nb: 'Karbohydrat' - ,he: 'פחמימות שנאכלו' - ,pl: 'Węglowodany spożyte' - ,ru: 'Дано углеводов' - ,sk: 'Sacharidov' - ,nl: 'Aantal koolhydraten' - ,ko: '탄수화물 요구량' - ,tr: 'Karbonhidrat Verilen' - ,zh_cn: '碳水化合物量' - ,hu: 'Szénhidrátok' - } - ,'Inzulin Given' : { - cs: 'Inzulínu' - ,de: 'Insulingabe' - ,es: 'Insulina dada' - ,fr: 'Insuline donnée' - ,el: 'Ινσουλίνη' - ,pt: 'Insulina' - ,ro: 'Insulină administrată' - ,bg: 'Инсулин' - ,hr: 'Količina inzulina' - ,sv: 'Insulin' - ,it: 'Insulina' - ,ja: 'インスリン投与量' - ,dk: 'Insulin' - ,fi: 'Insuliiniannos' - ,nb: 'Insulin' - ,he: 'אינסולין שניתן' - ,pl: 'Insulina podana' - ,ru: 'Дано инсулина' - ,sk: 'Inzulínu' - ,nl: 'Insuline' - ,ko: '인슐린 요구량' - ,tr: 'İnsülin Verilen' - ,zh_cn: '胰岛素输注' - ,hu: 'Beadott inzulin' - } - ,'Event Time' : { - cs: 'Čas události' - ,de: 'Ereignis-Zeit' - ,es: 'Hora del evento' - ,fr: 'Heure de l\'événement' - ,el: 'Ώρα ενέργειας' - ,pt: 'Hora do evento' - ,sv: 'Klockslag' - ,ro: 'Ora evenimentului' - ,bg: 'Въвеждане' - ,hr: 'Vrijeme događaja' - ,it: 'Ora Evento' - ,ja: 'イベント時間' - ,dk: 'Tidspunkt for hændelsen' - ,fi: 'Aika' - ,nb: 'Tidspunkt' - ,he: 'זמן האירוע' - ,pl: 'Czas zdarzenia' - ,ru: 'Время события' - ,sk: 'Čas udalosti' - ,nl: 'Tijdstip' - ,ko: '입력 시간' - ,tr: 'Etkinliğin zamanı' - ,zh_cn: '事件时间' - ,hu: 'Időpont' - } - ,'Please verify that the data entered is correct' : { - cs: 'Prosím zkontrolujte, zda jsou údaje zadány správně' - ,de: 'Bitte Daten auf Plausibilität prüfen' - ,es: 'Por favor, verifique que los datos introducidos son correctos' - ,el: 'Παρακαλώ ελέξτε ότι τα δεδομένα είναι σωστά' - ,fr: 'Merci de vérifier la correction des données entrées' - ,pt: 'Favor verificar se os dados estão corretos' - ,ro: 'Verificați conexiunea datelor introduse' - ,bg: 'Моля проверете, че датата е въведена правилно' - ,hr: 'Molim Vas provjerite jesu li uneseni podaci ispravni' - ,sv: 'Vänligen verifiera att inlagd data är korrekt' - ,it: 'Si prega di verificare che i dati inseriti siano corretti' - ,ja: '入力したデータが正しいか確認をお願いします。' - ,dk: 'Venligst verificer at indtastet data er korrekt' - ,fi: 'Varmista, että tiedot ovat oikein' - ,nb: 'Vennligst verifiser at inntastet data er korrekt' - ,he: 'נא לוודא שהמידע שהוזן הוא נכון ומדוייק' - ,pl: 'Proszę sprawdzić, czy wprowadzone dane są prawidłowe' - ,ru: 'Проверьте правильность вводимых данных' - ,sk: 'Prosím, skontrolujte správnosť zadaných údajov' - ,nl: 'Controleer uw invoer' - ,ko: '입력한 데이터가 정확한지 확인해 주세요.' - ,tr: 'Lütfen girilen verilerin doğru olduğunu kontrol edin.' - ,zh_cn: '请验证输入的数据是否正确' - ,hu: 'Kérlek ellenőrizd, hogy az adatok helyesek.' - } - ,'BG' : { - cs: 'Glykémie' - ,he: 'סוכר בדם' - ,de: 'BG' - ,es: 'Glucemia en sangre' - ,fr: 'Glycémie' - ,el: 'Τιμή Γλυκόζης Αίματος' - ,pt: 'Glicemia' - ,sv: 'BS' - ,ro: 'Glicemie' - ,bg: 'КЗ' - ,hr: 'GUK' - ,it: 'Glicemie' - ,ja: 'BG' - ,dk: 'BS' - ,fi: 'VS' - ,nb: 'BS' - ,pl: 'BG' - ,ru: 'ГК' - ,sk: 'Glykémia' - ,nl: 'BG' - ,ko: '혈당' - ,tr: 'KŞ' - ,zh_cn: '血糖' - ,hu: 'Cukorszint' - } - ,'Use BG correction in calculation' : { - cs: 'Použij korekci na glykémii' - ,he: 'השתמש ברמת סוכר בדם לצורך החישוב' - ,de: 'Verwende BG-Korrektur zur Kalkulation' - ,es: 'Usar la corrección de glucemia en los cálculos' - ,fr: 'Utiliser la correction de glycémie dans les calculs' - ,el: 'Χρήση τη διόρθωσης της τιμής γλυκόζης για τον υπολογισμό' - ,pt: 'Usar correção de glicemia nos cálculos' - ,ro: 'Folosește corecția de glicemie în calcule' - ,bg: 'Използвай корекцията за КЗ в изчислението' - ,hr: 'Koristi korekciju GUK-a u izračunu' - ,sv: 'Använd BS-korrektion för beräkning' - ,it: 'Utilizzare la correzione nei calcoli delle Glicemie' - ,ja: 'ボーラス計算機能使用' - ,dk: 'Anvend BS-korrektion i beregning' - ,fi: 'Käytä korjausannosta laskentaan' - ,nb: 'Bruk blodsukkerkorrigering i beregningen' - ,pl: 'Użyj BG w obliczeniach korekty' - ,ru: 'При расчете учитывать коррекцию ГК' - ,sk: 'Použite korekciu na glykémiu' - ,nl: 'Gebruik BG in berekeningen' - ,ko: '계산에 보정된 혈당을 사용하세요.' - ,tr: 'Hesaplamada KŞ düzeltmesini kullan' - ,zh_cn: '使用血糖值修正计算' - ,hu: 'Használj korekciót a számításban' - } - ,'BG from CGM (autoupdated)' : { - cs: 'Glykémie z CGM (automaticky aktualizovaná)' - ,he: 'רמת סוכר מהחיישן , מעודכן אוטומטית' - ,de: 'Blutglukose vom CGM (Auto-Update)' - ,es: 'Glucemia del sensor (Auto-actualizado)' - ,fr: 'Glycémie CGM (automatique)' - ,el: 'Τιμή γλυκόζης από τον αισθητήρα (αυτόματο)' - ,pt: 'Glicemia do sensor (Automático)' - ,sv: 'BS från CGM (automatiskt)' - ,ro: 'Glicemie în senzor (automat)' - ,bg: 'КЗ от сензора (автоматично)' - ,hr: 'GUK sa CGM-a (ažuriran automatski)' - ,it: 'Glicemie da CGM (aggiornamento automatico)' - ,ja: 'CGMグルコース値' - ,dk: 'BS fra CGM (automatisk)' - ,fi: 'VS sensorilta (päivitetty automaattisesti)' - ,nb: 'BS fra CGM (automatisk)' - ,pl: 'Wartość BG z CGM (automatycznie)' - ,ru: 'ГК с сенсора (автообновление)' - ,sk: 'Glykémia z CGM (automatická aktualizácia) ' - ,nl: 'BG van CGM (automatische invoer)' - ,ko: 'CGM 혈당(자동 업데이트)' - ,tr: 'CGM den KŞ (otomatik güncelleme)' - ,zh_cn: 'CGM(连续血糖监测)测量的血糖值(自动更新)' - ,hu: 'Cukorszint a CGM-ből (Automatikus frissítés)' - } - ,'BG from meter' : { - cs: 'Glykémie z glukoměru' - ,he: 'רמת סוכר ממד הסוכר' - ,de: 'Blutzucker vom Messgerät' - ,es: 'Glucemia del glucómetro' - ,fr: 'Glycémie du glucomètre' - ,el: 'Τιμή γλυκόζης από τον μετρητή' - ,pt: 'Glicemia do glicosímetro' - ,sv: 'BS från blodsockermätare' - ,ro: 'Glicemie în glucometru' - ,bg: 'КЗ от глюкомер' - ,hr: 'GUK s glukometra' - ,it: 'Glicemie da glucometro' - ,ja: '血糖測定器使用グルコース値' - ,dk: 'BS fra blodsukkerapperat' - ,fi: 'VS mittarilta' - ,nb: 'BS fra blodsukkerapparat' - ,pl: 'Wartość BG z glukometru' - ,ru: 'ГК по глюкометру' - ,sk: 'Glykémia z glukomeru' - ,nl: 'BG van meter' - ,ko: '혈당 측정기에서의 혈당' - ,tr: 'Glikometre KŞ' - ,zh_cn: '血糖仪测量的血糖值' - ,hu: 'Cukorszint a merőből' - } - ,'Manual BG' : { - cs: 'Ručně zadaná glykémie' - ,he: 'רמת סוכר ידנית' - ,de: 'BG von Hand' - ,es: 'Glucemia manual' - ,fr: 'Glycémie manuelle' - ,el: 'Χειροκίνητη εισαγωγή τιμής γλυκόζης' - ,pt: 'Glicemia Manual' - ,ro: 'Glicemie manuală' - ,bg: 'Ръчно въведена КЗ' - ,hr: 'Ručno unesen GUK' - ,sv: 'Manuellt BS' - ,it: 'Inserisci Glicemia' - ,ja: '手動入力グルコース値' - ,dk: 'Manuelt BS' - ,fi: 'Käsin syötetty VS' - ,nb: 'Manuelt BS' - ,pl: 'Ręczne wprowadzenie BG' - ,ru: 'ручной ввод ГК' - ,sk: 'Ručne zadaná glykémia' - ,nl: 'Handmatige BG' - ,ko: '수동 입력 혈당' - ,tr: 'Manuel KŞ' - ,zh_cn: '手动输入的血糖值' - ,hu: 'Kézi cukorszint' - } - ,'Quickpick' : { - cs: 'Rychlý výběr' - ,he: 'בחירה מהירה' - ,de: 'Schnellauswahl' - ,es: 'Selección rápida' - ,fr: 'Sélection rapide' - ,el: 'Γρήγορη εισαγωγή' - ,pt: 'Seleção rápida' - ,ro: 'Selecție rapidă' - ,bg: 'Бърз избор' - ,hr: 'Brzi izbor' - ,sv: 'Snabbval' - ,it: 'Scelta rapida' - ,ja: 'クイック選択' - ,dk: 'Hurtig valg' - ,fi: 'Pikavalinta' - ,nb: 'Hurtigvalg' - ,pl: 'Szybki wybór' - ,ru: 'Быстрый отбор' - ,sk: 'Rýchly výber' - ,nl: 'Snelkeuze' - ,ko: '빠른 선택' - ,tr: 'Hızlı seçim' - ,zh_cn: '快速选择' - ,hu: 'Gyors választás' - } - ,'or' : { - cs: 'nebo' - ,de: 'oder' - ,es: 'o' - ,fr: 'ou' - ,el: 'ή' - ,pt: 'ou' - ,sv: 'Eller' - ,ro: 'sau' - ,bg: 'или' - ,hr: 'ili' - ,it: 'o' - ,ja: 'または' - ,dk: 'eller' - ,fi: 'tai' - ,nb: 'eller' - ,he: 'או' - ,pl: 'lub' - ,ru: 'или' - ,sk: 'alebo' - ,nl: 'of' - ,ko: '또는' - ,tr: 'veya' - ,zh_cn: '或' - ,hu: 'vagy' - } - ,'Add from database' : { - cs: 'Přidat z databáze' - ,de: 'Ergänze aus Datenbank' - ,es: 'Añadir desde la base de datos' - ,fr: 'Ajouter à partir de la base de données' - ,el: 'Επιλογή από τη Βάση Δεδομένων' - ,pt: 'Adicionar do banco de dados' - ,ro: 'Adaugă din baza de date' - ,bg: 'Добави от базата с данни' - ,hr: 'Dodaj iz baze podataka' - ,sv: 'Lägg till från databas' - ,it: 'Aggiungi dal database' - ,ja: 'データベースから追加' - ,dk: 'Tilføj fra database' - ,fi: 'Lisää tietokannasta' - ,nb: 'Legg til fra database' - ,he: 'הוסף מבסיס נתונים' - ,pl: 'Dodaj z bazy danych' - ,ru: 'Добавить из базы данных' - ,sk: 'Pridať z databázy' - ,nl: 'Toevoegen uit database' - ,ko: '데이터베이스로 부터 추가' - ,tr: 'Veritabanından ekle' - ,zh_cn: '从数据库增加' - ,hu: 'Hozzáadás adatbázisból' - } - ,'Use carbs correction in calculation' : { - cs: 'Použij korekci na sacharidy' - ,he: 'השתמש בתיקון פחמימות במהלך החישוב' - ,de: 'Verwende Kohlenhydrate-Korrektur zur Kalkulation' - ,es: 'Usar la corrección de hidratos de carbono en los cálculos' - ,fr: 'Utiliser la correction en glucides dans les calculs' - ,el: 'Χρήση των νέων υδατανθράκων που εισήχθησαν για τον υπολογισμό' - ,pt: 'Usar correção com carboidratos no cálculo' - ,ro: 'Folosește corecția de carbohidrați în calcule' - ,bg: 'Включи корекцията чрез ВХ в изчислението' - ,hr: 'Koristi korekciju za UH u izračunu' - ,sv: 'Använd kolhydratkorrektion för beräkning' - ,it: 'Utilizzare la correzione dei carboidrati nel calcolo' - ,ja: '糖質量計算機能を使用' - ,dk: 'Benyt kulhydratkorrektion i beregning' - ,fi: 'Käytä hiilihydraattikorjausta laskennassa' - ,nb: 'Bruk karbohydratkorrigering i beregningen' - ,pl: 'Użyj wartość węglowodanów w obliczeniach korekty' - ,ru: 'Пользоваться коррекцией на углеводы при расчете' - ,sk: 'Použite korekciu na sacharidy' - ,nl: 'Gebruik KH correctie in berekening' - ,ko: '계산에 보정된 탄수화물을 사용하세요.' - ,tr: 'Hesaplamada karbonhidrat düzeltmesini kullan' - ,zh_cn: '使用碳水化合物修正计算结果' - ,hu: 'Használj szénhidrát korekciót a számításban' - } - ,'Use COB correction in calculation' : { - cs: 'Použij korekci na COB' - ,he: 'השתמש בתיקון פחמימות בגוף במהלך החישוב' - ,de: 'Verwende verzehrte Kohlenhydrate zur Kalkulation' - ,es: 'Usar carbohidratos activos para los cálculos' - ,fr: 'Utiliser les COB dans les calculs' - ,el: 'Χρήση των υδατανθράκων που απομένουν για τον υπολογισμό' - ,pt: 'Usar correção de COB no cálculo' - ,ro: 'Folosește COB în calcule' - ,bg: 'Включи активните ВХ в изчислението' - ,hr: 'Koristi aktivne UGH u izračunu' - ,sv: 'Använd aktiva kolhydrater för beräkning' - ,it: 'Utilizzare la correzione COB nel calcolo' - ,ja: 'COB補正計算を使用' - ,dk: 'Benyt aktive kulhydrater i beregning' - ,fi: 'Käytä aktiivisia hiilihydraatteja laskennassa' - ,nb: 'Bruk aktive karbohydrater i beregningen' - ,pl: 'Użyj COB do obliczenia korekty' - ,ru: 'Учитывать активные углеводы COB при расчете' - ,sk: 'Použite korekciu na COB' - ,nl: 'Gebruik ingenomen KH in berekening' - ,ko: '계산에 보정된 COB를 사용하세요.' - ,tr: 'Hesaplamada COB aktif karbonhidrat düzeltmesini kullan' - ,zh_cn: '使用COB(活性碳水化合物)修正计算结果' - ,hu: 'Használj COB korrekciót a számításban' - } - ,'Use IOB in calculation' : { - cs: 'Použij IOB ve výpočtu' - ,he: 'השתמש בתיקון אינסולין בגוף במהלך החישוב' - ,de: 'Verwende gespritzes Insulin zur Kalkulation' - ,es: 'Usar Insulina activa en los cálculos' - ,fr: 'Utiliser l\'IOB dans les calculs' - ,el: 'Χρήση της υπολογισθείσας ινσουλίνης που έχει απομείνει για τον υπολογισμό' - ,pt: 'Usar IOB no cálculo' - ,ro: 'Folosește IOB în calcule' - ,bg: 'Включи активния инсулин в изчислението' - ,hr: 'Koristi aktivni inzulin u izračunu' - ,sv: 'Använd aktivt insulin för beräkning' - ,it: 'Utilizzare la correzione IOB nel calcolo' - ,ja: 'IOB計算を使用' - ,dk: 'Benyt aktivt insulin i beregningen' - ,fi: 'Käytä aktiviivista insuliinia laskennassa' - ,nb: 'Bruk aktivt insulin i beregningen' - ,pl: 'Użyj IOB w obliczeniach' - ,ru: 'Учитывать активный инсулин IOB при расчете' - ,sk: 'Použite IOB vo výpočte' - ,nl: 'Gebruik IOB in berekening' - ,ko: '계산에 IOB를 사용하세요.' - ,tr: 'Hesaplamada IOB aktif insülin düzeltmesini kullan' - ,zh_cn: '使用IOB(活性胰岛素)修正计算结果' - ,hu: 'Használj IOB kalkulációt' - } - ,'Other correction' : { - cs: 'Jiná korekce' - ,he: 'תיקון אחר' - ,de: 'Weitere Korrektur' - ,es: 'Otra corrección' - ,fr: 'Autre correction' - ,el: 'Άλλη διόρθωση' - ,pt: 'Outra correção' - ,ro: 'Alte corecții' - ,bg: 'Друга корекция' - ,hr: 'Druga korekcija' - ,sv: 'Övrig korrektion' - ,it: 'Altre correzioni' - ,ja: 'その他の補正' - ,dk: 'Øvrig korrektion' - ,fi: 'Muu korjaus' - ,nb: 'Annen korrigering' - ,pl: 'Inna korekta' - ,ru: 'Иная коррекция' - ,sk: 'Iná korekcia' - ,nl: 'Andere correctie' - ,ko: '다른 보정' - ,tr: 'Diğer düzeltme' - ,zh_cn: '其它修正' - ,hu: 'Egyébb korrekció' - } - ,'Rounding' : { - cs: 'Zaokrouhlení' - ,he: 'עיגול' - ,de: 'Gerundet' - ,es: 'Redondeo' - ,fr: 'Arrondi' - ,el: 'Στρογγυλοποίηση' - ,pt: 'Arredondamento' - ,sv: 'Avrundning' - ,ro: 'Rotunjire' - ,bg: 'Закръгляне' - ,hr: 'Zaokruživanje' - ,it: 'Arrotondamento' - ,ja: '端数処理' - ,dk: 'Afrunding' - ,fi: 'Pyöristys' - ,nb: 'Avrunding' - ,pl: 'Zaokrąglanie' - ,ru: 'Округление' - ,sk: 'Zaokrúhlenie' - ,nl: 'Afgerond' - ,ko: '라운딩' - ,tr: 'yuvarlama' - ,zh_cn: '取整' - ,hu: 'Kerekítés' - } - ,'Enter insulin correction in treatment' : { - cs: 'Zahrň inzulín do záznamu ošetření' - ,he: 'הזן תיקון אינסולין בטיפול' - ,de: 'Insulin Korrektur zur Behandlung eingeben' - ,es: 'Introducir correción de insulina en tratamiento' - ,fr: 'Entrer correction insuline dans le traitement' - ,el: 'Υπολογισθείσα ποσότητα ινσουλίνης που απαιτείται' - ,pt: 'Inserir correção com insulina no tratamento' - ,ro: 'Introdu corecția de insulină în tratament' - ,bg: 'Въведи корекция с инсулин като лечение' - ,hr: 'Unesi korekciju inzulinom u tretman' - ,sv: 'Ange insulinkorrektion för händelse' - ,it: 'Inserisci correzione insulina nella somministrazione' - ,ja: '治療にインスリン補正を入力する。' - ,dk: 'Indtast insulinkorrektion' - ,fi: 'Syötä insuliinikorjaus' - ,nb: 'Angi insulinkorrigering' - ,pl: 'Wprowadź wartość korekty w leczeniu' - ,ru: 'Внести коррекцию инсулина в лечение' - ,sk: 'Zadajte korekciu inzulínu do ošetrenia' - ,nl: 'Voer insuline correctie toe aan behandeling' - ,ko: '대처를 위해 보정된 인슐린을 입력하세요.' - ,tr: 'Tedavide insülin düzeltmesini girin' - ,zh_cn: '在操作中输入胰岛素修正' - ,hu: 'Add be az inzulin korrekciót a kezeléshez' - } - ,'Insulin needed' : { - cs: 'Potřebný inzulín' - ,de: 'Benötigtes Insulin' - ,es: 'Insulina necesaria' - ,fr: 'Insuline nécessaire' - ,el: 'Απαιτούμενη Ινσουλίνη' - ,pt: 'Insulina necessária' - ,ro: 'Necesar insulină' - ,bg: 'Необходим инсулин' - ,hr: 'Potrebno inzulina' - ,sv: 'Beräknad insulinmängd' - ,it: 'Insulina necessaria' - ,ja: '必要インスリン単位' - ,dk: 'Insulin påkrævet' - ,fi: 'Insuliinitarve' - ,nb: 'Insulin nødvendig' - ,he: 'אינסולין נדרש' - ,pl: 'Wymagana insulina' - ,ru: 'Требуется инсулин' - ,sk: 'Potrebný inzulín' - ,nl: 'Benodigde insuline' - ,ko: '인슐린 필요' - ,tr: 'İnsülin gerekli' - ,zh_cn: '需要的胰岛素量' - ,hu: 'Inzulin szükséges' - } - ,'Carbs needed' : { - cs: 'Potřebné sach' - ,de: 'Benötigte Kohlenhydrate' - ,es: 'Hidratos de carbono necesarios' - ,fr: 'Glucides nécessaires' - ,el: 'Απαιτούμενοι Υδατάνθρακες' - ,pt: 'Carboidratos necessários' - ,ro: 'Necesar carbohidrați' - ,bg: 'Необходими въглехидрати' - ,hr: 'Potrebno UGH' - ,sv: 'Beräknad kolhydratmängd' - ,it: 'Carboidrati necessari' - ,ja: '必要糖質量' - ,dk: 'Kulhydrater påkrævet' - ,fi: 'Hiilihydraattitarve' - ,nb: 'Karbohydrater nødvendig' - ,he: 'פחמימות נדרשות' - ,pl: 'Wymagane węglowodany' - ,ru: 'Требуются углеводы' - ,sk: 'Potrebné sacharidy' - ,nl: 'Benodigde koolhydraten' - ,ko: '탄수화물 필요' - ,tr: 'Karbonhidrat gerekli' - ,zh_cn: '需要的碳水量' - ,hu: 'Szenhidrát szükséges' - } - ,'Carbs needed if Insulin total is negative value' : { - cs: 'Chybějící sacharidy v případě, že výsledek je záporný' - ,he: 'פחמימות דרושות אם סך אינסולין הוא שלילי' - ,de: 'Benötigte Kohlenhydrate sofern Gesamtinsulin einen negativen Wert aufweist' - ,es: 'Carbohidratos necesarios si total insulina es un valor negativo' - ,fr: 'Glucides nécessaires si insuline totale est un valeur négative' - ,el: 'Απαιτούνται υδατάνθρακες εάν η συνολική ινσουλίνη έχει αρνητική τιμή' - ,pt: 'Carboidratos necessários se Insulina total for negativa' - ,ro: 'Carbohidrați când necesarul de insulină este negativ' - ,bg: 'Необходими въглехидрати, ако няма инсулин' - ,hr: 'Potrebno UGH ako je ukupna vrijednost inzulina negativna' - ,sv: 'Nödvändig kolhydratmängd för angiven insulinmängd' - ,it: 'Carboidrati necessari se l\'insulina totale è un valore negativo' - ,ja: 'インスリン合計値がマイナスであればカーボ値入力が必要です。' - ,dk: 'Kulhydrater er nødvendige når total insulin mængde er negativ' - ,fi: 'Hiilihydraattitarve, jos yhteenlaskettu insuliini on negatiivinen' - ,nb: 'Karbohydrater er nødvendige når total insulinmengde er negativ' - ,pl: 'Wymagane węglowodany, jeśli łączna wartość Insuliny jest ujemna' - ,ru: 'Требуются углеводы если суммарный инсулин отрицательная величина' - ,sk: 'Potrebné sacharidy, ak je celkový inzulín záporná hodnota' - ,nl: 'Benodigde KH als insuline een negatieve waarde geeft' - ,ko: '인슐린 전체가 마이너스 값이면 탄수화물이 필요합니다.' - ,tr: 'Toplam insülin negatif değer olduğunda karbonhidrat gereklidir' - ,zh_cn: '如果胰岛素总量为负时所需的碳水化合物量' - ,hu: 'Szénhidrát szükséges ha az összes inzulin negatív érték' - } - ,'Basal rate' : { - cs: 'Bazál' - ,he: 'קצב בזלי' - ,de: 'Basalrate' - ,es: 'Tasa basal' - ,fr: 'Taux basal' - ,el: 'Ρυθμός Βασικής Ινσουλίνης' - ,pt: 'Taxa basal' - ,ro: 'Rata bazală' - ,bg: 'Базален инсулин' - ,hr: 'Bazal' - ,sv: 'Basaldos' - ,it: 'Velocità basale' - ,ja: '基礎インスリン割合' - ,dk: 'Basal rate' - ,fi: 'Perusannos' - ,nb: 'Basal' - ,pl: 'Dawka bazowa' - ,ru: 'Скорость базала' - ,sk: 'Bazál' - ,nl: 'Basaal snelheid' - ,ko: 'Basal 단위' - ,tr: 'Basal oranı' - ,zh_cn: '基础率' - ,hu: 'Bazál arány' - } - ,'60 minutes earlier' : { - cs: '60 min předem' - ,he: 'שישים דקות מוקדם יותר' - ,de: '60 Minuten früher' - ,es: '60 min antes' - ,fr: '60 min plus tôt' - ,el: '60 λεπτά πριν' - ,pt: '60 min antes' - ,sv: '60 min tidigare' - ,ro: 'acum 60 min' - ,bg: 'Преди 60 минути' - ,hr: 'Prije 60 minuta' - ,it: '60 minuti prima' - ,ja: '60分前' - ,dk: '60 min tidligere' - ,fi: '60 minuuttia aiemmin' - ,nb: '60 min tidligere' - ,pl: '60 minut wcześniej' - ,ru: 'на 60 минут ранее' - ,sk: '60 min. pred' - ,nl: '60 minuten eerder' - ,ko: '60분 더 일찍' - ,tr: '60 dak. önce' //erken önce ??? - ,zh_cn: '60分钟前' - ,hu: '60 perccel korábban' - } - ,'45 minutes earlier' : { - cs: '45 min předem' - ,he: 'ארבעים דקות מוקדם יותר' - ,de: '45 Minuten früher' - ,es: '45 min antes' - ,fr: '45 min plus tôt' - ,el: '45 λεπτά πριν' - ,pt: '45 min antes' - ,sv: '45 min tidigare' - ,ro: 'acum 45 min' - ,bg: 'Преди 45 минути' - ,hr: 'Prije 45 minuta' - ,it: '45 minuti prima' - ,ja: '45分前' - ,dk: '45 min tidligere' - ,fi: '45 minuuttia aiemmin' - ,nb: '45 min tidligere' - ,pl: '45 minut wcześniej' - ,ru: 'на 45 минут ранее' - ,sk: '45 min. pred' - ,nl: '45 minuten eerder' - ,ko: '45분 더 일찍' - ,tr: '45 dak. önce' - ,zh_cn: '45分钟前' - ,hu: '45 perccel korábban' - } - ,'30 minutes earlier' : { - cs: '30 min předem' - ,he: 'שלושים דקות מוקדם יותר' - ,de: '30 Minuten früher' - ,es: '30 min antes' - ,fr: '30 min plus tôt' - ,el: '30 λεπτά πριν' - ,pt: '30 min antes' - ,sv: '30 min tidigare' - ,ro: 'acum 30 min' - ,bg: 'Преди 30 минути' - ,hr: 'Prije 30 minuta' - ,it: '30 minuti prima' - ,ja: '30分前' - ,dk: '30 min tidigere' - ,fi: '30 minuuttia aiemmin' - ,nb: '30 min tidigere' - ,pl: '30 minut wcześniej' - ,ru: 'на 30 минут ранее' - ,sk: '30 min. pred' - ,nl: '30 minuten eerder' - ,ko: '30분 더 일찍' - ,tr: '30 dak. önce' - ,zh_cn: '30分钟前' - ,hu: '30 perccel korábban' - } - ,'20 minutes earlier' : { - cs: '20 min předem' - ,he: 'עשרים דקות מוקדם יותר' - ,de: '20 Minuten früher' - ,es: '20 min antes' - ,fr: '20 min plus tôt' - ,el: '20 λεπτά πριν' - ,pt: '20 min antes' - ,sv: '20 min tidigare' - ,ro: 'acum 20 min' - ,bg: 'Преди 20 минути' - ,hr: 'Prije 20 minuta' - ,it: '20 minuti prima' - ,ja: '20分前' - ,dk: '20 min tidligere' - ,fi: '20 minuuttia aiemmin' - ,nb: '20 min tidligere' - ,pl: '20 minut wcześniej' - ,ru: 'на 20 минут ранее' - ,sk: '20 min. pred' - ,nl: '20 minuten eerder' - ,ko: '20분 더 일찍' - ,tr: '20 dak. önce' - ,zh_cn: '20分钟前' - ,hu: '20 perccel korábban' - } - ,'15 minutes earlier' : { - cs: '15 min předem' - ,he: 'חמש עשרה דקות מוקדם יותר' - ,de: '15 Minuten früher' - ,es: '15 min antes' - ,fr: '15 min plus tôt' - ,el: '15 λεπτά πριν' - ,pt: '15 min antes' - ,sv: '15 min tidigare' - ,ro: 'acum 15 min' - ,bg: 'Преди 15 минути' - ,hr: 'Prije 15 minuta' - ,it: '15 minuti prima' - ,ja: '15分前' - ,dk: '15 min tidligere' - ,fi: '15 minuuttia aiemmin' - ,nb: '15 min tidligere' - ,pl: '15 minut wcześniej' - ,ru: 'на 15 минут ранее' - ,sk: '15 min. pred' - ,nl: '15 minuten eerder' - ,ko: '15분 더 일찍' - ,tr: '15 dak. önce' - ,zh_cn: '15分钟前' - ,hu: '15 perccel korábban' - } - ,'Time in minutes' : { - cs: 'Čas v minutách' - ,de: 'Zeit in Minuten' - ,es: 'Tiempo en minutos' - ,fr: 'Durée en minutes' - ,el: 'Χρόνος σε λεπτά' - ,pt: 'Tempo em minutos' - ,sv: 'Tid i minuter' - ,ro: 'Timp în minute' - ,bg: 'Времето в минути' - ,hr: 'Vrijeme u minutama' - ,it: 'Tempo in minuti' - ,dk: 'Tid i minutter' - ,fi: 'Aika minuuteissa' - ,nb: 'Tid i minutter' - ,he: 'זמן בדקות' - ,pl: 'Czas w minutach' - ,ru: 'Время в минутах' - ,sk: 'Čas v minútach' - ,nl: 'Tijd in minuten' - ,ko: '분' - ,tr: 'Dakika cinsinden süre' - ,zh_cn: '1分钟前' - ,hu: 'Idő percekben' - } - ,'15 minutes later' : { - cs: '15 min po' - ,de: '15 Minuten später' - ,es: '15 min más tarde' - ,fr: '15 min plus tard' - ,el: '15 λεπτά αργότερα' - ,pt: '15 min depois' - ,ro: 'după 15 min' - ,bg: 'След 15 минути' - ,hr: '15 minuta kasnije' - ,sv: '15 min senare' - ,it: '15 minuti più tardi' - ,ja: '15分後' - ,dk: '15 min senere' - ,fi: '15 minuuttia myöhemmin' - ,nb: '15 min senere' - ,he: 'רבע שעה מאוחר יותר' - ,pl: '15 minut później' - ,ru: 'на 15 мин позже' - ,sk: '15 min. po' - ,nl: '15 minuten later' - ,ko: '15분 더 나중에' - ,tr: '15 dak. sonra' //sonra daha sonra - ,zh_cn: '15分钟后' - ,hu: '15 perccel később' - } - ,'20 minutes later' : { - cs: '20 min po' - ,de: '20 Minuten später' - ,es: '20 min más tarde' - ,fr: '20 min plus tard' - ,el: '20 λεπτά αργότερα' - ,pt: '20 min depois' - ,ro: 'după 20 min' - ,bg: 'След 20 минути' - ,hr: '20 minuta kasnije' - ,sv: '20 min senare' - ,it: '20 minuti più tardi' - ,ja: '20分後' - ,dk: '20 min senere' - ,fi: '20 minuuttia myöhemmin' - ,nb: '20 min senere' - ,he: 'עשרים דקות מאוחר יותר' - ,pl: '20 minut później' - ,ru: 'на 20 мин позже' - ,sk: '20 min. po' - ,nl: '20 minuten later' - ,ko: '20분 더 나중에' - ,tr: '20 dak. sonra' - ,zh_cn: '20分钟后' - ,hu: '20 perccel később' - } - ,'30 minutes later' : { - cs: '30 min po' - ,de: '30 Minuten später' - ,es: '30 min más tarde' - ,fr: '30 min plus tard' - ,el: '30 λεπτά αργότερα' - ,pt: '30 min depois' - ,ro: 'după 30 min' - ,bg: 'След 30 минути' - ,hr: '30 minuta kasnije' - ,sv: '30 min senare' - ,it: '30 minuti più tardi' - ,ja: '30分後' - ,dk: '30 min senere' - ,fi: '30 minuuttia myöhemmin' - ,nb: '30 min senere' - ,he: 'חצי שעה מאוחר יותר' - ,pl: '30 minut później' - ,ru: 'на 30 мин позже' - ,sk: '30 min. po' - ,nl: '30 minuten later' - ,ko: '30분 더 나중에' - ,tr: '30 dak. sonra' - ,zh_cn: '30分钟后' - ,hu: '30 perccel kesőbb' - } - ,'45 minutes later' : { - cs: '45 min po' - ,de: '45 Minuten später' - ,es: '45 min más tarde' - ,fr: '45 min plus tard' - ,el: '45 λεπτά αργότερα' - ,pt: '45 min depois' - ,ro: 'după 45 min' - ,bg: 'След 45 минути' - ,hr: '45 minuta kasnije' - ,sv: '45 min senare' - ,it: '45 minuti più tardi' - ,ja: '45分後' - ,dk: '45 min senere' - ,fi: '45 minuuttia myöhemmin' - ,nb: '45 min senere' - ,he: 'שלושת רבעי שעה מאוחר יותר' - ,pl: '45 minut później' - ,ru: 'на 45 мин позже' - ,sk: '45 min. po' - ,nl: '45 minuten later' - ,ko: '45분 더 나중에' - ,tr: '45 dak. sonra' - ,zh_cn: '45分钟后' - ,hu: '45 perccel később' - } - ,'60 minutes later' : { - cs: '60 min po' - ,de: '60 Minuten später' - ,es: '60 min más tarde' - ,fr: '60 min plus tard' - ,el: '60 λεπτά αργότερα' - ,pt: '60 min depois' - ,ro: 'după 60 min' - ,bg: 'След 60 минути' - ,hr: '60 minuta kasnije' - ,sv: '60 min senare' - ,it: '60 minuti più tardi' - ,ja: '60分後' - ,dk: '60 min senere' - ,fi: '60 minuuttia myöhemmin' - ,nb: '60 min senere' - ,he: 'שעה מאוחר יותר' - ,pl: '60 minut później' - ,ru: 'на 60 мин позже' - ,sk: '60 min. po' - ,nl: '60 minuten later' - ,ko: '60분 더 나중에' - ,tr: '60 dak. sonra' - ,zh_cn: '60分钟后' - ,hu: '60 perccel később' - } - ,'Additional Notes, Comments' : { - cs: 'Dalši poznámky, komentáře' - ,de: 'Ergänzende Hinweise/Kommentare' - ,es: 'Notas adicionales, Comentarios' - ,fr: 'Notes additionnelles, commentaires' - ,el: 'Επιπλέον σημειώσεις/σχόλια' - ,pt: 'Notas adicionais e comentários' - ,ro: 'Note adiționale, comentarii' - ,bg: 'Допълнителни бележки, коментари' - ,hr: 'Dodatne bilješke, komentari' - ,sv: 'Notering, övrigt' - ,it: 'Note aggiuntive, commenti' - ,ja: '追加メモ、コメント' - ,dk: 'Ekstra noter, kommentarer' - ,fi: 'Lisähuomiot, kommentit' - ,nb: 'Notater' - ,he: 'הערות נוספות' - ,pl: 'Uwagi dodatkowe' - ,ru: 'Дополнительные примечания' - ,sk: 'Ďalšie poznámky, komentáre' - ,nl: 'Extra aantekeningen' - ,ko: '추가 메모' - ,tr: 'Ek Notlar, Yorumlar' - ,zh_cn: '备注' - ,hu: 'Feljegyzések, hozzászólások' - } - ,'RETRO MODE' : { - cs: 'V MINULOSTI' - ,he: 'מצב רטרו' - ,de: 'Retro-Modus' - ,es: 'Modo Retrospectivo' - ,fr: 'MODE RETROSPECTIF' - ,el: 'Αναδρομική Λειτουργία' - ,pt: 'Modo Retrospectivo' - ,sv: 'Retroläge' - ,ro: 'MOD RETROSPECTIV' - ,bg: 'МИНАЛО ВРЕМЕ' - ,hr: 'Retrospektivni način' - ,it: 'Modalità retrospettiva' - ,ja: '振り返りモード' - ,dk: 'Retro mode' - ,fi: 'VANHENTUNEET TIEDOT' - ,nb: 'Retro-modus' - ,nl: 'Retro mode' - ,pl: 'Tryb RETRO' - ,ru: 'режим РЕТРО' - ,sk: 'V MINULOSTI' - ,ko: 'PETRO MODE' - ,tr: 'RETRO MODE' - ,zh_cn: '历史模式' - ,hu: 'RETRO mód' - } - ,'Now' : { - cs: 'Nyní' - ,de: 'Jetzt' - ,es: 'Ahora' - ,fr: 'Maintenant' - ,el: 'Τώρα' - ,pt: 'Agora' - ,sv: 'Nu' - ,ro: 'Acum' - ,bg: 'Сега' - ,hr: 'Sad' - ,it: 'Ora' - ,ja: '今' - ,dk: 'Nu' - ,fi: 'Nyt' - ,nb: 'Nå' - ,he: 'עכשיו' - ,pl: 'Teraz' - ,ru: 'Сейчас' - ,sk: 'Teraz' - ,nl: 'Nu' - ,ko: '현재' - ,tr: 'Şimdi' - ,zh_cn: '现在' - ,hu: 'Most' - } - ,'Other' : { - cs: 'Jiný' - ,de: 'Weitere' - ,es: 'Otro' - ,fr: 'Autre' - ,el: 'Άλλο' - ,pt: 'Outro' - ,sv: 'Övrigt' - ,ro: 'Altul' - ,bg: 'Друго' - ,hr: 'Drugo' - ,it: 'Altro' - ,ja: '他の' - ,dk: 'Øvrige' - ,fi: 'Muu' - ,nb: 'Annet' - ,he: 'אחר' - ,pl: 'Inny' - ,ru: 'Другое' - ,sk: 'Iný' - ,nl: 'Andere' - ,ko: '다른' - ,tr: 'Diğer' - ,zh_cn: '其它' - ,hu: 'Más' - } - ,'Submit Form' : { - cs: 'Odeslat formulář' - ,de: 'Formular absenden' - ,es: 'Enviar formulario' - ,fr: 'Suomettre le formulaire' - ,el: 'Υποβολή Φόρμας' - ,pt: 'Enviar formulário' - ,sv: 'Överför händelse' - ,ro: 'Trimite formularul' - ,bg: 'Въвеждане на данните' - ,hr: 'Spremi' - ,it: 'Invia il modulo' - ,ja: 'フォームを投稿する' - ,dk: 'Gem hændelsen' - ,fi: 'Lähetä tiedot' - ,nb: 'Lagre' - ,he: 'שמור' - ,pl: 'Zatwierdź' - ,ru: 'Ввести форму' - ,sk: 'Odoslať formulár' - ,nl: 'Formulier opslaan' - ,ko: '양식 제출' - ,tr: 'Formu gönder' - ,zh_cn: '提交' - ,hu: 'Elküldés' - } - ,'Profile Editor' : { - cs: 'Editor profilu' - ,de: 'Profil-Editor' - ,es: 'Editor de perfil' - ,fr: 'Editeur de profil' - ,el: 'Επεξεργασία Προφίλ' - ,pt: 'Editor de perfil' - ,sv: 'Editera profil' - ,ro: 'Editare profil' - ,bg: 'Редактор на профила' - ,hr: 'Editor profila' - ,it: 'NS - Dati Personali' - ,ja: 'プロフィール編集' - ,dk: 'Profil editor' - ,fi: 'Profiilin muokkaus' - ,nb: 'Profileditor' - ,he: 'ערוך פרופיל' - ,pl: 'Edytor profilu' - ,ru: 'Редактор профиля' - ,sk: 'Editor profilu' - ,nl: 'Profiel beheer' - ,ko: '프로파일 편집' - ,tr: 'Profil Düzenleyicisi' - ,zh_cn: '配置文件编辑器' - ,zh_tw: '配置文件編輯器' - ,hu: 'Profil Szerkesztő' - } - ,'Reports' : { - cs: 'Výkazy' - ,he: 'דוחות' - ,de: 'Berichte' - ,es: 'Herramienta de informes' - ,fr: 'Outil de rapport' - ,el: 'Αναφορές' - ,pt: 'Relatórios' - ,sv: 'Rapportverktyg' - ,ro: 'Instrumente raportare' - ,bg: 'Статистика' - ,hr: 'Izvještaji' - ,it: 'NS - Statistiche' - ,ja: '報告' - ,dk: 'Rapporteringsværktøj' - ,fi: 'Raportointityökalu' - ,nb: 'Rapporter' - ,pl: 'Raporty' - ,ru: 'Отчеты' - ,sk: 'Správy' - ,nl: 'Rapporten' - ,ko: '보고서' - ,tr: 'Raporlar' - ,zh_cn: '生成报表' - ,zh_tw: '生成報表' - ,hu: 'Jelentések' - } - ,'Add food from your database' : { - cs: 'Přidat jidlo z Vaší databáze' - ,he: 'הוסף אוכל מבסיס הנתונים שלך' - ,de: 'Ergänze Nahrung aus Deiner Datenbank' - ,es: 'Añadir alimento a su base de datos' - ,fr: 'Ajouter aliment de votre base de données' - ,el: 'Προσθήκη φαγητού από τη Βάση Δεδομένων' - ,pt: 'Incluir alimento do seu banco de dados' - ,ro: 'Adaugă alimente din baza de date' - ,bg: 'Добави храна от твоята база с данни' - ,hr: 'Dodajte hranu iz svoje baze podataka' - ,sv: 'Lägg till livsmedel från databas' - ,it: 'Aggiungere cibo al database' - ,ja: 'データベースから食べ物を追加' - ,dk: 'Tilføj mad fra din database' - ,fi: 'Lisää ruoka tietokannasta' - ,nb: 'Legg til mat fra din database' - ,pl: 'Dodaj posiłek z twojej bazy danych' - ,ru: 'Добавить продукт из вашей базы данных' - ,sk: 'Pridať jedlo z Vašej databázy' - ,nl: 'Voeg voeding toe uit uw database' - ,ko: '데이터베이스에서 음식을 추가하세요.' - ,tr: 'Veritabanınızdan yemek ekleyin' - ,zh_cn: '从数据库增加食物' - ,hu: 'Étel hozzáadása az adatbázisból' - } - ,'Reload database' : { - cs: 'Znovu nahraj databázi' - ,he: 'טען בסיס נתונים שוב' - ,de: 'Datenbank nachladen' - ,es: 'Recargar base de datos' - ,fr: 'Recharger la base de données' - ,el: 'Επαναφόρτωση Βάσης Δεδομένων' - ,pt: 'Recarregar banco de dados' - ,ro: 'Reîncarcă baza de date' - ,bg: 'Презареди базата с данни' - ,hr: 'Ponovo učitajte bazu podataka' - ,sv: 'Ladda om databas' - ,it: 'Ricarica database' - ,ja: 'データベース再読み込み' - ,dk: 'Genindlæs databasen' - ,fi: 'Lataa tietokanta uudelleen' - ,nb: 'Last inn databasen på nytt' - ,pl: 'Odśwież bazę danych' - ,ru: 'Перезагрузить базу данных' - ,sk: 'Obnoviť databázu' - ,nl: 'Database opnieuw laden' - ,ko: '데이터베이스 재로드' - ,tr: 'Veritabanını yeniden yükle' - ,zh_cn: '重新载入数据库' - ,hu: 'Adatbázis újratöltése' - } - ,'Add' : { - cs: 'Přidej' - ,he: 'הוסף' - ,de: 'Hinzufügen' - ,es: 'Añadir' - ,fr: 'Ajouter' - ,el: 'Προσθήκη' - ,pt: 'Adicionar' - ,ro: 'Adaugă' - ,bg: 'Добави' - ,hr: 'Dodaj' - ,sv: 'Lägg till' - ,it: 'Aggiungere' - ,ja: '追加' - ,dk: 'Tilføj' - ,fi: 'Lisää' - ,nb: 'Legg til' - ,pl: 'Dodaj' - ,ru: 'Добавить' - ,sk: 'Pridať' - ,nl: 'Toevoegen' - ,ko: '추가' - ,tr: 'Ekle' - ,zh_cn: '增加' - ,hu: 'Hozzáadni' - } - ,'Unauthorized' : { - cs: 'Neautorizováno' - ,he: 'אין אישור' - ,de: 'Unbefugt' - ,es: 'No autorizado' - ,fr: 'Non autorisé' - ,el: 'Χωρίς εξουσιοδότηση' - ,pt: 'Não autorizado' - ,sv: 'Ej behörig' - ,ro: 'Neautorizat' - ,bg: 'Неразрешен достъп' - ,hr: 'Neautorizirano' - ,it: 'Non Autorizzato' - ,ja: '認証されていません' - ,dk: 'Uautoriseret' - ,fi: 'Et ole autentikoitunut' - ,nb: 'Uautorisert' - ,pl: 'Nieuwierzytelniono' - ,ru: 'Не авторизовано' - ,sk: 'Neautorizované' - ,nl: 'Ongeauthoriseerd' - ,ko: '미인증' - ,tr: 'Yetkisiz' - ,zh_cn: '未授权' - ,zh_tw: '未授權' - ,hu: 'Nincs autorizávla' - } - ,'Entering record failed' : { - cs: 'Vložení záznamu selhalo' - ,he: 'הוספת רשומה נכשלה' - ,de: 'Eingabe Datensatz fehlerhaft' - ,es: 'Entrada de registro fallida' - ,fr: 'Entrée enregistrement a échoué' - ,el: 'Η εισαγωγή της εγγραφής απέτυχε' - ,pt: 'Entrada de registro falhou' - ,ro: 'Înregistrare eșuată' - ,bg: 'Въвеждане на записа не се осъществи' - ,hr: 'Neuspjeli unos podataka' - ,sv: 'Lägga till post nekas' - ,it: 'Voce del Registro fallita' - ,ja: '入力されたものは記録できませんでした' - ,dk: 'Tilføjelse af post fejlede' - ,fi: 'Tiedon tallentaminen epäonnistui' - ,nb: 'Lagring feilet' - ,pl: 'Wprowadzenie wpisu nie powiodło się' - ,ru: 'Ввод записи не состоялся' - ,sk: 'Zadanie záznamu zlyhalo' - ,nl: 'Toevoegen mislukt' - ,ko: '입력 실패' - ,tr: 'Kayıt girişi başarısız oldu' - ,zh_cn: '输入记录失败' - ,hu: 'Hozzáadás nem sikerült' - } - ,'Device authenticated' : { - cs: 'Zařízení ověřeno' - ,he: 'התקן מאושר' - ,de: 'Gerät authentifiziert' - ,es: 'Dispositivo autorizado' - ,fr: 'Appareil authentifié' - ,el: 'Εξουσιοδοτημένη Συσκευή' - ,pt: 'Dispositivo autenticado' - ,sv: 'Enhet autentiserad' - ,ro: 'Dispozitiv autentificat' - ,bg: 'Устройстово е разпознато' - ,hr: 'Uređaj autenticiran' - ,it: 'Disp. autenticato' - ,ja: '機器は認証されました。' - ,dk: 'Enhed godkendt' - ,fi: 'Laite autentikoitu' - ,nb: 'Enhet godkjent' - ,pl: 'Urządzenie uwierzytelnione' - ,ru: 'Устройство авторизовано' - ,sk: 'Zariadenie overené' - ,nl: 'Apparaat geauthenticeerd' - ,ko: '기기 인증' - ,tr: 'Cihaz kimliği doğrulandı' - ,zh_cn: '设备已认证' - ,zh_tw: '設備已認證' - ,hu: 'Berendezés hitelesítve' - } - ,'Device not authenticated' : { - cs: 'Zařízení není ověřeno' - ,he: 'התקן לא מאושר' - ,de: 'Gerät nicht authentifiziert' - ,es: 'Dispositivo no autorizado' - ,fr: 'Appareil non authentifié' - ,el: 'Συσκευή Μη Εξουσιοδοτημένη' - ,pt: 'Dispositivo não autenticado' - ,sv: 'Enhet EJ autentiserad' - ,ro: 'Dispozitiv neautentificat' - ,bg: 'Устройсройството не е разпознато' - ,hr: 'Uređaj nije autenticiran' - ,it: 'Disp. non autenticato' - ,ja: '機器は認証されていません。' - ,dk: 'Enhed ikke godkendt' - ,fi: 'Laite ei ole autentikoitu' - ,nb: 'Enhet ikke godkjent' - ,pl: 'Urządzenie nieuwierzytelnione' - ,ru: 'Устройство не авторизовано' - ,sk: 'Zariadenie nieje overené' - ,nl: 'Apparaat niet geauthenticeerd' - ,ko: '미인증 기기' - ,tr: 'Cihaz kimliği doğrulanmamış' - ,zh_cn: '设备未认证' - ,zh_tw: '設備未認證' - ,hu: 'Berendezés nincs hitelesítve' - } - ,'Authentication status' : { - cs: 'Stav ověření' - ,he: 'סטטוס אימות' - ,de: 'Authentifikationsstatus' - ,es: 'Estado de autorización' - ,fr: 'Status de l\'authentification' - ,el: 'Κατάσταση Εξουσιοδότησης' - ,pt: 'Status de autenticação' - ,ro: 'Starea autentificării' - ,bg: 'Статус на удостоверяване' - ,hr: 'Status autentikacije' - ,sv: 'Autentiseringsstatus' - ,it: 'Stato di autenticazione' - ,ja: '認証ステータス' - ,dk: 'Godkendelsesstatus' - ,fi: 'Autentikoinnin tila' - ,nb: 'Autentiseringsstatus' - ,pl: 'Status uwierzytelnienia' - ,ru: 'Статус авторизации' - ,sk: 'Stav overenia' - ,nl: 'Authenticatie status' - ,ko: '인증 상태' - ,tr: 'Kimlik doğrulama durumu' - ,zh_cn: '认证状态' - ,zh_tw: '認證狀態' - ,hu: 'Hitelesítés állapota' - } - ,'Authenticate' : { - cs: 'Ověřit' - ,he: 'אמת' - ,de: 'Authentifizieren' - ,es: 'Autentificar' - ,fr: 'Authentifier' - ,el: 'Πιστοποίηση' - ,pt: 'Autenticar' - ,sv: 'Autentisera' - ,ro: 'Autentificare' - ,bg: 'Удостоверяване' - ,hr: 'Autenticirati' - ,it: 'Autenticare' - ,ja: '認証' - ,dk: 'Godkende' - ,fi: 'Autentikoi' - ,nb: 'Autentiser' - ,pl: 'Uwierzytelnienie' - ,ru: 'Авторизуйте' - ,sk: 'Overiť' - ,nl: 'Authenticatie' - ,ko: '인증' - ,tr: 'Kimlik doğrulaması' - ,zh_cn: '认证' - ,zh_tw: '認證' - ,hu: 'Hitelesítés' - } - ,'Remove' : { - cs: 'Vymazat' - ,he: 'הסר' - ,de: 'Entfernen' - ,es: 'Eliminar' - ,fr: 'Retirer' - ,el: 'Αφαίρεση' - ,pt: 'Remover' - ,ro: 'Șterge' - ,bg: 'Премахни' - ,hr: 'Ukloniti' - ,sv: 'Ta bort' - ,it: 'Rimuovere' - ,ja: '除く' - ,dk: 'Fjern' - ,fi: 'Poista' - ,nb: 'Slett' - ,pl: 'Usuń' - ,ru: 'Удалите' - ,sk: 'Odstrániť' - ,nl: 'Verwijder' - ,ko: '삭제' - ,tr: 'Kaldır' - ,zh_cn: '取消' - ,zh_tw: '取消' - ,hu: 'Eltávolítani' - } - ,'Your device is not authenticated yet' : { - cs: 'Toto zařízení nebylo dosud ověřeno' - ,he: 'ההתקן שלך עדיין לא מאושר' - ,de: 'Dein Gerät ist noch nicht authentifiziert' - ,es: 'Su dispositivo no ha sido autentificado todavía' - ,fr: 'Votre appareil n\'est pas encore authentifié' - ,el: 'Η συκευή σας δεν έχει πιστοποιηθεί' - ,pt: 'Seu dispositivo ainda não foi autenticado' - ,ro: 'Dispozitivul nu este autentificat încă' - ,bg: 'Вашето устройство все още не е удостоверено' - ,hr: 'Vaš uređaj još nije autenticiran' - ,sv: 'Din enhet är ej autentiserad' - ,it: 'Il tuo dispositivo non è ancora stato autenticato' - ,ja: '機器はまだ承認されていません。' - ,dk: 'Din enhed er ikke godkendt endnu' - ,fi: 'Laitettasi ei ole vielä autentikoitu' - ,nb: 'Din enhet er ikke godkjent enda' - ,pl: 'Twoje urządzenie nie jest jeszcze uwierzytelnione' - ,ru: 'Ваше устройство еще не авторизовано ' - ,sk: 'Toto zariadenie zatiaľ nebolo overené' - ,nl: 'Uw apparaat is nog niet geauthenticeerd' - ,ko: '당신의 기기는 아직 인증되지 않았습니다.' - ,tr: 'Cihazınız henüz doğrulanmamış' - ,zh_cn: '此设备还未进行认证' - ,zh_tw: '這個設備還未進行認證' - ,hu: 'A berendezés még nincs hitelesítve' - } - ,'Sensor' : { - cs: 'Senzor' - ,de: 'Sensor' - ,es: 'Sensor' - ,fr: 'Senseur' - ,el: 'Αισθητήρας' - ,pt: 'Sensor' - ,sv: 'Sensor' - ,ro: 'Senzor' - ,bg: 'Сензор' - ,hr: 'Senzor' - ,it: 'Sensore' - ,ja: 'センサー' - ,dk: 'Sensor' - ,fi: 'Sensori' - ,nb: 'Sensor' - ,he: 'חיישן סוכר' - ,pl: 'Sensor' - ,ru: 'Сенсор' - ,sk: 'Senzor' - ,nl: 'Sensor' - ,ko: '센서' - ,tr: 'Sensor' - ,zh_cn: 'CGM探头' - ,hu: 'Szenzor' - } - ,'Finger' : { - cs: 'Glukoměr' - ,de: 'Finger' - ,es: 'Dedo' - ,fr: 'Doigt' - ,el: 'Δάχτυλο' - ,pt: 'Ponta de dedo' - ,sv: 'Finger' - ,ro: 'Deget' - ,bg: 'От пръстта' - ,hr: 'Prst' - ,it: 'Dito' - ,ja: '指' - ,dk: 'Finger' - ,fi: 'Sormi' - ,nb: 'Finger' - ,he: 'אצבע' - ,pl: 'Glukometr' - ,ru: 'Палец' - ,sk: 'Glukomer' - ,nl: 'Vinger' - ,ko: '손가락' - ,tr: 'Parmak' - ,zh_cn: '手指' - ,hu: 'Új' - } - ,'Manual' : { - cs: 'Ručně' - ,de: 'Von Hand' - ,es: 'Manual' - ,fr: 'Manuel' - ,el: 'Χειροκίνητο' - ,pt: 'Manual' - ,sv: 'Manuell' - ,ro: 'Manual' - ,bg: 'Ръчно' - ,hr: 'Ručno' - ,it: 'Manuale' - ,ja: '手動入力' - ,dk: 'Manuel' - ,fi: 'Manuaalinen' - ,nb: 'Manuell' - ,he: 'ידני' - ,pl: 'Ręcznie' - ,ru: 'Вручную' - ,sk: 'Ručne' - ,nl: 'Handmatig' - ,ko: '수' - ,tr: 'Elle' - ,zh_cn: '手动' - ,hu: 'Kézi' - } - ,'Scale' : { - cs: 'Měřítko' - ,he: 'סקלה' - ,de: 'Skalierung' - ,es: 'Escala' - ,fr: 'Echelle' - ,el: 'Κλίμακα' - ,pt: 'Escala' - ,ro: 'Scală' - ,bg: 'Скала' - ,hr: 'Skala' - ,sv: 'Skala' - ,it: 'Scala' - ,ja: 'グラフ縦軸' - ,dk: 'Skala' - ,fi: 'Skaala' - ,nb: 'Skala' - ,pl: 'Skala' - ,ru: 'Масштаб' - ,sk: 'Mierka' - ,nl: 'Schaal' - ,ko: '스케일' - ,tr: 'Ölçek' - ,zh_cn: '函数' - ,zh_tw: '函數' - ,hu: 'Mérték' - } - ,'Linear' : { - cs: 'Lineární' - ,de: 'Linear' - ,es: 'Lineal' - ,fr: 'Linéaire' - ,el: 'Γραμμική' - ,pt: 'Linear' - ,sv: 'Linjär' - ,ro: 'Liniar' - ,bg: 'Линейна' - ,hr: 'Linearno' - ,it: 'Lineare' - ,ja: '線形軸表示' - ,dk: 'Lineær' - ,fi: 'Lineaarinen' - ,nb: 'Lineær' - ,he: 'לינארי' - ,pl: 'Liniowa' - ,ru: 'Линейный' - ,sk: 'Lineárne' - ,nl: 'Lineair' - ,ko: 'Linear' - ,tr: 'Doğrusal' //çizgisel - ,zh_cn: '线性' - ,zh_tw: '線性' - ,hu: 'Lineáris' - } - ,'Logarithmic' : { - cs: 'Logaritmické' - ,de: 'Logarithmisch' - ,es: 'Logarítmica' - ,fr: 'Logarithmique' - ,el: 'Λογαριθμική' - ,pt: 'Logarítmica' - ,sv: 'Logaritmisk' - ,ro: 'Logaritmic' - ,bg: 'Логоритмична' - ,hr: 'Logaritamski' - ,it: 'Logaritmica' - ,ja: '対数軸表示' - ,dk: 'Logaritmisk' - ,fi: 'Logaritminen' - ,nb: 'Logaritmisk' - ,he: 'לוגריתמי' - ,pl: 'Logarytmiczna' - ,ru: 'Логарифмический' - ,sk: 'Logaritmické' - ,nl: 'Logaritmisch' - ,ko: 'Logarithmic' - ,tr: 'Logaritmik' - ,zh_cn: '对数' - ,zh_tw: '對數' - ,hu: 'Logaritmikus' - } - ,'Logarithmic (Dynamic)' : { - cs: 'Logaritmické (Dynamické)' - ,he: 'לוגריטמי - דינמי' - ,de: 'Logaritmisch (dynamisch)' - ,es: 'Logarítmo (Dinámico)' - ,dk: 'Logaritmisk (Dynamisk)' - ,it: 'Logaritmica (Dinamica)' - ,ja: '対数軸(動的)表示' - ,fr: 'Logarithmique (Dynamique)' - ,el: 'Λογαριθμική (Δυναμική)' - ,ro: 'Logaritmic (Dinamic)' - ,bg: 'Логоритмична (Динамична)' - ,hr: 'Logaritamski (Dinamički)' - ,nb: 'Logaritmisk (Dynamisk)' - ,fi: 'Logaritminen (Dynaaminen)' - ,sv: 'Logaritmisk (Dynamisk)' - ,pl: 'Logarytmiczna (Dynamiczna)' - ,pt: 'Logarítmica (Dinâmica)' - ,ru: 'Логарифмический (Динамический)' - ,sk: 'Logaritmické (Dynamické)' - ,nl: 'Logaritmisch (Dynamisch)' - ,ko: '다수(동적인)' - ,tr: 'Logaritmik (Dinamik)' - ,zh_cn: '对数(动态)' - ,zh_tw: '對數(動態)' - ,hu: 'Logaritmikus (Dinamikus)' - } - ,'Insulin-on-Board' : { - cs: 'IOB' - ,he: 'אינסולין בגוף' - ,de: 'Aktives Bolus-Insulin' - ,es: 'Insulina activa' - ,fr: 'Insuline à bord' - ,dk: 'Aktivt insulin (IOB)' - ,it: 'IOB-Insulina a Bordo' - ,ja: 'IOB・残存インスリン' - ,nb: 'AI' - ,el: 'Ενεργή Ινσουλίνη (IOB)' - ,ro: 'IOB-Insulină activă' - ,bg: 'Активен инсулин' - ,hr: 'Aktivni inzulin' - ,fi: 'Aktiivinen insuliini (IOB)' - ,sv: 'Aktivt insulin (IOB)' - ,pl: 'Aktywna insulina (IOB)' - ,pt: 'Insulina ativa' - ,ru: 'Активный инсулин IOB' - ,sk: 'Aktívny inzulín (IOB)' - ,nl: 'Actieve insuline (IOB)' - ,ko: 'IOB' - ,tr: 'Aktif İnsülin (IOB)' - ,zh_cn: '活性胰岛素(IOB)' - ,zh_tw: '活性胰島素(IOB)' - ,hu: 'Aktív inzulin (IOB)' - } - ,'Carbs-on-Board' : { - cs: 'COB' - ,he: 'פחמימות בגוף' - ,de: 'Aktiv wirksame Kohlenhydrate' - ,es: 'Carbohidratos activos' - ,fr: 'Glucides à bord' - ,dk: 'Aktive kulhydrater (COB)' - ,it: 'COB-Carboidrati a Bordo' - ,ja: 'COB・残存カーボ' - ,nb: 'AK' - ,el: 'Ενεργοί Υδατάνθρακες (COB)' - ,ro: 'COB-Carbohidrați activi' - ,bg: 'Активни въглехидрати' - ,hr: 'Aktivni ugljikohidrati' - ,fi: 'Aktiivinen hiilihydraatti (COB)' - ,sv: 'Aktiva kolhydrater (COB)' - ,pl: 'Aktywne wglowodany (COB)' - ,pt: 'Carboidratos ativos' - ,ru: 'Активные углеводы COB' - ,sk: 'Aktívne sacharidy (COB)' - ,nl: 'Actieve koolhydraten (COB)' - ,ko: 'COB' - ,tr: 'Aktif Karbonhidrat (COB)' - ,zh_cn: '活性碳水化合物(COB)' - ,zh_tw: '活性碳水化合物(COB)' - ,hu: 'Aktív szénhidrát (COB)' - } - ,'Bolus Wizard Preview' : { - cs: 'BWP-Náhled bolusového kalk.' - ,he: 'סקירת אשף הבולוס' - ,de: 'Bolus-Kalkulator Vorschau (BWP)' - ,es: 'Vista previa del cálculo del bolo' - ,fr: 'Prévue du Calculatuer de bolus' - ,dk: 'Bolus Wizard (BWP)' - ,it: 'BWP-Calcolatore di bolo' - ,ja: 'BWP・ボーラスウィザード参照' - ,nb: 'Boluskalkulator (BWP)' - ,el: 'Εργαλείο Εκτίμησης Επάρκειας Ινσουλίνης (BWP)' - ,ro: 'BWP-Sugestie de bolusare' - ,bg: 'Болус калкулатор' - ,hr: 'Pregled bolus čarobnjaka' - ,fi: 'Aterialaskurin Esikatselu (BWP)' - ,sv: 'Boluskalkylator (BWP)' - ,pl: 'Kalkulator Bolusa (BWP)' - ,pt: 'Ajuda de bolus' - ,ru: 'Калькулятор болюса' - ,sk: 'Bolus Wizard' - ,nl: 'Bolus Wizard Preview (BWP)' - ,ko: 'Bolus 마법사 미리보기' - ,tr: 'Bolus hesaplama Sihirbazı Önizlemesi (BWP)' //İnsülin etkinlik süresi hesaplaması - ,zh_cn: '大剂量向导预览(BWP)' - ,zh_tw: '大劑量嚮導預覽(BWP)' - ,hu: 'Bolus Varázsló' - } - ,'Value Loaded' : { - cs: 'Hodnoty načteny' - ,he: 'ערך נטען' - ,de: 'Geladener Wert' - ,es: 'Valor cargado' - ,fr: 'Valeur chargée' - ,dk: 'Værdi indlæst' - ,it: 'Valori Caricati' - ,ja: '数値読み込み完了' - ,nb: 'Verdi lastet' - ,el: 'Τιμή ανακτήθηκε' - ,ro: 'Valoare încărcată' - ,bg: 'Стойност заредена' - ,hr: 'Vrijednost učitana' - ,fi: 'Arvo ladattu' - ,sv: 'Laddat värde' - ,pl: 'Wartości wczytane' - ,pt: 'Valores carregados' - ,ru: 'Величина загружена' - ,nl: 'Waarde geladen' - ,sk: 'Hodnoty načítané' - ,ko: '데이터가 로드됨' - ,tr: 'Yüklenen Değer' - ,zh_cn: '数值已读取' - ,zh_tw: '數值已讀取' - ,hu: 'Érték betöltve' - } - ,'Cannula Age' : { - cs: 'CAGE-Stáří kanyly' - ,he: 'גיל הקנולה' - ,de: 'Kanülenalter' - ,es: 'Antigüedad cánula' - ,fr: 'Age de la canule' - ,dk: 'Indstik alder (CAGE)' - ,it: 'CAGE-Cambio Ago' - ,ja: 'CAGE・カニューレ使用日数' - ,el: 'Ημέρες Χρήσης Κάνουλας (CAGE)' - ,nb: 'Nålalder' - ,ro: 'CAGE-Vechime canulă' - ,bg: 'Възраст на канюлата' - ,hr: 'Starost kanile' - ,fi: 'Kanyylin ikä (CAGE)' - ,sv: 'Kanylålder (CAGE)' - ,pl: 'Czas wkłucia (CAGE)' - ,pt: 'Idade da Cânula (ICAT)' - ,ru: 'Катетер проработал' - ,sk: 'Zavedenie kanyly (CAGE)' - ,nl: 'Canule leeftijd (CAGE)' - ,ko: '캐뉼라 사용기간' - ,tr: 'Kanül yaşı' - ,zh_cn: '管路使用时间(CAGE)' - ,zh_tw: '管路使用時間(CAGE)' - ,hu: 'Kanula élettartalma (CAGE)' - } - ,'Basal Profile' : { - cs: 'Bazál' - ,he: 'פרופיל רמה בזלית' - ,de: 'Basalraten-Profil' - ,es: 'Perfil Basal' - ,fr: 'Profil Basal' - ,dk: 'Basal profil' - ,it: 'BASAL-Profilo Basale' - ,ja: 'ベーサルプロフィール' - ,el: 'Προφίλ Βασικής Ινσουλίνης (BASAL)' - ,nb: 'Basalprofil' - ,ro: 'Profil bazală' - ,bg: 'Базален профил' - ,hr: 'Bazalni profil' - ,fi: 'Basaaliprofiili' - ,sv: 'Basalprofil' - ,pl: 'Profil dawki bazowej' - ,pt: 'Perfil de Basal' - ,ru: 'Профиль Базала' - ,sk: 'Bazál' - ,nl: 'Basaal profiel' - ,ko: 'Basal 프로파일' - ,tr: 'Bazal Profil' - ,zh_cn: '基础率配置文件' - ,zh_tw: '基礎率配置文件' - ,hu: 'Bazál profil' - } - ,'Silence for 30 minutes' : { - cs: 'Ztlumit na 30 minut' - ,he: 'השתק לשלושים דקות' - ,de: 'Stille für 30 Minuten' - ,es: 'Silenciar durante 30 minutos' - ,fr: 'Silence pendant 30 minutes' - ,el: 'Σίγαση για 30 λεπτά' - ,pt: 'Silenciar por 30 minutos' - ,ro: 'Ignoră pentru 30 minute' - ,bg: 'Заглуши за 30 минути' - ,hr: 'Tišina 30 minuta' - ,sv: 'Tyst i 30 min' - ,it: 'Silenzio per 30 minuti' - ,ja: '30分静かにする' - ,dk: 'Stilhed i 30 min' - ,fi: 'Hiljennä 30 minuutiksi' - ,nb: 'Stille i 30 min' - ,pl: 'Wycisz na 30 minut' - ,ru: 'Тишина 30 минут' - ,sk: 'Stíšiť na 30 minút' - ,nl: 'Sluimer 30 minuten' - ,ko: '30분간 무음' - ,tr: '30 dakika sessizlik' - ,zh_cn: '静音30分钟' - ,zh_tw: '靜音30分鐘' - ,hu: 'Lehalkítás 30 percre' - } - ,'Silence for 60 minutes' : { - cs: 'Ztlumit na 60 minut' - ,he: 'השתק לששים דקות' - ,de: 'Stille für 60 Minuten' - ,es: 'Silenciar durante 60 minutos' - ,fr: 'Silence pendant 60 minutes' - ,el: 'Σίγαση για 60 λεπτά' - ,pt: 'Silenciar por 60 minutos' - ,ro: 'Ignoră pentru 60 minute' - ,bg: 'Заглуши за 60 минути' - ,hr: 'Tišina 60 minuta' - ,sv: 'Tyst i 60 min' - ,it: 'Silenzio per 60 minuti' - ,ja: '60分静かにする' - ,dk: 'Stilhed i 60 min' - ,fi: 'Hiljennä tunniksi' - ,nb: 'Stille i 60 min' - ,pl: 'Wycisz na 60 minut' - ,ru: 'Тишина 60 минут' - ,sk: 'Stíšiť na 60 minút' - ,nl: 'Sluimer 60 minuten' - ,ko: '60분간 무음' - ,tr: '60 dakika sessizlik' - ,zh_cn: '静音60分钟' - ,zh_tw: '靜音60分鐘' - ,hu: 'Lehalkítás 60 percre' - } - ,'Silence for 90 minutes' : { - cs: 'Ztlumit na 90 minut' - ,he: 'השתק לתשעים דקות' - ,de: 'Stille für 90 Minuten' - ,es: 'Silenciar durante 90 minutos' - ,fr: 'Silence pendant 90 minutes' - ,el: 'Σίγαση για 90 λεπτά' - ,pt: 'Silenciar por 90 minutos' - ,ro: 'Ignoră pentru 90 minure' - ,bg: 'Заглуши за 90 минути' - ,hr: 'Tišina 90 minuta' - ,sv: 'Tyst i 90 min' - ,it: 'Silenzio per 90 minuti' - ,ja: '90分静かにする' - ,dk: 'Stilhed i 90 min' - ,fi: 'Hiljennä 1.5 tunniksi' - ,nb: 'Stille i 90 min' - ,pl: 'Wycisz na 90 minut' - ,ru: 'Тишина 90 минут' - ,sk: 'Stíšiť na 90 minút' - ,nl: 'Sluimer 90 minuten' - ,ko: '90분간 무음' - ,tr: '90 dakika sessizlik' - ,zh_cn: '静音90分钟' - ,zh_tw: '靜音90分鐘' - ,hu: 'Lehalkítás 90 percre' - } - ,'Silence for 120 minutes' : { - cs: 'Ztlumit na 120 minut' - ,he: 'השתק לשעתיים' - ,de: 'Stille für 120 Minuten' - ,es: 'Silenciar durante 120 minutos' - ,fr: 'Silence pendant 120 minutes' - ,el: 'Σίγαση για 120 λεπτά' - ,pt: 'Silenciar por 120 minutos' - ,ro: 'Ignoră pentru 120 minute' - ,bg: 'Заглуши за 120 минути' - ,hr: 'Tišina 120 minuta' - ,sv: 'Tyst i 120 min' - ,it: 'Silenzio per 120 minuti' - ,ja: '120分静かにする' - ,dk: 'Stilhed i 120 min' - ,fi: 'Hiljennä 2 tunniksi' - ,nb: 'Stile i 120 min' - ,pl: 'Wycisz na 120 minut' - ,ru: 'Тишина 120 минут' - ,sk: 'Stíšiť na 120 minút' - ,nl: 'Sluimer 2 uur' - ,ko: '120분간 무음' - ,tr: '120 dakika sessizlik' - ,zh_cn: '静音2小时' - ,zh_tw: '靜音2小時' - ,hu: 'Lehalkítás 120 percre' - } - ,'Settings' : { - cs: 'Nastavení' - ,he: 'הגדרות' - ,de: 'Einstellungen' - ,es: 'Ajustes' - ,fr: 'Paramètres' - ,el: 'Ρυθμίσεις' - ,pt: 'Ajustes' - ,sv: 'Inställningar' - ,ro: 'Setări' - ,bg: 'Настройки' - ,hr: 'Postavke' - ,it: 'Impostazioni' - ,ja: '設定' - ,dk: 'Indstillinger' - ,fi: 'Asetukset' - ,nb: 'Innstillinger' - ,pl: 'Ustawienia' - ,ru: 'Настройки' - ,sk: 'Nastavenia' - ,nl: 'Instellingen' - ,ko: '설정' - ,tr: 'Ayarlar' - ,zh_cn: '设置' - ,zh_tw: '設置' - ,hu: 'Beállítások' - } - ,'Units' : { - cs: 'Jednotky' - ,he: 'יחידות' - ,de: 'Einheiten' - ,es: 'Unidades' - ,fr: 'Unités' - ,el: 'Μονάδες' - ,pt: 'Unidades' - ,ro: 'Unități' - ,bg: 'Единици' - ,hr: 'Jedinice' - ,sv: 'Enheter' - ,it: 'Unità' - ,dk: 'Enheder' - ,fi: 'Yksikköä' - ,nb: 'Enheter' - ,pl: 'Jednostki' - ,ru: 'Единицы' - ,sk: 'Jednotky' - ,nl: 'Eenheden' - ,ko: '단위' - ,tr: 'Birim' //Birim Ünite - ,zh_cn: '计量单位' - ,zh_tw: '计量單位' - ,hu: 'Egységek' - } - ,'Date format' : { - cs: 'Formát datumu' - ,he: 'פורמט תאריך' - ,de: 'Datumsformat' - ,es: 'Formato de fecha' - ,fr: 'Format Date' - ,el: 'Προβολή Ώρας' - ,pt: 'Formato de data' - ,sv: 'Datumformat' - ,ro: 'Formatul datei' - ,bg: 'Формат на датата' - ,hr: 'Format datuma' - ,it: 'Formato data' - ,ja: '日数初期化' - ,dk: 'Dato format' - ,fi: 'Aikamuoto' - ,nb: 'Datoformat' - ,pl: 'Format daty' - ,ru: 'Формат даты' - ,sk: 'Formát času' - ,nl: 'Datum formaat' - ,ko: '날짜 형식' - ,tr: 'Veri formatı' - ,zh_cn: '时间格式' - ,zh_tw: '時間格式' - ,hu: 'Időformátum' - } - ,'12 hours' : { - cs: '12 hodin' - ,he: 'שתים עשרה שעות' - ,de: '12 Stunden' - ,es: '12 horas' - ,fr: '12 heures' - ,el: '12ωρο' - ,pt: '12 horas' - ,sv: '12-timmars' - ,ro: '12 ore' - ,bg: '12 часа' - ,hr: '12 sati' - ,it: '12 ore' - ,ja: '12時間制' - ,dk: '12 timer' - ,fi: '12 tuntia' - ,nb: '12 timer' - ,pl: '12 godzinny' - ,ru: '12 часов' - ,sk: '12 hodín' - ,nl: '12 uur' - ,ko: '12 시간' - ,tr: '12 saat' - ,zh_cn: '12小时制' - ,zh_tw: '12小時制' - ,hu: '12 óra' - } - ,'24 hours' : { - cs: '24 hodin' - ,he: 'עשרים וארבע שעות' - ,de: '24 Stunden' - ,es: '24 horas' - ,fr: '24 heures' - ,el: '24ωρο' - ,pt: '24 horas' - ,sv: '24-timmars' - ,ro: '24 ore' - ,bg: '24 часа' - ,hr: '24 sata' - ,it: '24 ore' - ,ja: '24時間制' - ,dk: '24 timer' - ,fi: '24 tuntia' - ,nb: '24 timer' - ,pl: '24 godzinny' - ,ru: '24 часа' - ,sk: '24 hodín' - ,nl: '24 uur' - ,ko: '24 시간' - ,tr: '24 saat' - ,zh_cn: '24小时制' - ,zh_tw: '24小時制' - ,hu: '24 óra' - } - ,'Log a Treatment' : { - cs: 'Záznam ošetření' - ,de: 'Behandlung eingeben' - ,es: 'Apuntar un tratamiento' - ,fr: 'Entrer un traitement' - ,el: 'Καταγραφή Ενέργειας' - ,pt: 'Registre um tratamento' - ,ro: 'Înregistrează un eveniment' - ,bg: 'Въвеждане на събитие' - ,hr: 'Evidencija tretmana' - ,sv: 'Ange händelse' - ,it: 'Somministrazioni' - ,ja: '治療を記録' - ,dk: 'Log en hændelse' - ,fi: 'Tallenna tapahtuma' - ,nb: 'Logg en hendelse' - ,he: 'הזן רשומה' - ,pl: 'Wprowadź leczenie' - ,ru: 'Записать лечение' - ,sk: 'Záznam ošetrenia' - ,nl: 'Registreer een behandeling' - ,ko: 'Treatment 로그' - ,tr: 'Tedaviyi günlüğe kaydet' - ,zh_cn: '记录操作' - ,hu: 'Kezelés bejegyzése' - } - ,'BG Check' : { - cs: 'Kontrola glykémie' - ,de: 'BG-Messung' - ,es: 'Control de glucemia' - ,fr: 'Contrôle glycémie' - ,el: 'Έλεγχος Γλυκόζης' - ,pt: 'Medida de glicemia' - ,sv: 'Blodsockerkontroll' - ,ro: 'Verificare glicemie' - ,bg: 'Проверка на КЗ' - ,hr: 'Kontrola GUK-a' - ,it: 'Controllo Glicemia' - ,ja: 'BG測定' - ,dk: 'BS kontrol' - ,fi: 'Verensokerin tarkistus' - ,nb: 'Blodsukkerkontroll' - ,he: 'בדיקת סוכר' - ,pl: 'Pomiar glikemii' - ,ru: 'Контроль ГК' - ,sk: 'Kontrola glykémie' - ,nl: 'Bloedglucose check' - ,ko: '혈당 체크' - ,tr: 'KŞ Kontol' - ,zh_cn: '测量血糖' - ,hu: 'Cukorszint ellenőrzés' - } - ,'Meal Bolus' : { - cs: 'Bolus na jídlo' - ,de: 'Mahlzeiten-Bolus' - ,es: 'Bolo de comida' - ,fr: 'Bolus repas' - ,el: 'Ινσουλίνη Γέυματος' - ,pt: 'Bolus de refeição' - ,ro: 'Bolus masă' - ,bg: 'Болус-основно хранене' - ,hr: 'Bolus za obrok' - ,sv: 'Måltidsbolus' - ,it: 'Bolo Pasto' - ,ja: '食事ボーラス' - ,dk: 'Måltidsbolus' - ,fi: 'Ruokailubolus' - ,nb: 'Måltidsbolus' - ,he: 'בולוס ארוחה' - ,pl: 'Bolus do posiłku' - ,ru: 'Болюс на еду' - ,sk: 'Bolus na jedlo' - ,nl: 'Maaltijd bolus' - ,ko: '식사 인슐린' - ,tr: 'Yemek bolus' - ,zh_cn: '正餐大剂量' - ,hu: 'Étel bólus' - } - ,'Snack Bolus' : { - cs: 'Bolus na svačinu' - ,de: 'Snack-Bolus' - ,es: 'Bolo de aperitivo' - ,fr: 'Bolus friandise' - ,el: 'Ινσουλίνη Σνακ' - ,pt: 'Bolus de lanche' - ,sv: 'Mellanmålsbolus' - ,ro: 'Bolus gustare' - ,bg: 'Болус-лека закуска' - ,hr: 'Bolus za užinu' - ,it: 'Bolo Merenda' - ,ja: '間食ボーラス' - ,dk: 'Mellemmåltidsbolus' - ,fi: 'Ruokakorjaus' - ,nb: 'Mellommåltidsbolus' - ,he: 'בולוס ארוחת ביניים' - ,pl: 'Bolus przekąskowy' - ,ru: 'Болюс на перекус' - ,sk: 'Bolus na desiatu/olovrant' - ,nl: 'Snack bolus' - ,ko: '스넥 인슐린' - ,tr: 'Aperatif (Snack) Bolus' - ,zh_cn: '加餐大剂量' - ,hu: 'Tízórai/Uzsonna bólus' - } - ,'Correction Bolus' : { - cs: 'Bolus na glykémii' - ,de: 'Korrektur-Bolus' - ,es: 'Bolo corrector' - ,fr: 'Bolus de correction' - ,el: 'Διόρθωση με Ινσουλίνη' - ,pt: 'Bolus de correção' - ,ro: 'Bolus corecție' - ,bg: 'Болус корекция' - ,hr: 'Korekcija' - ,sv: 'Korrektionsbolus' - ,it: 'Bolo Correttivo' - ,ja: '補正ボーラス' - ,dk: 'Korrektionsbolus' - ,fi: 'Korjausbolus' - ,nb: 'Korreksjonsbolus' - ,he: 'בולוס תיקון' - ,pl: 'Bolus korekcyjny' - ,ru: 'Болюс на коррекцию' - ,sk: 'Korekčný bolus' - ,nl: 'Correctie bolus' - ,ko: '수정 인슐린' - ,tr: 'Düzeltme Bolusu' - ,zh_cn: '临时大剂量' - ,hu: 'Korrekciós bólus' - } - ,'Carb Correction' : { - cs: 'Přídavek sacharidů' - ,de: 'Kohlenhydrate Korrektur' - ,es: 'Carbohidratos de corrección' - ,fr: 'Correction glucide' - ,el: 'Διόρθωση με Υδατάνθρακεςς' - ,pt: 'Correção com carboidrato' - ,ro: 'Corecție de carbohidrați' - ,bg: 'Корекция чрез въглехидрати' - ,hr: 'Bolus za hranu' - ,sv: 'Kolhydratskorrektion' - ,it: 'Carboidrati Correttivi' - ,ja: 'カーボ治療' - ,dk: 'Kulhydratskorrektion' - ,fi: 'Hiilihydraattikorjaus' - ,nb: 'Karbohydratkorrigering' - ,he: 'בולוס פחמימות' - ,pl: 'Węglowodany korekcyjne' - ,ru: 'Углеводы на коррекцию' - ,sk: 'Prídavok sacharidov' - ,nl: 'Koolhydraat correctie' - ,ko: '탄수화물 수정' - ,tr: 'Karbonhidrat Düzeltme' - ,zh_cn: '碳水修正' - ,hu: 'Szénhidrát korrekció' - } - ,'Note' : { - cs: 'Poznámka' - ,de: 'Bemerkung' - ,es: 'Nota' - ,fr: 'Note' - ,el: 'Σημείωση' - ,pt: 'Nota' - ,ro: 'Notă' - ,sv: 'Notering' - ,bg: 'Бележка' - ,hr: 'Bilješka' - ,it: 'Nota' - ,ja: 'メモ' - ,dk: 'Note' - ,fi: 'Merkintä' - ,nb: 'Notat' - ,he: 'הערה' - ,pl: 'Uwagi' - ,ru: 'Примечания' - ,sk: 'Poznámka' - ,nl: 'Notitie' - ,ko: '메모' - ,tr: 'Not' - ,zh_cn: '备忘' - ,hu: 'Jegyzet' - } - ,'Question' : { - cs: 'Otázka' - ,de: 'Frage' - ,es: 'Pregunta' - ,fr: 'Question' - ,el: 'Ερώτηση' - ,pt: 'Pergunta' - ,ro: 'Întrebare' - ,sv: 'Fråga' - ,bg: 'Въпрос' - ,hr: 'Pitanje' - ,it: 'Domanda' - ,ja: '質問' - ,dk: 'Spørgsmål' - ,fi: 'Kysymys' - ,nb: 'Spørsmål' - ,he: 'שאלה' - ,pl: 'Pytanie' - ,ru: 'Вопрос' - ,sk: 'Otázka' - ,nl: 'Vraag' - ,ko: '질문' - ,tr: 'Soru' - ,zh_cn: '问题' - ,hu: 'Kérdés' - } - ,'Exercise' : { - cs: 'Cvičení' - ,de: 'Bewegung' - ,es: 'Ejercicio' - ,fr: 'Exercice physique' - ,el: 'Άσκηση' - ,pt: 'Exercício' - ,sv: 'Aktivitet' - ,ro: 'Activitate fizică' - ,bg: 'Спорт' - ,hr: 'Aktivnost' - ,it: 'Esercizio Fisico' - ,ja: '運動' - ,dk: 'Træning' - ,fi: 'Fyysinen harjoitus' - ,nb: 'Trening' - ,he: 'פעילות גופנית' - ,pl: 'Wysiłek' - ,ru: 'Нагрузка' - ,sk: 'Cvičenie' - ,nl: 'Beweging / sport' - ,ko: '운동' - ,tr: 'Egzersiz' - ,zh_cn: '运动' - ,hu: 'Edzés' - } - ,'Pump Site Change' : { - cs: 'Výměna setu' - ,de: 'Pumpen-Katheter Wechsel' - ,es: 'Cambio de catéter' - ,fr: 'Changement de site pompe' - ,el: 'Αλλαγή σημείου αντλίας' - ,pt: 'Troca de catéter' - ,sv: 'Pump/nålbyte' - ,ro: 'Schimbare loc pompă' - ,bg: 'Смяна на сет' - ,hr: 'Promjena seta' - ,it: 'CAGE-Cambio Ago' - ,ja: 'CAGE・ポンプ注入場所変更' - ,dk: 'Skift insulin infusionssted' - ,fi: 'Kanyylin vaihto' - ,nb: 'Pumpebytte' - ,he: 'החלפת צינורית משאבה' - ,pl: 'Zmiana miejsca wkłucia pompy' - ,ru: 'Смена катетера помпы' - ,sk: 'Výmena setu' - ,nl: 'Nieuwe pomp infuus' - ,ko: '펌프 위치 변경' - ,tr: 'Pompa Kanül değişimi' - ,zh_cn: '更换胰岛素输注部位' - ,hu: 'Pumpa szett csere' - } - ,'CGM Sensor Start' : { - cs: 'Spuštění sensoru' - ,de: 'CGM Sensor Start' - ,es: 'Inicio de sensor' - ,fr: 'Démarrage senseur' - ,el: 'Εκκίνηση αισθητήρα γλυκόζης' - ,pt: 'Início de sensor' - ,sv: 'Sensorstart' - ,ro: 'Start senzor' - ,bg: 'Ре/Стартиране на сензор' - ,hr: 'Start senzora' - ,it: 'CGM Avvio sensore' - ,ja: 'CGMセンサー開始' - ,dk: 'Sensorstart' - ,fi: 'Sensorin aloitus' - ,nb: 'Sensorstart' - ,he: 'אתחול חיישן סוכר' - ,pl: 'Start nowego sensora' - ,ru: 'Старт сенсора' - ,sk: 'Spustenie senzoru' - ,nl: 'CGM Sensor start' - ,ko: 'CGM 센서 시작' - ,tr: 'CGM Sensörü Başlat' - ,zh_cn: '启动CGM(连续血糖监测)探头' - ,hu: 'CGM Szenzor Indítása' - } - ,'CGM Sensor Stop' : { - cs: 'CGM Sensor Stop' - ,de: 'CGM Sensor Stop' - ,es: 'CGM Sensor Stop' - ,fr: 'CGM Sensor Stop' - ,el: 'CGM Sensor Stop' - ,pt: 'CGM Sensor Stop' - ,sv: 'CGM Sensor Stop' - ,ro: 'CGM Sensor Stop' - ,bg: 'CGM Sensor Stop' - ,hr: 'CGM Sensor Stop' - ,it: 'CGM Sensor Stop' - ,ja: 'CGM Sensor Stop' - ,dk: 'CGM Sensor Stop' - ,fi: 'CGM Sensor Stop' - ,nb: 'CGM Sensor Stopp' - ,he: 'CGM Sensor Stop' - ,pl: 'CGM Sensor Stop' - ,ru: 'Стоп сенсор' - ,sk: 'CGM Sensor Stop' - ,nl: 'CGM Sensor Stop' - ,ko: 'CGM Sensor Stop' - ,tr: 'CGM Sensor Stop' - ,zh_cn: 'CGM Sensor Stop' - ,hu: 'CGM Szenzor Leállítása' - } - ,'CGM Sensor Insert' : { - cs: 'Výměna sensoru' - ,de: 'CGM Sensor Wechsel' - ,es: 'Cambio de sensor' - ,fr: 'Changement senseur' - ,el: 'Τοποθέτηση αισθητήρα γλυκόζης' - ,pt: 'Troca de sensor' - ,sv: 'Sensorbyte' - ,ro: 'Schimbare senzor' - ,bg: 'Смяна на сензор' - ,hr: 'Promjena senzora' - ,it: 'CGM Cambio sensore' - ,ja: 'CGMセンサー挿入' - ,dk: 'Sensor ombytning' - ,fi: 'Sensorin vaihto' - ,nb: 'Sensorbytte' - ,he: 'החלפת חיישן סוכר' - ,pl: 'Zmiana sensora' - ,ru: 'Установка сенсора' - ,sk: 'Výmena senzoru' - ,nl: 'CGM sensor wissel' - ,ko: 'CGM 센서 삽입' - ,tr: 'CGM Sensor yerleştir' - ,zh_cn: '植入CGM(连续血糖监测)探头' - ,hu: 'CGM Szenzor Csere' - } - ,'Dexcom Sensor Start' : { - cs: 'Spuštění sensoru' - ,de: 'Dexcom Sensor Start' - ,es: 'Inicio de sensor Dexcom' - ,fr: 'Démarrage senseur Dexcom' - ,el: 'Εκκίνηση αισθητήρα Dexcom' - ,pt: 'Início de sensor' - ,sv: 'Dexcom sensorstart' - ,ro: 'Pornire senzor Dexcom' - ,bg: 'Ре/Стартиране на Декском сензор' - ,hr: 'Start Dexcom senzora' - ,it: 'Avvio sensore Dexcom' - ,ja: 'Dexcomセンサー開始' - ,dk: 'Dexcom sensor start' - ,fi: 'Sensorin aloitus' - ,nb: 'Dexcom sensor start' - ,he: 'אתחול חיישן סוכר של דקסקום' - ,pl: 'Start sensora DEXCOM' - ,ru: 'Старт сенсора' - ,sk: 'Spustenie senzoru DEXCOM' - ,nl: 'Dexcom sensor start' - ,ko: 'Dexcom 센서 시작' - ,tr: 'Dexcom Sensör Başlat' - ,zh_cn: '启动Dexcom探头' - ,hu: 'Dexcom Szenzor Indítása' - } - ,'Dexcom Sensor Change' : { - cs: 'Výměna sensoru' - ,de: 'Dexcom Sensor Wechsel' - ,es: 'Cambio de sensor Dexcom' - ,fr: 'Changement senseur Dexcom' - ,el: 'Αλλαγή αισθητήρα Dexcom' - ,pt: 'Troca de sensor' - ,sv: 'Dexcom sensorbyte' - ,ro: 'Schimbare senzor Dexcom' - ,bg: 'Смяна на Декском сензор' - ,hr: 'Promjena Dexcom senzora' - ,it: 'Cambio sensore Dexcom' - ,ja: 'Dexcomセンサー挿入' - ,dk: 'Dexcom sensor ombytning' - ,fi: 'Sensorin vaihto' - ,nb: 'Dexcom sensor bytte' - ,he: 'החלפת חיישן סוכר של דקסקום' - ,pl: 'Zmiana sensora DEXCOM' - ,ru: 'Замена сенсора Декском' - ,sk: 'Výmena senzoru DEXCOM' - ,nl: 'Dexcom sensor wissel' - ,ko: 'Dexcom 센서 교체' - ,tr: 'Dexcom Sensör değiştir' - ,zh_cn: '更换Dexcom探头' - ,hu: 'Dexcom Szenzor Csere' - } - ,'Insulin Cartridge Change' : { - cs: 'Výměna inzulínu' - ,de: 'Insulin Ampullenwechsel' - ,es: 'Cambio de reservorio de insulina' - ,fr: 'Changement cartouche d\'insuline' - ,el: 'Αλλαγή αμπούλας ινσουλίνης' - ,pt: 'Troca de reservatório de insulina' - ,sv: 'Insulinreservoarbyte' - ,ro: 'Schimbare cartuș insulină' - ,bg: 'Смяна на резервоар' - ,hr: 'Promjena spremnika inzulina' - ,it: 'Cambio cartuccia insulina' - ,ja: 'インスリンリザーバー交換' - ,dk: 'Skift insulin beholder' - ,fi: 'Insuliinisäiliön vaihto' - ,nb: 'Skifte insulin beholder' - ,he: 'החלפת מחסנית אינסולין' - ,pl: 'Zmiana zbiornika z insuliną' - ,ru: 'Замена картриджа инсулина' - ,sk: 'Výmena inzulínu' - ,nl: 'Insuline cartridge wissel' - ,ko: '인슐린 카트리지 교체' - ,tr: 'İnsülin rezervuar değişimi' - ,zh_cn: '更换胰岛素储液器' - ,hu: 'Inzulin Tartály Csere' - } - ,'D.A.D. Alert' : { - cs: 'D.A.D. Alert' - ,de: 'Diabeteswarnhund-Alarm' - ,es: 'Alerta de perro de alerta diabética' - ,fr: 'Wouf! Wouf! Chien d\'alerte diabète' - ,el: 'Προειδοποίηση σκύλου υποστήριξης (Diabetes Alert Dog)' - ,pt: 'Alerta de cão sentinela de diabetes' - ,sv: 'Diabeteshundlarm (Duktig vovve!)' - ,ro: 'Alertă câine de serviciu' - ,bg: 'Сигнал от обучено куче' - ,hr: 'Obavijest dijabetičkog psa' - ,it: 'Allarme D.A.D.(Diabete Alert Dog)' - ,ja: 'メディカルアラート犬(DAD)の知らせ' - ,dk: 'Vuf Vuf! (Diabeteshundealarm!)' - ,fi: 'Diabeteskoirahälytys' - ,nb: 'Diabeteshundalarm' - ,he: 'ווף! ווף! התראת גשג' - ,pl: 'Psi Alarm cukrzycowy' - ,ru: 'Сигнал служебной собаки' - ,sk: 'Upozornenie signálneho psa' - ,nl: 'Hulphond waarschuwing' - ,ko: 'D.A.D(Diabetes Alert Dog) 알림' - ,tr: 'D.A.D(Diabetes Alert Dog)' - ,zh_cn: 'D.A.D(低血糖通报犬)警告' - ,hu: 'D.A.D Figyelmeztetés' - } - ,'Glucose Reading' : { - cs: 'Hodnota glykémie' - ,de: 'Glukosemesswert' - ,es: 'Valor de glucemia' - ,fr: 'Valeur de glycémie' - ,el: 'Τιμή Γλυκόζης' - ,pt: 'Valor de glicemia' - ,sv: 'Glukosvärde' - ,ro: 'Valoare glicemie' - ,bg: 'Кръвна захар' - ,hr: 'Vrijednost GUK-a' - ,it: 'Lettura glicemie' - ,dk: 'Blodsukker aflæsning' - ,fi: 'Verensokeri' - ,nb: 'Blodsukkermåling' - ,he: 'מדידת סוכר' - ,pl: 'Odczyt glikemii' - ,ru: 'Значение ГК' - ,sk: 'Hodnota glykémie' - ,nl: 'Glucose meting' - ,ko: '혈당 읽기' - ,tr: 'Glikoz Değeri' - ,zh_cn: '血糖数值' - ,hu: 'Vércukorszint Érték' - } - ,'Measurement Method' : { - cs: 'Metoda měření' - ,de: 'Messmethode' - ,es: 'Método de medida' - ,fr: 'Méthode de mesure' - ,el: 'Μέθοδος Μέτρησης' - ,pt: 'Método de medida' - ,sv: 'Mätmetod' - ,ro: 'Metodă măsurare' - ,bg: 'Метод на измерване' - ,hr: 'Metoda mjerenja' - ,it: 'Metodo di misurazione' - ,ja: '測定方法' - ,dk: 'Målemetode' - ,fi: 'Mittaustapa' - ,nb: 'Målemetode' - ,he: 'אמצעי מדידה' - ,pl: 'Sposób pomiaru' - ,ru: 'Способ замера' - ,sk: 'Metóda merania' - ,nl: 'Meetmethode' - ,ko: '측정 방법' - ,tr: 'Ölçüm Metodu' - ,zh_cn: '测量方法' - ,hu: 'Cukorszint mérés metódusa' - } - ,'Meter' : { - cs: 'Glukoměr' - ,de: 'BZ-Messgerät' - ,fr: 'Glucomètre' - ,el: 'Μετρητής' - ,pt: 'Glicosímetro' - ,sv: 'Mätare' - ,ro: 'Glucometru' - ,es: 'Glucómetro' - ,bg: 'Глюкомер' - ,hr: 'Glukometar' - ,it: 'Glucometro' - ,ja: '血糖測定器' - ,dk: 'Blodsukkermåler' - ,fi: 'Sokerimittari' - ,nb: 'Måleapparat' - ,he: 'מד סוכר' - ,pl: 'Glukometr' - ,ru: 'Глюкометр' - ,sk: 'Glukomer' - ,nl: 'Glucosemeter' - ,ko: '혈당 측정기' - ,tr: 'Glikometre' - ,zh_cn: '血糖仪' - ,hu: 'Cukorszint mérő' - } - ,'Insulin Given' : { - cs: 'Inzulín' - ,de: 'Insulingabe' - ,es: 'Insulina' - ,fr: 'Insuline donnée' - ,el: 'Ινσουλίνη' - ,pt: 'Insulina' - ,sv: 'Insulindos' - ,ro: 'Insulină administrată' - ,bg: 'Инсулин' - ,hr: 'Količina iznulina' - ,it: 'Insulina' - ,ja: '投与されたインスリン' - ,dk: 'Insulin dosis' - ,fi: 'Insuliiniannos' - ,nb: 'Insulin' - ,he: 'אינסולין שניתן' - ,pl: 'Podana insulina' - ,ru: 'Введен инсулин' - ,sk: 'Podaný inzulín' - ,nl: 'Toegediende insuline' - ,ko: '인슐린 요구량' - ,tr: 'Verilen İnsülin' - ,zh_cn: '胰岛素输注量' - ,hu: 'Inzulin Beadva' - } - ,'Amount in grams' : { - cs: 'Množství v gramech' - ,de: 'Menge in Gramm' - ,es: 'Cantidad en gramos' - ,fr: 'Quantité en grammes' - ,el: 'Ποσότητα σε γρ' - ,pt: 'Quantidade em gramas' - ,sv: 'Antal gram' - ,ro: 'Cantitate în grame' - ,bg: 'К-во в грамове' - ,hr: 'Količina u gramima' - ,it: 'Quantità in grammi' - ,ja: 'グラム換算' - ,dk: 'Antal gram' - ,fi: 'Määrä grammoissa' - ,nb: 'Antall gram' - ,he: 'כמות בגרמים' - ,pl: 'Wartość w gramach' - ,ru: 'Количество в граммах' - ,sk: 'Množstvo v gramoch' - ,nl: 'Hoeveelheid in gram' - ,ko: '합계(grams)' - ,tr: 'Gram cinsinden miktar' - ,zh_cn: '总量(g)' - ,hu: 'Adag grammokban (g)' - } - ,'Amount in units' : { - cs: 'Množství v jednotkách' - ,de: 'Anzahl in Einheiten' - ,es: 'Cantidad en unidades' - ,fr: 'Quantité en unités' - ,el: 'Ποσότητα σε μονάδες' - ,pt: 'Quantidade em unidades' - ,ro: 'Cantitate în unități' - ,bg: 'К-во в единици' - ,hr: 'Količina u jedinicama' - ,sv: 'Antal enheter' - ,it: 'Quantità in unità' - ,ja: '単位換算' - ,dk: 'Antal enheder' - ,fi: 'Annos yksiköissä' - ,nb: 'Antall enheter' - ,he: 'כמות ביחידות' - ,pl: 'Wartość w jednostkach' - ,ru: 'Количество в ед.' - ,sk: 'Množstvo v jednotkách' - ,nl: 'Aantal in eenheden' - ,ko: '합계(units)' - ,tr: 'Birim miktarı' - ,zh_cn: '总量(U)' - ,hu: 'Adag egységekben' - } - ,'View all treatments' : { - cs: 'Zobraz všechny ošetření' - ,de: 'Zeige alle Behandlungen' - ,es: 'Visualizar todos los tratamientos' - ,fr: 'Voir tous les traitements' - ,el: 'Προβολή όλων των ενεργειών' - ,pt: 'Visualizar todos os procedimentos' - ,sv: 'Visa behandlingar' - ,ro: 'Vezi toate evenimentele' - ,bg: 'Преглед на всички събития' - ,hr: 'Prikaži sve tretmane' - ,it: 'Visualizza tutti le somministrazioni' - ,ja: '全治療内容を参照' - ,dk: 'Vis behandlinger' - ,fi: 'Katso kaikki hoitotoimenpiteet' - ,nb: 'Vis behandlinger' - ,he: 'הצג את כל הטיפולים' - ,pl: 'Pokaż całość leczenia' - ,ru: 'Показать все события' - ,sk: 'Zobraziť všetky ošetrenia' - ,nl: 'Bekijk alle behandelingen' - ,ko: '모든 treatments 보기' - ,tr: 'Tüm tedavileri görüntüle' - ,zh_cn: '查看所有操作' - ,hu: 'Összes kezelés mutatása' - } - ,'Enable Alarms' : { - cs: 'Povolit alarmy' - ,de: 'Alarme einschalten' - ,es: 'Activar las alarmas' - ,fr: 'Activer les alarmes' - ,el: 'Ενεργοποίηση όλων των ειδοποιήσεων' - ,pt: 'Ativar alarmes' - ,sv: 'Aktivera larm' - ,ro: 'Activează alarmele' - ,bg: 'Активни аларми' - ,hr: 'Aktiviraj alarme' - ,it: 'Attiva Allarme' - ,ja: 'アラームを有効にする' - ,dk: 'Aktivere alarmer' - ,fi: 'Aktivoi hälytykset' - ,nb: 'Aktiver alarmer' - ,he: 'הפעל התראות' - ,pl: 'Włącz alarmy' - ,ru: 'Активировать сигналы' - ,sk: 'Aktivovať alarmy' - ,nl: 'Alarmen aan!' - ,ko: '알람 켜기' - ,tr: 'Alarmları Etkinleştir' - ,zh_cn: '启用报警' - ,zh_tw: '啟用報警' - ,hu: 'Figyelmeztetők bekapcsolása' - } - ,'Pump Battery Change' : { - nl: 'Pompbatterij vervangen' - ,sv: 'Byte av pumpbatteri' - ,dk: 'Udskift pumpebatteri' - ,de: 'Pumpenbatterie wechseln' - ,fi: 'Pumpun patterin vaihto' - ,nb: 'Bytte av pumpebatteri' - ,bg: 'Смяна на батерия на помпата' - ,hr: 'Zamjena baterije pumpe' - ,ja: 'ポンプバッテリー交換' - ,pl: 'Zmiana baterii w pompie' - ,ru: 'замена батареи помпы' - ,tr: 'Pompa pil değişimi' - ,hu: 'Pumpa elem csere' - } - ,'Pump Battery Low Alarm' : { - nl: 'Pompbatterij bijna leeg Alarm' - ,sv: 'Pumpbatteri lågt Alarm' - ,dk: 'Pumpebatteri lav Alarm' - ,de: 'Pumpenbatterie niedrig Alarm' - ,fi: 'Varoitus! Pumpun patteri loppumassa' - ,nb: 'Pumpebatteri Lav alarm' - ,bg: 'Аларма за слаба батерия на помпата' - ,hr: 'Upozorenje slabe baterije pumpe' - ,ja: 'ポンプバッテリーが低下' - ,pl: 'Alarm! Niski poziom baterii w pompie' - ,ru: 'Внимание! низкий заряд батареи помпы' - ,tr: 'Pompa Düşük pil alarmı' - ,hu: 'Alacsony pumpa töltöttség figyelmeztetés' - } - ,'Pump Battery change overdue!' : { // batteryage.js - nl: 'Pompbatterij moet vervangen worden!' - ,sv: 'Pumpbatteriet måste bytas!' - ,dk: 'Pumpebatteri skal skiftes!' - ,de: 'Pumpenbatterie Wechsel überfällig!' - ,fi: 'Pumpun patterin vaihto myöhässä!' - ,nb: 'Pumpebatteriet må byttes!' - ,bg: 'Смяната на батерията на помпата - наложителна' - ,hr: 'Prošao je rok za zamjenu baterije pumpe!' - ,ja: 'ポンプバッテリー交換期限切れてます!' - , pl: 'Bateria pompy musi być wymieniona!' - ,ru: 'пропущен срок замены батареи!' - ,tr: 'Pompa pil değişimi gecikti!' - ,hu: 'A pumpa eleme cserére szorul' - } - ,'When enabled an alarm may sound.' : { - cs: 'Při povoleném alarmu zní zvuk' - ,de: 'Sofern eingeschaltet ertönt ein Alarm' - ,es: 'Cuando estén activas, una alarma podrá sonar' - ,fr: 'Si activée, un alarme peut sonner.' - ,el: 'Όταν ενεργοποιηθεί, μία ηχητική ειδοποίηση ενδέχεται να ακουστεί' - ,pt: 'Quando ativado, um alarme poderá soar' - ,ro: 'Când este activ, poate suna o alarmă.' - ,sv: 'När markerad är ljudlarm aktivt' - ,bg: 'Когато е активирано, алармата ще има звук' - ,hr: 'Kad je aktiviran, alarm se može oglasiti' - ,it: 'Quando si attiva un allarme acustico.' - ,ja: '有効にすればアラームが鳴動します。' - ,dk: 'Når aktiveret kan alarm lyde' - ,fi: 'Aktivointi mahdollistaa äänihälytykset' - ,nb: 'Når aktivert er alarmer aktive' - ,he: 'כשמופעל התראות יכולות להישמע.' - ,pl: 'Sygnalizacja dzwiękowa przy włączonym alarmie' - ,ru: 'При активации может звучать сигнал' - ,sk: 'Pri aktivovanom alarme znie zvuk ' - ,nl: 'Als ingeschakeld kan alarm klinken' - ,ko: '알림을 활성화 하면 알람이 울립니다.' - ,tr: 'Etkinleştirilirse, alarm çalar.' - ,zh_cn: '启用后可发出声音报警' - ,zh_tw: '啟用後可發出聲音報警' - ,hu: 'Bekapcsoláskor hang figyelmeztetés várható' - } - ,'Urgent High Alarm' : { - cs: 'Urgentní vysoká glykémie' - ,de: 'Achtung Hoch Alarm' - ,es: 'Alarma de glucemia alta urgente' - ,fr: 'Alarme hyperglycémie urgente' - ,el: 'Ειδοποίηση επικίνδυνα υψηλής γλυκόζης' - ,pt: 'URGENTE: Alarme de glicemia alta' - ,sv: 'Brådskande högt larmvärde' - ,ro: 'Alarmă urgentă hiper' - ,bg: 'Много висока КЗ' - ,hr: 'Hitni alarm za hiper' - ,it: 'Urgente:Glicemia Alta' - ,ja: '緊急高血糖アラーム' - ,dk: 'Kritisk høj grænse overskredet' - ,fi: 'Kriittinen korkea' - ,nb: 'Kritisk høy alarm' - ,he: 'התראת גבוה דחופה' - ,pl: 'Uwaga: Alarm hiperglikemii' - ,ru: 'Внимание: высокая гликемия ' - ,sk: 'Naliehavý alarm vysokej glykémie' - ,nl: 'Urgent Alarm Hoge BG' - ,ko: '긴급 고혈당 알람' - ,tr: 'Acil Yüksek Alarm' //Dikkat yüksek alarm - ,zh_cn: '血糖过高报警' - ,zh_tw: '血糖過高報警' - ,hu: 'Nagyon magas cukorszint figyelmeztetés' - } - ,'High Alarm' : { - cs: 'Vysoká glykémie' - ,de: 'Hoch Alarm' - ,es: 'Alarma de glucemia alta' - ,fr: 'Alarme hyperglycémie' - ,el: 'Ειδοποίηση υψηλής γλυκόζης' - ,pt: 'Alarme de glicemia alta' - ,sv: 'Högt larmvärde' - ,ro: 'Alarmă hiper' - ,bg: 'Висока КЗ' - ,hr: 'Alarm za hiper' - ,it: 'Glicemia Alta' - ,ja: '高血糖アラーム' - ,dk: 'Høj grænse overskredet' - ,fi: 'Korkea verensokeri' - ,nb: 'Høy alarm' - ,he: 'התראת גבוה' - ,pl: 'Alarm hiperglikemii' - ,ru: 'Высокая гликемия' - ,sk: 'Alarm vysokej glykémie' - ,nl: 'Alarm hoge BG' - ,ko: '고혈당 알람' - ,tr: 'Yüksek Alarmı' - ,zh_cn: '高血糖报警' - ,zh_tw: '高血糖報警' - ,hu: 'Magas cukorszint fegyelmeztetés' - } - ,'Low Alarm' : { - cs: 'Nízká glykémie' - ,de: 'Niedrig Alarm' - ,es: 'Alarma de glucemia baja' - ,fr: 'Alarme hypoglycémie' - ,el: 'Ειδοποίηση χαμηλής γλυκόζης' - ,pt: 'Alarme de glicemia baixa' - ,sv: 'Lågt larmvärde' - ,ro: 'Alarmă hipo' - ,bg: 'Ниска КЗ' - ,hr: 'Alarm za hipo' - ,it: 'Glicemia bassa' - ,ja: '低血糖アラーム' - ,dk: 'Lav grænse overskredet' - ,fi: 'Matala verensokeri' - ,nb: 'Lav alarm' - ,he: 'התראת נמוך' - ,pl: 'Alarm hipoglikemii' - ,ru: 'Низкая гликемия' - ,sk: 'Alarm nízkej glykémie' - ,nl: 'Alarm lage BG' - ,ko: '저혈당 알람' - ,tr: 'Düşük Alarmı' - ,zh_cn: '低血糖报警' - ,zh_tw: '低血糖報警' - ,hu: 'Alacsony cukorszint figyelmeztetés' - } - ,'Urgent Low Alarm' : { - cs: 'Urgentní nízká glykémie' - ,de: 'Achtung Niedrig Alarm' - ,es: 'Alarma de glucemia baja urgente' - ,fr: 'Alarme hypoglycémie urgente' - ,el: 'Ειδοποίηση επικίνδυνα χαμηλής γλυκόζης' - ,pt: 'URGENTE: Alarme de glicemia baixa' - ,sv: 'Brådskande lågt larmvärde' - ,ro: 'Alarmă urgentă hipo' - ,bg: 'Много ниска КЗ' - ,hr: 'Hitni alarm za hipo' - ,it: 'Urgente:Glicemia Bassa' - ,ja: '緊急低血糖アラーム' - ,dk: 'Advarsel: Lav' - ,fi: 'Kriittinen matala' - ,nb: 'Kritisk lav alarm' - ,he: 'התראת נמוך דחופה' - ,pl: 'Uwaga: Alarm hipoglikemii' - ,ru: 'Внимание: низкая гликемия' - ,sk: 'Naliehavý alarm nízkej glykémie' - ,nl: 'Urgent Alarm lage BG' - ,ko: '긴급 저혈당 알람' - ,tr: 'Acil Düşük Alarmı' - ,zh_cn: '血糖过低报警' - ,zh_tw: '血糖過低報警' - ,hu: 'Nagyon alacsony cukorszint figyelmeztetés' - } - ,'Stale Data: Warn' : { - cs: 'Zastaralá data' - ,he: 'אזהרה-נתונים ישנים' - ,de: 'Warnung: Daten nicht mehr gültig' - ,es: 'Datos obsoletos: aviso' - ,fr: 'Données échues: avertissement' - ,el: 'Έλλειψη πρόσφατων δεδομένων: Προειδοποίηση' - ,pt: 'Dados antigos: alerta' - ,sv: 'Förfluten data: Varning!' - ,ro: 'Date învechite: alertă' - ,bg: 'Стари данни' - ,hr: 'Pažnja: Stari podaci' - ,it: 'Notifica Dati' - ,ja: '注意:古いデータ' - ,dk: 'Advarsel: Gamle data' - ,fi: 'Vanhat tiedot: varoitus' - ,nb: 'Advarsel: Gamle data' - ,pl: 'Ostrzeżenie: brak odczytów' - ,ru: 'Предупреждение: старые данные' - ,sk: 'Varovanie: Zastaralé dáta' - ,nl: 'Waarschuwing Oude gegevens na' - ,ko: '손실 데이터 : 경고' - ,tr: 'Eski Veri: Uyarı' //Uyarı: veri artık geçerli değil - ,zh_cn: '数据过期:提醒' - ,zh_tw: '數據過期:提醒' - ,hu: 'Figyelmeztetés: Az adatok öregnek tűnnek' - } - ,'Stale Data: Urgent' : { - cs: 'Zastaralá data urgentní' - ,he: 'דחוף-נתונים ישנים' - ,de: 'Achtung: Daten nicht mehr gültig' - ,es: 'Datos obsoletos: Urgente' - ,fr: 'Données échues: avertissement urgent' - ,el: 'Έλλειψη πρόσφατων δεδομένων: ΕΠΕΙΓΟΝ' - ,pt: 'Dados antigos: Urgente' - ,sv: 'Brådskande varning, inaktuell data' - ,ro: 'Date învechite: urgent' - ,bg: 'Много стари данни' - ,hr: 'Hitno: Stari podaci' - ,it: 'Notifica:Urgente' - ,ja: '緊急:古いデータ' - ,dk: 'Kritisk: Gamle data' - ,fi: 'Vanhat tiedot: hälytys' - ,nb: 'Advarsel: Veldig gamle data' - ,pl: 'Uwaga: brak odczytów' - ,ru: 'Внимание: старые данные' - ,sk: 'Naliehavé: Zastaralé dáta' - ,nl: 'Urgente Waarschuwing Oude gegevens na' - ,ko: '손실 데이터 : 긴급' - ,tr: 'Eski Veri: Acil' - ,zh_cn: '数据过期:警告' - ,zh_tw: '數據過期:警告' - ,hu: 'Figyelmeztetés: Az adatok nagyon öregnek tűnnek' - } - ,'mins' : { - cs: 'min' - ,he: 'דקות' - ,de: 'Minuten' - ,es: 'min' - ,fr: 'mins' - ,el: 'λεπτά' - ,pt: 'min' - ,sv: 'min' - ,ro: 'min' - ,bg: 'мин' - ,hr: 'min' - ,it: 'min' - ,ja: '分' - ,dk: 'min' - ,fi: 'minuuttia' - ,nb: 'min' - ,pl: 'min' - ,ru: 'мин' - ,sk: 'min.' - ,nl: 'minuten' - ,ko: '분' - ,tr: 'dk.' - ,zh_cn: '分' - ,zh_tw: '分' - ,hu: 'perc' - } - ,'Night Mode' : { - cs: 'Noční mód' - ,he: 'מצב לילה' - ,de: 'Nacht Modus' - ,es: 'Modo nocturno' - ,fr: 'Mode nocturne' - ,el: 'Λειτουργία Νυκτός' - ,pt: 'Modo noturno' - ,sv: 'Nattläge' - ,ro: 'Mod nocturn' - ,bg: 'Нощен режим' - ,hr: 'Noćni način' - ,it: 'Modalità Notte' - ,ja: '夜間モード' - ,dk: 'Nat tilstand' - ,fi: 'Yömoodi' - ,nb: 'Nattmodus' - ,pl: 'Tryb nocny' - ,ru: 'Режим: ночь' - ,sk: 'Nočný mód' - ,nl: 'Nachtstand' - ,ko: '나이트 모드' - ,tr: 'Gece Modu' - ,zh_cn: '夜间模式' - ,zh_tw: '夜間模式' - ,hu: 'Éjjeli üzemmód' - } - ,'When enabled the page will be dimmed from 10pm - 6am.' : { - cs: 'Když je povoleno, obrazovka je ztlumena 22:00 - 6:00' - ,he: 'במצב זה המסך יעומעם בין השעות עשר בלילה לשש בבוקר' - ,de: 'Sofern aktiviert wird die Anzeige von 22h - 6h gedimmt' - ,es: 'Cuando esté activo, el brillo de la página bajará de 10pm a 6am.' - ,fr: 'Si activé, la page sera assombrie de 22:00 à 6:00' - ,el: 'Όταν ενεργοποιηθεί, η φωτεινότητα της οθόνης θα μειωθεί μεταξύ 22.00 - 6.00' - ,pt: 'Se ativado, a página será escurecida entre 22h e 6h' - ,sv: 'När aktiverad dimmas sidan mellan 22:00 - 06:00' - ,ro: 'La activare va scădea iluminarea între 22 și 6' - ,bg: 'Когато е активирано, страницата ще е затъмнена от 22-06ч' - ,hr: 'Kad je uključen, stranica će biti zatamnjena od 22-06' - ,it: 'Attivandola, la pagina sarà oscurata dalle 22:00-06:00.' - ,ja: '有効にすると、ページは 夜22時から 朝6時まで単色表示になります。' - ,dk: 'Når aktiveret vil denne side nedtones fra 22:00-6:00' - ,fi: 'Aktivoituna sivu himmenee kello 22 ja 06 välillä' - ,nb: 'Når aktivert vil denne siden nedtones fra 22:00-06:00' - ,pl: 'Po włączeniu strona będzie przyciemniona od 22 wieczorem do 6 nad ranem.' - ,ru: 'При активации страница затемнена с 22.00 до 06.00' - ,sk: 'Keď je povolený, obrazovka bude stlmená od 22:00 do 6:00.' - ,nl: 'Scherm dimmen tussen 22:00 en 06:00' - ,ko: '페이지를 켜면 오후 10시 부터 오전 6시까지 비활성화 될 것이다.' - ,tr: 'Etkinleştirildiğinde, ekran akşam 22\'den sabah 6\'ya kadar kararır.' - ,zh_cn: '启用后将在夜间22点至早晨6点降低页面亮度' - ,zh_tw: '啟用後將在夜間22點至早晨6點降低頁面亮度' - ,hu: 'Ezt bekapcsolva a képernyő halványabb lesz 22-től 6-ig' - } - ,'Enable' : { - cs: 'Povoleno' - ,he: 'אפשר' - ,de: 'Aktivieren' - ,es: 'Activar' - ,fr: 'Activer' - ,el: 'Ενεργοποίηση' - ,pt: 'Ativar' - ,sv: 'Aktivera' - ,ro: 'Activează' - ,bg: 'Активен' - ,hr: 'Aktiviraj' - ,it: 'Permettere' - ,ja: '有効' - ,dk: 'Aktivere' - ,fi: 'Aktivoi' - ,nb: 'Aktiver' - ,pl: 'Włącz' - ,ru: 'Активировать' - ,sk: 'Povoliť' - ,nl: 'Activeren' - ,ko: '활성화' - ,tr: 'Etkinleştir' - ,zh_cn: '启用' - ,zh_tw: '啟用' - ,hu: 'Engedélyezve' - } - ,'Show Raw BG Data' : { - cs: 'Zobraz RAW data' - ,he: 'הראה את רמת הסוכר ללא עיבוד' - ,de: 'Zeige Roh-BG Daten' - ,es: 'Mostrat datos en glucemia en crudo' - ,fr: 'Montrer les données BG brutes' - ,el: 'Εμφάνιση αυτούσιων δεδομένων αισθητήρα' - ,pt: 'Mostrar dados de glicemia não processados' - ,sv: 'Visa RAW-data' - ,ro: 'Afișează date primare glicemie' - ,bg: 'Показвай RAW данни' - ,hr: 'Prikazuj sirove podatke o GUK-u' - ,it: 'Mostra dati Raw BG' - ,ja: '素のBGデータを表示する' - ,dk: 'Vis rå BS data' - ,fi: 'Näytä raaka VS tieto' - ,nb: 'Vis rådata' - ,pl: 'Wyświetl surowe dane BG' - ,ru: 'Показывать необработанные данные RAW' - ,sk: 'Zobraziť RAW dáta' - ,nl: 'Laat ruwe data zien' - ,ko: 'Raw 혈당 데이터 보기' - ,tr: 'Ham KŞ verilerini göster' - ,zh_cn: '显示原始血糖数据' - ,zh_tw: '顯示原始血糖數據' - ,hu: 'Nyers BG adatok mutatása' - } - ,'Never' : { - cs: 'Nikdy' - ,he: 'אף פעם' - ,de: 'Nie' - ,es: 'Nunca' - ,fr: 'Jamais' - ,el: 'Ποτέ' - ,pt: 'Nunca' - ,sv: 'Aldrig' - ,ro: 'Niciodată' - ,bg: 'Никога' - ,hr: 'Nikad' - ,it: 'Mai' - ,ja: '決して' - ,dk: 'Aldrig' - ,fi: 'Ei koskaan' - ,nb: 'Aldri' - ,pl: 'Nigdy' - ,ru: 'Никогда' - ,sk: 'Nikdy' - ,nl: 'Nooit' - ,ko: '보지 않기' - ,tr: 'Hiçbir zaman' //Asla - ,zh_cn: '不显示' - ,zh_tw: '不顯示' - ,hu: 'Soha' - } - ,'Always' : { - cs: 'Vždy' - ,he: 'תמיד' - ,de: 'Immer' - ,es: 'Siempre' - ,fr: 'Toujours' - ,el: 'Πάντα' - ,pt: 'Sempre' - ,sv: 'Alltid' - ,ro: 'Întotdeauna' - ,bg: 'Винаги' - ,hr: 'Uvijek' - ,it: 'Sempre' - ,ja: 'いつも' - ,dk: 'Altid' - ,fi: 'Aina' - ,nb: 'Alltid' - ,pl: 'Zawsze' - ,ru: 'Всегда' - ,sk: 'Vždy' - ,nl: 'Altijd' - ,ko: '항상' - ,tr: 'Her zaman' - ,zh_cn: '一直显示' - ,zh_tw: '一直顯示' - ,hu: 'Mindíg' - } - ,'When there is noise' : { - cs: 'Při šumu' - ,he: 'בנוכחות רעש' - ,de: 'Sofern Rauschen vorhanden' - ,es: 'Cuando hay ruido' - ,fr: 'Quand il y a du bruit' - ,el: 'Όταν υπάρχει θόρυβος' - ,pt: 'Quando houver ruído' - ,sv: 'Endast vid brus' - ,ro: 'Atunci când este diferență' - ,bg: 'Когато има шум' - ,hr: 'Kad postoji šum' - ,it: 'Quando vi è rumore' - ,ja: '測定不良があった時' - ,dk: 'Når der er støj' - ,fi: 'Signaalihäiriöiden yhteydessä' - ,nb: 'Når det er støy' - ,pl: 'Gdy sygnał jest zakłócony' - ,ru: 'Когда есть шумовой фон' - ,sk: 'Pri šume' - ,nl: 'Bij ruis' - ,ko: '노이즈가 있을 때' - ,tr: 'Gürültü olduğunda' - ,zh_cn: '当有噪声时显示' - ,zh_tw: '當有噪聲時顯示' - ,hu: 'Ha zavar van:' - } - ,'When enabled small white dots will be displayed for raw BG data' : { - cs: 'Když je povoleno, malé tečky budou zobrazeny pro RAW data' - ,he: 'במצב זה,רמות סוכר לפני עיבוד יוצגו כנקודות לבנות קטנות' - ,de: 'Bei Aktivierung erscheinen kleine weiße Punkte für Roh-BG Daten' - ,es: 'Cuando esté activo, pequeños puntos blancos mostrarán los datos en crudo' - ,el: 'Όταν εργοποιηθεί, μικρές λευκές κουκίδες θα αναπαριστούν τα αυτούσια δεδομένα του αισθητήρα' - ,fr: 'Si activé, des points blancs représenteront les données brutes' - ,pt: 'Se ativado, pontos brancos representarão os dados de glicemia não processados' - ,sv: 'När aktiverad visar de vita punkterna RAW-blodglukosevärden' - ,ro: 'La activare vor apărea puncte albe reprezentând citirea brută a glicemiei' - ,bg: 'Когато е активно, малки бели точки ще показват RAW данните' - ,hr: 'Kad je omogućeno, male bijele točkice će prikazivati sirove podatke o GUK-u.' - ,it: 'Quando lo abiliti, visualizzerai piccoli puntini bianchi (raw BG data)' - ,ja: '有効にすると、小さい白ドットが素のBGデータ用に表示されます' - ,dk: 'Ved aktivering vil små hvide prikker blive vist for rå BG tal' - ,fi: 'Aktivoituna raaka VS tieto piirtyy aikajanalle valkoisina pisteinä' - ,nb: 'Ved aktivering vil små hvite prikker bli vist for ubehandlede BG-data' - ,pl: 'Gdy funkcja jest włączona, małe białe kropki pojawią się na surowych danych BG' - ,ru: 'При активации данные RAW будут видны как мелкие белые точки' - ,sk: 'Keď je povolené, malé bodky budú zobrazovať RAW dáta.' - ,nl: 'Indien geactiveerd is ruwe data zichtbaar als witte punten' - ,ko: '활성화 하면 작은 흰점들이 raw 혈당 데이터를 표시하게 될 것이다.' - ,tr: 'Etkinleştirildiğinde, ham KŞ verileri için küçük beyaz noktalar görüntülenecektir.' - ,zh_cn: '启用后将使用小白点标注原始血糖数据' - ,zh_tw: '啟用後將使用小白點標註原始血糖數據' - ,hu: 'Bekapcsolasnál kis fehért pontok fogják jelezni a nyers BG adatokat' - } - ,'Custom Title' : { - cs: 'Vlastní název stránky' - ,he: 'כותרת מותאמת אישית' - ,de: 'Benutzerdefinierter Titel' - ,es: 'Título personalizado' - ,fr: 'Titre personalisé' - ,el: 'Επιθυμητός τίτλος σελίδας' - ,pt: 'Customizar Título' - ,sv: 'Egen titel' - ,ro: 'Titlu particularizat' - ,bg: 'Име на страницата' - ,hr: 'Vlastiti naziv' - ,it: 'Titolo personalizzato' - ,ja: 'カスタムタイトル' - ,dk: 'Valgfri titel' - ,fi: 'Omavalintainen otsikko' - ,nb: 'Egen tittel' - ,pl: 'Własny tytuł strony' - ,ru: 'Произвольное название' - ,sk: 'Vlastný názov stránky' - ,ko: '사용자 정의 제목' - ,nl: 'Eigen titel' - ,tr: 'Özel Başlık' - ,zh_cn: '自定义标题' - ,zh_tw: '自定義標題' - ,hu: 'Saját Cím' - } - ,'Theme' : { - cs: 'Téma' - ,he: 'נושא' - ,de: 'Aussehen' - ,es: 'Tema' - ,fr: 'Thème' - ,el: 'Θέμα απεικόνισης' - ,pt: 'tema' - ,ro: 'Temă' - ,bg: 'Тема' - ,hr: 'Tema' - ,sv: 'Tema' - ,it: 'Tema' - ,ja: 'テーマ' - ,dk: 'Tema' - ,fi: 'Teema' - ,nb: 'Tema' - ,pl: 'Wygląd' - ,ru: 'Тема' - ,sk: 'Vzhľad' - ,nl: 'Thema' - ,ko: '테마' - ,tr: 'Tema' - ,zh_cn: '主题' - ,zh_tw: '主題' - ,hu: 'Téma' - } - ,'Default' : { - cs: 'Výchozí' - ,he: 'בְּרִירַת מֶחדָל' - ,de: 'Standard' - ,es: 'Por defecto' - ,fr: 'Par défaut' - ,el: 'Κύριο' - ,pt: 'Padrão' - ,sv: 'Standard' - ,ro: 'Implicită' - ,bg: 'Черно-бяла' - ,hr: 'Default' - ,it: 'Predefinito' - ,ja: 'デフォルト' - ,dk: 'Standard' - ,fi: 'Oletus' - ,nb: 'Standard' - ,pl: 'Domyślny' - ,ru: 'По умолчанию' - ,sk: 'Predvolený' - ,nl: 'Standaard' - ,ko: '초기설정' - ,tr: 'Varsayılan' - ,zh_cn: '默认' - ,zh_tw: '默認' - ,hu: 'Alap' - } - ,'Colors' : { - cs: 'Barevné' - ,he: 'צבעים' - ,de: 'Farben' - ,es: 'Colores' - ,fr: 'Couleurs' - ,el: 'Χρώματα' - ,pt: 'Colorido' - ,sv: 'Färg' - ,ro: 'Colorată' - ,bg: 'Цветна' - ,hr: 'Boje' - ,it: 'Colori' - ,ja: '色付き' - ,dk: 'Farver' - ,fi: 'Värit' - ,nb: 'Farger' - ,pl: 'Kolorowy' - ,ru: 'Цветная' - ,sk: 'Farebný' - ,nl: 'Kleuren' - ,ko: '색상' - ,tr: 'Renkler' - ,zh_cn: '彩色' - ,zh_tw: '彩色' - ,hu: 'Színek' - } - ,'Colorblind-friendly colors' : { - cs: 'Pro barvoslepé' - ,he: 'צבעים ידידותיים לעוורי צבעים' - ,de: 'Farbenblind-freundliche Darstellung' - ,es: 'Colores para Daltónicos' - ,fr: 'Couleurs pour daltoniens' - ,dk: 'Farveblindvenlige farver' - ,nb: 'Fargeblindvennlige farger' - ,el: 'Χρώματα συμβατά για αχρωματοψία' - ,pt: 'Cores para daltônicos' - ,sv: 'Högkontrastfärger' - ,sk: 'Farby vhodné pre farboslepých' - ,nl: 'Kleurenblind vriendelijke kleuren' - ,ro: 'Culori pentru cei cu deficiențe de vedere' - ,ko: '색맹 친화적인 색상' - ,bg: 'Цветове за далтонисти' - ,hr: 'Boje za daltoniste' - ,it: 'Colori per daltonici' - ,ja: '色覚異常の方向けの色' - ,fi: 'Värisokeille sopivat värit' - ,zh_cn: '色盲患者可辨识的颜色' - ,zh_tw: '色盲患者可辨識的顏色' - ,pl: 'Kolory dla niedowidzących' - ,tr: 'Renk körü dostu görünüm' - ,ru: 'Цветовая гамма для людей с нарушениями восприятия цвета' - ,hu: 'Beállítás színvakok számára' - } - ,'Reset, and use defaults' : { - cs: 'Vymaž a nastav výchozí hodnoty' - ,he: 'איפוס ושימוש ברירות מחדל' - ,de: 'Zurücksetzen und Voreinstellungen verwenden' - ,es: 'Inicializar y utilizar los valores por defecto' - ,fr: 'Remettre à zéro et utiliser les valeurs par défaut' - ,el: 'Αρχικοποίηση και χρήση των προκαθορισμένων ρυθμίσεων' - ,pt: 'Zerar e usar padrões' - ,sv: 'Återställ standardvärden' - ,ro: 'Resetează și folosește setările implicite' - ,bg: 'Нулирай и използвай стандартните настройки' - ,hr: 'Resetiraj i koristi defaultne vrijednosti' - ,it: 'Resetta le impostazioni predefinite' - ,ja: 'リセットしてデフォルト設定を使用' - ,dk: 'Returner til standardopsætning' - ,fi: 'Palauta oletusasetukset' - ,nb: 'Gjenopprett standardinnstillinger' - ,pl: 'Reset i powrót do domyślnych ustawień' - ,ru: 'Сбросить и использовать настройки по умолчанию' - ,sk: 'Resetovať do pôvodného nastavenia' - ,nl: 'Herstel standaard waardes' - ,ko: '초기화 그리고 초기설정으로 사용' - ,tr: 'Sıfırla ve varsayılanları kullan' - ,zh_cn: '使用默认值重置' - ,zh_tw: '使用默認值重置' - ,hu: 'Visszaállítás a kiinduló állapotba' - } - ,'Calibrations' : { - cs: 'Kalibrace' - ,he: 'כיולים' - ,de: 'Kalibrierung' - ,es: 'Calibraciones' - ,fr: 'Calibration' - ,el: 'Βαθμονόμηση' - ,pt: 'Calibraçôes' - ,sv: 'Kalibreringar' - ,ro: 'Calibrări' - ,bg: 'Калибрации' - ,hr: 'Kalibriranje' - ,it: 'Calibrazioni' - ,ja: '較生' - ,dk: 'Kalibrering' - ,fi: 'Kalibraatiot' - ,nb: 'Kalibreringer' - ,pl: 'Kalibracja' - ,ru: 'Калибровки' - ,sk: 'Kalibrácie' - ,nl: 'Kalibraties' - ,ko: '보정' - ,tr: 'Kalibrasyon' - ,zh_cn: '校准' - ,hu: 'Kalibráció' - } - ,'Alarm Test / Smartphone Enable' : { - cs: 'Test alarmu' - ,he: 'אזעקה מבחן / הפעל טלפון' - ,de: 'Alarm Test / Smartphone aktivieren' - ,es: 'Test de Alarma / Activar teléfono' - ,fr: 'Test alarme / Activer Smartphone' - ,el: 'Τεστ ηχητικής ειδοποίησης' - ,pt: 'Testar Alarme / Ativar Smartphone' - ,sv: 'Testa alarm / Aktivera Smatphone' - ,ro: 'Teste alarme / Activează pe smartphone' - ,bg: 'Тестване на алармата / Активно за мобилни телефони' - ,hr: 'Alarm test / Aktiviraj smartphone' - ,it: 'Test Allarme / Abilita Smartphone' - ,ja: 'アラームテスト/スマートフォンを有効にする' - ,dk: 'Alarm test / Smartphone aktiveret' - ,fi: 'Hälytyksien testaus / Älypuhelimien äänet päälle' - ,nb: 'Alarmtest / Smartphone aktivering' - ,pl: 'Test alarmu / Smartphone aktywny' - ,ru: 'Проверка зв. уведомлений / смартфон активен' - ,sk: 'Test alarmu' - ,nl: 'Alarm test / activeer Smartphone' - ,ko: '알람 테스트 / 스마트폰 활성화' - ,tr: 'Alarm Testi / Akıllı Telefon için Etkin' - ,zh_cn: '报警测试/智能手机启用' - ,zh_tw: '報警測試/智能手機啟用' - ,hu: 'Figyelmeztetés teszt / Mobiltelefon aktiválása' - } - ,'Bolus Wizard' : { - cs: 'Bolusový kalkulátor' - ,he: 'אשף בולוס' - ,de: 'Bolus-Kalkulator' - ,es: 'Calculo Bolos sugeridos' - ,fr: 'Calculateur de bolus' - ,el: 'Εργαλείο υπολογισμού ινσουλίνης' - ,pt: 'Ajuda de bolus' - ,sv: 'Boluskalkylator' - ,ro: 'Calculator sugestie bolus' - ,bg: 'Болус съветник ' - ,hr: 'Bolus wizard' - ,it: 'BW-Calcolatore di Bolo' - ,ja: 'ボーラスウィザード' - ,dk: 'Bolusberegner' - ,fi: 'Annosopas' - ,nb: 'Boluskalkulator' - ,pl: 'Kalkulator bolusa' - ,ru: 'калькулятор болюса' - ,sk: 'Bolusový kalkulátor' - ,nl: 'Bolus calculator' - ,ko: 'Bolus 마법사' - ,tr: 'Bolus Hesaplayıcısı' - ,zh_cn: '大剂量向导' - ,zh_tw: '大劑量嚮導' - ,hu: 'Bólus Varázsló' - } - ,'in the future' : { - cs: 'v budoucnosti' - ,he: 'בעתיד' - ,de: 'in der Zukunft' - ,es: 'en el futuro' - ,fr: 'dans le futur' - ,el: 'στο μέλλον' - ,pt: 'no futuro' - ,sv: 'framtida' - ,ro: 'în viitor' - ,bg: 'в бъдещето' - ,hr: 'U budućnosti' - ,it: 'nel futuro' - ,ja: '先の時間' - ,dk: 'i fremtiden' - ,fi: 'tulevaisuudessa' - ,nb: 'fremtiden' - ,pl: 'w przyszłości' - ,ru: 'в будущем' - ,sk: 'v budúcnosti' - ,nl: 'In de toekomst' - ,ko: '미래' - ,tr: 'gelecekte' - ,zh_cn: '在未来' - ,zh_tw: '在未來' - ,hu: 'a jövőben' - } - ,'time ago' : { - cs: 'min zpět' - ,he: 'פעם' - ,de: 'seit Kurzem' - ,es: 'tiempo atrás' - ,fr: 'temps avant' - ,el: 'χρόνο πριν' - ,pt: 'tempo atrás' - ,sv: 'förfluten tid' - ,ro: 'în trecut' - ,bg: 'преди време' - ,hr: 'prije' - ,it: 'tempo fa' - ,ja: '時間前' - ,dk: 'tid siden' - ,fi: 'aikaa sitten' - ,nb: 'tid siden' - ,pl: 'czas temu' - ,ru: 'времени назад' - ,sk: 'čas pred' - ,nl: 'tijd geleden' - ,ko: '시간 전' - ,tr: 'süre önce' //yakın zamanda - ,zh_cn: '在过去' - ,zh_tw: '在過去' - ,hu: 'idő elött' - } - ,'hr ago' : { - cs: 'hod zpět' - ,he: 'לפני שעה' - ,de: 'Stunde her' - ,es: 'hr atrás' - ,fr: 'hr avant' - ,el: 'ώρα πριν' - ,pt: 'h atrás' - ,sv: 'timmar sedan' - ,ro: 'oră în trecut' - ,bg: 'час по-рано' - ,hr: 'sat unazad' - ,it: 'ora fa' - ,ja: '時間前' - ,dk: 'time siden' - ,fi: 'tunti sitten' - ,nb: 't siden' - ,pl: 'godzina temu' - ,ru: 'час назад' - ,sk: 'hod. pred' - ,nl: 'uur geleden' - ,ko: '시간 전' - ,tr: 'saat önce' - ,zh_cn: '小时前' - ,zh_tw: '小時前' - ,hu: 'óra elött' - } - ,'hrs ago' : { - cs: 'hod zpět' - ,he: 'לפני שעות' - ,de: 'Stunden her' - ,es: 'hrs atrás' - ,fr: 'hrs avant' - ,el: 'ώρες πριν' - ,pt: 'h atrás' - ,sv: 'Timmar sedan' - ,ro: 'h în trecut' - ,bg: 'часа по-рано' - ,hr: 'sati unazad' - ,it: 'ore fa' - ,ja: '時間前' - ,dk: 'timer siden' - ,fi: 'tuntia sitten' - ,nb: 't siden' - ,pl: 'godzin temu' - ,ru: 'часов назад' - ,sk: 'hod. pred' - ,nl: 'uren geleden' - ,ko: '시간 전' - ,tr: 'saat önce' - ,zh_cn: '小时前' - ,zh_tw: '小時前' - ,hu: 'órája' - } - ,'min ago' : { - cs: 'min zpět' - ,he: 'לפני דקה' - ,de: 'Minute her' - ,es: 'min atrás' - ,fr: 'min avant' - ,el: 'λεπτό πριν' - ,pt: 'min atrás' - ,sv: 'minut sedan' - ,ro: 'minut în trecut' - ,bg: 'мин. по-рано' - ,hr: 'minuta unazad' - ,it: 'minuto fa' - ,ja: '分前' - ,dk: 'minut siden' - ,fi: 'minuutti sitten' - ,nb: 'min siden' - ,pl: 'minuta temu' - ,ru: 'мин назад' - ,sk: 'min. pred' - ,nl: 'minuut geleden' - ,ko: '분 전' - ,tr: 'dk. önce' - ,zh_cn: '分钟前' - ,zh_tw: '分鐘前' - ,hu: 'perce' - } - ,'mins ago' : { - cs: 'min zpět' - ,he: 'לפני דקות' - ,de: 'Minuten her' - ,es: 'mins atrás' - ,fr: 'mins avant' - ,el: 'λεπτά πριν' - ,pt: 'min atrás' - ,sv: 'minuter sedan' - ,ro: 'minute în trecut' - ,bg: 'мин. по-рано' - ,hr: 'minuta unazad' - ,it: 'minuti fa' - ,ja: '分前' - ,dk: 'minutter siden' - ,fi: 'minuuttia sitten' - ,nb: 'min siden' - ,pl: 'minut temu' - ,ru: 'минут назад' - ,sk: 'min. pred' - ,nl: 'minuten geleden' - ,ko: '분 전' - ,tr: 'dakika önce' - ,zh_cn: '分钟前' - ,zh_tw: '分鐘前' - ,hu: 'perce' - } - ,'day ago' : { - cs: 'den zpět' - ,he: 'לפני יום' - ,de: 'Tag her' - ,es: 'día atrás' - ,fr: 'jour avant' - ,el: 'ημέρα πριν' - ,pt: 'dia atrás' - ,sv: 'dag sedan' - ,ro: 'zi în trecut' - ,bg: 'ден по-рано' - ,hr: 'dan unazad' - ,it: 'Giorno fa' - ,ja: '日前' - ,dk: 'dag siden' - ,fi: 'päivä sitten' - ,nb: 'dag siden' - ,pl: 'dzień temu' - ,ru: 'дн назад' - ,sk: 'deň pred' - ,nl: 'dag geleden' - ,ko: '일 전' - ,tr: 'gün önce' - ,zh_cn: '天前' - ,zh_tw: '天前' - ,hu: 'napja' - } - ,'days ago' : { - cs: 'dnů zpět' - ,he: 'לפני ימים' - ,de: 'Tage her' - ,es: 'días atrás' - ,fr: 'jours avant' - ,el: 'ημέρες πριν' - ,pt: 'dias atrás' - ,sv: 'dagar sedan' - ,ro: 'zile în trecut' - ,bg: 'дни по-рано' - ,hr: 'dana unazad' - ,it: 'giorni fa' - ,ja: '日前' - ,dk: 'dage siden' - ,fi: 'päivää sitten' - ,nb: 'dager siden' - ,pl: 'dni temu' - ,ru: 'дней назад' - ,sk: 'dni pred' - ,nl: 'dagen geleden' - ,ko: '일 전' - ,tr: 'günler önce' - ,zh_cn: '天前' - ,zh_tw: '天前' - ,hu: 'napja' - } - ,'long ago' : { - cs: 'dlouho zpět' - ,he: 'לפני הרבה זמן' - ,de: 'lange her' - ,es: 'Hace mucho tiempo' - ,fr: 'il y a longtemps' - ,el: 'χρόνο πριν' - ,pt: 'muito tempo atrás' - ,sv: 'länge sedan' - ,ro: 'timp în trecut' - ,bg: 'преди много време' - ,hr: 'prije dosta vremena' - ,it: 'Molto tempo fa' - ,ja: '前の期間' - ,dk: 'længe siden' - ,fi: 'Pitkän aikaa sitten' - ,nb: 'lenge siden' - ,pl: 'dawno' - ,ru: 'давно' - ,sk: 'veľmi dávno' - ,nl: 'lang geleden' - ,ko: '기간 전' - ,tr: 'uzun zaman önce' - ,zh_cn: '很长时间前' - ,zh_tw: '很長時間前' - ,hu: 'nagyon régen' - } - ,'Clean' : { - cs: 'Čistý' - ,he: 'נקה' - ,de: 'Löschen' - ,es: 'Limpio' - ,fr: 'Propre' - ,el: 'Καθαρισμός' - ,pt: 'Limpo' - ,sv: 'Rent' - ,ro: 'Curat' - ,bg: 'Чист' - ,hr: 'Čisto' - ,it: 'Pulito' - ,ja: 'なし' - ,dk: 'Rent' - ,fi: 'Puhdas' - ,nb: 'Rent' - ,pl: 'Czysty' - ,ru: 'Чисто' - ,sk: 'Čistý' - ,nl: 'Schoon' - ,ko: 'Clean' - ,tr: 'Temiz' - ,zh_cn: '无' - ,zh_tw: '無' - ,hu: 'Tiszta' - } - ,'Light' : { - cs: 'Lehký' - ,he: 'אוֹר' - ,de: 'Leicht' - ,es: 'Ligero' - ,fr: 'Léger' - ,el: 'Ελαφρά' - ,pt: 'Leve' - ,sv: 'Lätt' - ,ro: 'Ușor' - ,bg: 'Лек' - ,hr: 'Lagano' - ,it: 'Leggero' - ,ja: '軽い' - ,dk: 'Let' - ,fi: 'Kevyt' - ,nb: 'Lite' - ,pl: 'Niski' - ,ru: 'Слабый' - ,sk: 'Nízky' - ,nl: 'Licht' - ,ko: 'Light' - ,tr: 'Kolay' - ,zh_cn: '轻度' - ,zh_tw: '輕度' - ,hu: 'Könnyű' - } - ,'Medium' : { - cs: 'Střední' - ,he: 'בינוני' - ,de: 'Mittel' - ,es: 'Medio' - ,fr: 'Moyen' - ,el: 'Μέση' - ,pt: 'Médio' - ,sv: 'Måttligt' - ,ro: 'Mediu' - ,bg: 'Среден' - ,hr: 'Srednje' - ,it: 'Medio' - ,ja: '中間' - ,dk: 'Middel' - ,fi: 'Keskiverto' - ,nb: 'Middels' - ,pl: 'Średni' - ,ru: 'Средний' - ,sk: 'Stredný' - ,nl: 'Gemiddeld' - ,ko: '보통' - ,tr: 'Orta' - ,zh_cn: '中度' - ,zh_tw: '中度' - ,hu: 'Közepes' - } - ,'Heavy' : { - cs: 'Velký' - ,de: 'Stark' - ,es: 'Fuerte' - ,fr: 'Important' - ,el: 'Βαριά' - ,pt: 'Pesado' - ,sv: 'Rikligt' - ,ro: 'Puternic' - ,bg: 'Висок' - ,hr: 'Teško' - ,it: 'Pesante' - ,ja: '重たい' - ,dk: 'Meget' - ,fi: 'Raskas' - ,nb: 'Mye' - ,pl: 'Wysoki' - ,ru: 'Сильный' - ,sk: 'Veľký' - ,nl: 'Zwaar' - ,ko: '심한' - ,tr: 'Ağır' - ,zh_cn: '重度' - ,zh_tw: '嚴重' - ,he: 'כבד' - ,hu: 'Nehéz' - } - ,'Treatment type' : { - cs: 'Typ ošetření' - ,de: 'Behandlungstyp' - ,es: 'Tipo de tratamiento' - ,fr: 'Type de traitement' - ,el: 'Τύπος Ενέργειας' - ,pt: 'Tipo de tratamento' - ,sv: 'Behandlingstyp' - ,ro: 'Tip tratament' - ,bg: 'Вид събитие' - ,hr: 'Vrsta tretmana' - ,it: 'Somministrazione' - ,ja: '治療タイプ' - ,dk: 'Behandlingstype' - ,fi: 'Hoidon tyyppi' - ,nb: 'Behandlingstype' - ,pl: 'Rodzaj leczenia' - ,ru: 'Вид события' - ,sk: 'Typ ošetrenia' - ,nl: 'Type behandeling' - ,ko: 'Treatment 타입' - ,tr: 'Tedavi tipi' - ,zh_cn: '操作类型' - ,he: 'סוג הטיפול' - ,hu: 'Kezelés típusa' - } - ,'Raw BG' : { - cs: 'Glykémie z RAW dat' - ,de: 'Roh-BG' - ,es: 'Glucemia en crudo' - ,fr: 'Glycémie brute' - ,el: 'Αυτούσιες τιμές γλυκόζης' - ,pt: 'Glicemia sem processamento' - ,sv: 'RAW-BS' - ,ro: 'Citire brută a glicemiei' - ,bg: 'Непреработена КЗ' - ,hr: 'Sirovi podaci o GUK-u' - ,it: 'Raw BG' - ,dk: 'Råt BS' - ,fi: 'Raaka VS' - ,nb: 'RAW-BS' - ,pl: 'Raw BG' - ,ru: 'необработанные данные ГК' - ,sk: 'RAW dáta glykémie' - ,nl: 'Ruwe BG data' - ,ko: 'Raw 혈당' - ,tr: 'Ham KŞ' - ,zh_cn: '原始血糖' - ,hu: 'Nyers BG' - } - ,'Device' : { - cs: 'Zařízení' - ,de: 'Gerät' - ,es: 'Dispositivo' - ,fr: 'Appareil' - ,el: 'Συσκευή' - ,pt: 'Dispositivo' - ,ro: 'Dispozitiv' - ,bg: 'Устройство' - ,hr: 'Uređaj' - ,sv: 'Enhet' - ,it: 'Dispositivo' - ,ja: '機器' - ,dk: 'Enhed' - ,fi: 'Laite' - ,nb: 'Enhet' - ,pl: 'Urządzenie' - ,ru: 'Устройство' - ,sk: 'Zariadenie' - ,nl: 'Apparaat' - ,ko: '기기' - ,tr: 'Cihaz' - ,zh_cn: '设备' - ,he: 'התקן' - ,hu: 'Berendezés' - } - ,'Noise' : { - cs: 'Šum' - ,he: 'רַעַשׁ' - ,de: 'Rauschen' - ,es: 'Ruido' - ,fr: 'Bruit' - ,el: 'Θόρυβος' - ,pt: 'Ruído' - ,sv: 'Brus' - ,ro: 'Zgomot' - ,bg: 'Шум' - ,hr: 'Šum' - ,it: 'Rumore' - ,ja: '測定不良' - ,dk: 'Støj' - ,fi: 'Kohina' - ,nb: 'Støy' - ,pl: 'Szum' - ,ru: 'Шумовой фон' - ,sk: 'Šum' - ,nl: 'Ruis' - ,ko: '노이즈' - ,tr: 'parazit' // gürültü - ,zh_cn: '噪声' - ,hu: 'Zavar' - } - ,'Calibration' : { - cs: 'Kalibrace' - ,he: 'כִּיוּל' - ,de: 'Kalibrierung' - ,es: 'Calibración' - ,fr: 'Calibration' - ,el: 'Βαθμονόμηση' - ,pt: 'Calibração' - ,sv: 'Kalibrering' - ,ro: 'Calibrare' - ,bg: 'Калибрация' - ,hr: 'Kalibriranje' - ,it: 'Calibratura' - ,ja: '較正' - ,dk: 'Kalibrering' - ,fi: 'Kalibraatio' - ,nb: 'Kalibrering' - ,pl: 'Kalibracja' - ,ru: 'Калибровка' - ,sk: 'Kalibrácia' - ,nl: 'Kalibratie' - ,ko: '보정' - ,tr: 'Kalibrasyon' - ,zh_cn: '校准' - ,hu: 'Kalibráció' - } - ,'Show Plugins' : { - cs: 'Zobrazuj pluginy' - ,he: 'הצג תוספים' - ,de: 'Zeige Plugins' - ,es: 'Mostrar Plugins' - ,fr: 'Montrer Plugins' - ,el: 'Πρόσθετα Συστήματος' - ,pt: 'Mostrar les Plugins' - ,ro: 'Arată plugin-urile' - ,bg: 'Покажи добавките' - ,hr: 'Prikaži plugine' - ,sv: 'Visa tillägg' - ,it: 'Mostra Plugin' - ,ja: 'プラグイン表示' - ,dk: 'Vis plugins' - ,fi: 'Näytä pluginit' - ,nb: 'Vis plugins' - ,pl: 'Pokaż rozszerzenia' - ,ru: 'Показать расширения' - ,sk: 'Zobraziť pluginy' - ,nl: 'Laat Plug-Ins zien' - ,ko: '플러그인 보기' - ,tr: 'Eklentileri Göster' - ,zh_cn: '校准' - ,hu: 'Mutasd a kiegészítőket' - } - ,'About' : { - cs: 'O aplikaci' - ,he: 'על אודות' - ,de: 'Über' - ,es: 'Sobre' - ,fr: 'À propos de' - ,el: 'Σχετικά' - ,pt: 'Sobre' - ,ro: 'Despre' - ,bg: 'Относно' - ,hr: 'O aplikaciji' - ,sv: 'Om' - ,it: 'Informazioni' - ,ja: '約' - ,dk: 'Om' - ,fi: 'Nightscoutista' - ,nb: 'Om' - ,pl: 'O aplikacji' - ,ru: 'О приложении' - ,sk: 'O aplikácii' - ,nl: 'Over' - ,ko: '정보' - ,tr: 'Hakkında' - ,zh_cn: '关于' - ,zh_tw: '關於' - ,hu: 'Az aplikációról' - } - ,'Value in' : { - cs: 'Hodnota v' - ,he: 'ערך' - ,de: 'Wert in' - ,es: 'Valor en' - ,fr: 'Valeur en' - ,el: 'Τιμή' - ,pt: 'Valor em' - ,ro: 'Valoare în' - ,bg: 'Стойност в' - ,hr: 'Vrijednost u' - ,sv: 'Värde om' - ,it: 'Valore in' - ,ja: '数値' - ,dk: 'Værdi i' - ,fi: 'Arvo yksiköissä' - ,nb: 'Verdi i' - ,pl: 'Wartości w' - ,ru: 'Значения в' - ,sk: 'Hodnota v' - ,nl: 'Waarde in' - ,ko: '값' - ,tr: 'Değer cinsinden' - ,zh_cn: '数值' - ,hu: 'Érték' - } - ,'Carb Time' : { - cs: 'Čas jídla' - ,de: 'Kohlenhydrat-Zeit' - ,es: 'Momento de la ingesta' - ,fr: 'Moment de l\'ingestion de Glucides' - ,el: 'Στιγμή χορηγησης υδ/κων' - ,pt: 'Hora do carboidrato' - ,ro: 'Ora carbohidrați' - ,bg: 'Ядене след' - ,hr: 'Vrijeme unosa UGH' - ,sv: 'Kolhydratstid' - ,it: 'Tempo' - ,ja: 'カーボ時間' - ,dk: 'Kulhydratstid' - ,fi: 'Syöntiaika' - ,nb: 'Karbohydrattid' - ,he: 'זמן פחמימה' - ,pl: 'Czas posiłku' - ,ru: 'Время приема углеводов' - ,sk: 'Čas jedla' - ,nl: 'Koolhydraten tijd' - ,ko: '탄수화물 시간' - ,tr: 'Karbonhidratların alım zamanı' - ,zh_cn: '数值' - ,hu: 'Étkezés ideje' - } - ,'Language' : { - cs: 'Jazyk' - ,he: 'שפה' - ,de: 'Sprache' - ,es: 'Lenguaje' - ,fr: 'Langue' - ,dk: 'Sprog' - ,sv: 'Språk' - ,nb: 'Språk' - ,el: 'Γλώσσα' - ,fi: 'Kieli' - ,pt: 'Língua' - ,ro: 'Limba' - ,bg: 'Език' - ,hr: 'Jezik' - ,pl: 'Język' - ,it: 'Lingua' - ,ja: '言語' - ,ru: 'Язык' - ,sk: 'Jazyk' - ,nl: 'Taal' - ,ko: '언어' - ,tr: 'Dil' - ,zh_cn: '语言' - ,zh_tw: '語言' - ,hu: 'Nyelv' - } - ,'Add new' : { - cs: 'Přidat nový' - ,he: 'הוסף חדש' - ,de: 'Neu hinzufügen' - ,es: 'Añadir nuevo' - ,fr: 'Ajouter nouveau' - ,dk: 'Tilføj ny' - ,sv: 'Lägg till ny' - ,ro: 'Adaugă nou' - ,el: 'Προσθήκη' - ,bg: 'Добави нов' - ,hr: 'Dodaj novi' - ,nb: 'Legg til ny' - ,fi: 'Lisää uusi' - ,pl: 'Dodaj nowy' - ,pt: 'Adicionar novo' - ,ru: 'Добавить новый' - ,sk: 'Pridať nový' - ,nl: 'Voeg toe' - ,ko: '새입력' - ,it: 'Aggiungi nuovo' - ,ja: '新たに加える' - ,tr: 'Yeni ekle' - ,zh_cn: '新增' - ,hu: 'Új hozzáadása' - } - ,'g' : { // grams shortcut - cs: 'g' - ,he: 'גרמים' - ,de: 'g' - ,es: 'gr' - ,fr: 'g' - ,dk: 'g' - ,sv: 'g' - ,ro: 'g' - ,bg: 'гр' - ,hr: 'g' - ,nb: 'g' - ,fi: 'g' - ,pl: 'g' - ,pt: 'g' - ,ru: 'г' - ,sk: 'g' - ,nl: 'g' - ,ko: 'g' - ,it: 'g' - ,ja: 'g' - ,tr: 'g' - ,zh_cn: '克' - ,zh_tw: '克' - ,hu: 'g' - } - ,'ml' : { // milliliters shortcut - cs: 'ml' - ,he: 'מיליטרים' - ,de: 'ml' - ,es: 'ml' - ,fr: 'ml' - ,dk: 'ml' - ,sv: 'ml' - ,ro: 'ml' - ,bg: 'мл' - ,hr: 'ml' - ,nb: 'mL' - ,fi: 'ml' - ,pl: 'ml' - ,pt: 'mL' - ,ru: 'мл' - ,sk: 'ml' - ,nl: 'ml' - ,ko: 'ml' - ,it: 'ml' - ,ja: 'ml' - ,tr: 'ml' - ,zh_cn: '毫升' - ,zh_tw: '克' - ,hu: 'ml' - } - ,'pcs' : { // pieces shortcut - cs: 'ks' - ,he: 'יחידות' - ,de: 'Stk.' - ,es: 'pcs' - ,fr: 'pcs' - ,dk: 'stk' - ,sv: 'st' - ,ro: 'buc' - ,bg: 'бр' - ,hr: 'kom' - ,nb: 'stk' - ,fi: 'kpl' - ,pl: 'cz.' - ,pt: 'pcs' - ,ru: 'шт' - ,sk: 'ks' - ,nl: 'stk' - ,ko: '조각 바로 가기(pieces shortcut)' - ,it: 'pz' - ,ja: 'pcs' - ,tr: 'parça' - ,zh_cn: '件' - ,zh_tw: '件' - ,hu: 'db' - } - ,'Drag&drop food here' : { - cs: 'Sem táhni & pusť jídlo' - ,he: 'גרור ושחרר אוכל כאן' - ,de: 'Mahlzeit hierher verschieben' - ,es: 'Arrastre y suelte aquí alimentos' - ,fr: 'Glisser et déposer repas ici ' - ,dk: 'Træk og slip mad her' - ,sv: 'Dra&Släpp mat här' - ,ro: 'Drag&drop aliment aici' - ,el: 'Σύρετε εδώ φαγητό' - ,bg: 'Хвани и премести храна тук' - ,hr: 'Privuci hranu ovdje' - ,nb: 'Dra og slipp mat her' - ,fi: 'Pudota ruoka tähän' - ,pl: 'Tutaj przesuń/upuść jedzenie' - ,pt: 'Arraste e coloque alimentos aqui' - ,ru: 'Перетащите еду сюда' - ,sk: 'Potiahni a pusti jedlo sem' - ,ko: '음식을 여기에 드래그&드랍 해주세요.' - ,it: 'Trascina&rilascia cibo qui' - ,tr: 'Yiyecekleri buraya sürükle bırak' - ,zh_cn: '拖放食物到这' - ,nl: 'Maaltijd naar hier verplaatsen' - ,hu: 'Húzd ide és ereszd el az ételt' - } - ,'Care Portal' : { - cs: 'Portál ošetření' - ,he: 'פורטל טיפולים' - ,sv: 'Care Portal' - ,fr: 'Care Portal' - ,it: 'Somministrazioni' - ,de: 'Behandlungs-Portal' - ,es: 'Portal cuidador' - ,dk: 'Omsorgsportal' - ,ro: 'Care Portal' - ,bg: 'Въвеждане на данни' - ,hr: 'Care Portal' - ,nb: 'Omsorgsportal' - ,fi: 'Hoidot' - ,pl: 'Care Portal' - ,pt: 'Care Portal' - ,ru: 'Портал лечения' - ,sk: 'Portál starostlivosti' - ,nl: 'Zorgportaal' - ,ko: 'Care Portal' - ,tr: 'Care Portal' - ,zh_cn: '服务面板' - ,zh_tw: '服務面板' - ,hu: 'Care portál' - } - ,'Medium/Unknown' : { // GI of food - cs: 'Střední/Neznámá' - ,he: 'בינוני/לא ידוע' - ,sv: 'Medium/Okänt' - ,de: 'Mittel/Unbekannt' - ,es: 'Medio/Desconocido' - ,fr: 'Moyen/Inconnu' - ,dk: 'Medium/Ukendt' - ,ro: 'Mediu/Necunoscut' - ,el: 'Μέσος/Άγνωστος' - ,bg: 'Среден/неизвестен' - ,hr: 'Srednji/Nepoznat' - ,nb: 'Medium/ukjent' - ,fi: 'Keskiarvo/Ei tiedossa' - ,pl: 'Średni/nieznany' - ,pt: 'Médio/Desconhecido' - ,ru: 'Средний/Неизвестный' - ,sk: 'Stredný/Neznámi' - ,nl: 'Medium/Onbekend' - ,ko: '보통/알려지지 않은' - ,it: 'Media/Sconosciuto' - ,tr: 'Orta/Bilinmeyen' - ,zh_cn: '中等/不知道' - ,hu: 'Átlagos/Ismeretlen' - } - ,'IN THE FUTURE' : { - cs: 'V BUDOUCNOSTI' - ,he: 'בעתיד' - ,fr: 'dans le futur' - ,sv: 'Framtida' - ,ro: 'ÎN VIITOR' - ,de: 'IN DER ZUKUNFT' - ,es: 'EN EL FUTURO' - ,dk: 'I fremtiden' - ,el: 'ΣΤΟ ΜΕΛΛΟΝ' - ,bg: 'В БЪДЕШЕТО' - ,hr: 'U BUDUĆNOSTI' - ,nb: 'I fremtiden' - ,fi: 'TULEVAISUUDESSA' - ,pl: 'W PRZYSZŁOŚCI' - ,pt: 'NO FUTURO' - ,ru: 'В БУДУЩЕМ' - ,sk: 'V BUDÚCNOSTI' - ,nl: 'IN DE TOEKOMST' - ,ko: '미래' - ,it: 'NEL FUTURO' - ,tr: 'GELECEKTE' - ,zh_cn: '在未来' - ,hu: 'A JÖVŐBEN' - } - ,'Update' : { // Update button - cs: 'Aktualizovat' - ,he: 'עדכן' - ,de: 'Aktualisieren' - ,es: 'Actualizar' - ,dk: 'Opdater' - ,sv: 'Uppdatera' - ,fr: 'Mise à jour' - ,nb: 'Oppdater' - ,pt: 'Atualizar' - ,el: 'Ενημέρωση' - ,ro: 'Actualizare' - ,bg: 'Актуализирай' - ,hr: 'Osvježi' - ,it: 'Aggiornamento' - ,pl: 'Aktualizacja' - ,fi: 'Tallenna' - ,ru: 'Обновить' - ,sk: 'Aktualizovať' - ,nl: 'Update' - ,ko: '업데이트' - ,tr: 'Güncelleştirme' - ,zh_cn: '更新认证状态' - ,zh_tw: '更新認證狀態' - ,hu: 'Frissítés' - } - ,'Order' : { - cs: 'Pořadí' - ,he: 'סֵדֶר' - ,de: 'Reihenfolge' - ,es: 'Ordenar' - ,fr: 'Mise en ordre' - ,dk: 'Sorter' - ,sv: 'Sortering' - ,nb: 'Sortering' - ,el: 'Σειρά κατάταξης' - ,ro: 'Sortare' - ,bg: 'Ред' - ,hr: 'Sortiranje' - ,it: 'Ordina' - ,pl: 'Kolejność' - ,pt: 'Ordenar' - ,fi: 'Järjestys' - ,ru: 'Сортировать' - ,sk: 'Usporiadať' - ,nl: 'Sortering' - ,ko: '순서' - ,tr: 'Sıra' - ,zh_cn: '排序' - ,hu: 'Sorrend' - } - ,'oldest on top' : { - cs: 'nejstarší nahoře' - ,he: 'העתיק ביותר למעלה' - ,de: 'älteste oben' - ,es: 'Más antiguo arriba' - ,fr: 'Plus vieux en tête de liste' - ,dk: 'ældste først' - ,sv: 'Äldst först' - ,nb: 'Eldste først' - ,el: 'τα παλαιότερα πρώτα' - ,ro: 'mai vechi primele' - ,bg: 'Старите най-отгоре' - ,hr: 'najstarije na vrhu' - ,it: 'più vecchio in alto' - ,pl: 'Najstarszy na górze' - ,pt: 'mais antigos no topo' - ,fi: 'vanhin ylhäällä' - ,ru: 'Старые наверху' - ,sk: 'najstaršie hore' - ,nl: 'Oudste boven' - ,ko: '오래된 것 부터' - ,tr: 'en eski üste' - ,zh_cn: '按时间升序排列' - ,hu: 'legöregebb a telejére' - } - ,'newest on top' : { - cs: 'nejnovější nahoře' - ,he: 'החדש ביותר למעלה' - ,sv: 'Nyast först' - ,de: 'neueste oben' - ,es: 'Más nuevo arriba' - ,fr: 'Nouveaux en tête de liste' - ,dk: 'nyeste først' - ,nb: 'Nyeste først' - ,el: 'τα νεότερα πρώτα' - ,ro: 'mai noi primele' - ,bg: 'Новите най-отгоре' - ,hr: 'najnovije na vrhu' - ,it: 'più recente in alto' - ,pl: 'Najnowszy na górze' - ,pt: 'Mais recentes no topo' - ,fi: 'uusin ylhäällä' - ,ru: 'Новые наверху' - ,sk: 'najnovšie hore' - ,nl: 'Nieuwste boven' - ,ko: '새로운 것 부터' - ,tr: 'en yeni üste' - ,zh_cn: '按时间降序排列' - ,hu: 'legújabb a tetejére' - } - ,'All sensor events' : { - cs: 'Všechny události sensoru' - ,he: 'כל האירועים חיישן' - ,sv: 'Alla sensorhändelser' - ,dk: 'Alle sensorhændelser' - ,nb: 'Alle sensorhendelser' - ,de: 'Alle Sensor-Ereignisse' - ,es: 'Todos los eventos del sensor' - ,fr: 'Tous les événement senseur' - ,dl: 'Alle sensor begivenheder' - ,el: 'Όλα τα συμβάντα του αισθητήρα' - ,ro: 'Evenimente legate de senzor' - ,bg: 'Всички събития от сензора' - ,hr: 'Svi događaji senzora' - ,it: 'Tutti gli eventi del sensore' - ,fi: 'Kaikki sensorin tapahtumat' - ,pl: 'Wszystkie zdarzenia sensora' - ,pt: 'Todos os eventos de sensor' - ,ru: 'Все события сенсора' - ,sk: 'Všetky udalosti senzoru' - ,nl: 'Alle sensor gegevens' - ,ko: '모든 센서 이벤트' - ,tr: 'Tüm sensör olayları' - ,zh_cn: '所有探头事件' - ,hu: 'Az összes szenzor esemény' - } - ,'Remove future items from mongo database' : { - cs: 'Odebrání položek v budoucnosti z Mongo databáze' - ,he: 'הסרת פריטים עתידיים ממסד הנתונים מונגו' - ,nb: 'Fjern fremtidige elementer fra mongo database' - ,fr: 'Effacer les éléments futurs de la base de données mongo' - ,el: 'Αφαίρεση μελλοντικών εγγραφών από τη βάση δεδομένων' - ,de: 'Entferne zukünftige Objekte aus Mongo-Datenbank' - ,es: 'Remover elementos futuros desde basedatos Mongo' - ,dk: 'Fjern fremtidige værdier fra mongo databasen' - ,ro: 'Șterge date din viitor din baza de date mongo' - ,sv: 'Ta bort framtida händelser från mongodatabasen' - ,bg: 'Премахни бъдещите точки от Монго базата с данни' - ,hr: 'Obriši buduće zapise iz baze podataka' - ,it: 'Rimuovere gli oggetti dal database di mongo in futuro' - ,fi: 'Poista tapahtumat mongo-tietokannasta' - ,pl: 'Usuń przyszłe/błędne wpisy z bazy mongo' - ,pt: 'Remover itens futuro da base de dados mongo' - ,ru: 'Удалить будущие данные из базы Монго' - ,sk: 'Odobrať budúce položky z Mongo databázy' - ,nl: 'Verwijder items die in de toekomst liggen uit database' - ,ko: 'mongo DB에서 미래 항목들을 지우세요.' - ,tr: 'Gelecekteki öğeleri mongo veritabanından kaldır' - ,zh_cn: '从数据库中清除所有未来条目' - ,zh_tw: '從數據庫中清除所有未來條目' - ,hu: 'Töröld az összes jövőben lévő adatot az adatbázisból' - } - ,'Find and remove treatments in the future' : { - cs: 'Najít a odstranit záznamy ošetření v budoucnosti' - ,he:'מצא ולהסיר טיפולים בעתיד' - ,nb: 'Finn og fjern fremtidige behandlinger' - ,fr: 'Chercher et effacer les élément dont la date est dans le futur' - ,el: 'Εύρεση και αφαίρεση μελλοντικών ενεργειών από τη βάση δεδομένων' - ,de: 'Finde und entferne zukünftige Behandlungen' - ,es: 'Encontrar y eliminar tratamientos futuros' - ,dk: 'Find og fjern fremtidige behandlinger' - ,ro: 'Caută și elimină tratamente din viitor' - ,sv: 'Hitta och ta bort framtida behandlingar' - ,bg: 'Намери и премахни събития в бъдещето' - ,hr: 'Nađi i obriši tretmane u budućnosti' - ,it: 'Individuare e rimuovere le somministrazioni in futuro' - ,fi: 'Etsi ja poista tapahtumat joiden aikamerkintä on tulevaisuudessa' - ,pt: 'Encontrar e remover tratamentos futuros' - ,pl: 'Znajdź i usuń przyszłe/błędne zabiegi' - ,ru: 'Найти и удалить будущие назначения' - ,sk: 'Nájsť a odstrániť záznamy ošetrenia v budúcnosti' - ,nl: 'Zoek en verwijder behandelingen met datum in de toekomst' - ,ko: '미래에 treatments를 검색하고 지우세요.' - ,tr: 'Gelecekte tedavileri bulun ve kaldır' - ,zh_cn: '查找并清除所有未来的操作' - ,zh_tw: '查找並清除所有未來的操作' - ,hu: 'Töröld az összes kezelést a jövőben az adatbázisból' - } - ,'This task find and remove treatments in the future.' : { - cs: 'Tento úkol najde a odstraní ošetření v budoucnosti.' - ,he: 'משימה זו למצוא ולהסיר טיפולים בעתיד' - ,nb: 'Finn og fjern fremtidige behandlinger' - ,de: 'Finde und entferne Behandlungen in der Zukunft.' - ,es: 'Este comando encuentra y elimina tratamientos futuros.' - ,fr: 'Cette tâche cherche et efface les éléments dont la date est dans le futur' - ,dk: 'Denne handling finder og fjerner fremtidige behandlinger.' - ,el: 'Αυτή η ενέργεια αφαιρεί μελλοντικές ενέργειες από τη βάση δεδομένων' - ,ro: 'Acest instrument curăță tratamentele din viitor.' - ,sv: 'Denna uppgift hittar och rensar framtida händelser' - ,bg: 'Тази опция намира и премахва събития в бъдещето.' - ,hr: 'Ovo nalazi i briše tretmane u budućnosti' - ,it: 'Trovare e rimuovere le somministrazioni in futuro' - ,fi: 'Tämä työkalu poistaa tapahtumat joiden aikamerkintä on tulevaisuudessa.' - ,pl: 'To narzędzie znajduje i usuwa przyszłe/błędne zabiegi' - ,pt: 'Este comando encontra e remove tratamentos futuros' - ,ru: 'Эта опция найдет и удалит данные из будущего' - ,sk: 'Táto úloha nájde a odstáni záznamy ošetrenia v budúcnosti.' - ,nl: 'Dit commando zoekt en verwijdert behandelingen met datum in de toekomst' - ,ko: '이 작업은 미래에 treatments를 검색하고 지우는 것입니다.' - ,tr: 'Bu görev gelecekte tedavileri bul ve kaldır.' - ,zh_cn: '此功能查找并清除所有未来的操作。' - ,zh_tw: '此功能查找並清除所有未來的操作。' - ,hu: 'Ez a feladat megkeresi és eltávolítja az összes jövőben lévő kezelést' - } - ,'Remove treatments in the future' : { - cs: 'Odstraň ošetření v budoucnosti' - ,he: 'הסר טיפולים בעתיד' - ,nb: 'Fjern fremtidige behandlinger' - ,de: 'Entferne Behandlungen in der Zukunft' - ,es: 'Elimina tratamientos futuros' - ,fr: 'Efface les traitements ayant un date dans le futur' - ,dk: 'Fjern behandlinger i fremtiden' - ,el: 'Αφαίρεση μελλοντικών ενεργειών' - ,ro: 'Șterge tratamentele din viitor' - ,sv: 'Ta bort framtida händelser' - ,bg: 'Премахни събитията в бъдешето' - ,hr: 'Obriši tretmane u budućnosti' - ,it: 'Rimuovere somministrazioni in futuro' - ,fi: 'Poista tapahtumat' - ,pl: 'Usuń zabiegi w przyszłości' - ,pt: 'Remover tratamentos futuros' - ,ru: 'Удалить назначения из будущего' - ,sk: 'Odstrániť záznamy ošetrenia v budúcnosti' - ,nl: 'Verwijder behandelingen met datum in de toekomst' - ,ko: '미래 treatments 지우기' - ,tr: 'Gelecekte tedavileri kaldır' - ,zh_cn: '清除未来操作' - ,zh_tw: '清除未來操作' - ,hu: 'Jövőbeli kerelések eltávolítésa' - } - ,'Find and remove entries in the future' : { - cs: 'Najít a odstranit CGM data v budoucnosti' - ,he: 'מצא והסר רשומות בעתיד' - ,de: 'Finde und entferne Einträge in der Zukunft' - ,es: 'Encuentra y elimina entradas futuras' - ,fr: 'Cherche et efface les événements dans le futur' - ,dk: 'Find og fjern indgange i fremtiden' - ,nb: 'Finn og fjern fremtidige hendelser' - ,el: 'Εύρεση και αφαίρεση μελλοντικών εγγραφών από τη βάση δεδομένων' - ,bg: 'Намери и премахни данни от сензора в бъдещето' - ,hr: 'Nađi i obriši zapise u budućnosti' - ,ro: 'Caută și elimină valorile din viitor' - ,sv: 'Hitta och ta bort framtida händelser' - ,it: 'Trovare e rimuovere le voci in futuro' - ,fi: 'Etsi ja poista tapahtumat' - ,pl: 'Znajdź i usuń wpisy z przyszłości' - ,pt: 'Encontrar e remover entradas futuras' - ,ru: 'Найти и удалить данные сенсора из будущего' - ,sk: 'Nájsť a odstrániť CGM dáta v budúcnosti' - ,nl: 'Zoek en verwijder behandelingen met datum in de toekomst' - ,ko: '미래에 입력을 검색하고 지우세요.' - ,tr: 'Gelecekteki girdileri bul ve kaldır' - ,zh_cn: '查找并清除所有的未来的记录' - ,zh_tw: '查找並清除所有的未來的記錄' - ,hu: 'Jövőbeli bejegyzések eltávolítása' - } - ,'This task find and remove CGM data in the future created by uploader with wrong date/time.' : { - cs: 'Tento úkol najde a odstraní CGM data v budoucnosti vzniklé špatně nastaveným datem v uploaderu.' - ,he: 'משימה זו מוצאת נתונים של סנסור סוכר ומסירה אותם בעתיד, שנוצרו על ידי העלאת נתונים עם תאריך / שעה שגויים' - ,nb: 'Finn og fjern fremtidige cgm data som er lastet opp med feil dato/tid' - ,fr: 'Cet outil cherche et efface les valeurs CGM dont la date est dans le futur' - ,el: 'Αυτή η ενέργεια αφαιρεί δεδομένα αιθητήρα τα οποία εισήχθησαν με λάθος ημερομηνία και ώρα, από τη βάση δεδομένων' - ,de: 'Finde und entferne CGM-Daten in der Zukunft, die vom Uploader mit falschem Datum/Uhrzeit erstellt wurden.' - ,es: 'Este comando encuentra y elimina datos del sensor futuros creados por actualizaciones con errores en fecha/hora' - ,dk: 'Denne handling finder og fjerner CGM data i fremtiden forårsaget af indlæsning med forkert dato/tid.' - ,bg: 'Тази опция ще намери и премахне данни от сензора в бъдещето, създадени поради грешна дата/време.' - ,hr: 'Ovo nalazi i briše podatke sa senzora u budućnosti nastalih s uploaderom sa krivim datumom/vremenom' - ,ro: 'Instrument de căutare și eliminare a datelor din viitor, create de uploader cu ora setată greșit' - ,sv: 'Denna uppgift hittar och tar bort framtida CGM-data skapad vid felaktig tidsinställning' - ,it: 'Trovare e rimuovere i dati CGM in futuro creato da uploader/xdrip con data/ora sbagliato.' - ,fi: 'Tämä työkalu etsii ja poistaa sensorimerkinnät joiden aikamerkintä sijaitsee tulevaisuudessa.' - ,pl: 'To narzędzie odnajduje i usuwa dane CGM utworzone przez uploader w przyszłości - ze złą datą/czasem.' - ,pt: 'Este comando procura e remove dados de sensor futuros criados por um uploader com data ou horário errados.' - ,ru: 'Эта опция найдет и удалит данные сенсора созданные загрузчиком с неверными датой/временем' - ,sk: 'Táto úloha nájde a odstráni CGM dáta v budúcnosti vzniknuté zle nastaveným časom uploaderu.' - ,nl: 'Dit commando zoekt en verwijdert behandelingen met datum in de toekomst' - ,ko: '이 작업은 잘못된 날짜/시간으로 업로드 되어 생성된 미래의 CGM 데이터를 검색하고 지우는 것입니다.' - ,tr: 'Yükleyicinin oluşturduğu gelecekteki CGM verilerinin yanlış tarih/saat olanlarını bul ve kaldır.' - ,zh_cn: '此功能查找并清除所有上传时日期时间错误导致生成在未来时间的CGM数据。' - ,zh_tw: '此功能查找並清除所有上傳時日期時間錯誤導致生成在未來時間的CGM數據。' - ,hu: 'Ez a feladat megkeresi és eltávolítja az összes CGM adatot amit a feltöltő rossz idővel-dátummal töltött fel' - } - ,'Remove entries in the future' : { - cs: 'Odstraň CGM data v budoucnosti' - ,he: 'הסר רשומות בעתיד' - ,nb: 'Fjern fremtidige hendelser' - ,de: 'Entferne Einträge in der Zukunft' - ,es: 'Elimina entradas futuras' - ,fr: 'Efface les événement dans le futur' - ,dk: 'Fjern indgange i fremtiden' - ,el: 'Αφαίρεση μελλοντικών ενεργειών' - ,bg: 'Премахни данните от сензора в бъдещето' - ,hr: 'Obriši zapise u budućnosti' - ,ro: 'Elimină înregistrările din viitor' - ,sv: 'Ta bort framtida händelser' - ,it: 'Rimuovere le voci in futuro' - ,fi: 'Poista tapahtumat' - ,pl: 'Usuń wpisy w przyszłości' - ,pt: 'Remover entradas futuras' - ,ru: 'Удалить данные из будущего' - ,sk: 'Odstrániť CGM dáta v budúcnosti' - ,nl: 'Verwijder invoer met datum in de toekomst' - ,ko: '미래의 입력 지우기' - ,tr: 'Gelecekteki girdileri kaldır' - ,zh_cn: '清除未来记录' - ,zh_tw: '清除未來記錄' - ,hu: 'Jövőbeli bejegyzések törlése' - } - ,'Loading database ...' : { - cs: 'Nahrávám databázi ...' - ,he: 'טוען מסד נתונים ... ' - ,nb: 'Leser database ...' - ,de: 'Lade Datenbank ...' - ,es: 'Cargando base de datos ...' - ,fr: 'Charge la base de données...' - ,dk: 'Indlæser database ...' - ,el: 'Φόρτωση Βάσης Δεδομένων' - ,bg: 'Зареждане на базата с данни ...' - ,hr: 'Učitavanje podataka' - ,ro: 'Încarc baza de date' - ,sv: 'Laddar databas ...' - ,it: 'Carica Database ...' - ,fi: 'Lataan tietokantaa...' - ,pl: 'Wczytuje baze danych' - ,pt: 'Carregando banco de dados ...' - ,ru: 'Загрузка базы данных' - ,sk: 'Nahrávam databázu...' - ,nl: 'Database laden ....' - ,ko: '데이터베이스 로딩' - ,tr: 'Veritabanı yükleniyor ...' - ,zh_cn: '载入数据库...' - ,zh_tw: '載入數據庫...' - ,hu: 'Adatbázis betöltése...' - } - ,'Database contains %1 future records' : { - cs: 'Databáze obsahuje %1 záznamů v budoucnosti' - ,he: ' מסד הנתונים מכיל% 1 רשומות עתידיות ' - ,nb: 'Databasen inneholder %1 fremtidige hendelser' - ,fr: 'La base de données contient %1 valeurs futures' - ,el: 'Η Βάση Δεδομένων περιέχει 1% μελλοντικές εγγραφές' - ,ro: 'Baza de date conține %1 înregistrări din viitor' - ,sv: 'Databas innehåller %1 framtida händelser' - ,de: 'Datenbank enthält %1 zukünftige Einträge' - ,es: 'Base de datos contiene %1 registros futuros' - ,dk: 'Databasen indeholder %1 fremtidige indgange' - ,bg: 'Базата с дани съдържа %1 бъдещи записи' - ,hr: 'Baza sadrži %1 zapisa u budućnosti' - ,it: 'Contiene Database %1 record futuri' - ,fi: 'Tietokanta sisältää %1 merkintää tulevaisuudessa' - ,pl: 'Baza danych zawiera %1 przyszłych rekordów' - ,pt: 'O banco de dados contém %1 registros futuros' - ,ru: 'База данных содержит %1 записей в будущем' - ,sk: 'Databáza obsahuje %1 záznamov v budúcnosti' - ,nl: 'Database bevat %1 toekomstige data' - ,ko: '데이터베이스는 미래 기록을 %1 포함하고 있습니다.' - ,tr: 'Veritabanı %1 gelecekteki girdileri içeriyor' - ,zh_cn: '数据库包含%1条未来记录' - ,zh_tw: '數據庫包含%1條未來記錄' - ,hu: 'Az adatbázis %1 jövöbeli adatot tartalmaz' - } - ,'Remove %1 selected records?' : { - cs: 'Odstranit %1 vybraných záznamů' - ,he: 'האם להסיר% 1 רשומות שנבחרו? ' - ,nb: 'Fjern %1 valgte elementer?' - ,fr: 'Effacer %1 valeurs choisies?' - ,el: 'Αφαίρεση των επιλεγμένων εγγραφών?' - ,de: 'Lösche ausgewählten %1 Eintrag?' - ,es: 'Eliminar %1 registros seleccionados?' - ,dk: 'Fjern %1 valgte indgange?' - ,ro: 'Șterg %1 înregistrări selectate?' - ,sv: 'Ta bort %1 valda händelser' - ,bg: 'Премахване на %1 от избраните записи?' - ,hr: 'Obriši %1 odabrani zapis?' - ,it: 'Rimuovere %1 record selezionati?' - ,fi: 'Poista %1 valittua merkintää?' - ,pl: 'Usunąć %1 wybranych rekordów?' - ,pt: 'Remover os %1 registros selecionados?' - ,ru: 'Удалить %1 выбранных записей?' - ,sk: 'Odstrániť %1 vybraných záznamov' - ,nl: 'Verwijder %1 geselecteerde data?' - ,ko: '선택된 기록 %1를 지우시겠습니까?' - ,tr: 'Seçilen %1 kayıtlar kaldırılsın? ' - ,zh_cn: '清除%1条选择的记录?' - ,zh_tw: '清除%1條選擇的記錄?' - ,hu: 'Kitöröljük a %1 kiválasztott adatot?' - } - ,'Error loading database' : { - cs: 'Chyba při nahrávání databáze' - ,he: 'שגיאה בטעינת מסד הנתונים ' - ,nb: 'Feil under lasting av database' - ,fr: 'Erreur chargement de la base de données' - ,de: 'Fehler beim Laden der Datenbank' - ,es: 'Error al cargar base de datos' - ,dk: 'Fejl ved indlæsning af database' - ,el: 'Σφάλμα στη φόρτωση της βάσης δεδομένων' - ,ro: 'Eroare la încărcarea bazei de date' - ,sv: 'Fel vid laddning av databas' - ,bg: 'Грешка при зареждане на базата с данни' - ,hr: 'Greška pri učitavanju podataka' - ,it: 'Errore di caricamento del database' - ,fi: 'Ongelma tietokannan lataamisessa' - ,pl: 'Błąd wczytywania bazy danych' - ,pt: 'Erro ao carregar danco de dados' - ,ru: 'Ошибка загрузки базы данных' - ,sk: 'Chyba pri nahrávanií databázy' - ,nl: 'Fout bij het laden van database' - ,ko: '데이터베이스 로딩 에러' - ,tr: 'Veritabanını yüklerken hata oluştu' - ,zh_cn: '载入数据库错误' - ,zh_tw: '載入數據庫錯誤' - ,hu: 'Hiba az adatbázis betöltése közben' - } - ,'Record %1 removed ...' : { - cs: 'Záznam %1 odstraněn ...' - ,he: 'רשומה% 1 הוסרה ... ' - ,nb: 'Element %1 fjernet' - ,de: 'Eintrag %1 entfernt' - ,es: 'Registro %1 eliminado ...' - ,fr: 'Événement %1 effacé' - ,dk: 'Indgang %1 fjernet ...' - ,el: 'Οι εγγραφές αφαιρέθηκαν' - ,ro: 'Înregistrarea %1 a fost ștearsă...' - ,sv: 'Händelse %1 borttagen ...' - ,bg: '%1 записи премахнати' - ,hr: 'Zapis %1 obrisan...' - ,it: 'Record %1 rimosso ...' - ,fi: 'Merkintä %1 poistettu ...' - ,pl: '%1 rekordów usunięto ...' - ,pt: 'Registro %1 removido ...' - ,ru: 'запись %1 удалена' - ,sk: '%1 záznamov bolo odstránených...' - ,nl: 'Data %1 verwijderd ' - ,ko: '기록 %1가 삭제되었습니다.' - ,tr: '%1 kaydı silindi ...' - ,zh_cn: '%1条记录已清除' - ,zh_tw: '%1條記錄已清除' - ,hu: 'A %1 bejegyzés törölve...' - } - ,'Error removing record %1' : { - cs: 'Chyba při odstaňování záznamu %1' - ,he: 'שגיאה בהסרת הרשומה% 1 ' - ,nb: 'Feil under fjerning av element %1' - ,de: 'Fehler beim Entfernen des Eintrags %1' - ,es: 'Error al eliminar registro %1' - ,fr: 'Echec d\'effacement de l\'événement %1' - ,dk: 'Fejl ved fjernelse af indgang %1' - ,el: 'Σφάλμα αφαίρεσης εγγραφών' - ,ro: 'Eroare la ștergerea înregistrării %1' - ,sv: 'Fel vid borttagning av %1' - ,bg: 'Грешка при премахването на %1 от записите' - ,hr: 'Greška prilikom brisanja zapisa %1' - ,it: 'Errore rimozione record %1' - ,fi: 'Virhe poistaessa merkintää numero %1' - ,pl: 'Błąd przy usuwaniu rekordu %1' - ,pt: 'Erro ao remover registro %1' - ,ru: 'Ошибка удаления записи %1' - ,sk: 'Chyba pri odstraňovaní záznamu %1' - ,nl: 'Fout bij het verwijderen van %1 data' - ,ko: '기록 %1을 삭제하는 중에 에러가 발생했습니다.' - ,tr: '%1 kayıt kaldırılırken hata oluştu' - ,zh_cn: '%1条记录清除出错' - ,zh_tw: '%1條記錄清除出錯' - ,hu: 'Hiba lépett fel a %1 bejegyzés törlése közben' - } - ,'Deleting records ...' : { - cs: 'Odstraňování záznamů ...' - ,he: 'מוחק רשומות ... ' - ,nb: 'Fjerner elementer...' - ,fr: 'Effacement dévénements...' - ,ro: 'Se șterg înregistrările...' - ,el: 'Αφαίρεση Εγγραφών' - ,de: 'Entferne Einträge ...' - ,es: 'Eliminando registros ...' - ,dk: 'Sletter indgange ...' - ,sv: 'Tar bort händelser ...' - ,bg: 'Изтриване на записите...' - ,hr: 'Brisanje zapisa' - ,it: 'Elimino dei record ...' - ,fi: 'Poistan merkintöjä' - ,pl: 'Usuwanie rekordów ...' - ,pt: 'Apagando registros ...' - ,ru: 'Записи удаляются' - ,sk: 'Odstraňovanie záznamov...' - ,nl: 'Verwijderen van data .....' - ,ko: '기록 삭제 중' - ,tr: 'Kayıtlar siliniyor ...' - ,zh_cn: '正在删除记录...' - ,zh_tw: '正在刪除記錄...' - ,hu: 'Bejegyzések törlése...' - } - ,'%1 records deleted' : { - hr: 'obrisano %1 zapisa' - ,de: '%1 Einträge gelöscht' - , pl: '%1 rekordów zostało usuniętych' - ,ru: '% записей удалено' - ,hu: '%1 bejegyzés törölve' - } - ,'Clean Mongo status database' : { - cs: 'Vyčištění Mongo databáze statusů' - ,he: 'נקי מסד הנתונים מצב מונגו ' - ,nb: 'Slett Mongo status database' - ,ro: 'Curăță tabela despre status din Mongo' - ,el: 'Καθαρισμός βάσης δεδομένων Mongo' - ,fr: 'Nettoyage de la base de donées Mongo' - ,de: 'Bereinige Mongo Status-Datenbank' - ,es: 'Limpiar estado de la base de datos Mongo' - ,dk: 'Slet Mongo status database' - ,sv: 'Rensa Mongo status databas' - ,bg: 'Изчисти статуса на Монго базата с данни' - ,hr: 'Obriši bazu statusa' - ,it: 'Pulisci database di Mongo' - ,fi: 'Siivoa statustietokanta' - ,pl: 'Oczyść status bazy danych Mongo' - ,pt: 'Limpar banco de dados de status no Mongo' - ,ru: 'Очистить статус базы данных Mongo' - ,sk: 'Vyčistiť Mongo databázu statusov' - ,nl: 'Ruim Mongo database status op' - ,ko: 'Mongo 상태 데이터베이스를 지우세요.' - ,tr: 'Mongo durum veritabanını temizle' - ,zh_cn: '清除状态数据库' - ,hu: 'Mongo állapot (status) adatbázis tisztítása' - } - ,'Delete all documents from devicestatus collection' : { - cs: 'Odstranění všech záznamů z kolekce devicestatus' - ,he: 'מחק את כל המסמכים מאוסף סטטוס המכשיר ' - ,nb: 'Fjern alle dokumenter fra device status tabell' - ,de: 'Lösche alle Dokumente der Gerätestatus-Sammlung' - ,es: 'Borrar todos los documentos desde colección devicesatatus' - ,fr: 'Effacer tous les documents de la collection devicestatus' - ,dk: 'Fjerne alle dokumenter fra device status tabellen' - ,el: 'Διαγραφή όλων των δεδομένων σχετικών με κατάσταση της συσκευής ανάγνωσης του αισθητήρα' - ,ro: 'Șterge toate documentele din colecția de status dispozitiv' - ,sv: 'Ta bort alla dokument i devicestatus collektionen' - ,bg: 'Изтрий всички документи от папката статус-устройство' - ,hr: 'Obriši sve zapise o statusima' - ,it: 'Eliminare tutti i documenti dalla collezione "devicestatus"' - ,fi: 'Poista kaikki tiedot statustietokannasta' - ,pl: 'Usuń wszystkie dokumenty z kolekcji devicestatus' - ,pt: 'Apagar todos os documentos da coleção devicestatus' - ,ru: 'Стереть все документы из коллекции статус устройства' - ,sk: 'Odstránenie všetkých záznamov z kolekcie "devicestatus"' - ,ko: 'devicestatus 수집에서 모든 문서들을 지우세요' - ,tr: 'Devicestatus koleksiyonundan tüm dokümanları sil' - ,zh_cn: '从设备状态采集删除所有文档' - ,nl: 'Verwijder alle documenten uit "devicestatus" database' - ,hu: 'Az összes "devicestatus" dokumentum törlése' - } - ,'This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.' : { - cs: 'Tento úkol odstraní všechny dokumenty z kolekce devicestatus. Je to vhodné udělat, pokud se ukazatel stavu baterie neobnovuje správně.' - ,nb: 'Denne funksjonen fjerner alle dokumenter fra device status tabellen. Nyttig når status for opplaster batteri ikke blir opppdatert' - ,fr: 'Efface tous les documents de la collection devicestatus. Utile lorsque l\'indicateur de chargement de la batterie du Smartphone n\'est pas affichée correctement' - ,el: 'Αυτή η ενέργεια διαγράφει όλα τα δεδομένα της κατάστασης της συσκευής ανάγνωσης. Χρήσιμη όταν η κατάσταση της συσκευής ανάγνωσης δεν ανανεώνεται σωστά.' - ,de: 'Diese Aufgabe entfernt alle Dokumente aus der Gerätestatus-Sammlung. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.' - ,es: 'Este comando elimina todos los documentos desde la colección devicestatus. Útil cuando el estado de la batería cargadora no se actualiza correctamente' - ,dk: 'Denne handling fjerner alle dokumenter fra device status tabellen. Brugbart når uploader batteri status ikke opdateres korrekt.' - ,ro: 'Acest instrument șterge toate documentele din colecția devicestatus. Se folosește când încărcarea bateriei nu se afișează corect.' - ,sv: 'Denna uppgift tar bort alla dokument från devicestatuskollektionen. Användbart när batteristatus ej uppdateras' - ,bg: 'Тази опция премахва всички документи от папката статус-устройство. Полезно е, когато статусът на батерията не се обновява.' - ,hr: 'Ovo briše sve zapise o statusima. Korisno kada se status baterije uploadera ne osvježava ispravno.' - ,it: 'Questa attività elimina tutti i documenti dalla collezione "devicestatus". Utile quando lo stato della batteria uploader/xdrip non si aggiorna.' - ,fi: 'Tämä työkalu poistaa kaikki tiedot statustietokannasta, mikä korjaa tilanteen, jossa puhelimen akun lataustilanne ei näy oikein.' - ,pl: 'To narzędzie usuwa wszystkie dokumenty z kolekcji devicestatus. Przydatne, gdy status baterii uploadera nie jest aktualizowany.' - ,pt: 'Este comando remove todos os documentos da coleção devicestatus. Útil quando o status da bateria do uploader não é atualizado corretamente.' - ,ru: 'Эта опция удаляет все документы из коллекции статус устройства. Полезно когда состояние батвреи загрузчика не обновляется' - ,sk: 'Táto úloha vymaže všetky záznamy z kolekcie "devicestatus". Je to vhodné keď sa stav batérie nezobrazuje správne.' - ,ko: '이 작업은 모든 문서를 devicestatus 수집에서 지웁니다. 업로더 배터리 상태가 적절하게 업데이트 되지 않을 때 유용합니다.' - ,tr: 'Bu görev tüm durumları Devicestatus koleksiyonundan kaldırır. Yükleyici pil durumu güncellenmiyorsa kullanışlıdır.' - ,zh_cn: '此功能从设备状态采集中删除所有文档。适用于上传设备电量信息不能正常同步时使用。' - ,nl: 'Dit commando verwijdert alle documenten uit "devicestatus" database. Handig wanneer de batterij status niet correct wordt geupload.' - ,hu: 'Ez a feladat kitörli az összes "devicestatus" dokumentumot. Hasznos ha a feltöltő elem állapota nem jelenik meg helyesen.' - } - ,'Delete all documents' : { - cs: 'Odstranit všechny dokumenty' - ,he: 'מחק את כל המסמכים ' - ,fr: 'Effacer toutes les données' - ,nb: 'Fjern alle dokumenter' - ,ro: 'Șterge toate documentele' - ,el: 'Διαγραφή όλων των δεδομένων' - ,de: 'Lösche alle Dokumente' - ,es: 'Borra todos los documentos' - ,dk: 'Slet alle dokumenter' - ,sv: 'Ta bort alla dokument' - ,bg: 'Изтрий всички документи' - ,hr: 'Obriši sve zapise' - ,it: 'Eliminare tutti i documenti' - ,fi: 'Poista kaikki tiedot' - ,pl: 'Usuń wszystkie dokumenty' - ,pt: 'Apagar todos os documentos' - ,ru: 'Удалить все документы' - ,sk: 'Zmazať všetky záznamy' - ,nl: 'Verwijder alle documenten' - ,ko: '모든 문서들을 지우세요' - ,tr: 'Tüm Belgeleri sil' - ,zh_cn: '删除所有文档' - ,hu: 'Az összes dokumentum törlése' - } - ,'Delete all documents from devicestatus collection?' : { - cs: 'Odstranit všechny dokumenty z kolekce devicestatus?' - ,he: 'מחק את כל המסמכים מרשימת סטטוס ההתקנים ' - ,nb: 'Fjern alle dokumenter fra device status tabellen?' - ,fr: 'Effacer toutes les données de la collection devicestatus ?' - ,el: 'Διαγραφή όλων των δεδομένων της κατάστασης της συσκευής ανάγνωσης?' - ,de: 'Löschen aller Dokumente der Gerätestatus-Sammlung?' - ,es: 'Borrar todos los documentos desde la colección devicestatus?' - ,dk: 'Fjern alle dokumenter fra device status tabellen' - ,ro: 'Șterg toate documentele din colecția devicestatus?' - ,sv: 'Ta bort alla dokument från devicestatuscollektionen' - ,bg: 'Изтриване на всички документи от папката статус-устройство?' - ,hr: 'Obriši sve zapise statusa?' - ,it: 'Eliminare tutti i documenti dalla collezione devicestatus?' - ,fi: 'Poista tiedot statustietokannasta?' - ,pl: 'Czy na pewno usunąć wszystkie dokumenty z kolekcji devicestatus?' - ,pt: 'Apagar todos os documentos da coleção devicestatus?' - ,ru: 'Удалить все документы коллекции статус устройства?' - ,sk: 'Zmazať všetky záznamy z kolekcie "devicestatus"?' - ,ko: 'devicestatus 수집의 모든 문서들을 지우세요.' - ,tr: 'Tüm Devicestatus koleksiyon belgeleri silinsin mi?' - ,zh_cn: '从设备状态采集删除所有文档?' - ,nl: 'Wil je alle data van "devicestatus" database verwijderen?' - ,hu: 'Az összes dokumentum törlése a "devicestatus" gyűjteményből?' - } - ,'Database contains %1 records' : { - cs: 'Databáze obsahuje %1 záznamů' - ,he: 'מסד נתונים מכיל %1 רשומות ' - ,nb: 'Databasen inneholder %1 elementer' - ,de: 'Datenbank enthält %1 Einträge' - ,es: 'La Base de datos contiene %1 registros' - ,fr: 'La base de donées contient %1 événements' - ,dk: 'Databasen indeholder %1 indgange' - ,el: 'Η βάση δεδομένων περιέχει 1% εγγραφές' - ,ro: 'Baza de date conține %1 înregistrări' - ,sv: 'Databasen innehåller %1 händelser' - ,bg: 'Базата с данни съдържа %1 записи' - ,hr: 'Baza sadrži %1 zapisa' - ,it: 'Contiene Database %1 record' - ,fi: 'Tietokanta sisältää %1 merkintää' - ,pl: 'Baza danych zawiera %1 rekordów' - ,pt: 'O banco de dados contém %1 registros' - ,ru: 'База данных содержит %1 записей' - ,sk: 'Databáza obsahuje %1 záznamov' - ,nl: 'Database bevat %1 gegevens' - ,ko: '데이터베이스는 %1 기록을 포함합니다.' - ,tr: 'Veritabanı %1 kayıt içeriyor' - ,zh_cn: '数据库包含%1条记录' - ,hu: 'Az adatbázis %1 bejegyzést tartalmaz' - } - ,'All records removed ...' : { - cs: 'Všechny záznamy odstraněny ...' - ,he: 'כל הרשומות נמחקו ' - ,nb: 'Alle elementer fjernet ...' - ,de: 'Alle Einträge entfernt...' - ,es: 'Todos los registros eliminados ...' - ,fr: 'Toutes les valeurs ont été effacées' - ,dk: 'Alle hændelser fjernet ...' - ,el: 'Έγινε διαγραφή όλων των δεδομένων' - ,ro: 'Toate înregistrările au fost șterse.' - ,sv: 'Alla händelser raderade ...' - ,bg: 'Всички записи премахнати ...' - ,hr: 'Svi zapisi obrisani' - ,it: 'Tutti i record rimossi ...' - ,fi: 'Kaikki merkinnät poistettu ...' - ,pl: 'Wszystkie rekordy usunięto' - ,pt: 'Todos os registros foram removidos ...' - ,ru: 'Все записи удалены' - ,sk: 'Všetky záznamy boli zmazané...' - ,nl: 'Alle gegevens verwijderd' - ,ko: '모든 기록들이 지워졌습니다.' - ,tr: 'Tüm kayıtlar kaldırıldı ...' - ,zh_cn: '所有记录已经被清除' - ,hu: 'Az összes bejegyzés törölve...' - } - ,'Delete all documents from devicestatus collection older than 30 days' : { - hr: 'Obriši sve statuse starije od 30 dana' - ,ru: 'Удалить все записи коллекции devicestatus старше 30 дней' - ,de: 'Alle Dokumente der Gerätestatus-Sammlung löschen, die älter als 30 Tage sind' - , pl: 'Usuń wszystkie dokumenty z kolekcji devicestatus starsze niż 30 dni' - , hu: 'Az összes "devicestatus" dokumentum törlése ami 30 napnál öregebb' - - } - ,'Number of Days to Keep:' : { - hr: 'Broj dana za sačuvati:' - ,ru: 'Оставить дней' - ,de: 'Daten löschen, die älter sind (in Tagen) als:' - , pl: 'Ilość dni do zachowania:' - , hu: 'Mentés ennyi napra:' - } - ,'This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.' : { - hr: 'Ovo uklanja sve statuse starije od 30 dana. Korisno kada se status baterije uploadera ne osvježava ispravno.' - , pl: 'To narzędzie usuwa wszystkie dokumenty z kolekcji devicestatus starsze niż 30 dni. Przydatne, gdy status baterii uploadera nie jest aktualizowany.' - ,ru: 'Это удалит все документы коллекции devicestatus которым более 30 дней. Полезно, когда статус батареи не обновляется или обновляется неверно.' - ,de: 'Diese Aufgabe entfernt alle Dokumente aus der Gerätestatus-Sammlung, die älter sind als 30 Tage. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.' - ,hu: 'Ez a feladat törli az összes "devicestatus" dokumentumot a gyűjteményből ami 30 napnál öregebb. Hasznos ha a feltöltő elem állapota nem jelenik meg rendesen. ' - } - ,'Delete old documents from devicestatus collection?' : { - hr: 'Obriši stare statuse' - ,de: 'Alte Dokumente aus der Gerätestatus-Sammlung entfernen?' - , pl: 'Czy na pewno chcesz usunąć stare dokumenty z kolekcji devicestatus?' - ,ru: 'Удалить старыые документы коллекции devicestatus' - ,hu: 'Kitorli az öreg dokumentumokat a "devicestatus" gyűjteményből?' - } - ,'Clean Mongo entries (glucose entries) database' : { - hr: 'Obriši GUK zapise iz baze' - ,de: 'Mongo-Einträge (Glukose-Einträge) Datenbank bereinigen' - , pl: 'Wyczyść bazę wpisów (wpisy glukozy) Mongo' - ,ru: 'Очистить записи данных в базе Mongo' - ,hu: 'Mongo bejegyzés adatbázis tisztítása' - } - ,'Delete all documents from entries collection older than 180 days' : { - hr: 'Obriši sve zapise starije od 180 dana' - ,de: 'Alle Dokumente aus der Einträge-Sammlung löschen, die älter sind als 180 Tage' - , pl: 'Usuń wszystkie dokumenty z kolekcji wpisów starsze niż 180 dni' - ,ru: 'Удалить все документы коллекции entries старше 180 дней ' - ,hu: 'Az összes bejegyzés gyűjtemény törlése ami 180 napnál öregebb' - } - ,'This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.' : { - hr: 'Ovo briše sve zapise starije od 180 dana. Korisno kada se status baterije uploadera ne osvježava.' - ,de: 'Diese Aufgabe entfernt alle Dokumente aus der Einträge-Sammlung, die älter sind als 180 Tage. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.' - , pl: 'To narzędzie usuwa wszystkie dokumenty z kolekcji wpisów starsze niż 180 dni. Przydatne, gdy status baterii uploadera nie jest aktualizowany.' - ,ru: 'Это удалит все документы коллекции entries старше 180 дней. Полезно, когда статус батареи загрузчика должным образом не обновляется' - ,hu: 'A feladat kitörli az összes bejegyzésekből álló dokumentumot ami 180 napnál öregebb. Hasznos ha a feltöltő elem állapota nem jelenik meg helyesen.' - } - ,'Delete old documents' : { - hr: 'Obriši stare zapise' - ,de: 'Alte Dokumente löschen' - , pl: 'Usuń stare dokumenty' - ,ru: 'Удалить старые документы' - ,hu: 'Öreg dokumentumok törlése' - } - ,'Delete old documents from entries collection?' : { - hr: 'Obriši stare zapise?' - ,de: 'Alte Dokumente aus der Einträge-Sammlung entfernen?' - , pl: 'Czy na pewno chcesz usunąć stare dokumenty z kolekcji wpisów?' - ,ru: 'Удалить старые документы коллекции entries?' - ,hu: 'Az öreg dokumentumok törlése a bejegyzések gyűjteményéből?' - } - ,'%1 is not a valid number' : { - hr: '%1 nije valjan broj' - ,de: '%1 ist keine gültige Zahl' - ,he: 'זה לא מיספר %1' - , pl: '%1 nie jest poprawną liczbą' - ,ru: '% не является допустимым значением' - ,hu: 'A %1 nem érvényes szám' - } - ,'%1 is not a valid number - must be more than 2' : { - hr: '%1 nije valjan broj - mora biti veći od 2' - ,de: '%1 ist keine gültige Zahl - Eingabe muss größer als 2 sein' - , pl: '%1 nie jest poprawną liczbą - musi być większe od 2' - ,ru: '% не является допустимым значением - должно быть больше 2' - ,hu: 'A %1 nem érvényes szám - nagyobb számnak kell lennie mint a 2' - } - ,'Clean Mongo treatments database' : { - hr: 'Obriši tretmane iz baze' - ,de: 'Mongo-Behandlungsdatenbank bereinigen' - , pl: 'Wyczyść bazę leczenia Mongo' - ,ru: 'Очистить базу лечения Mongo' - ,hu: 'Mondo kezelési datbázisának törlése' - } - ,'Delete all documents from treatments collection older than 180 days' : { - hr: 'Obriši tretmane starije od 180 dana iz baze' - ,de: 'Alle Dokumente aus der Behandlungs-Sammlung löschen, die älter sind als 180 Tage' - , pl: 'Usuń wszystkie dokumenty z kolekcji leczenia starsze niż 180 dni' - ,ru: 'Удалить все документы коллекции treatments старше 180 дней' - ,hu: 'Töröld az összes 180 napnál öregebb kezelési dokumentumot' - } - ,'This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.' : { - hr: 'Ovo briše sve tretmane starije od 180 dana iz baze. Korisno kada se status baterije uploadera ne osvježava.' - ,de: 'Diese Aufgabe entfernt alle Dokumente aus der Behandlungs-Sammlung, die älter sind als 180 Tage. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.' - , pl: 'To narzędzie usuwa wszystkie dokumenty z kolekcji leczenia starsze niż 180 dni. Przydatne, gdy status baterii uploadera nie jest aktualizowany.' - ,ru: 'Это удалит все документы коллекции treatments старше 180 дней. Полезно, когда статус батареи загрузчика не обновляется должным образом' - ,hu: 'A feladat eltávolítja az összes kezelési dokumentumot ami öregebb 180 napnál. Hasznos ha a feltöltő elem állapota nem jelenik meg helyesen.' - } - ,'Delete old documents from treatments collection?' : { - hr: 'Obriši stare tretmane?' - ,ru: 'Удалить старые документы из коллекции treatments?' - ,de: 'Alte Dokumente aus der Behandlungs-Sammlung entfernen?' - , pl: 'Czy na pewno chcesz usunąć stare dokumenty z kolekcji leczenia?' - , hu: 'Törölni az összes doumentumot a kezelési gyűjteményből?' - } - ,'Admin Tools' : { - cs: 'Nástroje pro správu' - ,he: 'כלי אדמיניסטרציה ' - ,nb: 'Administrasjonsverktøy' - ,ro: 'Instrumente de administrare' - ,de: 'Administrator-Werkzeuge' - ,es: 'Herramientas Administrativas' - ,fr: 'Outils d\'administration' - ,dl: 'Administrator opgaver' - ,el: 'Εργαλεία Διαχειριστή' - ,sv: 'Adminverktyg' - ,dk: 'Administrations værktøj' - ,bg: 'Настройки на администратора' - ,hr: 'Administracija' - ,it: 'NS - Dati Mongo' - ,fi: 'Ylläpitotyökalut' - ,pl: 'Narzędzia administratora' - ,pt: 'Ferramentas de administração' - ,ru: 'Инструменты администратора' - ,sk: 'Nástroje pre správu' - ,nl: 'Admin tools' - ,ko: '관리 도구' - ,tr: 'Yönetici araçları' - ,zh_cn: '管理工具' - ,zh_tw: '管理工具' - ,hu: 'Adminisztrációs eszközök' - } - ,'Nightscout reporting' : { - cs: 'Nightscout - Výkazy' - ,he: 'דוחות נייססקאוט' - ,nb: 'Rapporter' - ,ro: 'Rapoarte Nightscout' - ,fr: 'Rapports Nightscout' - ,el: 'Αναφορές' - ,de: 'Nightscout-Berichte' - ,es: 'Informes - Nightscout' - ,dk: 'Nightscout - rapporter' - ,sv: 'Nightscout - Statistik' - ,bg: 'Найтскаут статистика' - ,hr: 'Nightscout izvješća' - ,it: 'Nightscout - Statistiche' - ,fi: 'Nightscout raportointi' - ,pl: 'Nightscout - raporty' - ,pt: 'Relatórios do Nightscout' - ,ru: 'Статистика Nightscout' - ,sk: 'Nightscout výkazy' - ,nl: 'Nightscout rapportages' - ,ko: 'Nightscout 보고서' - ,tr: 'NightScout raporları' - ,zh_cn: 'Nightscout报表生成器' - ,hu: 'Nightscout jelentések' - } - ,'Cancel' : { - cs: 'Zrušit' - ,he: 'בטל ' - ,de: 'Abbruch' - ,es: 'Cancelar' - ,fr: 'Interrompre' - ,dk: 'Annuller' - ,nb: 'Avbryt' - ,el: 'Ακύρωση' - ,ro: 'Renunță' - ,sv: 'Avbryt' - ,bg: 'Откажи' - ,hr: 'Odustani' - ,it: 'Cancellare' - ,ja: '中止' - ,fi: 'Peruuta' - ,pl: 'Anuluj' - ,pt: 'Cancelar' - ,ru: 'Отмена' - ,sk: 'Zrušiť' - ,nl: 'Annuleer' - ,ko: '취소' - ,tr: 'İptal' - ,zh_cn: '取消' - ,hu: 'Vissza' - } - ,'Edit treatment' : { - cs: 'Upravit ošetření' - ,he: 'ערוך טיפול ' - ,nb: 'Editer behandling' - ,ro: 'Modifică înregistrarea' - ,de: 'Bearbeite Behandlung' - ,es: 'Editar tratamiento' - ,fr: 'Modifier un traitement' - ,dk: 'Rediger behandling' - ,el: 'Επεξεργασία Εγγραφής' - ,sv: 'Redigera behandling' - ,bg: 'Редакция на събитие' - ,hr: 'Uredi tretman' - ,it: 'Modifica Somministrazione' - ,fi: 'Muuta merkintää' - ,pl: 'Edytuj zabieg' - ,pt: 'Editar tratamento' - ,ru: 'Редактировать событие' - ,sk: 'Upraviť ošetrenie' - ,nl: 'Bewerkt behandeling' - ,ko: 'Treatments 편집' - ,tr: 'Tedaviyi düzenle' - ,zh_cn: '编辑操作' - ,hu: 'Kezelés szerkesztése' - } - ,'Duration' : { - cs: 'Doba trvání' - ,he: 'משך ' - ,ro: 'Durata' - ,de: 'Dauer' - ,es: 'Duración' - ,fr: 'Durée' - ,dk: 'Varighed' - ,el: 'Διάρκεια' - ,sv: 'Varaktighet' - ,bg: 'Времетраене' - ,hr: 'Trajanje' - ,it: 'Tempo' - ,nb: 'Varighet' - ,fi: 'Kesto' - ,pl: 'Czas trwania' - ,pt: 'Duração' - ,ru: 'Продолжительность' - ,sk: 'Trvanie' - ,nl: 'Duur' - ,ko: '기간' - ,tr: 'süre' - ,zh_cn: '持续' - ,hu: 'Behelyezés óta eltelt idő' - } - ,'Duration in minutes' : { - cs: 'Doba trvání v minutách' - ,he: 'משך בדקות ' - ,de: 'Dauer in Minuten' - ,es: 'Duración en minutos' - ,fr: 'Durée en minutes' - ,dk: 'Varighed i minutter' - ,ro: 'Durata în minute' - ,el: 'Διάρκεια σε λεπτά' - ,sv: 'Varaktighet i minuter' - ,bg: 'Времетраене в мин.' - ,hr: 'Trajanje u minutama' - ,it: 'Tempo in minuti' - ,nb: 'Varighet i minutter' - ,fi: 'Kesto minuuteissa' - ,pl: 'Czas trwania w minutach' - ,pt: 'Duração em minutos' - ,ru: 'Продолжительность в мин' - ,sk: 'Trvanie v minútach' - ,nl: 'Duur in minuten' - ,ko: '분당 지속 기간' - ,tr: 'Süre dakika cinsinden' - ,zh_cn: '持续时间(分钟)' - ,hu: 'Idő percekben' - } - ,'Temp Basal' : { - cs: 'Dočasný bazál' - ,he: 'רמה בזלית זמנית' - ,de: 'Temporäre Basalrate' - ,es: 'Tasa basal temporal' - ,fr: 'Débit basal temporaire' - ,dk: 'Midlertidig basal' - ,ro: 'Bazală temporară' - ,sv: 'Temporär basal' - ,bg: 'Временен базал' - ,hr: 'Privremeni bazal' - ,it: 'Basale Temp' - ,nb: 'Midlertidig basal' - ,fi: 'Tilapäinen basaali' - ,pl: 'Tymczasowa dawka podstawowa' - ,pt: 'Basal Temporária' - ,ru: 'Временный базал' - ,sk: 'Dočasný bazál' - ,nl: 'Tijdelijke basaal' - ,ko: '임시 basal' - ,tr: 'Geçici Bazal Oranı' - ,zh_cn: '临时基础率' - ,hu: 'Átmeneti bazál' - } - ,'Temp Basal Start' : { - cs: 'Dočasný bazál začátek' - ,he: 'התחלת רמה בזלית זמנית ' - ,ro: 'Start bazală temporară' - ,sv: 'Temporär basalstart' - ,de: 'Start Temporäre Basalrate' - ,es: 'Inicio Tasa Basal temporal' - ,fr: 'Début du débit basal temporaire' - ,dk: 'Midlertidig basal start' - ,bg: 'Начало на временен базал' - ,hr: 'Početak privremenog bazala' - ,it: 'Inizio Basale Temp' - ,nb: 'Midlertidig basal start' - ,fi: 'Tilapäinen basaali alku' - ,pl: 'Początek tymczasowej dawki podstawowej' - ,pt: 'Início da Basal Temporária' - ,ru: 'Начало временного базала' - ,sk: 'Začiatok dočasného bazálu' - ,nl: 'Start tijdelijke basaal' - ,ko: '임시 basal 시작' - ,tr: 'Geçici Bazal Oranını Başlanğıcı' - ,zh_cn: '临时基础率开始' - ,hu: 'Átmeneti bazál Kezdete' - } - ,'Temp Basal End' : { - cs: 'Dočasný bazál konec' - ,he: 'סיום רמה בזלית זמנית' - ,ro: 'Sfârșit bazală temporară' - ,fr: 'Fin du débit basal temporaire' - ,sv: 'Temporär basalavslut' - ,bg: 'Край на временен базал' - ,hr: 'Kraj privremenog bazala' - ,it: 'Fine Basale Temp' - ,de: 'Ende Temporäre Basalrate' - ,es: 'Fin Tasa Basal temporal' - ,dk: 'Midlertidig basal slut' - ,nb: 'Midlertidig basal stopp' - ,fi: 'Tilapäinen basaali loppu' - ,pl: 'Koniec tymczasowej dawki podstawowej' - ,pt: 'Fim de Basal Temporária' - ,ru: 'Окончание временного базала' - ,sk: 'Koniec dočasného bazálu' - ,nl: 'Einde tijdelijke basaal' - ,ko: '임시 basal 종료' - ,tr: 'Geçici bazal oranını Bitişi' - ,zh_cn: '临时基础率结束' - ,hu: 'Átmeneti bazál Vége' - } - ,'Percent' : { // value in % for temp basal - cs: 'Procenta' - ,he: 'אחוז ' - ,ro: 'Procent' - ,de: 'Prozent' - ,es: 'Porcentaje' - ,fr: 'Pourcent' - ,dk: 'Procent' - ,el: 'Επι τοις εκατό' - ,sv: 'Procent' - ,bg: 'Процент' - ,hr: 'Postotak' - ,it: 'Percentuale' - ,nb: 'Prosent' - ,fi: 'Prosentti' - ,pl: 'Procent' - ,pt: 'Porcento' - ,ru: 'Процент' - ,sk: 'Percent' - ,nl: 'Procent' - ,ko: '퍼센트' - ,tr: 'Yüzde' - ,zh_cn: '百分比' - ,hu: 'Százalék' - } - ,'Basal change in %' : { - cs: 'Změna bazálu v %' - ,he: 'שינוי קצב בזלי באחוזים ' - ,ro: 'Bazală schimbată în %' - ,fr: 'Changement du débit basal en %' - ,sv: 'Basaländring i %' - ,bg: 'Промяна на базала с %' - ,hr: 'Promjena bazala u %' - ,de: 'Basalratenänderung in %' - ,es: 'Basal modificado en %' - ,dk: 'Basal ændring i %' - ,it: 'Variazione basale in %' - ,nb: 'Basal-endring i %' - ,fi: 'Basaalimuutos prosenteissa' - ,pl: 'Zmiana dawki podstawowej w %' - ,pt: 'Mudança de basal em %' - ,ru: 'Изменение базала в %' - ,sk: 'Zmena bazálu v %' - ,nl: 'Basaal aanpassing in %' - ,ko: '% 이내의 basal 변경' - ,tr: 'Bazal değişimi % cinsinden' - ,zh_cn: '基础率变化百分比' - ,hu: 'Bazál változása %' - } - ,'Basal value' : { // absolute value for temp basal - cs: 'Hodnota bazálu' - ,he: 'ערך בזלי' - ,ro: 'Valoare bazală' - ,fr: 'Valeur du débit basal' - ,sv: 'Basalvärde' - ,de: 'Basalrate' - ,es: 'Valor basal' - ,dk: 'Basalværdi' - ,bg: 'Временен базал' - ,hr: 'Vrijednost bazala' - ,it: 'Valore Basale' - ,nb: 'Basalverdi' - ,fi: 'Basaalin määrä' - ,pl: 'Dawka podstawowa' - ,pt: 'Valor da basal' - ,ru: 'величина временного базала' - ,sk: 'Hodnota bazálu' - ,nl: 'Basaal snelheid' - ,ko: 'Basal' - ,tr: 'Bazal değeri' - ,zh_cn: '基础率值' - ,hu: 'Bazál értéke' - } - ,'Absolute basal value' : { - cs: 'Hodnota bazálu' - ,he: 'ערך בזלי מוחלט ' - ,bg: 'Базална стойност' - ,hr: 'Apsolutna vrijednost bazala' - ,it: 'Valore Basale Assoluto' - ,fr: 'Débit basal absolu' - ,de: 'Absoluter Basalratenwert' - ,es: 'Valor basal absoluto' - ,dk: 'Absolut basalværdi' - ,nb: 'Absolutt basalverdi' - ,ro: 'Valoare absolută bazală' - ,sv: 'Absolut basalvärde' - ,fi: 'Absoluuttinen basaalimäärä' - ,pl: 'Bezwględna wartość dawki podstawowej' - ,pt: 'Valor absoluto da basal' - ,ru: 'Абсолютная величина базала' - ,sk: 'Absolútna hodnota bazálu' - ,nl: 'Absolute basaal waarde' - ,ko: '절대적인 basal' - ,tr: 'Mutlak bazal değeri' - ,zh_cn: '绝对基础率值' - ,hu: 'Abszolút bazál érték' - } - ,'Announcement' : { - cs: 'Oznámení' - ,bg: 'Известяване' - ,hr: 'Objava' - ,de: 'Ankündigung' - ,es: 'Aviso' - ,fr: 'Annonce' - ,dk: 'Meddelelse' - ,ro: 'Anunț' - ,el: 'Ανακοίνωση' - ,sv: 'Avisering' - ,he: 'הודעה' - ,it: 'Annuncio' - ,nb: 'Kunngjøring' - ,fi: 'Tiedote' - ,pl: 'Powiadomienie' - ,pt: 'Aviso' - ,ru: 'Оповещение' - ,sk: 'Oznámenia' - ,nl: 'Mededeling' - ,ko: '공지' - ,tr: 'Duyuru' - ,zh_cn: '通告' - ,hu: 'Közlemény' - } - ,'Loading temp basal data' : { - cs: 'Nahrávám dočasné bazály' - ,he: 'טוען ערך בזלי זמני ' - ,it: 'Caricamento basale temp' - ,fr: 'Chargement des données de débit basal' - ,ro: 'Se încarcă date bazală temporară' - ,sv: 'Laddar temporär basaldata' - ,de: 'Lade temporäre Basaldaten' - ,es: 'Cargando datos tasa basal temporal' - ,dk: 'Indlæser midlertidig basal data' - ,nb: 'Laster verdier for midlertidig basal' - ,fi: 'Lataan tilapäisten basaalien tietoja' - ,bg: 'Зареждане на данни за временния базал' - ,hr: 'Učitavanje podataka o privremenom bazalu' - ,pl: 'Wczytuje dane tymczasowej dawki podstawowej' - ,pt: 'Carregando os dados de basal temporária' - ,ru: 'Загрузка данных временного базала' - ,sk: 'Nahrávam dáta dočasného bazálu' - ,nl: 'Laden tijdelijke basaal gegevens' - ,ko: '임시 basal 로딩' - ,tr: 'Geçici bazal verileri yükleniyor' - ,zh_cn: '载入临时基础率数据' - ,hu: 'Az étmeneti bazál adatainak betöltése' - } - ,'Save current record before changing to new?' : { - cs: 'Uložit současný záznam před změnou na nový?' - ,he: 'שמור רשומה נוכחית לפני שעוברים לרשומה חדשה? ' - ,ro: 'Salvez înregistrarea curentă înainte de a trece mai departe?' - ,sv: 'Spara aktuell data innan skifte till ny?' - ,fr: 'Sauvegarder l\'événement actuel avant d\'avancer au suivant ?' - ,nb: 'Lagre før bytte til ny?' - ,el: 'Αποθήκευση τρεχουσας εγγραφής πριν δημιουργήσουμε νέα?' - ,de: 'Aktuelle Einträge speichern?' - ,es: 'Grabar datos actuales antes de cambiar por nuevos?' - ,dk: 'Gem aktuelle hændelse før der skiftes til ny?' - ,fi: 'Tallenna nykyinen merkintä ennen vaihtoa uuteen?' - ,bg: 'Запази текущият запис преди да промениш новия ' - ,hr: 'Spremi trenutni zapis prije promjene na idući?' - ,pl: 'Zapisać bieżący rekord przed zamianą na nowy?' - ,pt: 'Salvar o registro atual antes de mudar para um novo?' - ,ru: 'Сохранить текущие данные перед переходом к новым?' - ,sk: 'Uložiť súčastny záznam pred zmenou na nový?' - ,nl: 'Opslaan voor verder te gaan?' - ,ko: '새 데이터로 변경하기 전에 현재의 기록을 저장하시겠습니까?' - ,it: 'Salvare i dati correnti prima di cambiarli?' - ,tr: 'Yenisine geçmeden önce mevcut girişleri kaydet?' - ,zh_cn: '在修改至新值前保存当前记录?' - ,hu: 'Elmentsem az aktuális adatokat mielőtt újra váltunk?' - } - ,'Profile Switch' : { - cs: 'Přepnutí profilu' - ,he: 'החלף פרופיל ' - ,ro: 'Schimbă profilul' - ,sv: 'Ny profil' - ,fr: 'Changement de profil' - ,el: 'Εναλλαγή προφίλ' - ,de: 'Profil wechseln' - ,es: 'Cambiar Perfil' - ,dk: 'Skift profil' - ,nb: 'Bytt profil' - ,fi: 'Vaihda profiilia' - ,bg: 'Смяна на профил' - ,hr: 'Promjena profila' - ,pl: 'Przełączenie profilu' - ,pt: 'Troca de perfil' - ,ru: 'Изменить профиль' - ,sk: 'Zmena profilu' - ,nl: 'Profiel wissel' - ,ko: '프로파일 변경' - ,it: 'Cambio profilo' - ,tr: 'Profil Değiştir' - ,zh_cn: '切换配置文件' - ,hu: 'Profil csere' - } - ,'Profile' : { - cs: 'Profil' - ,he: 'פרופיל ' - ,de: 'Profil' - ,es: 'Perfil' - ,dk: 'Profil' - ,el: 'Προφίλ' - ,fr: 'Profil' - ,it: 'Profilo' - ,ro: 'Profil' - ,sv: 'Profil' - ,nb: 'Profil' - ,fi: 'Profiili' - ,bg: 'Профил' - ,hr: 'Profil' - ,pl: 'Profil' - ,pt: 'Perfil' - ,ru: 'Профиль' - ,sk: 'Profil' - ,nl: 'Profiel' - ,ko: '프로파일' - ,tr: 'Profil' - ,zh_cn: '配置文件' - ,hu: 'Profil' - } - ,'General profile settings' : { - cs: 'Obecná nastavení profilu' - ,he: 'הגדרות פרופיל כלליות' - ,de: 'Allgemeine Profileinstellungen' - ,es: 'Configuración perfil genérico' - ,fr: 'Réglages principaus du profil' - ,dk: 'Generelle profil indstillinger' - ,el: 'Γενικές Ρυθμίσεις Προφίλ' - ,ro: 'Setări generale profil' - ,sv: 'Allmän profilinställning' - ,nb: 'Profilinstillinger' - ,fi: 'Yleiset profiiliasetukset' - ,bg: 'Основни настройки на профила' - ,hr: 'Opće postavke profila' - ,pl: 'Ogólne ustawienia profilu' - ,pt: 'Configurações de perfil gerais' - ,ru: 'Общие настройки профиля' - ,sk: 'Obecné nastavenia profilu' - ,nl: 'Profiel instellingen' - ,ko: '일반 프로파일 설정' - ,it: 'Impostazioni generali profilo' - ,tr: 'Genel profil ayarları' - ,zh_cn: '通用配置文件设置' - ,hu: 'Általános profil beállítások' - } - ,'Title' : { - cs: 'Název' - ,he: 'כותרת ' - ,ro: 'Titlu' - ,sv: 'Titel' - ,fr: 'Titre' - ,el: 'Τίτλος' - ,de: 'Überschrift' - ,es: 'Titulo' - ,dk: 'Overskrift' - ,nb: 'Tittel' - ,fi: 'Otsikko' - ,bg: 'Заглавие' - ,hr: 'Naslov' - ,pl: 'Nazwa' - ,pt: 'Título' - ,ru: 'Название' - ,sk: 'Názov' - ,nl: 'Titel' - ,ko: '제목' - ,it: 'Titolo' - ,tr: 'Başlık' - ,zh_cn: '标题' - ,hu: 'Elnevezés' - } - ,'Database records' : { - cs: 'Záznamy v databázi' - ,he: 'רשומות ' - ,ro: 'Înregistrări' - ,fr: 'Entrées de la base de données' - ,sv: 'Databashändelser' - ,el: 'Εγραφές Βάσης Δεδομένων' - ,nb: 'Databaseverdier' - ,de: 'Datenbankeinträge' - ,es: 'Registros grabados en base datos' - ,dk: 'Database hændelser' - ,fi: 'Tietokantamerkintöjä' - ,bg: 'Записи в базата с данни' - ,hr: 'Zapisi u bazi' - ,pl: 'Rekordy bazy danych' - ,pt: 'Registros do banco de dados' - ,ru: 'Записи в базе данных' - ,sk: 'Záznamy databázi' - ,ko: '데이터베이스 기록' - ,it: 'Record del database' - ,tr: 'Veritabanı kayıtları' - ,zh_cn: '数据库记录' - ,nl: 'Database gegevens' - ,hu: 'Adatbázis bejegyzések' - } - ,'Add new record' : { - cs: 'Přidat nový záznam' - ,he: 'הוסף רשומה חדשה ' - ,ro: 'Adaugă înregistrare nouă' - ,fr: 'Ajouter une nouvelle entrée' - ,sv: 'Lägg till ny händelse' - ,el: 'Προσθήκη νέας εγγραφής' - ,nb: 'Legg til ny rad' - ,de: 'Neuen Eintrag hinzufügen' - ,es: 'Añadir nuevo registro' - ,dk: 'Tilføj ny hændelse' - ,fi: 'Lisää uusi merkintä' - ,bg: 'Добави нов запис' - ,hr: 'Dodaj zapis' - ,pl: 'Dodaj nowy rekord' - ,pt: 'Adicionar novo registro' - ,ru: 'Добавить новую запись' - ,sk: 'Pridať nový záznam' - ,nl: 'Toevoegen' - ,ko: '새 기록 추가' - ,it: 'Aggiungi un nuovo record' - ,ja: '新しい記録を加える' - ,tr: 'Yeni kayıt ekle' - ,zh_cn: '新增记录' - ,hu: 'Új bejegyzés hozzáadása' - } - ,'Remove this record' : { - cs: 'Vymazat tento záznam' - ,he: 'מחק רשומה זו ' - ,ro: 'Șterge această înregistrare' - ,fr: 'Supprimer cette entrée' - ,sv: 'Ta bort denna händelse' - ,el: 'Αφαίρεση εγγραφής' - ,nb: 'Fjern denne raden' - ,de: 'Diesen Eintrag löschen' - ,es: 'Eliminar este registro' - ,fk: 'Fjern denne indgang' - ,fi: 'Poista tämä merkintä' - ,bg: 'Премахни този запис' - ,hr: 'Obriši ovaj zapis' - ,pl: 'Usuń ten rekord' - ,pt: 'Remover este registro' - ,ru: 'Удалить эту запись' - ,sk: 'Zmazať záznam' - ,nl: 'Verwijder' - ,ko: '이 기록 삭' - ,it: 'Rimuovi questo record' - ,ja: 'この記録を除く' - ,tr: 'Bu kaydı kaldır' - ,zh_cn: '删除记录' - ,hu: 'Bejegyzés törlése' - } - ,'Clone this record to new' : { - cs: 'Zkopíruj tento záznam do nového' - ,he: 'שכפל רשומה זו לרשומה חדשה ' - ,ro: 'Duplică această înregistrare' - ,fr: 'Dupliquer cette entrée' - ,el: 'Αντιγραφή σε νέα' - ,sv: 'Kopiera denna händelse till ny' - ,es: 'Duplicar este registro como nuevo' - ,nb: 'Kopier til ny rad' - ,de: 'Diesen Eintrag duplizieren' - ,dk: 'Kopier denne hændelse til ny' - ,fi: 'Kopioi tämä merkintä uudeksi' - ,bg: 'Копирай този запис като нов' - ,hr: 'Kloniraj zapis' - ,pl: 'Powiel ten rekord na nowy' - ,pt: 'Duplicar este registro como novo' - ,ru: 'Клонировать эту запись в новый' - ,sk: 'Skopírovať záznam do nového' - ,nl: 'Kopieer deze invoer naar nieuwe' - ,ko: '이 기록을 새기록으로 복제하기' - ,it: 'Clona questo record in uno nuovo' - ,tr: 'Bu kaydı yeniden kopyala' - ,zh_cn: '复制记录' - ,hu: 'A kiválasztott bejegyzés másolása' - } - ,'Record valid from' : { - cs: 'Záznam platný od' - ,he: 'רשומה תקפה מ ' - ,ro: 'Înregistare validă de la' - ,fr: 'Entrée valide à partir de' - ,sv: 'Händelse giltig från' - ,el: 'Ισχύει από' - ,de: 'Eintrag gültig ab' - ,es: 'Registro válido desde' - ,dk: 'Hændelse gyldig fra' - ,nb: 'Oppføring gyldig fra' - ,fi: 'Merkintä voimassa alkaen' - ,bg: 'Записът е валиден от ' - ,hr: 'Zapis vrijedi od' - ,pl: 'Rekord ważny od' - ,pt: 'Registro válido desde' - ,ru: 'Запись действительна от' - ,sk: 'Záznam platný od' - ,nl: 'Geldig van' - ,ko: '기록을 시작한 날짜' - ,it: 'Record valido da' - ,tr: 'Kayıt itibaren geçerli' - ,zh_cn: '有效记录,从' - ,hu: 'Bejegyzés érvényessége' - } - ,'Stored profiles' : { - cs: 'Uložené profily' - ,he: 'פרופילים מאוכסנים ' - ,fr: 'Profils sauvegardés' - ,ro: 'Profile salvate' - ,sv: 'Lagrad profil' - ,el: 'Αποθηκευμένα προφίλ' - ,de: 'Gesicherte Profile' - ,es: 'Perfiles guardados' - ,dk: 'Gemte profiler' - ,nb: 'Lagrede profiler' - ,fi: 'Tallennetut profiilit' - ,bg: 'Запаметени профили' - ,hr: 'Pohranjeni profili' - ,pl: 'Zachowane profile' - ,pt: 'Perfis guardados' - ,ru: 'Сохраненные профили' - ,sk: 'Uložené profily' - ,nl: 'Opgeslagen profielen' - ,ko: '저장된 프로파일' - ,it: 'Profili salvati' - ,tr: 'Kaydedilmiş profiller' //Kayıtlı profiller,Saklanan profiller - ,zh_cn: '配置文件已存储' - ,hu: 'Tárolt profilok' - } - ,'Timezone' : { - cs: 'Časová zóna' - ,he: 'אזור זמן ' - ,de: 'Zeitzone' - ,es: 'Zona horaria' - ,fr: 'Zone horaire' - ,dk: 'Tidszone' - ,ro: 'Fus orar' - ,el: 'Ζώνη Ώρας' - ,sv: 'Tidszon' - ,nb: 'Tidssone' - ,fi: 'Aikavyöhyke' - ,bg: 'Часова зона' - ,hr: 'Vremenska zona' - ,pl: 'Strefa czasowa' - ,pt: 'Fuso horário' - ,ru: 'Часовой пояс' - ,sk: 'Časové pásmo' - ,nl: 'Tijdzone' - ,ko: '타임존' - ,it: 'Fuso orario' - ,tr: 'Saat dilimi' - ,zh_cn: '时区' - ,hu: 'Időzóna' - } - ,'Duration of Insulin Activity (DIA)' : { - cs: 'Doba působnosti inzulínu (DIA)' - ,he: 'משך פעילות האינסולין ' - ,ro: 'Durata de acțiune a insulinei' - ,fr: 'Durée d\'action de l\'insuline' - ,el: 'Διάρκεια Δράσης Ινσουλίνης(DIA)' - ,sv: 'Verkningstid för insulin (DIA)' - ,nb: 'Insulin-varighet (DIA)' - ,de: 'Dauer der Insulinaktivität (DIA)' - ,es: 'Duración Insulina Activa (DIA)' - ,dk: 'Varighed af insulin aktivitet (DIA)' - ,fi: 'Insuliinin vaikutusaika (DIA)' - ,bg: 'Продължителност на инсулиновата активност DIA' - ,hr: 'Trajanje aktivnosti inzulina (DIA)' - ,pl: 'Czas trwania aktywnej insuliny (DIA)' - ,pt: 'Duração da Atividade da Insulina (DIA)' - ,ru: 'Время действия инсулина (DIA)' - ,sk: 'Doba pôsobenia inzulínu (DIA)' - ,nl: 'Werkingsduur insuline (DIA)' - ,ko: '활성 인슐린 지속 시간(DIA)' - ,it: 'Durata Attività Insulinica (DIA)' - ,tr: 'İnsülin Etki Süresi (DIA)' - ,zh_cn: '胰岛素作用时间(DIA)' - ,hu: 'Inzulin aktivitás időtartalma' - } - ,'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.' : { - cs: 'Představuje typickou dobu, po kterou inzulín působí. Bývá různá podle pacienta a inzulínu. Typicky 3-4 hodiny pro pacienty s pumpou.' - ,he: 'מייצג את משך הטיפוסי שבו האינסולין נכנס לתוקף. משתנה לכל חולה וסוג האינסולין. בדרך כלל 3-4 שעות עבור רוב אינסולין שאיבה רוב המטופלים. לפעמים נקרא גם אורך חיי אינסולין. ' - ,ro: 'Reprezintă durata tipică pentru care insulina are efect. Este diferită la fiecare pacient și pentru fiecare tip de insulină' - ,el: 'Αντιπροσωπευει την τυπική διάρκεια δράσης της χορηγηθείσας ινσουλίνης.' - ,es: 'Representa la duración típica durante la cual la insulina tiene efecto. Varía por paciente y por tipo de insulina. Típicamente 3-4 horas para la mayoría de la insulina bombeada y la mayoría de los pacientes. A veces también se llama insulina de por vida ' - ,fr: 'Représente la durée d\'action typique de l\'insuline. Varie individuellement et selon le type d\'insuline. Typiquement 3-4 heures pour les insulines utilisées dans les pompes.' - ,de: 'Entspricht der typischen Dauer in der das Insulin wirkt. Variiert je nach Patient und Insulintyp. Häufig 3-4 Stunden für die meisten Pumpeninsuline und die meisten Patienten. Manchmal auch Insulin-Wirkungsdauer genannt.' - ,dk: 'Representerer den typiske tid hvor insulinen virker. Varierer per patient og per insulin type. Typisk 3-4 timer for de fleste pumpe insulin og for de fleste patienter. Nogle gange kaldes dette også insulin-livs-tid.' - ,sv: 'Beskriver under hur lång tid insulinet verkar. Varierar mellan patienter. Typisk varaktighet 3-4 timmar.' - ,nb: 'Representerer typisk insulinvarighet. Varierer per pasient og per insulintype. Vanligvis 3-4 timer for de fleste typer insulin og de fleste pasientene. Noen ganger også kalt insulin-levetid eller Duration of Insulin Activity, DIA.' - ,fi: 'Kertoo insuliinin tyypillisen vaikutusajan. Vaihtelee potilaan ja insuliinin tyypin mukaan. Tyypillisesti 3-4 tuntia pumpuissa käytettävällä insuliinilla.' - ,bg: 'Представя типичната продължителност на действието на инсулина. Варира между отделните пациенти и различни инсулини. Обикновено е 3-4 часа за пациентите с помпа. Нарича се още живот на инсулина ' - ,hr: 'Predstavlja uobičajeno trajanje djelovanje inzulina. Varira po vrstama inzulina i osobama. Tipično je to 3-4 sata za inzuline u pumpama za većinu osoba. Ponekad se naziva i vijek inzulina' - ,pl: 'Odzwierciedla czas działania insuliny. Może różnić się w zależności od chorego i rodzaju insuliny. Zwykle są to 3-4 godziny dla insuliny podawanej pompą u większości chorych. Inna nazwa to czas trwania insuliny.' - ,pt: 'Representa a tempo típico durante o qual a insulina tem efeito. Varia de acordo com o paciente e tipo de insulina. Tipicamente 3-4 horas para a maioria das insulinas usadas em bombas e dos pacientes. Algumas vezes chamada de tempo de vida da insulina' - ,ru: 'Отражает типичную продолжительность действия инсулина. Зависит от пациента и от типа инсулина. Обычно 3-4 часа для большинства помповых инсулинов и большинства пациентов' - ,sk: 'Predstavuje typickú dobu počas ktorej inzulín pôsobí. Býva rôzna od pacienta a od typu inzulínu. Zvyčajne sa pohybuje medzi 3-4 hodinami u pacienta s pumpou.' - ,nl: 'Geeft de werkingsduur van de insuline in het lichaam aan. Dit verschilt van patient tot patient er per soort insuline, algemeen gemiddelde is 3 tot 4 uur. ' - ,ko: '인슐린이 작용하는 지속시간을 나타냅니다. 사람마다 그리고 인슐린 종류에 따라 다르고 일반적으로 3~4시간간 동안 지속되며 인슐린 작용 시간(Insulin lifetime)이라고 불리기도 합니다.' - ,it: 'Rappresenta la durata tipica nel quale l\'insulina ha effetto. Varia in base al paziente ed al tipo d\'insulina. Tipicamente 3-4 ore per la maggior parte dei microinfusori e dei pazienti. Chiamata anche durata d\'azione insulinica.' - ,tr: 'İnsülinin etki ettiği tipik süreye karşılık gelir. Hastaya ve insülin tipine göre değişir. Çoğu pompa insülini ve çoğu hasta için genellikle 3-4 saattir. Bazen de insülin etki süresi de denir.' - ,zh_cn: '体现典型的胰岛素活性持续时间。 通过百分比和胰岛素类型体现。对于大多数胰岛素和患者来说是3至4个小时。也称为胰岛素生命周期。' - ,hu: 'Kimutatja hogy általában meddig hat az inzulin. Változó különböző pácienseknél és inzulinoknál. Általában 3-4 óra között mozog. Néha inzulin élettartalomnak is nevezik.' - } - ,'Insulin to carb ratio (I:C)' : { - cs: 'Inzulíno-sacharidový poměr (I:C).' - ,he: 'יחס אינסולין פחמימות ' - ,ro: 'Rată insulină la carbohidrați (ICR)' - ,sv: 'Insulin-Kolhydratskvot' - ,fr: 'Rapport Insuline-Glucides (I:C)' - ,el: 'Αναλογία Ινσουλίνης/Υδατάνθρακα (I:C)' - ,nb: 'IKH forhold' - ,de: 'Insulin/Kohlenhydrate-Verhältnis (I:KH)' - ,es: 'Relación Insulina/Carbohidratos (I:C)' - ,dk: 'Insulin til kulhydrat forhold også kaldet Kulhydrat-insulinratio (I:C)' - ,fi: 'Insuliiniannoksen hiilihydraattisuhde (I:HH)' - ,bg: 'Съотношение инсулин/въглехидратите ICR I:C И:ВХ' - ,hr: 'Omjer UGH:Inzulin (I:C)' - ,pl: 'Współczynnik insulina/węglowodany (I:C)' - ,pt: 'Relação Insulina-Carboidrato (I:C)' - ,ru: 'Соотношение инсулин/углеводы I:C' - ,sk: 'Inzulín-sacharidový pomer (I:C)' - ,nl: 'Insuline - Koolhydraat ratio (I:C)' - ,ko: '인슐린에 대한 탄수화물 비율(I:C)' - ,it: 'Rapporto Insulina-Carboidrati (I:C)' - ,tr: 'İnsülin/Karbonhidrat oranı (I:C)' - ,zh_cn: '碳水化合物系数(ICR)' - ,hu: 'Inzulin-szénhidrát arány' - } - ,'Hours:' : { - cs: 'Hodin:' - ,he: 'שעות:' - ,ro: 'Ore:' - ,el: 'ώρες:' - ,fr: 'Heures:' - ,de: 'Stunden:' - ,es: 'Horas:' - ,dk: 'Timer:' - ,sv: 'Timmar:' - ,nb: 'Timer:' - ,fi: 'Tunnit:' - ,bg: 'часове:' - ,hr: 'Sati:' - ,pl: 'Godziny:' - ,pt: 'Horas:' - ,ru: 'час:' - ,sk: 'Hodiny:' - ,nl: 'Uren:' - ,ko: '시간:' - ,it: 'Ore:' - ,tr: 'Saat:' - ,zh_cn: '小时:' - ,hu: 'Óra:' - } - ,'hours' : { - cs: 'hodin' - ,he: 'שעות ' - ,ro: 'ore' - ,el: 'ώρες' - ,fr: 'heures' - ,de: 'Stunden' - ,es: 'horas' - ,dk: 'timer' - ,sv: 'timmar' - ,nb: 'timer' - ,fi: 'tuntia' - ,bg: 'часове' - ,hr: 'sati' - ,pl: 'godziny' - ,pt: 'horas' - ,ru: 'час' - ,sk: 'hodiny' - ,nl: 'Uren' - ,ko: '시간' - ,it: 'ore' - ,tr: 'saat' - ,zh_cn: '小时' - ,hu: 'óra' - } - ,'g/hour' : { - cs: 'g/hod' - ,he: 'גרם לשעה ' - ,ro: 'g/oră' - ,fr: 'g/heure' - ,sv: 'g/timme' - ,nb: 'g/time' - ,de: 'g/Std' - ,es: 'gr/hora' - ,dk: 'g/time' - ,fi: 'g/tunti' - ,bg: 'гр/час' - ,hr: 'g/h' - ,pl: 'g/godzine' - ,pt: 'g/hora' - ,ru: 'г/час' - ,sk: 'g/hod' - ,nl: 'g/uur' - ,ko: 'g/시간' - ,it: 'g/ora' - ,tr: 'g/saat' - ,zh_cn: 'g/小时' - ,hu: 'g/óra' - } - ,'g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.' : { - cs: 'gramy na jednotku inzulínu. Poměr, jaké množství sacharidů pokryje jednotku inzulínu.' - ,he: 'היחס בין כמה גרם של פחמימות מקוזז על ידי כל יחידת אינסולין ' - ,ro: 'g carbohidrați pentru o unitate de insulină. Câte grame de carbohidrați sunt acoperite de 1U insulină.' - ,fr: 'g de glucides par Uninté d\'insuline. Le rapport représentant la quantité de glucides compensée par une unité d\'insuline.' - ,el: 'Γραμμάρια (g) υδατάνθρακα ανά μονάδα (U) ινσουλίνης. Πόσα γραμμάρια υδατάνθρακα αντιστοιχούν σε μία μονάδα ινσουλίνης' - ,sv: 'gram kolhydrater per enhet insulin. Antal gram kolhydrater varje enhet insulin sänker' - ,dk: 'gram kulhydrater per enhed insulin. (Kulhydrat-insulinratio) Den mængde kulhydrat, som dækkes af en enhed insulin.' - ,es: 'gr. de carbohidratos por unidad de insulina. La proporción de cuántos gramos de carbohidratos se consumen por unidad de insulina.' - ,de: 'g Kohlenhydrate pro Einheit Insulin. Das Verhältnis wie viele Gramm Kohlenhydrate je Einheit Insulin verbraucht werden.' - ,nb: 'g karbohydrater per enhet insulin. Beskriver hvor mange gram karbohydrater som hånderes av en enhet insulin.' - ,fi: 'g hiilihydraattia / yksikkö insuliinia. Suhde, joka kertoo montako grammaa hiilihydraattia vastaa yhtä yksikköä insuliinia.' - ,bg: 'грам въглехидрат към 1 единица инсулин. Съотношението колко грама въглехидрат се покриват от 1 единица инсулин.' - ,hr: 'grama UGH po jedinici inzulina. Omjer koliko grama UGH pokriva jedna jedinica inzulina.' - ,pl: 'g węglowodanów na 1j insuliny. Współczynnik ilości gram weglowodanów równoważonych przez 1j insuliny.' - ,pt: 'g de carboidrato por unidade de insulina. A razão de quantos gramas de carboidrato são processados por cada unidade de insulina.' - ,ru: 'г углеводов на ед инсулина. Соотношение показывает количество гр углеводов компенсируемого единицей инсулина.' - ,sk: 'gramy sacharidov na jednotku inzulínu. Pomer udáva aké množstvo sacharidov pokryje jednotka inzulínu.' - ,ko: '인슐린 단위 당 탄수화물 g. 인슐린 단위에 대한 탄수화물의 양의 비율을 나타냅니다.' - ,it: 'g carbo per U di insulina. Il rapporto tra quanti grammi di carboidrati sono compensati da ogni U di insulina.' - ,tr: 'İnsülin ünite başına g karbonhidrat. İnsülin ünite başına kaç gram karbonhidrat tüketildiği oranıdır.' - ,zh_cn: '克碳水每单位胰岛素。每单位胰岛素可以抵消的碳水化合物克值比例。' - ,nl: 'G KH per Eh insuline. De verhouding tussen hoeveel grammen koohlhydraten er verwerkt kunnen worden per eenheid insuline.' - ,hu: 'g szénhidrát per egység inzulin. Az arány, hogy hány gramm szénhidrát fed le bizonyos egységnyi inzulint' - } - ,'Insulin Sensitivity Factor (ISF)' : { - cs: 'Citlivost inzulínu (ISF)' - ,he: 'גורם רגישות לאינסולין ' - ,ro: 'Factor de sensilibtate la insulină (ISF)' - ,de: 'Insulinsensibilitätsfaktor (ISF)' - ,es: 'Factor Sensibilidad a la Insulina (ISF)' - ,fr: 'Facteur de sensibilité à l\'insuline (ISF)' - ,el: 'Ευαισθησία στην Ινοσυλίνη (ISF)' - ,sv: 'Insulinkänslighetsfaktor (ISF)' - ,dk: 'Insulinfølsomhedsfaktor (ISF)' - ,nb: 'Insulinfølsomhetsfaktor (ISF)' - ,fi: 'Insuliiniherkkyys (ISF)' - ,bg: 'Фактор на инсулинова чувствителност ISF ' - ,hr: 'Faktor inzulinske osjetljivosti (ISF)' - ,pl: 'Współczynnik wrażliwosci na insulinę (ISF)' - ,pt: 'Fator de Sensibilidade da Insulina (ISF)' - ,ru: 'Фактор чувствительности к инсулину ISF' - ,sk: 'Citlivosť na inzulín (ISF)' - ,nl: 'Insuline gevoeligheid (ISF)' - ,ko: '인슐린 민감도(ISF)' - ,it: 'Fattore di Sensibilità Insulinica (ISF)' - ,tr: '(ISF) İnsülin Duyarlılık Faktörü' - ,zh_cn: '胰岛素敏感系数(ISF)' - ,hu: 'Inzulin Érzékenységi Faktor (ISF)' - } - ,'mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.' : { - cs: 'mg/dL nebo mmol/L na jednotku inzulínu. Poměr, jak se změní glykémie po podaní jednotky inzulínu' - ,he: 'כמה סוכר בדם משתנה עם כל יחידת אינסולין ' - ,ro: 'mg/dL sau mmol/L pentru 1U insulină. Cât de mult influențează glicemia o corecție de o unitate de insulină.' - ,fr: 'mg/dL ou mmol/l par unité d\'insuline. Le rapport représentant la modification de la glycémie résultant de l\'administration d\'une unité d\'insuline.' - ,el: 'mg/dl ή mmol/L ανά μονάδα U ινσουλίνης. Το πόσες μονάδες ρίχνει τη γλυκόζη αίματος μία μονάδα U ινσουλίνης' - ,de: 'mg/dL oder mmol/L pro Einheit Insulin. Verhältnis von BG-Veränderung je Einheit Korrekturinsulin.' - ,es: 'mg/dl o mmol/L por unidad Insulina. La relación de la caída de glucosa y cada unidad de insulina de corrección administrada.' - ,sv: 'mg/dl eller mmol per enhet insulin. Hur varje enhet insulin sänker blodsockret' - ,dk: 'mg/dl eller mmol per enhed insulin. Beskriver hvor mange mmol eller mg/dl blodsukkeret sænkes per enhed insulin (Insulinfølsomheden)' - ,nb: 'mg/dl eller mmol/L per enhet insulin. Beskriver hvor mye blodsukkeret senkes per enhet insulin.' - ,fi: 'mg/dL tai mmol/L / 1 yksikkö insuliinia. Suhde, joka kertoo montako yksikköä verensokeria yksi yksikkö insuliinia laskee.' - ,bg: 'мг/дл или ммол към 1 единица инсулин. Съотношението как се променя кръвната захар със всяка единица инсулинова корекция' - ,hr: 'md/dL ili mmol/L po jedinici inzulina. Omjer koliko se GUK mijenja sa jednom jedinicom korekcije inzulina.' - ,pl: 'mg/dl lub mmol/L na 1j insuliny. Współczynnik obniżenia poziomu glukozy przez 1j insuliny' - ,pt: 'mg/dL ou mmol/L por unidade de insulina. A razão entre queda glicêmica e cada unidade de insulina de correção administrada.' - ,ru: 'мг/дл или ммол/л на единицу инсулина. Насколько меняется СК с каждой единицей коррегирующего инсулина' - ,sk: 'mg/dL alebo mmol/L na jednotku inzulínu. Pomer udáva o koľko sa zmení hodnota glykémie po podaní jednotky inzulínu.' - ,nl: 'mg/dL of mmol/L per E insuline. Ratio daling BG waarde per eenheid correctie' - ,ko: '인슐린 단위당 mg/dL 또는 mmol/L. 인슐린 단위당 얼마나 많은 혈당 변화가 있는지의 비율을 나타냅니다.' - ,it: 'mg/dL o mmol/L per U insulina. Il rapporto di quanto la glicemia varia per ogni U di correzione insulinica.' - ,tr: 'Ünite insülin başına mg/dL veya mmol/L. Her bir Ünite düzeltme insülin ile KŞ\'nin ne kadar değiştiğini gösteren orandır.' - ,zh_cn: 'mg/dL或mmol/L每单位胰岛素。每单位输入胰岛素导致血糖变化的比例' - ,hu: 'mg/dL vagy mmol/L per inzulin egység. Az aránya annak hogy mennyire változik a cukorszint bizonyos egység inzulintól' - } - ,'Carbs activity / absorption rate' : { - cs: 'Rychlost absorbce sacharidů' - ,he: 'פעילות פחמימות / קצב קליטה ' - ,ro: 'Rata de absorbție' - ,el: 'Ρυθμός απορρόφησης υδατανθράκων' - ,fr: 'Activité glucidique / vitesse d\'absorption' - ,de: 'Kohlenhydrataktivität / Aufnahme Kohlenhydrate' - ,es: 'Actividad de carbohidratos / tasa de absorción' - ,sv: 'Kolhydratstid' - ,dk: 'Kulhydrattid / optagelsestid' - ,nb: 'Karbohydrattid' - ,fi: 'Hiilihydraattiaktiivisuus / imeytymisnopeus' - ,bg: 'Активност на въглехидратите / време за абсорбиране' - ,hr: 'UGH aktivnost / omjer apsorpcije' - ,pl: 'Aktywność węglowodanów / współczynnik absorpcji' - ,pt: 'Atividade dos carboidratos / taxa de absorção' - ,ru: 'Активность углеводов / скорость усвоения' - ,sk: 'Rýchlosť vstrebávania sacharidov' - ,nl: 'Koolhydraat opname snelheid' - ,ko: '활성 탄수화물/흡수율' - ,it: 'Attività carboidrati / Velocità di assorbimento' - ,tr: 'Karbonhidrat aktivitesi / emilim oranı' - ,zh_cn: '碳水化合物活性/吸收率' - ,hu: 'Szénhidrátok felszívódásának gyorsasága' - } - ,'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).' : { - cs: 'gramy za jednotku času. Reprezentuje jak změnu COB za jednoku času, tak množství sacharidů, které se za tu dobu projevily. Křivka absorbce sacharidů je mnohem méně pochopitelná než IOB, ale může být aproximována počáteční pauzou následovanou konstantní hodnotou absorbce (g/hod).' - ,he: 'גרם ליחידת זמן. מייצג הן את השינוי בפחמימות ליחידת זמן והן את כמות הפחמימות אשר אמורות להיכנס לתוקף במהלך אותה תקופה. ספיגת הפחמימות / פעילות הם פחות מובן מאשר פעילות האינסולין, אך ניתן להתקרב באמצעות עיכוב ראשוני ואחריו שיעור קבוע של קליטה (g / hr) ' - ,el: 'Γραμμάρια ανά μονάδα χρόνου. Αναπαριστά τόσο την μεταβολή του COB στη μονάδα του χρόνου. Οι καμπύλες της απορρόφησης υδατανθράκων και της άσκησης δεν έχουν κατανοηθεί πλήρως από την επιστημονική κοινότητα, αλλά μπορούν να προσεγγιστούν βάζοντας μία αρχική καθυστέρηση ακολουθούμενη από έναν σταθερό ρυθμό απορρόφησης (g/hr).' - ,fr: 'grammes par unité de temps. Représente l\'augmentation de COB par unité de temps et la quantité de glucides agissant durant cette période. L\'absorption des glucides est imprécise et est évaluée en moyenne. L\'unité est grammes par heure (g/h).' - ,ro: 'grame pe unitatea de timp. Reprezintă atât schimbarea COB pe unitatea de timp, cât și cantitatea de carbohidrați care ar influența în perioada de timp. Graficele ratei de absorbție sunt mai puțin înțelese decât senzitivitatea la insulină, dar se poate aproxima folosind o întârziere implicită și apoi o rată constantă de aborbție (g/h).' - ,sv: 'gram per tidsenhet. Representerar både ändring i aktiva kolhydrater per tidsenhet som mängden kolhydrater som tas upp under denna tid. Kolhydratsupptag / aktivitetskurvor är svårare att förutspå än aktivt insulin men kan beräknas genom att använda en startfördröjning följd av en konstant absorbtionsgrad (g/timme) ' - ,dk: 'gram per tidsenhed. Repræsentere både ændring i aktive kulhydrater per tidsenhed, samt mængden af kulhydrater der indtages i dette tidsrum. Kulhydratsoptag / aktivitetskurver er svære at forudse i forhold til aktiv insulin, men man kan lave en tilnærmet beregning, ved at inkludere en forsinkelse i beregningen, sammen med en konstant absorberingstid (g/time).' - ,de: 'Gramm pro Zeiteinheit. Bedeutet sowohl die Änderung in COB je Zeiteinheit, als auch die Menge an Kohlenhydraten die über diese Zeit wirken sollten. Kohlenhydrat-Absorption / Aktivitätskurven werden weniger genau verstanden als Insulinaktivität, aber sie können angenähert werden indem eine Anfangsverzögerung mit konstanter Aufnahme (g/Std.) verwendet wird.' - ,es: 'gramos por unidad de tiempo. Representa tanto el cambio en carbohidratos activos por unidad de tiempo como la cantidad de carbohidratos absorbidos durante este tiempo. Las curvas de captación / actividad de carbohidratos son más difíciles de predecir que la insulina activa, pero se pueden calcular utilizando un retraso de inicio seguido de una tasa de absorción constante (gr/h)' - ,nb: 'gram per tidsenhet. Representerer både endringen i COB per tidsenhet, såvel som mengden av karbohydrater som blir tatt opp i løpet av den tiden. Carb absorpsjon / virkningskurver er mindre forstått enn insulinaktivitet, men kan tilnærmes ved hjelp av en forsinkelse fulgt av en konstant hastighet av absorpsjon ( g / time ) .' - ,fi: 'grammaa / aika. Kertoo tyypillisen nopeuden, jolla hiilihydraatit imeytyvät syömisen jälkeen. Imeytyminen tunnetaan jokseenkin huonosti, mutta voidaan arvioida keskimääräisesti. Yksikkönä grammaa tunnissa (g/h).' - ,bg: 'грам за единица време. Представлява както промяната в COB за единица време, така и количеството ВХ които биха се усвоили за това време.' - ,hr: 'grama po jedinici vremena. Predstavlja promjenu aktivnih UGH u jedinici vremena, kao i količinu UGH koja bi trebala utjecati kroz to vrijeme.' - ,pl: 'g na jednostkę czasu. Odzwierciedla zmianę COB na jednostkę czasu oraz ilość węglowodanów mających przynieść efekt w czasie. Krzywe absorpcji / aktywnosci węglowodanów są mniej poznane niż aktywności insuliny ale mogą być oszacowane przez ocenę opóźnienia wchłaniania przy stałym współczynniku absorpcji (g/h).' - ,pt: 'Gramas por unidade de tempo. Representa a mudança em COB por unidade de tempo, bem como a quantidade de carboidratos que deve ter efeito durante esse período de tempo. Absorção de carboidrato / curvas de atividade são menos conhecidas que atividade de insulina, mas podem ser aproximadas usando um atraso inicial seguido de uma taxa de absorção constante (g/h). ' - ,ru: 'грамм на ед времени. Представляет изменение кол-ва углеводов в организме (COB)за единицу времени a также количество активных углеводов' - ,sk: 'gramy za jednotku času. Reprezentuje súčasne zmenu COB za jednotku času, ako aj množstvo sacharidov ktoré sa za tú dobu prejavili. Krivka vstrebávania sacharidov je omnoho menej pochopiteľná ako pôsobenie inzulínu (IOB), ale môže byť približne s použitím počiatočného oneskorenia a následne s konštantným vstrebávaním (g/hod). ' - ,ko: '단위 시간당 그램. 시간당 작용하는 탄수화물의 총량 뿐 아니라 시간 단위당 COB의 변화를 나타냅니다. 탄수화물 흡수율/활성도 곡선은 인슐린 활성도보다 이해가 잘 되지는 않지만 지속적인 흡수율(g/hr)에 따른 초기 지연을 사용하여 근사치를 구할 수 있습니다.' - ,it: 'grammi per unità di tempo. Rappresentano sia il cambio di COB per unità di tempo, sia la quantità di carboidrati che faranno effetto nel tempo. Assorbimento di carboidrati / curva di attività sono meno conosciute rispetto all\'attività insulinica, ma possono essere approssimate usando un ritardo iniziale seguito da un rapporto costante di assorbimento (g/hr).' - ,tr: 'Ur birim zaman başına gram. Birim zamanda (COB) Aktif Krabonhidratdaki değişimin yanı sıra o zaman üzerinde etki etmesi gereken karbonhidrat miktarını ifade eder. Karbonhidrat emme/aktivite eğrileri, insülin aktivitesinden daha zor anlaşılmaktadır, ancak bir başlangıç gecikmesi ve ardından sabit bir emilim oranı (g/hr) kullanılarak yaklaşık olarak tahmin edilebilmektedir.' - ,zh_cn: '克每单位时间。表示每单位时间COB(活性碳水化合物)的变化,以及在该时间应该生效的碳水化合物的量。碳水化合物活性/吸收曲线比胰岛素活性难理解,但可以使用初始延迟,接着恒定吸收速率(克/小时)来近似模拟。' - ,nl: 'grammen per tijdseenheid. Geeft de wijzigingen in COB per tijdseenheid alsookde hoeveelheid KH dat impact zou moeten hebben over deze tijdspanne. KH absorbtie / activiteits curveszijn minder eenvoudig uitzetbaar, maar kunnen geschat worden door gebruik te maken van een startvertreging en daarna een constante curve van absorbtie (g/u).' - ,hu: 'gramm per idő egység. Kifejezi a COB változását es a szénhidrátok felszívódását bizonyos idő elteltével. A szénhidrát felszívódásának tengelye nehezebben értelmezhető mint az inzulin aktivitás (IOB), de hasonló lehet a kezdeti késedelemhez és a felszívódáshoz (g/óra). ' - } - ,'Basal rates [unit/hour]' : { - cs: 'Bazály [U/hod].' - ,he: 'קצב בסיסי (יחידה לשעה) ' - ,ro: 'Rata bazală [unitate/oră]' - ,el: 'Ρυθμός Βασικ΄ς ινσουλίνης [U/hour]' - ,de: 'Basalraten [Einheit/h]' - ,dk: 'Basal [enhed/t]' - ,es: 'Tasas basales [Unidad/hora]' - ,fr: 'Débit basal (Unités/ heure)' - ,sv: 'Basal [enhet/t]' - ,nb: 'Basal [enhet/time]' - ,fi: 'Basaali [yksikköä/tunti]' - ,bg: 'Базална стойност [единица/час]' - ,hr: 'Bazali [jedinica/sat]' - ,pl: 'Dawka podstawowa [j/h]' - ,pt: 'Taxas de basal [unidades/hora]' - ,ru: 'Базал [unit/hour]' - ,sk: 'Bazál [U/hod]' - ,nl: 'Basaal snelheid [eenheden/uur]' - ,ko: 'Basal 비율[unit/hour]' - ,it: 'Basale [unità/ora]' - ,tr: 'Bazal oranı [ünite/saat]' - ,zh_cn: '基础率 [U/小时]' - ,hu: 'Bazál [egység/óra]' - } - ,'Target BG range [mg/dL,mmol/L]' : { - cs: 'Cílový rozsah glykémií [mg/dL,mmol/L]' - ,he: 'יעד טווח גלוקוז בדם ' - ,ro: 'Intervalul țintă al glicemiei [mg/dL, mmol/L]' - ,el: 'Στόχος Γλυκόζης Αίματος [mg/dl , mmol/l]' - ,de: 'Blutzucker-Zielbereich [mg/dL, mmol/L]' - ,dk: 'Ønsket blodsukkerinterval [mg/dl,mmol]' - ,es: 'Intervalo glucemia dentro del objetivo [mg/dL,mmol/L]' - ,fr: 'Cible d\'intervalle de glycémie' - ,sv: 'Önskvärt blodsockerintervall [mg/dl,mmol]' - ,nb: 'Ønsket blodsukkerintervall [mg/dl, mmmol/L]' - ,fi: 'Tavoitealue [mg/dL tai mmol/L]' - ,bg: 'Целеви диапазон на КЗ [мг/дл , ммол]' - ,hr: 'Ciljani raspon GUK [mg/dL,mmol/L]' - ,pl: 'Docelowy przedział glikemii [mg/dl, mmol/L])' - ,pt: 'Meta de glicemia [mg/dL, mmol/L]' - ,ru: 'Целевой диапазон СК [mg/dL,mmol/L]' - ,sk: 'Rozsah cieľovej glykémie [mg/dL,mmol/L]' - ,nl: 'Doel BG waarde in [mg/dl,mmol/L' - ,ko: '목표 혈당 범위 [mg/dL,mmol/L]' - ,it: 'Obiettivo d\'intervallo glicemico [mg/dL,mmol/L]' - ,tr: 'Hedef KŞ aralığı [mg / dL, mmol / L]' - ,zh_cn: '目标血糖范围 [mg/dL,mmol/L]' - ,hu: 'Cukorszint választott tartomány [mg/dL,mmol/L]' - } - ,'Start of record validity' : { - cs: 'Začátek platnosti záznamu' - ,he: 'תחילת תוקף הרשומה ' - ,ro: 'De când este valabilă înregistrarea' - ,fr: 'Début de validité des données' - ,el: 'Ισχύει από' - ,sv: 'Starttid för händelse' - ,de: 'Beginn der Aufzeichnungsgültigkeit' - ,dk: 'Starttid for gyldighed' - ,es: 'Inicio de validez de datos' - ,nb: 'Starttidspunkt for gyldighet' - ,fi: 'Merkinnän alkupäivämäärä' - ,bg: 'Начало на записа' - ,hr: 'Trenutak važenja zapisa' - ,pl: 'Początek ważnych rekordów' - ,pt: 'Início da validade dos dados' - ,ru: 'Начало валидности записей' - ,sk: 'Začiatok platnosti záznamu' - ,nl: 'Start geldigheid' - ,ko: '기록 유효기간의 시작일' - ,it: 'Inizio di validità del dato' - ,tr: 'Kayıt geçerliliği başlangıcı' - ,zh_cn: '有效记录开始' - ,hu: 'Bejegyzés kezdetének érvényessége' - } - ,'Icicle' : { - cs: 'Rampouch' - ,he: 'קרחון ' - ,it: 'Inverso' - ,fr: 'Stalactite' - ,de: 'Eiszapfen' - ,dk: 'Istap' - ,es: 'Inverso' - ,ro: 'Țurțure' - ,sv: 'Istapp' - ,nb: 'Istapp' - ,fi: 'Jääpuikko' - ,bg: 'Висящ' - ,hr: 'Padajuće' - ,pl: 'Odwrotność' - ,pt: 'Inverso' - ,nl: 'Ijspegel' - ,ru: 'Силуэт сосульки' - ,sk: 'Inverzne' - ,ko: '고드름 방향' - ,tr: 'Buzsaçağı' //Sarkıt - ,zh_cn: 'Icicle' - ,zh_tw: 'Icicle' - ,hu: 'Inverzió' - } - ,'Render Basal' : { - cs: 'Zobrazení bazálu' - ,he: 'הראה רמה בזלית ' - ,it: 'Grafico Basale' - ,fr: 'Afficher le débit basal' - ,el: 'Απεικόνιση Βασικής Ινσουλίνης' - ,ro: 'Afișează bazala' - ,sv: 'Generera Basal' - ,de: 'Basalraten-Darstellung' - ,dk: 'Generer Basal' - ,es: 'Representación Basal' - ,nb: 'Basalgraf' - ,fi: 'Näytä basaali' - ,bg: 'Базал' - ,hr: 'Iscrtaj bazale' - ,pl: 'Zmiana dawki bazowej' - ,pt: 'Renderizar basal' - ,ru: 'Отображать базал' - ,sk: 'Zobrazenie bazálu' - ,nl: 'Toon basaal' - ,ko: 'Basal 사용하기' - ,tr: 'Bazal Grafik' - ,zh_cn: '使用基础率' - ,zh_tw: '使用基礎率' - ,hu: 'Bazál megjelenítése' - } - ,'Profile used' : { - cs: 'Použitý profil' - ,he: 'פרופיל בשימוש ' - ,ro: 'Profil folosit' - ,de: 'Verwendetes Profil' - ,dk: 'Profil brugt' - ,es: 'Perfil utilizado' - ,fr: 'Profil utilisé' - ,el: 'Προφίλ σε χρήση' - ,sv: 'Vald profil' - ,nb: 'Brukt profil' - ,fi: 'Käytetty profiili' - ,bg: 'Използван профил' - ,hr: 'Korišteni profil' - ,pl: 'Profil wykorzystywany' - ,pt: 'Perfil utilizado' - ,ru: 'Используемый профиль' - ,sk: 'Použitý profil' - ,nl: 'Gebruikt profiel' - ,ko: '프로파일이 사용됨' - ,it: 'Profilo usato' - ,tr: 'Kullanılan profil' - ,zh_cn: '配置文件已使用' - ,hu: 'Használatban lévő profil' - } - ,'Calculation is in target range.' : { - cs: 'Kalkulace je v cílovém rozsahu.' - ,he: 'חישוב הוא בטווח היעד ' - ,ro: 'Calculul dă o valoare în intervalul țintă.' - ,fr: 'La valeur calculée est dans l\'intervalle cible' - ,el: 'Ο υπολογισμός είναι εντός στόχου' - ,de: 'Berechnung ist innerhalb des Zielbereichs' - ,dk: 'Beregning er i målområdet' - ,es: 'El cálculo está dentro del rango objetivo' - ,sv: 'Inom intervallområde' - ,nb: 'Innenfor målområde' - ,fi: 'Laskettu arvo on tavoitealueella' - ,bg: 'Калкулацията е в граници' - ,hr: 'Izračun je u ciljanom rasponu.' - ,pl: 'Obliczenie mieści się w zakresie docelowym' - ,pt: 'O cálculo está dentro da meta' - ,ru: 'Расчет в целевом диапазоне' - ,sk: 'Výpočet je v cieľovom rozsahu.' - ,nl: 'Berekening valt binnen doelwaards' - ,ko: '계산은 목표 범위 안에 있습니다.' - ,it: 'Calcolo all\'interno dell\'intervallo' - ,tr: 'Hesaplama hedef aralıktadır.' - ,zh_cn: '预计在目标范围内' - ,hu: 'A számítás a cél tartományban található' - } - ,'Loading profile records ...' : { - cs: 'Nahrávám profily ...' - ,he: 'טוען רשומות פרופיל ' - ,nb: 'Leser profiler' - ,fr: 'Chargement des profils...' - ,el: 'Φόρτωση δεδομένων προφίλ' - ,de: 'Lade Profilaufzeichnungen ...' - ,dk: 'Henter profildata ...' - ,es: 'Cargando datos perfil ....' - ,ro: 'Se încarcă datele profilului...' - ,sv: 'Laddar profildata ...' - ,fi: 'Ladataan profiileja ...' - ,bg: 'Зареждане на профили' - ,hr: 'Učitavanje profila...' - ,pl: 'Wczytywanie rekordów profilu' - ,pt: 'Carregando dados do perfil ...' - ,ru: 'Загрузка записей профиля' - ,sk: 'Nahrávam záznamy profilov' - ,nl: 'Laden profiel gegevens' - ,ko: '프로파일 기록 로딩' - ,it: 'Caricamento dati del profilo ...' - ,tr: 'Profil kayıtları yükleniyor ...' - ,zh_cn: '载入配置文件记录...' - ,hu: 'Profil bejegyzéseinek betöltése...' - } - ,'Values loaded.' : { - cs: 'Data nahrána.' - ,he: 'ערכים נטענו ' - ,nb: 'Verdier lastet' - ,fr: 'Valeurs chargées' - ,el: 'Δεδομένα φορτώθηκαν' - ,de: 'Werte geladen.' - ,dk: 'Værdier hentes' - ,es: 'Valores cargados' - ,ro: 'Valorile au fost încărcate.' - ,sv: 'Värden laddas' - ,fi: 'Arvot ladattu' - ,bg: 'Стойностите за заредени.' - ,hr: 'Vrijednosti učitane.' - ,pl: 'Wartości wczytane.' - ,pt: 'Valores carregados.' - ,ru: 'Данные загружены' - ,sk: 'Hodnoty načítané.' - ,nl: 'Gegevens geladen' - ,ko: '값이 로드됨' - ,it: 'Valori caricati.' - ,tr: 'Değerler yüklendi.' - ,zh_cn: '已载入数值' - ,hu: 'Értékek betöltése.' - } - ,'Default values used.' : { - cs: 'Použity výchozí hodnoty.' - ,he: 'משתמשים בערכי בררת המחדל ' - ,nb: 'Standardverdier brukt' - ,el: 'Χρήση προκαθορισμένων τιμών' - ,fr: 'Valeurs par défault utilisées' - ,de: 'Standardwerte werden verwendet.' - ,dk: 'Standardværdier brugt' - ,es: 'Se usan valores predeterminados' - ,ro: 'Se folosesc valorile implicite.' - ,sv: 'Standardvärden valda' - ,fi: 'Oletusarvot ladattu' - ,bg: 'Стойностите по подразбиране са използвани.' - ,hr: 'Koriste se zadane vrijednosti.' - ,pl: 'Używane domyślne wartości.' - ,pt: 'Valores padrão em uso.' - ,ru: 'Используются значения по умолчанию' - ,sk: 'Použité východzie hodnoty.' - ,nl: 'Standaard waardes gebruikt' - ,ko: '초기 설정 값이 사용됨' - ,it: 'Valori standard usati.' - ,tr: 'Varsayılan değerler kullanıldı.' - ,zh_cn: '已使用默认值' - ,hu: 'Alap értékek használva.' - } - ,'Error. Default values used.' : { - cs: 'CHYBA: Použity výchozí hodnoty.' - ,he: 'משתמשים בערכי בררת המחדל שגיאה - ' - ,nb: 'Feil. Standardverdier brukt.' - ,fr: 'Erreur! Valeurs par défault utilisées.' - ,el: 'Σφάλμα: Χρήση προκαθορισμένων τιμών' - ,de: 'Fehler. Standardwerte werden verwendet.' - ,dk: 'Fejl. Standardværdier brugt.' - ,es: 'Error. Se usan valores predeterminados.' - ,ro: 'Eroare. Se folosesc valorile implicite.' - ,sv: 'Error. Standardvärden valda.' - ,fi: 'Virhe! Käytetään oletusarvoja.' - ,bg: 'Грешка. Стойностите по подразбиране са използвани.' - ,hr: 'Pogreška. Koristiti će se zadane vrijednosti.' - ,pl: 'Błąd. Używane domyślne wartości.' - ,pt: 'Erro. Valores padrão em uso.' - ,ru: 'Ошибка. Используются значения по умолчанию' - ,sk: 'CHYBA! Použité východzie hodnoty.' - ,nl: 'FOUT: Standaard waardes gebruikt' - ,ko: '에러. 초기 설정 값이 사용됨' - ,it: 'Errore. Valori standard usati.' - ,tr: 'Hata. Varsayılan değerler kullanıldı.' - ,zh_cn: '错误,已使用默认值' - ,hu: 'Hiba: Alap értékek használva' - } - ,'Time ranges of target_low and target_high don\'t match. Values are restored to defaults.' : { - cs: 'Rozsahy časů pro limity glykémií si neodpovídají. Budou nastaveny výchozí hodnoty.' - ,he: 'טווחי יעד נמוכים ויעדים גבוהים אינם תואמים. הערכים משוחזרים לברירות המחדל ' - ,nb: 'Tidsintervall for målområde lav og høy stemmer ikke. Standardverdier er brukt.' - ,fr: 'Les intervalles de temps pour la cible glycémique supérieure et inférieure diffèrent. Les valeurs par défault sont restaurées.' - ,el: 'Το χρονικό διάστημα του χαμηλού ορίου/στόχου και του υψηλού, δεν συμπίπτουν. Γίνεται επαναφορά στις προκαθορισμένες τιμές.' - ,de: 'Zeitspanne vom untersten und obersten Wert wird nicht berücksichtigt. Werte auf Standard zurückgesetzt.' - ,dk: 'Tidsinterval for målområde lav og høj stemmer ikke overens. Standardværdier er brugt' - ,es: 'Los marcos temporales para objetivo inferior y objetivo superior no coinciden. Los valores predeterminados son usados.' - ,ro: 'Intervalele temporale pentru țintă_inferioară și țintă_superioară nu se potrivesc. Se folosesc valorile implicite.' - ,sv: 'Tidsintervall för målområde låg och hög stämmer ej' - ,fi: 'Matalan ja korkean tavoitteen aikarajat eivät täsmää. Arvot on vaihdettu oletuksiin.' - ,bg: 'Времевите интервали за долна граница на кз и горна граница на кз не съвпадат. Стойностите са възстановени по подразбиране.' - ,hr: 'Vremenski rasponi donje ciljane i gornje ciljane vrijednosti nisu ispravni. Vrijednosti vraćene na zadano.' - ,pl: 'Zakres czasu w docelowo niskim i wysokim przedziale nie są dopasowane. Przywrócono wartości domyślne' - ,pt: 'Os intervalos de tempo da meta inferior e da meta superior não conferem. Os valores padrão serão restaurados.' - ,ru: 'Диапазоны времени нижних и верхних целевых значений не совпадают. Восстановлены значения по умолчанию' - ,sk: 'Časové rozsahy pre cieľové glykémie sa nezhodujú. Hodnoty nastavené na východzie.' - ,ko: '설정한 저혈당과 고혈당의 시간 범위와 일치하지 않습니다. 값은 초기 설정값으로 다시 저장 될 것입니다.' - ,it: 'Intervalli di tempo della glicemia obiettivo inferiore e superiore non corretti. Valori ripristinati a quelli standard.' - ,nl: 'Tijdspanne van laag en hoog doel zijn niet correct. Standaard waarden worden gebruikt' - ,tr: 'Target_low ve target_high öğelerinin zaman aralıkları eşleşmiyor. Değerler varsayılanlara geri yüklendi.' - ,zh_cn: '时间范围内的目标高低血糖值不匹配。已恢复使用默认值。' - ,hu: 'A cukorszint-cél időtartománya nem egyezik. Visszaállítás az alapértékekre' - } - ,'Valid from:' : { - cs: 'Platné od:' - ,he: 'בתוקף מ: ' - ,de: 'Gültig ab:' - ,dk: 'Gyldig fra:' - ,es: 'Válido desde:' - ,fr: 'Valide à partir de:' - ,nb: 'Gyldig fra:' - ,el: 'Ισχύει από:' - ,ro: 'Valid de la:' - ,sv: 'Giltig från:' - ,fi: 'Alkaen:' - ,bg: 'Валиден от' - ,hr: 'Vrijedi od:' - ,pl: 'Ważne od:' - ,pt: 'Válido desde:' - ,ru: 'Действительно с' - ,sk: 'Platné od:' - ,nl: 'Geldig van:' - ,ko: '유효' - ,it: 'Valido da:' - ,tr: 'Tarihinden itibaren geçerli' - ,zh_cn: '生效从:' - ,hu: 'Érvényes:' - } - ,'Save current record before switching to new?' : { - cs: 'Uložit současný záznam před přepnutím na nový?' - ,he: 'שמור את הרשומה הנוכחית לפני המעבר ל חדש? ' - ,nb: 'Lagre før bytte til ny?' - ,fr: 'Sauvegarder cetter entrée avant de procéder à l\'entrée suivante?' - ,el: 'Αποθήκευση αλλαγών πριν γίνει εναλλαγή στο νέο προφίλ? ' - ,de: 'Aktuellen Datensatz speichern?' - ,dk: 'Gem nuværende data inden der skiftes til nyt?' - ,es: 'Grabar datos actuales antes cambiar a uno nuevo?' - ,ro: 'Salvez valoarea curentă înainte de a trece la una nouă?' - ,sv: 'Spara före byte till nytt?' - ,fi: 'Tallenna nykyinen merkintä ennen vaihtamista uuteen?' - ,bg: 'Запазване текущият запис преди превключване на нов?' - ,hr: 'Spremi trenutni zapis prije prelaska na novi?' - ,pl: 'Nagrać bieżący rekord przed przełączeniem na nowy?' - ,pt: 'Salvar os dados atuais antes de mudar para um novo?' - ,ru: 'Сохранить текущие записи перед переходом к новым?' - ,sk: 'Uložiť súčastný záznam pred prepnutím na nový?' - ,nl: 'Opslaan voor verder te gaan?' - ,ko: '새 데이터로 변환하기 전에 현재의 기록을 저장하겠습니까?' - ,it: 'Salvare il dato corrente prima di passare ad uno nuovo?' - ,tr: 'Yenisine geçmeden önce mevcut kaydı kaydet' - ,zh_cn: '切换至新记录前保存当前记录?' - ,hu: 'Elmentsem az aktuális adatokat mielőtt újra válunk?' - } - ,'Add new interval before' : { - cs: 'Přidat nový interval před' - ,he: 'הוסף מרווח חדש לפני ' - ,nb: 'Legg til nytt intervall før' - ,fr: 'Ajouter un intervalle de temps avant' - ,el: 'Προσθήκη νέου διαστήματος, πριν' - ,de: 'Neues Intervall vorher hinzufügen' - ,dk: 'Tilføj nyt interval før' - ,es: 'Agregar nuevo intervalo antes' - ,ro: 'Adaugă un nou interval înainte' - ,sv: 'Lägg till nytt intervall före' - ,fi: 'Lisää uusi aikaväli ennen' - ,bg: 'Добави интервал преди' - ,hr: 'Dodaj novi interval iznad' - ,pl: 'Dodaj nowy przedział przed' - ,pt: 'Adicionar novo intervalo antes de' - ,ru: 'Добавить интервал перед' - ,sk: 'Pridať nový interval pred' - ,nl: 'Voeg interval toe voor' - ,ko: '새로운 구간을 추가하세요' - ,it: 'Aggiungere prima un nuovo intervallo' - ,tr: 'Daha önce yeni aralık ekle' - ,zh_cn: '在此前新增区间' - ,hu: 'Új intervallum hozzáadása elötte' - } - ,'Delete interval' : { - cs: 'Smazat interval' - ,he: 'בטל מרווח ' - ,nb: 'Slett intervall' - ,fr: 'Effacer l\'intervalle' - ,el: 'Διαγραφή διαστήματος' - ,de: 'Intervall löschen' - ,dk: 'Slet interval' - ,es: 'Borrar intervalo' - ,ro: 'Șterge interval' - ,sv: 'Ta bort intervall' - ,fi: 'Poista aikaväli' - ,bg: 'Изтрий интервал' - ,hr: 'Obriši interval' - ,pl: 'Usuń przedział' - ,pt: 'Apagar intervalo' - ,ru: 'Удалить интервал' - ,sk: 'Zmazať interval' - ,nl: 'Verwijder interval' - ,ko: '구간을 지우세요.' - ,it: 'Elimina intervallo' - ,tr: 'Aralığı sil' - ,zh_cn: '删除区间' - ,hu: 'Intervallum törlése' - } - ,'I:C' : { - cs: 'I:C' - ,he: 'יחס אינסולין לפחמימות ' - ,nb: 'IK' - ,fr: 'I:C' - ,ro: 'ICR' - ,de: 'IE:KH' - ,dk: 'I:C' - ,es: 'I:C' - ,sv: 'I:C' - ,fi: 'I:HH' - ,bg: 'И:ВХ' - ,hr: 'I:C' - ,pl: 'I:C' - ,pt: 'I:C' - ,ru: 'Инс:Углев' - ,sk: 'I:C' - ,nl: 'I:C' - ,ko: 'I:C' - ,it: 'I:C' - ,tr: 'İ:K' - ,zh_cn: 'ICR' - ,hu: 'I:C' - } - ,'ISF' : { - cs: 'ISF' - ,he: 'ISF ' - ,nb: 'ISF' - ,ro: 'ISF' - ,de: 'ISF' - ,dk: 'ISF' - ,es: 'ISF' - ,fr: 'ISF' - ,sv: 'ISF' - ,fi: 'ISF' - ,bg: 'Инсулинова чувствителност' - ,hr: 'ISF' - ,pl: 'ISF' - ,pt: 'ISF' - ,nl: 'ISF' - ,ru: 'Чувств к инс ISF' - ,sk: 'ISF' - ,ko: 'ISF' - ,it: 'ISF' - ,tr: 'ISF' - ,zh_cn: 'ISF' - ,hu: 'ISF' - } - ,'Combo Bolus' : { - cs: 'Kombinovaný bolus' - ,he: 'בולוס קומבו ' - ,pl: 'Bolus złożony' - ,de: 'Verzögerter Bolus' - ,dk: 'Kombineret bolus' - ,es: 'Combo-Bolo' - ,fr: 'Bolus Duo/Combo' - ,el: '' - ,ro: 'Bolus extins' - ,sv: 'Combo-bolus' - ,nb: 'Kombinasjonsbolus' - ,bg: 'Двоен болус' - ,hr: 'Dual bolus' - ,fi: 'Yhdistelmäbolus' - ,pt: 'Bolus duplo' - ,ru: 'Комбинир болюс' - ,sk: 'Kombinovaný bolus' - ,nl: 'Pizza Bolus' - ,ko: 'Combo Bolus' - ,it: 'Combo Bolo' - ,tr: 'Kombo (Yayma) Bolus' - ,zh_cn: '双波' - ,hu: 'Kombinált bólus' - } - ,'Difference' : { - cs: 'Rozdíl' - ,he: 'הבדל ' - ,de: 'Unterschied' - ,dk: 'Forskel' - ,es: 'Diferencia' - ,fr: 'Différence' - ,ro: 'Diferență' - ,el: 'Διαφορά' - ,sv: 'Skillnad' - ,nb: 'Forskjell' - ,bg: 'Разлика' - ,hr: 'Razlika' - ,fi: 'Ero' - ,ru: 'Разность' - ,sk: 'Rozdiel' - ,pl: 'Różnica' - ,pt: 'Diferença' - ,nl: 'Verschil' - ,ko: '차이' - ,it: 'Differenza' - ,tr: 'fark' - ,zh_cn: '差别' - ,hu: 'Különbség' - } - ,'New time' : { - cs: 'Nový čas' - ,he: 'זמן חדש ' - ,de: 'Neue Zeit' - ,dk: 'Ny tid' - ,es: 'Nueva hora' - ,fr: 'Nouveau temps' - ,ro: 'Oră nouă' - ,el: 'Νέα ώρα' - ,sv: 'Ny tid' - ,nb: 'Ny tid' - ,bg: 'Ново време' - ,hr: 'Novo vrijeme' - ,fi: 'Uusi aika' - ,ru: 'Новое время' - ,sk: 'Nový čas' - ,pl: 'Nowy czas' - ,pt: 'Novo horário' - ,nl: 'Nieuwe tijd' - ,ko: '새로운 시간' - ,it: 'Nuovo Orario' - ,tr: 'Yeni zaman' - ,zh_cn: '新时间' - ,hu: 'Új idő:' - } - ,'Edit Mode' : { - cs: 'Editační mód' - ,he: 'מצב עריכה ' - ,ro: 'Mod editare' - ,fr: 'Mode Édition' - ,de: 'Bearbeitungsmodus' - ,dk: 'Redigerings tilstand' - ,es: 'Modo edición' - ,sv: 'Editeringsläge' - ,el: 'Λειτουργία Επεξεργασίας' - ,nb: 'Editeringsmodus' - ,bg: 'Редактиране' - ,hr: 'Uređivanje' - ,fi: 'Muokkausmoodi' - ,ru: 'Режим редактирования' - ,sk: 'Editačný mód' - ,pl: 'Tryb edycji' - ,pt: 'Modo de edição' - ,ko: '편집 모드' - ,it: 'Modalità di Modifica' - ,ja: '編集モード' - ,nl: 'Wijzigen uitvoeren' - ,tr: 'Düzenleme Modu' - ,zh_cn: '编辑模式' - ,zh_tw: '編輯模式' - ,hu: 'Szerkesztési mód' - } - ,'When enabled icon to start edit mode is visible' : { - cs: 'Pokud je povoleno, ikona pro vstup do editačního módu je zobrazena' - ,he: 'כאשר הסמל מופעל כדי להתחיל במצב עריכה גלוי ' - ,ro: 'La activare, butonul de editare este vizibil' - ,fr: 'Lorsqu\'activé, l\'icône du Mode Édition devient visible' - ,el: 'Όταν ενεργοποιηθεί, το εικονίδιο της λειτουργίας επεξεργασίας είναι ορατό' - ,de: 'Wenn aktiviert wird das Icons zum Start des Bearbeitungsmodus sichtbar' - ,dk: 'Ikon vises når redigering er aktivt' - ,es: 'Si está activado, el icono estará visible al inicio del modo de edición' - ,sv: 'Ikon visas när editeringsläge är aktivt' - ,nb: 'Ikon vises når editeringsmodus er aktivert' - ,bg: 'Когато е активно ,иконката за редактиране ще се вижда' - ,hr: 'Kada je omogućeno, mod uređivanje je omogućen' - ,fi: 'Muokkausmoodin ikoni tulee näkyviin kun laitat tämän päälle' - ,ru: 'При активации видна пиктограмма начать режим редактирования' - ,sk: 'Keď je povolený, je zobrazená ikona editačného módu' - ,pl: 'Po aktywacji, widoczne ikony, aby uruchomić tryb edycji' - ,pt: 'Quando ativado, o ícone iniciar modo de edição estará visível' - ,nl: 'Als geactiveerd is Wijzigen modus beschikbaar' - ,ko: '편집모드를 시작하기 위해 아이콘을 활성화하면 볼 수 있습니다.' - ,it: 'Quando abilitata, l\'icona della Modalità di Modifica è visibile' - ,tr: 'Etkinleştirildiğinde düzenleme modunun başında simgesi görünecektir.' - ,zh_cn: '启用后开始编辑模式图标可见' - ,zh_tw: '啟用後開始編輯模式圖標可見' - ,hu: 'Engedélyezés után a szerkesztési ikon látható' - } - ,'Operation' : { - cs: 'Operace' - ,he: 'פעולה ' - ,ro: 'Operațiune' - ,fr: 'Opération' - ,de: 'Operation' - ,dk: 'Operation' - ,es: 'Operación' - ,el: 'Λειτουργία' - ,sv: 'Operation' - ,nb: 'Operasjon' - ,bg: 'Операция' - ,hr: 'Operacija' - ,fi: 'Operaatio' - ,ru: 'Операция' - ,sk: 'Operácia' - ,pl: 'Operacja' - ,pt: 'Operação' - ,nl: 'Operatie' - ,ko: '동작' - ,it: 'Operazione' - ,tr: 'İşlem' //Operasyon - ,zh_cn: '操作' - ,hu: 'Operáció' - } - ,'Move' : { - cs: 'Přesunout' - ,he: 'הזז ' - ,ro: 'Mutați' - ,fr: 'Déplacer' - ,de: 'Verschieben' - ,dk: 'Flyt' - ,es: 'Mover' - ,el: 'Μετακίνηση' - ,sv: 'Flytta' - ,nb: 'Flytt' - ,bg: 'Премести' - ,hr: 'Pomakni' - ,fi: 'Liikuta' - ,ru: 'Переместить' - ,sk: 'Presunúť' - ,pl: 'Przesuń' - ,pt: 'Mover' - ,nl: 'Verplaats' - ,ko: '이동' - ,it: 'Muovi' - ,tr: 'Taşı' - ,zh_cn: '移动' - ,hu: 'Áthelyezés' - } - ,'Delete' : { - cs: 'Odstranit' - ,he: 'בטל ' - ,de: 'Löschen' - ,dk: 'Slet' - ,es: 'Borrar' - ,fr: 'Effacer' - ,el: 'Διαγραφή' - ,ro: 'Ștergeți' - ,sv: 'Ta bort' - ,nb: 'Slett' - ,bg: 'Изтрий' - ,hr: 'Obriši' - ,fi: 'Poista' - ,sk: 'Zmazať' - ,ru: 'Удалить' - ,pl: 'Skasuj' - ,pt: 'Apagar' - ,nl: 'Verwijder' - ,ko: '삭제' - ,it: 'Elimina' - ,ja: '削除' - ,tr: 'Sil' - ,zh_cn: '删除' - ,hu: 'Törlés' - } - ,'Move insulin' : { - cs: 'Přesunout inzulín' - ,he: 'הזז אינסולין ' - ,ro: 'Mutați insulina' - ,fr: 'Déplacer l\'insuline' - ,de: 'Insulin verschieben' - ,dk: 'Flyt insulin' - ,es: 'Mover insulina' - ,el: 'Μετακίνηση ινσουλίνης' - ,sv: 'Flytta insulin' - ,nb: 'Flytt insulin' - ,bg: 'Премести инсулин' - ,hr: 'Premjesti inzulin' - ,fi: 'Liikuta insuliinia' - ,ru: 'Переместить инсулин' - ,sk: 'Presunúť inzulín' - ,pl: 'Przesuń insulinę' - ,pt: 'Mover insulina' - ,nl: 'Verplaats insuline' - ,ko: '인슐린을 이동하세요.' - ,it: 'Muovi Insulina' - ,tr: 'İnsülini taşı' - ,zh_cn: '移动胰岛素' - ,hu: 'Inzulin áthelyezése' - } - ,'Move carbs' : { - cs: 'Přesunout sacharidy' - ,he: 'הזז פחמימות ' - ,ro: 'Mutați carbohidrații' - ,de: 'Kohlenhydrate verschieben' - ,dk: 'Flyt kulhydrater' - ,es: 'Mover carbohidratos' - ,fr: 'Déplacer les glucides' - ,el: 'Μετακίνηση υδατανθράκων' - ,sv: 'Flytta kolhydrater' - ,nb: 'Flytt karbohydrater' - ,bg: 'Премести ВХ' - ,hr: 'Premejsti UGH' - ,fi: 'Liikuta hiilihydraatteja' - ,ru: 'Переместить углеводы' - ,sk: 'Presunúť sacharidy' - ,pl: 'Przesuń węglowodany' - ,pt: 'Mover carboidratos' - ,nl: 'Verplaats KH' - ,ko: '탄수화물을 이동하세요.' - ,it: 'Muovi carboidrati' - ,tr: 'Karbonhidratları taşı' - ,zh_cn: '移动碳水' - ,hu: 'Szénhidrát áthelyezése' - } - ,'Remove insulin' : { - cs: 'Odstranit inzulín' - ,he: 'בטל אינסולין ' - ,ro: 'Ștergeți insulina' - ,de: 'Insulin löschen' - ,dk: 'Fjern insulin' - ,es: 'Eliminar insulina' - ,fr: 'Effacer l\'insuline' - ,el: 'Αφαίρεση ινσουλίνης' - ,sv: 'Ta bort insulin' - ,nb: 'Fjern insulin' - ,bg: 'Изтрий инсулин' - ,hr: 'Obriši inzulin' - ,fi: 'Poista insuliini' - ,ru: 'Удалить инсулин' - ,sk: 'Odstrániť inzulín' - ,pl: 'Usuń insulinę' - ,pt: 'Remover insulina' - ,nl: 'Verwijder insuline' - ,ko: '인슐린을 지우세요.' - ,it: 'Rimuovi insulina' - ,tr: 'İnsülini kaldır' - ,zh_cn: '去除胰岛素' - ,hu: 'Inzulin törlése' - } - ,'Remove carbs' : { - cs: 'Odstranit sacharidy' - ,he: 'בטל פחמימות ' - ,ro: 'Ștergeți carbohidrații' - ,fr: 'Effacer les glucides' - ,de: 'Kohlenhydrate löschen' - ,dk: 'Fjern kulhydrater' - ,es: 'Eliminar carbohidratos' - ,el: 'Αφαίρεση υδατανθράκων' - ,sv: 'Ta bort kolhydrater' - ,nb: 'Fjern karbohydrater' - ,bg: 'Изтрий ВХ' - ,hr: 'Obriši UGH' - ,fi: 'Poista hiilihydraatit' - ,ru: 'Удалить углеводы' - ,sk: 'Odstrániť sacharidy' - ,pl: 'Usuń węglowodany' - ,pt: 'Remover carboidratos' - ,nl: 'Verwijder KH' - ,ko: '탄수화물을 지우세요.' - ,it: 'Rimuovi carboidrati' - ,tr: 'Karbonhidratları kaldır' - ,zh_cn: '去除碳水' - ,hu: 'Szénhidrát törlése' - } - ,'Change treatment time to %1 ?' : { - cs: 'Změnit čas ošetření na %1 ?' - ,he: 'שנה זמן לטיפול ל %1 ' - ,ro: 'Schimbați ora acțiunii cu %1 ?' - ,fr: 'Modifier l\'horaire du traitment? Nouveau: %1' - ,de: 'Behandlungsdauer ändern in %1 ?' - ,dk: 'Ændre behandlingstid til %1 ?' - ,es: 'Cambiar horario tratamiento a %1 ?' - ,el: 'Αλλαγή του χρόνου της ενέργειας σε %1?' - ,sv: 'Ändra behandlingstid till %1 ?' - ,nb: 'Endre behandlingstid til %1 ?' - ,bg: 'Да променя ли времето на събитието с %1?' - ,hr: 'Promijeni vrijeme tretmana na %1?' - ,fi: 'Muuta hoidon aika? Uusi: %1' - ,ru: 'Изменить время события на %1 ?' - ,sk: 'Zmeniť čas ošetrenia na %1 ?' - ,pl: 'Zmień czas zdarzenia na %1 ?' - ,pt: 'Alterar horário do tratamento para %1 ?' - ,nl: 'Wijzig behandel tijdstip naar %1' - ,ko: '%1 treatment을 변경하세요.' - ,it: 'Cambiare tempo alla somministrazione a %1 ?' - ,tr: 'Tedavi tarihini %1 e değiştirilsin mi?' - ,zh_cn: '修改操作时间到%1?' - ,hu: 'A kezelés időpontjának áthelyezése %1?' - } - ,'Change carbs time to %1 ?' : { - cs: 'Změnit čas sacharidů na %1 ?' - ,he: 'שנה זמן פחמימות ל %1 ' - ,ro: 'Schimbați ora carbohidraților cu %1 ?' - ,de: 'Kohlenhydrat-Zeit ändern zu %1 ?' - ,dk: 'Ændre kulhydratstid til %1 ?' - ,es: 'Cambiar horario carbohidratos a %1 ?' - ,fr: 'Modifier l\'horaire des glucides? Nouveau: %1' - ,el: 'Αλλαγή του χρόνου πρόσληψης υδατανθράκων σε %1?' - ,sv: 'Ändra kolhydratstid till %1 ?' - ,nb: 'Endre karbohydrattid til %1 ?' - ,bg: 'Да променя ли времето на ВХ с %1?' - ,hr: 'Promijeni vrijeme UGH na %1?' - ,fi: 'Muuta hiilihydraattien aika? Uusi: %1' - ,ru: 'Изменить время приема углеводов на % ?' - ,sk: 'Zmeniť čas sacharidov na %1 ?' - ,pl: 'Zmień czas węglowodanów na %1 ?' - ,pt: 'Alterar horário do carboidrato para %1 ?' - ,nl: 'Wijzig KH tijdstip naar %1' - ,ko: '%1로 탄수화물 시간을 변경하세요.' - ,it: 'Cambiare durata carboidrati a %1 ?' - ,tr: 'Karbonhidrat zamanını %1 e değiştirilsin mi?' - ,zh_cn: '修改碳水时间到%1?' - ,hu: 'Szénhidrát időpontjának áthelyezése %1' - } - ,'Change insulin time to %1 ?' : { - cs: 'Změnit čas inzulínu na %1 ?' - ,he: 'שנה זמן אינסולין ל %1 ' - ,ro: 'Schimbați ora insulinei cu %1 ?' - ,el: 'Αλλαγή του χρόνου χορήγησης ινσουλίνης σε %1 ?' - ,es: 'Cambiar horario insulina a %1 ?' - ,fr: 'Modifier l\'horaire de l\'insuline? Nouveau: %1' - ,de: 'Insulinzeit ändern zu %1 ?' - ,dk: 'Ændre insulintid til %1 ?' - ,sv: 'Ändra insulintid till %1 ?' - ,nb: 'Endre insulintid til %1 ?' - ,bg: 'Да променя ли времето на инсулина с %1?' - ,hr: 'Promijeni vrijeme inzulina na %1?' - ,fi: 'Muuta insuliinin aika? Uusi: %1' - ,ru: 'Изменить время подачи инсулина на % ?' - ,sk: 'Zmeniť čas inzulínu na %1 ?' - ,pl: 'Zmień czas insuliny na %1 ?' - ,pt: 'Alterar horário da insulina para %1 ?' - ,nl: 'Wijzig insuline tijdstip naar %1' - ,ko: '%1로 인슐린 시간을 변경하세요.' - ,it: 'Cambiare durata insulina a %1 ?' - ,tr: 'İnsülin tarihini %1 e değiştirilsin mi?' // zamanı - ,zh_cn: '修改胰岛素时间到%1?' - ,hu: 'Inzulin időpont áthelyezése %1' - } - ,'Remove treatment ?' : { - cs: 'Odstranit ošetření ?' - ,he: 'בטל טיפול ' - ,ro: 'Ștergeți acțiunea?' - ,de: 'Behandlung löschen?' - ,dk: 'Fjern behandling ?' - ,es: 'Eliminar tratamiento?' - ,fr: 'Effacer le traitment?' - ,el: 'Διαγραφή ενέργειας ?' - ,sv: 'Ta bort behandling ?' - ,nb: 'Fjern behandling ?' - ,bg: 'Изтрий събитието' - ,hr: 'Obriši tretman?' - ,fi: 'Poista hoito?' - ,ru: 'Удалить событие ?' - ,sk: 'Odstrániť ošetrenie?' - ,pl: 'Usunąć wydarzenie?' - ,pt: 'Remover tratamento?' - ,nl: 'Verwijder behandeling' - ,ko: 'Treatment를 지우세요.' - ,it: 'Rimuovere somministrazione ?' - ,tr: 'Tedavi kaldırılsın mı? ' - ,zh_cn: '去除操作?' - ,hu: 'Kezelés törlése?' - } - ,'Remove insulin from treatment ?' : { - cs: 'Odstranit inzulín z ošetření ?' - ,he: 'הסר אינסולין מהטיפול? ' - ,de: 'Insulin der Behandlung löschen?' - ,dk: 'Fjern insulin fra behandling ?' - ,es: 'Eliminar insulina del tratamiento?' - ,fr: 'Effacer l\'insuline du traitement?' - ,ro: 'Ștergeți insulina din acțiune?' - ,el: 'Διαγραφή ινσουλίνης από την ενέργεια?' - ,sv: 'Ta bort insulin från behandling ?' - ,nb: 'Fjern insulin fra behandling ?' - ,bg: 'Да изтрия ли инсулина от събитието?' - ,hr: 'Obriši inzulin iz tretmana?' - ,fi: 'Poista insuliini hoidosta?' - ,ru: 'Удалить инсулин из событий ?' - ,sk: 'Odstrániť inzulín z ošetrenia?' - ,pl: 'Usunąć insulinę z wydarzenia?' - ,pt: 'Remover insulina do tratamento?' - ,nl: 'Verwijder insuline van behandeling' - ,ko: 'Treatment에서 인슐린을 지우세요.' - ,it: 'Rimuovere insulina dalla somministrazione ?' - ,tr: 'İnsülini tedaviden çıkartılsın mı?' - ,zh_cn: '从操作中去除胰岛素?' - ,hu: 'Inzulin törlése a kezelésből?' - } - ,'Remove carbs from treatment ?' : { - cs: 'Odstranit sacharidy z ošetření ?' - ,he: 'הסר פחמימות מהטיפול? ' - ,ro: 'Ștergeți carbohidrații din acțiune?' - ,de: 'Kohlenhydrate der Behandlung löschen?' - ,dk: 'Fjern kulhydrater fra behandling ?' - ,es: 'Eliminar carbohidratos del tratamiento?' - ,fr: 'Effacer les glucides du traitement?' - ,el: 'Διαγραφή των υδατανθράκων από την ενέργεια?' - ,sv: 'Ta bort kolhydrater från behandling ?' - ,nb: 'Fjern karbohydrater fra behandling ?' - ,bg: 'Да изтрия ли ВХ от събитието?' - ,hr: 'Obriši UGH iz tretmana?' - ,fi: 'Poista hiilihydraatit hoidosta?' - ,ru: 'Удалить углеводы из событий ?' - ,sk: 'Odstrániť sacharidy z ošetrenia?' - ,pl: 'Usunąć węglowodany z wydarzenia?' - ,pt: 'Remover carboidratos do tratamento?' - ,nl: 'Verwijder KH van behandeling' - ,ko: 'Treatment에서 탄수화물을 지우세요.' - ,it: 'Rimuovere carboidrati dalla somministrazione ?' - ,tr: 'Karbonhidratları tedaviden çıkartılsın mı ?' // kaldırılsın mı - ,zh_cn: '从操作中去除碳水化合物?' - ,hu: 'Szénhidrát törlése a kezelésből?' - } - ,'Rendering' : { - cs: 'Vykresluji' - ,he: 'מציג... ' - ,ro: 'Se desenează' - ,fr: 'Représentation graphique' - ,de: 'Darstellung' - ,dk: 'Rendering' - ,es: 'Gráfica' - ,el: 'Απεικόνιση' - ,sv: 'Rendering' - ,nb: 'Tegner grafikk' - ,bg: 'Показване на графика' - ,hr: 'Iscrtavanje' - ,fi: 'Piirrän graafeja' - ,ru: 'Построение графика' - ,sk: 'Vykresľujem' - ,pl: 'Rysuję' - ,pt: 'Renderizando' - ,nl: 'Renderen' - ,ko: '랜더링' - ,it: 'Traduzione' - ,tr: 'Grafik oluşturuluyor...' - ,zh_cn: '渲染' - ,hu: 'Kirajzolás' - } - ,'Loading OpenAPS data of' : { - cs: 'Nahrávám OpenAPS data z' - ,he: 'טוען מידע מ ' - ,de: 'Lade OpenAPS-Daten von' - ,dk: 'Henter OpenAPS data for' - ,es: 'Cargando datos OpenAPS de' - ,fr: 'Chargement des données OpenAPS de' - ,ro: 'Se încarcă datele OpenAPS pentru' - ,el: 'Φόρτωση δεδομένων OpenAPS' - ,sv: 'Laddar OpenAPS data för' - ,nb: 'Laster OpenAPS data for' - ,bg: 'Зареждане на OpenAPS данни от' - ,hr: 'Učitavanje OpenAPS podataka od' - ,fi: 'Lataan OpenAPS tietoja' - ,ru: 'Загрузка данных OpenAPS от' - ,sk: 'Nahrávam OpenAPS dáta z' - ,pl: 'Ładuję dane OpenAPS z' - ,pt: 'Carregando dados de OpenAPS de' - ,ko: 'OpenAPS 데이터 로딩' - ,it: 'Caricamento in corso dati OpenAPS' - ,nl: 'OpenAPS gegevens opladen van' - ,tr: 'dan OpenAPS verileri yükleniyor' - ,zh_cn: '载入OpenAPS数据从' - ,hu: 'OpenAPS adatainak betöltése innen' - } - ,'Loading profile switch data' : { - cs: 'Nahrávám data přepnutí profilu' - ,he: 'טוען מידע החלפת פרופיל ' - ,de: 'Lade Daten Profil-Wechsel' - ,dk: 'Henter ny profildata' - ,es: 'Cargando el cambio de perfil de datos' - ,fr: 'Chargement de données de changement de profil' - ,el: 'Φόρτωση δεδομένων νέου προφίλ σε ισχύ' - ,ro: 'Se încarcă datele de schimbare profil' - ,sv: 'Laddar ny profildata' - ,nb: 'Laster nye profildata' - ,bg: 'Зареждане на данни от сменения профил' - ,hr: 'Učitavanje podataka promjene profila' - ,fi: 'Lataan profiilinvaihtotietoja' - ,ru: 'Загрузка данных нового профиля' - ,sk: 'Nahrávam dáta prepnutia profilu' - ,pl: 'Ładuję dane zmienionego profilu' - ,pt: 'Carregando dados de troca de perfil' - ,ko: '프로파일 변환 데이터 로딩' - ,it: 'Caricamento in corso dati cambio profilo' - ,nl: 'Ophalen van data om profiel te wisselen' - ,tr: 'Veri profili değişikliği yükleniyor' - ,zh_cn: '载入配置文件交换数据' - ,hu: 'Profil változás adatainak betöltése' - } - ,'Redirecting you to the Profile Editor to create a new profile.' : { - cs: 'Chybě nastavený profil.\nNení definovaný žádný platný profil k času zobrazení.\nProvádím přesměrování na editor profilu.' - ,he: 'הגדרת פרופיל שגוי. \n פרופיל מוגדר לזמן המוצג. מפנה מחדש לעורך פרופיל כדי ליצור פרופיל חדש. ' - ,el: 'Λάθος προφίλ. Παρακαλώ δημιουργήστε ένα νέο προφίλ' - ,fr: 'Erreur de réglage de profil. \nAucun profil défini pour indiquer l\'heure. \nRedirection vers la création d\'un nouveau profil. ' - ,de: 'Sie werden zum Profil-Editor weitergeleitet, um ein neues Profil anzulegen.' - ,dk: 'Forkert profilindstilling.\nIngen profil defineret til at vise tid.\nOmdirigere til profil editoren for at lave en ny profil.' - ,es: 'Configuración incorrecta del perfil. \n No establecido ningún perfil en el tiempo mostrado. \n Continuar en editor de perfil para crear perfil nuevo.' - ,bg: 'Грешни настройки на профила. \nНяма определен профил към избраното време. \nПрепращане към редактора на профила, за създаване на нов профил.' - ,hr: 'Krive postavke profila.\nNiti jedan profil nije definiran za prikazano vrijeme.\nPreusmjeravanje u editor profila kako biste stvorili novi.' - ,ro: 'Setare de profil eronată.\nNu este definit niciun profil pentru perioada afișată.\nMergeți la editorul de profiluri pentru a defini unul nou.' - ,sv: 'Fel profilinställning.\nIngen profil vald för vald tid.\nOmdirigerar för att skapa ny profil.' - ,nb: 'Feil profilinstilling.\nIngen profil valgt for valgt tid.\nVideresender for å lage ny profil.' - ,fi: 'Väärä profiiliasetus tai profiilia ei löydy.\nSiirrytään profiilin muokkaamiseen uuden profiilin luontia varten.' - ,ru: 'Переход к редактору профиля для создания нового' - ,sk: 'Zle nastavený profil.\nK zobrazenému času nieje definovaný žiadny profil.\nPresmerovávam na vytvorenie profilu.' - ,pl: 'Złe ustawienia profilu.\nDla podanego czasu nie zdefiniowano profilu.\nPrzekierowuję do edytora profili aby utworzyć nowy.' - ,pt: 'Configuração de perfil incorreta. \nNão há perfil definido para mostrar o horário. \nRedirecionando para o editor de perfil para criar um perfil novo.' - ,ko: '잘못된 프로파일 설정. \n프로파일이 없어서 표시된 시간으로 정의됩니다. 새 프로파일을 생성하기 위해 프로파일 편집기로 리다이렉팅' - ,it: 'Impostazione errata del profilo. \nNessun profilo definito per visualizzare l\'ora. \nReindirizzamento al profilo editor per creare un nuovo profilo.' - ,nl: 'Verkeerde profiel instellingen.\ngeen profiel beschibaar voor getoonde tijd.\nVerder naar profiel editor om een profiel te maken.' - ,tr: 'Yanlış profil ayarı.\nGörüntülenen zamana göre profil tanımlanmamış.\nYeni profil oluşturmak için profil düzenleyicisine yönlendiriliyor.' - ,zh_cn: '配置文件设置错误。\n没有配置文件定义为显示时间。\n返回配置文件编辑器以新建配置文件。' - ,hu: 'Átirányítás a profil szerkesztőre, hogy egy új profilt készítsen' - } - ,'Pump' : { - cs: 'Pumpa' - ,he: 'משאבה ' - ,sk: 'Pumpa' - ,fr: 'Pompe' - ,sv: 'Pump' - ,el: 'Αντλία' - ,nb: 'Pumpe' - ,de: 'Pumpe' - ,dk: 'Pumpe' - ,es: 'Bomba' - ,bg: 'Помпа' - ,hr: 'Pumpa' - ,ro: 'Pompă' - ,ru: 'Помпа' - ,nl: 'Pomp' - ,ko: '펌프' - ,fi: 'Pumppu' - , pl: 'Pompa' - ,pt: 'Bomba' - ,it: 'Pompa' - ,tr: 'Pompa' - ,zh_cn: '胰岛素泵' - ,hu: 'Pumpa' - } - ,'Sensor Age' : { - cs: 'Stáří senzoru (SAGE)' - ,he: 'גיל סנסור סוכר ' - ,sk: 'Zavedenie senzoru (SAGE)' - ,sv: 'Sensorålder (SAGE)' - ,fr: 'Âge du senseur (SAGE)' - ,el: 'Ημέρες χρήσης αισθητήρα (SAGE)' - ,nb: 'Sensoralder (SAGE)' - ,de: 'Sensor-Alter' - ,dk: 'Sensor alder (SAGE)' - ,es: 'Días uso del sensor' - ,bg: 'Възраст на сензора (ВС)' - ,hr: 'Starost senzora' - ,ro: 'Vechimea senzorului' - ,ru: 'Сенсор работает' - ,nl: 'Sensor leeftijd' - ,ko: '센서 사용 기간' - ,fi: 'Sensorin ikä' - , pl: 'Wiek sensora' - ,pt: 'Idade do sensor' - ,it: 'SAGE - Durata Sensore' - ,tr: '(SAGE) Sensör yaşı ' - ,zh_cn: '探头使用时间(SAGE)' - ,zh_tw: '探頭使用時間(SAGE)' - ,hu: 'Szenzor élettartalma (SAGE)' - } - ,'Insulin Age' : { - cs: 'Stáří inzulínu (IAGE)' - ,he: 'גיל אינסולין ' - ,sk: 'Výmena inzulínu (IAGE)' - ,fr: 'Âge de l\'insuline (IAGE)' - ,el: 'Ημέρες χρήσης αμπούλας ινσουλίνης (IAGE)' - ,sv: 'Insulinålder (IAGE)' - ,nb: 'Insulinalder (IAGE)' - ,de: 'Insulin-Alter' - ,dk: 'Insulinalder (IAGE)' - ,es: 'Días uso cartucho insulina' - ,bg: 'Възраст на инсулина (ВИ)' - ,hr: 'Starost inzulina' - ,ro: 'Vechimea insulinei' - ,ru: 'Инсулин работает' - ,ko: '인슐린 사용 기간' - ,fi: 'Insuliinin ikä' - , pl: 'Wiek insuliny' - ,pt: 'Idade da insulina' - ,it: 'IAGE - Durata Insulina' - ,nl: 'Insuline ouderdom (IAGE)' - ,tr: '(IAGE) İnsülin yaşı' - ,zh_cn: '胰岛素使用时间(IAGE)' - ,zh_tw: '胰島素使用時間(IAGE)' - ,hu: 'Inzulin élettartalma (IAGE)' - } - ,'Temporary target' : { - cs: 'Dočasný cíl' - ,he: 'מטרה זמנית ' - ,de: 'Temporäres Ziel' - ,dk: 'Midlertidig mål' - ,es: 'Objetivo temporal' - ,fr: 'Cible temporaire' - ,sk: 'Dočasný cieľ' - ,el: 'Προσωρινός στόχος' - ,sv: 'Tillfälligt mål' - ,nb: 'Mildertidig mål' - ,bg: 'Временна граница' - ,hr: 'Privremeni cilj' - ,ro: 'Țintă temporară' - ,ru: 'Временная цель' - ,nl: 'Tijdelijk doel' - ,ko: '임시 목표' - ,fi: 'Tilapäinen tavoite' - , pl: 'Tymczasowy cel' - ,pt: 'Meta temporária' - ,it: 'Obiettivo Temporaneo' - ,tr: 'Geçici hedef' - ,zh_cn: '临时目标' - ,hu: 'Átmeneti cél' - } - ,'Reason' : { - cs: 'Důvod' - ,he: 'סיבה ' - ,sk: 'Dôvod' - ,fr: 'Raison' - ,sv: 'Orsak' - ,el: 'Αιτία' - ,nb: 'Årsak' - ,de: 'Begründung' - ,dk: 'Årsag' - ,es: 'Razonamiento' - ,bg: 'Причина' - ,hr: 'Razlog' - ,nl: 'Reden' - ,ro: 'Motiv' - ,ru: 'Причина' - ,ko: '근거' - ,fi: 'Syy' - , pl: 'Powód' - ,pt: 'Razão' - ,it: 'Ragionare' - ,tr: 'Neden' // Gerekçe - ,zh_cn: '原因' - ,hu: 'Indok' - } - ,'Eating soon' : { - cs: 'Následuje jídlo' - ,he: 'אוכל בקרוב' - ,sk: 'Jesť čoskoro' - ,fr: 'Repas sous peu' - ,sv: 'Snart matdags' - ,nb: 'Snart tid for mat' - ,de: 'Bald essen' - ,dk: 'Spiser snart' - ,es: 'Comer pronto' - ,bg: 'Ядене скоро' - ,hr: 'Uskoro jelo' - ,ro: 'Mâncare în curând' - ,ru: 'Ожидаемый прием пищи' - ,nl: 'Binnenkort eten' - ,ko: '편집 중' - ,fi: 'Syödään pian' - , pl: 'Zjedz wkrótce' - ,pt: 'Refeição em breve' - ,it: 'Mangiare prossimamente' - ,tr: 'Yakında yemek' // Kısa zamanda yemek yenecek - ,zh_cn: '接近用餐时间' - ,hu: 'Hamarosan eszem' - } - ,'Top' : { - cs: 'Horní' - ,he: 'למעלה ' - ,sk: 'Vrchná' - ,fr: 'Haut' - ,sv: 'Toppen' - ,el: 'Πάνω' - ,nb: 'Øverst' - ,de: 'Oben' - ,dk: 'Toppen' - ,es: 'Superior' - ,bg: 'Горе' - ,hr: 'Vrh' - ,ro: 'Deasupra' - ,ru: 'Верх' - ,nl: 'Boven' - ,ko: '최고' - ,fi: 'Ylä' - ,pt: 'Superior' - ,it: 'Superiore' - ,tr: 'Üst' - ,zh_cn: '顶部' - ,pl: 'Góra' - ,hu: 'Felső' - } - ,'Bottom' : { - cs: 'Dolní' - ,he: 'למטה ' - ,sk: 'Spodná' - ,sv: 'Botten' - ,fr: 'Bas' - ,el: 'Κάτω' - ,nb: 'Nederst' - ,de: 'Unten' - ,dk: 'Bunden' - ,es: 'Inferior' - ,bg: 'Долу' - ,hr: 'Dno' - ,ro: 'Sub' - ,ru: 'Низ' - ,nl: 'Beneden' - ,ko: '최저' - ,fi: 'Ala' - ,pt: 'Inferior' - ,it: 'Inferiore' - ,tr: 'Alt' //aşağı, alt, düşük - ,zh_cn: '底部' - ,pl: "Dół" - ,hu: "Alsó" - } - ,'Activity' : { - cs: 'Aktivita' - ,he: 'פעילות ' - ,sk: 'Aktivita' - ,fr: 'Activité' - ,sv: 'Aktivitet' - ,el: 'Δραστηριότητα' - ,nb: 'Aktivitet' - ,de: 'Aktivität' - ,dk: 'Aktivitet' - ,es: 'Actividad' - ,bg: 'Активност' - ,hr: 'Aktivnost' - ,ro: 'Activitate' - ,ru: 'Активность' - ,nl: 'Activiteit' - ,ko: '활성도' - ,fi: 'Aktiviteetti' - ,pt: 'Atividade' - ,it: 'Attività' - ,tr: 'Aktivite' - ,zh_cn: '有效的' - ,pl: 'Aktywność' - ,hu: 'Aktivitás' - } - ,'Targets' : { - cs: 'Cíl' - ,he: 'מטרות ' - ,sk: 'Ciele' - ,fr: 'Cibles' - ,el: 'Στόχοι' - ,de: 'Ziele' - ,dk: 'Mål' - ,es: 'Objetivos' - ,sv: 'Mål' - ,nb: 'Mål' - ,bg: 'Граници' - ,hr: 'Ciljevi' - ,ro: 'Ținte' - ,ru: 'Цели' - ,nl: 'Doelen' - ,ko: '목표' - ,fi: 'Tavoitteet' - ,pt: 'Metas' - ,it: 'Obiettivi' - ,tr: 'Hedefler' - ,zh_cn: '目标' - ,pl: 'Cele' - ,hu: 'Célok' - } - ,'Bolus insulin:' : { - cs: 'Bolusový inzulín:' - ,he: 'אינסולין בולוס ' - ,bg: 'Болус инсулин' - ,fr: 'Bolus d\'Insuline' - ,ro: 'Insulină bolusată:' - ,el: 'Ινσουλίνη' - ,es: 'Bolo de Insulina' - ,ru: 'Болюсный инсулин' - ,sv: 'Bolusinsulin:' - ,nb: 'Bolusinsulin:' - ,hr: 'Bolus:' - ,ko: 'Bolus 인슐린' - ,fi: 'Bolusinsuliini:' - ,de: 'Bolus Insulin:' - ,dk: 'Bolusinsulin:' - ,pt: 'Insulina de bolus' - ,sk: 'Bolusový inzulín:' - ,it: 'Insulina Bolo' - ,nl: 'Bolus insuline' - ,tr: 'Bolus insülin:' - ,zh_cn: '大剂量胰岛素' - ,pl: 'Bolus insuliny' - ,hu: 'Bólus inzulin' - } - ,'Base basal insulin:' : { - cs: 'Základní bazální inzulín:' - ,he: 'אינסולין בזלי בסיס ' - ,bg: 'Основен базален инсулин' - ,fr: 'Débit basal de base' - ,ro: 'Bazala obișnuită:' - ,el: 'Βασική Ινσουλίνη' - ,es: 'Insulina basal básica' - ,ru: 'Профильный базальный инсулин' - ,sv: 'Basalinsulin:' - ,nb: 'Basalinsulin:' - ,hr: 'Osnovni bazal:' - ,ko: '기본 basal 인슐린' - ,fi: 'Basaalin perusannos:' - ,de: 'Basis Basal Insulin:' - ,dk: 'Basalinsulin:' - ,pt: 'Insulina basal programada:' - ,sk: 'Základný bazálny inzulín:' - ,it: 'Insulina Basale:' - ,nl: 'Basis basaal insuline' - ,tr: 'Temel bazal insülin' - ,zh_cn: '基础率胰岛素' - ,pl: 'Bazowa dawka insuliny' - ,hu: 'Általános bazal inzulin' - } - ,'Positive temp basal insulin:' : { - cs: 'Pozitivní dočasný bazální inzulín:' - ,he: 'אינסולין בזלי זמני חיובי ' - ,bg: 'Положителен временен базален инсулин' - ,fr: 'Débit basal temporaire positif' - ,ro: 'Bazala temporară marită:' - ,es: 'Insulina Basal temporal positiva:' - ,el: 'Θετική βασική ινσουλίνη' - ,ru: 'Положит знач временн базал инс ' - ,sv: 'Positiv tempbasal insulin:' - ,nb: 'Positiv midlertidig basalinsulin:' - ,hr: 'Pozitivni temp bazal:' - ,ko: '초과된 임시 basal 인슐린' - ,fi: 'Positiivinen tilapäisbasaali:' - ,de: 'Positives temporäres Basal Insulin:' - ,dk: 'Positiv midlertidig basalinsulin:' - , pl: 'Zwiększona bazowa dawka insuliny' - ,pt: 'Insulina basal temporária positiva:' - ,sk: 'Pozitívny dočasný bazálny inzulín:' - ,it: 'Insulina basale temp positiva:' - ,nl: 'Extra tijdelijke basaal insuline' - ,tr: 'Pozitif geçici bazal insülin:' - ,zh_cn: '实际临时基础率胰岛素' - ,hu: 'Pozitív átmeneti bazál inzulin' - } - ,'Negative temp basal insulin:' : { - cs:'Negativní dočasný bazální inzulín:' - ,he: 'אינסולין בזלי זמני שלילי ' - ,bg: 'Отрицателен временен базален инсулин' - ,fr: 'Débit basal temporaire négatif' - ,ro: 'Bazala temporară micșorată:' - ,el: 'Αρνητική βασική ινσουλίνη' - ,ru: 'Отриц знач временн базал инс' - ,sv: 'Negativ tempbasal för insulin:' - ,es: 'Insulina basal temporal negativa:' - ,nb: 'Negativ midlertidig basalinsulin:' - ,hr: 'Negativni temp bazal:' - ,ko: '남은 임시 basal 인슐린' - ,fi: 'Negatiivinen tilapäisbasaali:' - ,de: 'Negatives temporäres Basal Insulin:' - ,dk: 'Negativ midlertidig basalinsulin:' - , pl: 'Zmniejszona bazowa dawka insuliny' - ,pt: 'Insulina basal temporária negativa:' - ,sk: 'Negatívny dočasný bazálny inzulín:' - ,it: 'Insulina basale Temp negativa:' - ,nl: 'Negatieve tijdelijke basaal insuline' - ,tr: 'Negatif geçici bazal insülin:' - ,zh_cn: '其余临时基础率胰岛素' - ,hu: 'Negatív átmeneti bazál inzulin' - } - ,'Total basal insulin:' : { - cs: 'Celkový bazální inzulín:' - ,he: 'סך אינסולין בזלי ' - ,bg: 'Общо базален инсулин' - ,fr: 'Insuline basale au total:' - ,ro: 'Bazala totală:' - ,es: 'Total Insulina basal:' - ,el: 'Συνολική Βασική Ινσουλίνη (BASAL)' - ,ru: 'Всего базал инсулина' - ,sv: 'Total dagsdos basalinsulin:' - ,nb: 'Total daglig basalinsulin:' - ,hr: 'Ukupno bazali:' - ,ko: '전체 basal 인슐린' - ,fi: 'Basaali yhteensä:' - ,de: 'Gesamt Basal Insulin:' - ,dk: 'Total daglig basalinsulin:' - , pl: 'Całkowita ilość bazowej dawki insuliny' - ,pt: 'Insulina basal total:' - ,sk: 'Celkový bazálny inzulín:' - ,it: 'Insulina Basale Totale:' - ,nl: 'Totaal basaal insuline' - ,tr: 'Toplam bazal insülin:' - ,zh_cn: '基础率胰岛素合计' - ,hu: 'Teljes bazál inzulin' - } - ,'Total daily insulin:' : { - cs:'Celkový denní inzulín:' - ,he: 'סך אינסולין ביום ' - ,bg: 'Общо инсулин за деня' - ,fr: 'Insuline totale journalière' - ,ro: 'Insulina totală zilnică:' - ,el: 'Συνολική Ημερήσια Ινσουλίνη' - ,ru: 'Всего суточн базал инсулина' - ,sv: 'Total dagsdos insulin' - ,nb: 'Total daglig insulin' - ,hr: 'Ukupno dnevni inzulin:' - ,ko: '하루 인슐린 총량' - ,fi: 'Päivän kokonaisinsuliiniannos' - ,de: 'Gesamtes tägliches Insulin:' - ,dk: 'Total dagsdosis insulin' - ,es: 'Total Insulina diaria:' - ,pl: 'Całkowita dzienna ilość insuliny' - ,pt: 'Insulina diária total:' - ,sk: 'Celkový denný inzulín:' - ,it: 'Totale giornaliero d\'insulina:' - ,nl: 'Totaal dagelijkse insuline' - ,tr: 'Günlük toplam insülin:' - ,zh_cn: '每日胰岛素合计' - ,hu: 'Teljes napi inzulin' - } - ,'Unable to %1 Role' : { // PUT or POST - cs: 'Chyba volání %1 Role:' - ,he: 'לא יכול תפקיד %1' - ,bg: 'Невъзможно да %1 Роля' - ,hr: 'Unable to %1 Role' - ,fr: 'Incapable de %1 rôle' - ,ro: 'Imposibil de %1 Rolul' - ,es: 'Incapaz de %1 Rol' - ,ru: 'Невозможно назначить %1 Роль' - ,sv: 'Kan inte ta bort roll %1' - ,nb: 'Kan ikke %1 rolle' - ,fi: '%1 operaatio roolille opäonnistui' - ,de: 'Unpassend zu %1 Rolle' - ,dk: 'Kan ikke slette %1 rolle' - ,pl: 'Nie można %1 roli' - ,pt: 'Função %1 não foi possível' - ,sk: 'Chyba volania %1 Role' - ,ko: '%1로 비활성' - ,it: 'Incapace di %1 Ruolo' - ,nl: 'Kan %1 rol niet verwijderen' - ,tr: '%1 Rolü yapılandırılamadı' - ,zh_cn: '%1角色不可用' - ,hu: 'Hiba a %1 szabály hívásánál' - } - ,'Unable to delete Role' : { - cs: 'Nelze odstranit Roli:' - ,he: 'לא יכול לבטל תפקיד ' - ,bg: 'Невъзможно изтриването на Роля' - ,hr: 'Ne mogu obrisati ulogu' - ,ro: 'Imposibil de șters Rolul' - ,fr: 'Effacement de rôle impossible' - ,ru: 'Невозможно удалить Роль' - ,sv: 'Kan ej ta bort roll' - ,es: 'Imposible elimar Rol' - ,nb: 'Kan ikke ta bort rolle' - ,fi: 'Roolin poistaminen epäonnistui' - ,de: 'Rolle nicht löschbar' - ,dk: 'Kan ikke slette rolle' - ,pt: 'Não foi possível apagar a Função' - ,sk: 'Rola sa nedá zmazať' - ,ko: '삭제로 비활성' - ,it: 'Incapace di eliminare Ruolo' - ,nl: 'Niet mogelijk rol te verwijderen' - ,tr: 'Rol silinemedi' - ,zh_cn: '无法删除角色' - ,pl: 'Nie można usunąć roli' - ,hu: 'Nem lehetett a Szerepet törölni' - } - ,'Database contains %1 roles' : { - cs: 'Databáze obsahuje %1 rolí' - ,he: 'בסיס הנתונים מכיל %1 תפקידים ' - ,bg: 'Базата данни съдържа %1 роли' - ,hr: 'baza sadrži %1 uloga' - ,ro: 'Baza de date conține %1 rol(uri)' - ,fr: 'La base de données contient %1 rôles' - ,ru: 'База данных содержит %1 Ролей' - ,sv: 'Databasen innehåller %1 roller' - ,es: 'Base de datos contiene %1 Roles' - ,nb: 'Databasen inneholder %1 roller' - ,fi: 'Tietokanta sisältää %1 roolia' - ,de: 'Datenbank enthält %1 Rollen' - ,dk: 'Databasen indeholder %1 roller' - , pl: 'Baza danych zawiera %1 ról' - ,pt: 'Banco de dados contém %1 Funções' - ,sk: 'Databáza obsahuje %1 rolí' - ,ko: '데이터베이스가 %1 포함' - ,it: 'Database contiene %1 ruolo' - ,nl: 'Database bevat %1 rollen' - ,tr: 'Veritabanı %1 rol içerir' - ,zh_cn: '数据库包含%1个角色' - ,hu: 'Az adatbázis %1 szerepet tartalmaz' - } - ,'Edit Role' : { - cs:'Editovat roli' - ,he: 'ערוך תפקיד ' - ,bg: 'Промени Роля' - ,hr: 'Uredi ulogu' - ,ro: 'Editează Rolul' - ,fr: 'Éditer le rôle' - ,ru: 'Редактировать Роль' - ,sv: 'Editera roll' - ,nb: 'Editer rolle' - ,fi: 'Muokkaa roolia' - ,de: 'Rolle editieren' - ,dk: 'Rediger rolle' - ,es: 'Editar Rol' - ,pl: 'Edycja roli' - ,pt: 'Editar Função' - ,sk: 'Editovať rolu' - ,ko: '편집 모드' - ,it: 'Modifica ruolo' - ,nl: 'Pas rol aan' - ,tr: 'Rolü düzenle' - ,zh_cn: '编辑角色' - ,hu: 'Szerep szerkesztése' - } - ,'admin, school, family, etc' : { - cs: 'administrátor, škola, rodina atd...' - ,he: 'מנהל, בית ספר, משפחה, וכו ' - ,bg: 'администратор,училище,семейство и т.н.' - ,hr: 'admin, škola, obitelj, itd.' - ,fr: 'Administrateur, école, famille, etc' - ,ro: 'administrator, școală, familie, etc' - ,ru: 'админ, школа, семья и т д' - ,es: 'Adminitrador, escuela, família, etc' - ,sv: 'Administratör, skola, familj, etc' - ,nb: 'Administrator, skole, familie osv' - ,fi: 'ylläpitäjä, koulu, perhe jne' - ,de: 'Administrator, Schule, Familie, etc' - ,dk: 'Administrator, skole, familie, etc' - ,pl: 'administrator, szkoła, rodzina, itp' - ,pt: 'Administrador, escola, família, etc' - ,sk: 'administrátor, škola, rodina atď...' - ,ko: '관리자, 학교, 가족 등' - ,it: 'amministrazione, scuola, famiglia, etc' - ,nl: 'admin, school, familie, etc' - ,tr: 'yönetici, okul, aile, vb' - ,zh_cn: '政府、学校、家庭等' - ,hu: 'admin, iskola, család, stb' - } - ,'Permissions' : { - cs: 'Oprávnění' - ,he: 'הרשאות ' - ,bg: 'Права' - ,hr: 'Prava' - ,ro: 'Permisiuni' - ,fr: 'Permissions' - ,ru: 'Разрешения' - ,sv: 'Rättigheter' - ,nb: 'Rettigheter' - ,fi: 'Oikeudet' - ,de: 'Berechtigungen' - ,dk: 'Rettigheder' - ,es: 'Permisos' - ,pl: 'Uprawnienia' - ,pt: 'Permissões' - ,sk: 'Oprávnenia' - ,ko: '허가' - ,it: 'Permessi' - ,nl: 'Rechten' - ,tr: 'İzinler' - ,zh_cn: '权限' - ,hu: 'Engedély' - } - ,'Are you sure you want to delete: ' : { - cs: 'Opravdu vymazat: ' - ,he: 'אתה בטוח שאתה רוצה למחוק' - ,bg: 'Потвърдете изтриването' - ,hr: 'Sigurno želite obrisati?' - ,ro: 'Confirmați ștergerea: ' - ,fr: 'Êtes-vous sûr de vouloir effacer:' - ,ru: 'Подтвердите удаление' - ,sv: 'Är du säker att du vill ta bort:' - ,nb: 'Er du sikker på at du vil slette:' - ,fi: 'Oletko varmat että haluat tuhota: ' - ,de: 'Sind sie sicher, das Sie löschen wollen:' - ,dk: 'Er du sikker på at du vil slette:' - ,es: 'Seguro que quieres eliminarlo:' - ,pl: 'Jesteś pewien, że chcesz usunąć:' - ,pt: 'Tem certeza de que deseja apagar:' - ,sk: 'Naozaj zmazať:' - ,ko: '정말로 삭제하시겠습니까: ' - ,it: 'Sei sicuro di voler eliminare:' - ,nl: 'Weet u het zeker dat u wilt verwijderen?' - ,tr: 'Silmek istediğinizden emin misiniz:' - ,zh_cn: '你确定要删除:' - ,hu: 'Biztos, hogy törölni szeretnéd: ' - } - ,'Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.' : { - cs: 'Každá role má 1 nebo více oprávnění. Oprávnění * je zástupný znak, oprávnění jsou hiearchie používající : jako oddělovač.' - ,bg: 'Всяка роля ще има 1 или повече права. В * правото е маска, правата са йерархия използвайки : като разделител' - ,hr: 'Svaka uloga ima 1 ili više prava. Pravo * je univerzalno, a prava su hijerarhija koja koristi znak : kao graničnik.' - ,fr: 'Chaque rôle aura une ou plusieurs permissions. La permission * est un joker (permission universelle), les permissions sont une hierarchie utilisant : comme séparatuer' - ,ro: 'Fiecare rol va avea cel puțin o permisiune. Permisiunea * este totală, permisiunile sunt ierarhice utilizând : pe post de separator.' - ,ru: 'Каждая роль имеет 1 или более разрешений. Разрешение * это подстановочный символ, разрешения это иерархия, использующая : как разделитель.' - ,sv: 'Varje roll kommer få en eller flera rättigheter. * är en wildcard, rättigheter sätts hirarkiskt med : som avgränsare.' - ,dk: 'Hver rolle vil have en eller flere rettigheder. Rollen * fungere som wildcard / joker, rettigheder sættes hierakisk med : som skilletegn.' - ,nb: 'Hver enkelt rolle vil ha en eller flere rettigheter. *-rettigheten er wildcard. Rettigheter settes hierarkisk med : som separator.' - ,fi: 'Jokaisella roolilla on yksi tai useampia oikeuksia. * on jokeri (tunnistuu kaikkina oikeuksina), oikeudet ovat hierarkia joka käyttää : merkkiä erottimena.' - ,de: 'Jede Rolle hat eine oder mehrere Berechtigungen. Die * Berechtigung ist ein Platzhalter, Berechtigungen sind hierachrchisch mit : als Separator.' - ,es: 'Cada Rol tiene uno o más permisos. El permiso * es un marcador de posición y los permisos son jerárquicos con : como separador.' - , pl: 'Każda rola będzie mieć 1 lub więcej uprawnień. Symbol * uprawnia do wszystkiego. Uprawnienia są hierarchiczne, używając : jako separatora.' - ,pt: 'Cada função terá uma ou mais permissões. A permissão * é um wildcard, permissões são uma hierarquia utilizando * como um separador.' - ,sk: 'Každá rola má 1 alebo viac oprávnení. Oprávnenie * je zástupný znak, oprávnenia sú hierarchie používajúce : ako oddelovač.' - ,ko: '각각은 1 또는 그 이상의 허가를 가지고 있습니다. 허가는 예측이 안되고 구분자로 : 사용한 계층이 있습니다' - ,it: 'Ogni ruolo avrà un 1 o più autorizzazioni. Il * il permesso è un jolly, i permessi sono una gerarchia utilizzando : come separatore.' - ,nl: 'Elke rol heeft mintens 1 machtiging. De * machtiging is een wildcard, machtigingen hebben een hyrarchie door gebruik te maken van : als scheidingsteken.' - ,tr: 'Her rolün bir veya daha fazla izni vardır.*izni bir yer tutucudur ve izinler ayırıcı olarak : ile hiyerarşiktir.' - ,zh_cn: '每个角色都具有一个或多个权限。权限设置时使用*作为通配符,层次结构使用:作为分隔符。' - ,hu: 'Minden szerepnek egy vagy több engedélye van. A * engedély helyettesítő engedély amely a hierarchiához : használja elválasztásnak.' - } - ,'Add new Role' : { - cs: 'Přidat novou roli' - ,he: 'הוסף תפקיד חדש ' - ,bg: 'Добавете нова роля' - ,hr: 'Dodaj novu ulogu' - ,fr: 'Ajouter un nouveau rôle' - ,ro: 'Adaugă un Rol nou' - ,ru: 'Добавить новую Роль' - ,es: 'Añadir nuevo Rol' - ,sv: 'Lägg till roll' - ,nb: 'Legg til ny rolle' - ,fi: 'Lisää uusi rooli' - ,de: 'Eine neue Rolle hinzufügen' - ,dk: 'Tilføj ny rolle' - ,pt: 'Adicionar novo Papel' - ,sk: 'Pridať novú rolu' - ,ko: '새 역할 추가' - ,it: 'Aggiungere un nuovo ruolo' - ,nl: 'Voeg rol toe' - ,tr: 'Yeni Rol ekle' - ,zh_cn: '添加新角色' - ,pl: 'Dodaj nową rolę' - ,hu: 'Új szerep hozzáadása' - } - ,'Roles - Groups of People, Devices, etc' : { - cs: 'Role - Skupiny lidí, zařízení atd.' - ,he: 'תפקידים - קבוצות של אנשים, התקנים, וכו ' - ,bg: 'Роли - Група хора,устройства,т.н.' - ,hr: 'Uloge - Grupe ljudi, uređaja, itd.' - ,fr: 'Rôles - Groupe de Personnes ou d\'appareils' - ,ro: 'Roluri - Grupuri de persoane, dispozitive, etc' - ,es: 'Roles - Grupos de Gente, Dispositivos, etc.' - ,ru: 'Роли- группы людей, устройств и т п' - ,sv: 'Roller - Grupp av användare, Enheter, etc' - ,nb: 'Roller - Grupper av brukere, enheter osv' - ,fi: 'Roolit - Ihmisten ja laitteiden muodostamia ryhmiä' - ,de: 'Rollen - Gruppierungen von Menschen, Geräten, etc.' - ,dk: 'Roller - Grupper af brugere, Enheder, etc' - ,pt: 'Funções - grupos de pessoas, dispositivos, etc' - ,sk: 'Role - skupiny ľudí, zariadení atď...' - ,ko: '역할 - 그룹, 기기, 등' - ,it: 'Ruoli - gruppi di persone, dispositivi, etc' - ,nl: 'Rollen - Groepen mensen apparaten etc' - ,tr: 'Roller - İnsan grupları, Cihazlar vb.' - ,zh_cn: '角色 - 一组人或设备等' - ,pl: 'Role - Grupy ludzi, urządzeń, itp' - ,hu: 'Szerepek - Emberek csoportja, berendezések, stb.' - } - ,'Edit this role' : { - cs: 'Editovat tuto roli' - ,he: 'ערוך תפקיד זה ' - ,bg: 'Промени тази роля' - ,hr: 'Uredi ovu ulogu' - ,fr: 'Editer ce rôle' - ,ro: 'Editează acest rol' - ,ru: 'Редактировать эту роль' - ,es: 'Editar este Rol' - ,sv: 'Editera denna roll' - ,nb: 'Editer denne rollen' - ,fi: 'Muokkaa tätä roolia' - ,de: 'Editiere diese Rolle' - ,dk: 'Rediger denne rolle' - ,pt: 'Editar esta Função' - ,sk: 'Editovať túto rolu' - ,ko: '이 역할 편집' - ,it: 'Modifica questo ruolo' - ,nl: 'Pas deze rol aan' - ,tr: 'Bu rolü düzenle' - ,zh_cn: '编辑角色' - ,pl: 'Edytuj rolę' - ,hu: 'Szerep szerkesztése' - } - ,'Admin authorized' : { - cs: 'Admin autorizován' - ,he: 'מנהל אושר ' - ,bg: 'Оторизиран като администратор' - ,hr: 'Administrator ovlašten' - ,fr: 'Administrateur autorisé' - ,ro: 'Autorizat de admin' - ,es: 'Administrador autorizado' - ,ru: 'Разрешено администратором' - ,sv: 'Administratorgodkänt' - ,nb: 'Administratorgodkjent' - ,fi: 'Ylläpitäjä valtuutettu' - ,de: 'als Administrator autorisiert' - ,dk: 'Administrator godkendt' - ,pt: 'Administrador autorizado' - ,sk: 'Admin autorizovaný' - ,ko: '인증된 관리자' - ,it: 'Amministrativo autorizzato' - ,nl: 'Admin geauthoriseerd' - ,tr: 'Yönetici yetkilendirildi' - ,zh_cn: '已授权' - ,zh_tw: '已授權' - ,pl: 'Administrator autoryzowany' - ,hu: 'Adminisztrátor engedélyezve' - } - ,'Subjects - People, Devices, etc' : { - cs: 'Subjekty - Lidé, zařízení atd.' - ,he: 'נושאים - אנשים, התקנים וכו ' - ,bg: 'Субекти - Хора,Устройства,т.н.' - ,hr: 'Subjekti - Ljudi, uređaji, itd.' - ,fr: 'Utilisateurs - Personnes, Appareils, etc' - ,ro: 'Subiecte - Persoane, dispozitive, etc' - ,es: 'Sujetos - Personas, Dispositivos, etc' - ,ru: 'Субъекты - Люди, устройства и т п' - ,sv: 'Ämnen - Användare, Enheter, etc' - ,nb: 'Ressurser - Brukere, enheter osv' - ,fi: 'Käyttäjät (Ihmiset, laitteet jne)' - ,de: 'Subjekte - Menschen, Geräte, etc' - ,dk: 'Emner - Brugere, Enheder, etc' - ,pt: 'Assunto - Pessoas, dispositivos, etc' - ,sk: 'Subjekty - ľudia, zariadenia atď...' - ,ko: '주제 - 사람, 기기 등' - ,it: 'Soggetti - persone, dispositivi, etc' - ,nl: 'Onderwerpen - Mensen, apparaten etc' - ,tr: 'Konular - İnsanlar, Cihazlar, vb.' - ,zh_cn: '用户 - 人、设备等' - ,pl: 'Obiekty - ludzie, urządzenia itp' - ,hu: 'Semélyek - Emberek csoportja, berendezések, stb.' - } - ,'Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.' : { - cs: 'Každý subjekt má svůj unikátní token a 1 nebo více rolí. Klikem na přístupový token se otevře nové okno pro tento subjekt. Tento link je možné sdílet.' - ,he: 'לכל נושא תהיה אסימון גישה ייחודי ותפקיד אחד או יותר. לחץ על אסימון הגישה כדי לפתוח תצוגה חדשה עם הנושא הנבחר, קישור סודי זה יכול להיות משותף ' - ,bg: 'Всеки обект ще има уникален ключ за достъп и 1 или повече роли. Кликнете върху ключа за достъп, за да отворите нов изглед с избрания обект, тази секретна връзка може след това да се споделя' - ,hr: 'Svaki subjekt će dobiti jedinstveni pristupni token i jednu ili više uloga. Kliknite na pristupni token kako bi se otvorio novi pogled sa odabranim subjektom, a tada se tajni link može podijeliti.' - ,fr: 'Chaque utilisateur aura un identificateur unique et un ou plusieurs rôles. Cliquez sur l\'identificateur pour révéler l\'utilisateur, ce lien secret peut être partagé.' - ,ro: 'Fiecare subiect va avea o cheie unică de acces și unul sau mai multe roluri. Apăsați pe cheia de acces pentru a vizualiza subiectul selectat, acest link poate fi distribuit.' - ,ru: 'Каждый субъект получает уникальный код доступа и 1 или более ролей. Нажмите на иконку кода доступа чтобы открыть новое окно с выбранным субъектом, эту секретную ссылку можно переслать.' - ,es: 'Cada sujeto tendrá un identificador de acceso único y 1 o más roles. Haga clic en el identificador de acceso para abrir una nueva vista con el tema seleccionado, este enlace secreto puede ser compartido.' - ,sv: 'Varje ämne får en unik säkerhetsnyckel och en eller flera roller. Klicka på accessnyckeln för att öppna en ny vy med det valda ämnet, denna hemliga länk kan sedan delas.' - ,nb: 'Hver enkelt ressurs får en unik sikkerhetsnøkkel og en eller flere roller. Klikk på sikkerhetsnøkkelen for å åpne valgte ressurs, den hemmelige lenken kan så deles.' - ,fi: 'Jokaisella käyttäjällä on uniikki pääsytunniste ja yksi tai useampi rooli. Klikkaa pääsytunnistetta nähdäksesi käyttäjän, jolloin saat jaettavan osoitteen tämän käyttäjän oikeuksilla.' - ,de: 'Jedes Subjekt erhält einen einzigartigen Zugriffsschlüssel und eine oder mehrere Rollen. Klicke auf den Zugriffsschlüssel, um eine neue Ansicht mit dem ausgewählten Subjekt zu erhalten. Dieser geheime Link kann geteilt werden.' - ,dk: 'Hvert emne vil have en unik sikkerhedsnøgle samt en eller flere roller. Klik på sikkerhedsnøglen for at åbne et nyt view med det valgte emne, dette hemmelige link kan derefter blive delt.' - ,pt: 'Cada assunto terá um único token de acesso e uma ou mais Funções. Clique no token de acesso para abrir uma nova visualização com o assunto selecionado. Este link secreto poderá então ser compartilhado' - ,sk: 'Každý objekt má svoj unikátny prístupový token a 1 alebo viac rolí. Klikni na prístupový token pre otvorenie nového okna pre tento subjekt. Tento link je možné zdielať.' - ,ko: '각 주제는 유일한 access token을 가지고 1 또는 그 이상의 역할을 가질 것이다. 선택된 주제와 새로운 뷰를 열기 위해 access token을 클릭하세요. 이 비밀 링크는 공유되어질 수 있다.' - ,it: 'Ogni soggetto avrà un gettone d\'accesso unico e 1 o più ruoli. Fare clic sul gettone d\'accesso per aprire una nuova vista con il soggetto selezionato, questo legame segreto può quindi essere condiviso.' - ,nl: 'Elk onderwerp heeft een unieke toegangscode en 1 of meer rollen. Klik op de toegangscode om een nieu venster te openen om het onderwerp te bekijken, deze verborgen link kan gedeeld worden.' - ,tr: 'Her konu benzersiz bir erişim anahtarı ve bir veya daha fazla rol alır. Seçilen konuyla ilgili yeni bir görünüm elde etmek için erişim tuşuna tıklayın. Bu gizli bağlantı paylaşılabilinir.' - ,zh_cn: '每个用户具有唯一的访问令牌和一个或多个角色。在访问令牌上单击打开新窗口查看已选择用户,此时该链接可分享。' - ,pl: 'Każdy obiekt będzie miał unikalny token dostępu i jedną lub więcej ról. Kliknij token dostępu, aby otworzyć nowy widok z wybranym obiektem, ten tajny link może być następnie udostępniony' - ,hu: 'Mindegyik személynek egy egyedi hozzáférése lesz 1 vagy több szereppel. Kattints a tokenre, hogy egy új nézetet kapj - a kapott linket megoszthatod velük.' - } - ,'Add new Subject' : { - cs: 'Přidat nový subjekt' - ,he: 'הוסף נושא חדש ' - ,bg: 'Добави нов субект' - ,hr: 'Dodaj novi subjekt' - ,fr: 'Ajouter un nouvel Utilisateur' - ,ro: 'Adaugă un Subiect nou' - ,ru: 'Добавить нового субъекта' - ,sv: 'Lägg till nytt ämne' - ,nb: 'Legg til ny ressurs' - ,fi: 'Lisää uusi käyttäjä' - ,de: 'Füge ein neues Subjekt hinzu' - ,dk: 'Tilføj nye emner' - ,es: 'Añadir nuevo Sujeto' - ,pt: 'Adicionar novo assunto' - ,sk: 'Pridať nový subjekt' - ,ko: '새 주제 추가' - ,it: 'Aggiungere un nuovo Soggetto' - ,nl: 'Voeg onderwerp toe' - ,tr: 'Yeni konu ekle' - ,zh_cn: '添加新用户' - ,pl: 'Dodaj obiekt' - ,hu: 'Új személy hozzáadása' - } - ,'Unable to %1 Subject' : { // PUT or POST - cs: 'Chyba volání %1 Subjektu:' - ,en: 'לא יכול ל %1 נושאי' - ,bg: 'Невъзможно %1 субект' - ,hr: 'Ne mogu %1 subjekt' - ,ro: 'Imposibil de %1 Subiectul' - ,fr: 'Impossible de créer l\'Utilisateur %1' - ,ru: 'Невозможно создать %1 субъект' - ,sv: 'Kan ej %1 ämne' - ,nb: 'Kan ikke %1 ressurs' - ,fi: '%1 operaatio käyttäjälle epäonnistui' - ,de: 'Unpassend zum %1 Subjekt' - ,dk: 'Kan ikke %1 emne' - ,es: 'Imposible poner %1 Sujeto' - ,pt: 'Impossível postar %1 assunto' - ,sk: 'Chyba volania %1 subjektu' - ,ko: '%1 주제 비활성화' - ,it: 'Incapace di %1 sottoporre' - ,nl: 'Niet in staat %1 Onderwerp' - ,tr: '%1 konu yapılamıyor' - ,zh_cn: '%1用户不可用' - ,pl: 'Nie można %1 obiektu' - ,hu: 'A %1 személy hozáadása nem sikerült' - } - ,'Unable to delete Subject' : { - cs: 'Nelze odstranit Subjekt:' - ,he: 'לא יכול לבטל נושא ' - ,bg: 'Невъзможно изтриването на субекта' - ,hr: 'Ne mogu obrisati subjekt' - ,ro: 'Imposibil de șters Subiectul' - ,fr: 'Impossible d\'effacer l\'Utilisateur' - ,ru: 'Невозможно удалить Субъект ' - ,sv: 'Kan ej ta bort ämne' - ,nb: 'Kan ikke slette ressurs' - ,fi: 'Käyttäjän poistaminen epäonnistui' - ,de: 'Kann Subjekt nicht löschen' - ,dk: 'Kan ikke slette emne' - ,es: 'Imposible eliminar sujeto' - ,pt: 'Impossível apagar assunto' - ,sk: 'Subjekt sa nedá odstrániť' - ,ko: '주제를 지우기 위해 비활성화' - ,it: 'Impossibile eliminare Soggetto' - ,nl: 'Kan onderwerp niet verwijderen' - ,tr: 'Konu silinemedi' - ,zh_cn: '无法删除用户' - ,pl: 'Nie można usunąć obiektu' - ,hu: 'A személyt nem sikerült törölni' - } - ,'Database contains %1 subjects' : { - cs: 'Databáze obsahuje %1 subjektů' - ,he: 'מסד נתונים מכיל %1 נושאים ' - ,bg: 'Базата данни съдържа %1 субекти' - ,hr: 'Baza sadrži %1 subjekata' - ,fr: 'La base de données contient %1 utilisateurs' - ,fi: 'Tietokanta sisältää %1 käyttäjää' - ,ru: 'База данных содержит %1 субъекта/ов' - ,ro: 'Baza de date are %1 subiecți' - ,sv: 'Databasen innehåller %1 ämnen' - ,nb: 'Databasen inneholder %1 ressurser' - ,de: 'Datenbank enthält %1 Subjekte' - ,dk: 'Databasen indeholder %1 emner' - ,es: 'Base de datos contiene %1 sujetos' - ,pt: 'Banco de dados contém %1 assuntos' - ,sk: 'Databáza obsahuje %1 subjektov' - ,ko: '데이터베이스는 %1 주제를 포함' - ,it: 'Database contiene %1 soggetti' - ,nl: 'Database bevat %1 onderwerpen' - ,tr: 'Veritabanı %1 konu içeriyor' - ,zh_cn: '数据库包含%1个用户' - ,pl: 'Baza danych zawiera %1 obiektów' - ,hu: 'Az adatbázis %1 személyt tartalmaz' - } - ,'Edit Subject' : { - cs:'Editovat subjekt' - ,he: 'ערוך נושא ' - ,bg: 'Промени субект' - ,hr: 'Uredi subjekt' - ,ro: 'Editează Subiectul' - ,es: 'Editar sujeto' - ,fr: 'Éditer l\'Utilisateur' - ,ru: 'Редактировать Субъект' - ,sv: 'Editera ämne' - ,nb: 'Editer ressurs' - ,fi: 'Muokkaa käyttäjää' - ,de: 'Editiere Subjekt' - ,dk: 'Rediger emne' - ,pt: 'Editar assunto' - ,sk: 'Editovať subjekt' - ,ko: '주제 편집' - ,it: 'Modifica Oggetto' - ,nl: 'Pas onderwerp aan' - ,tr: 'Konuyu düzenle' - ,zh_cn: '编辑用户' - ,pl: 'Edytuj obiekt' - ,hu: 'Személy szerkesztése' - } - ,'person, device, etc' : { - cs:'osoba, zařízeni atd.' - ,he: 'אדם, מכשיר, וכו ' - ,bg: 'човек,устройство,т.н.' - ,hr: 'osoba, uređaj, itd.' - ,ro: 'persoană, dispozitiv, etc' - ,fr: 'personne, appareil, etc' - ,ru: 'лицо, устройство и т п' - ,sv: 'person,enhet,etc' - ,nb: 'person, enhet osv' - ,fi: 'henkilö, laite jne' - ,de: 'Person, Gerät, etc' - ,dk: 'person, emne, etc' - ,es: 'Persona, dispositivo, etc' - ,pt: 'Pessoa, dispositivo, etc' - ,sk: 'osoba, zariadenie atď...' - ,ko: '사람, 기기 등' - ,it: 'persona, dispositivo, ecc' - ,nl: 'persoon, apparaat etc' - ,tr: 'kişi, cihaz, vb' - ,zh_cn: '人、设备等' - ,pl: 'osoba, urządzenie, itp' - ,hu: 'személy, berendezés, stb.' - } - ,'role1, role2' : { - cs:'role1, role2' - ,he: 'תפקיד1, תפקיד2 ' - ,bg: 'Роля1, Роля2' - ,hr: 'uloga1, uloga2' - ,ro: 'Rol1, Rol2' - ,fr: 'rôle1, rôle2' - ,ru: 'Роль1, Роль2' - ,sv: 'Roll1, Roll2' - ,nb: 'rolle1, rolle2' - ,fi: 'rooli1, rooli2' - ,de: 'Rolle1, Rolle2' - ,dk: 'Rolle1, Rolle2' - ,pt: 'papel1, papel2' - ,es: 'Rol1, Rol2' - ,sk: 'rola1, rola2' - ,ko: '역할1, 역할2' - ,it: 'ruolo1, ruolo2' - ,nl: 'rol1, rol2' - ,tr: 'rol1, rol2' - ,zh_cn: '角色1、角色2' - ,pl: 'rola1, rola2' - ,hu: 'szerep1, szerep2' - } - ,'Edit this subject' : { - cs:'Editovat tento subjekt' - ,he: 'ערוך נושא זה ' - ,bg: 'Промени този субект' - ,hr: 'Uredi ovaj subjekt' - ,ro: 'Editează acest subiect' - ,fr: 'Éditer cet utilisateur' - ,ru: 'Редактировать этот субъект' - ,sv: 'Editera ämnet' - ,es: 'Editar este sujeto' - ,nb: 'Editer ressurs' - ,fi: 'Muokkaa tätä käyttäjää' - ,de: 'Editiere dieses Subjekt' - ,dk: 'Rediger emne' - ,pt: 'Editar esse assunto' - ,sk: 'Editovať tento subjekt' - ,ko: '이 주제 편집' - ,it: 'Modifica questo argomento' - ,nl: 'pas dit onderwerp aan' - ,tr: 'Bu konuyu düzenle' - ,zh_cn: '编辑此用户' - ,pl: 'Edytuj ten obiekt' - ,hu: 'A kiválasztott személy szerkesztése' - } - ,'Delete this subject' : { - cs:'Smazat tento subjekt' - ,he: 'בטל נושא זה ' - ,bg: 'Изтрий този субект' - ,hr: 'Obriši ovaj subjekt' - ,ro: 'Șterge acest subiect' - ,fr: 'Effacer cet utilisateur:' - ,ru: 'Удалить этот субъект' - ,sv: 'Ta bort ämnet' - ,nb: 'Slett ressurs' - ,fi: 'Poista tämä käyttäjä' - ,de: 'Lösche dieses Subjekt' - ,dk: 'Fjern emne' - ,es: 'Eliminar este sujeto' - ,pt: 'Apagar esse assunto' - ,sk: 'Zmazať tento subjekt' - ,ko: '이 주제 삭제' - ,it: 'Eliminare questo argomento' - ,nl: 'verwijder dit onderwerp' - ,tr: 'Bu konuyu sil' - ,zh_cn: '删除此用户' - ,pl: 'Usuń ten obiekt' - ,hu: 'A kiválasztott személy törlése' - } - ,'Roles' : { - cs:'Role' - ,he: 'תפקידים ' - ,bg: 'Роли' - ,hr: 'Uloge' - ,ro: 'Roluri' - ,fr: 'Rôles' - ,ru: 'Роли' - ,sv: 'Roller' - ,nb: 'Roller' - ,es: 'Roles' - ,fi: 'Rooli' - ,de: 'Rollen' - ,dk: 'Roller' - ,pt: 'Papéis' - ,sk: 'Rola' - ,ko: '역할' - ,it: 'Ruoli' - ,nl: 'Rollen' - ,tr: 'Roller' - ,zh_cn: '角色' - ,pl: 'Role' - ,hu: 'Szerepek' - } - ,'Access Token' : { - cs:'Přístupový token' - ,he: 'אסימון גישה ' - ,bg: 'Ключ за достъп' - ,hr: 'Pristupni token' - ,ro: 'Cheie de acces' - ,fr: 'Identificateur unique' - ,ru: 'Код доступа' - ,sv: 'Åtkomstnyckel' - ,nb: 'Tilgangsnøkkel' - ,fi: 'Pääsytunniste' - ,de: 'Zugriffsschlüssel' - ,dk: 'Sikkerhedsnøgle' - ,pt: 'Token de acesso' - ,es: 'Acceso Identificador' - ,sk: 'Prístupový Token' - ,ko: 'Access Token' - ,it: 'Gettone d\'accesso' - ,nl: 'toegangscode' - ,tr: 'Erişim Simgesi (Access Token)' - ,zh_cn: '访问令牌' - ,pl: 'Token dostępu' - ,hu: 'Hozzáférési token' - } - ,'hour ago' : { - cs:'hodina zpět' - ,he: 'לפני שעה ' - ,bg: 'Преди час' - ,hr: 'sat ranije' - ,fr: 'heure avant' - ,ro: 'oră în trecut' - ,ru: 'час назад' - ,sv: 'timme sedan' - ,nb: 'time siden' - ,fi: 'tunti sitten' - ,de: 'vor einer Stunde' - ,dk: 'time siden' - ,es: 'hora atrás' - ,pt: 'hora atrás' - ,sk: 'pred hodinou' - ,ko: '시간 후' - ,it: 'ora fa' - ,nl: 'uur geleden' - ,tr: 'saat önce' - ,zh_cn: '小时前' - ,pl: 'Godzię temu' - ,hu: 'órája' - } - ,'hours ago' : { - cs:'hodin zpět' - ,he: 'לפני שעות ' - ,bg: 'Преди часове' - ,hr: 'sati ranije' - ,fr: 'heures avant' - ,ro: 'ore în trecut' - ,ru: 'часов назад' - ,sv: 'timmar sedan' - ,nb: 'timer siden' - ,fi: 'tuntia sitten' - ,de: 'vor mehreren Stunden' - ,dk: 'timer sidan' - ,es: 'horas atrás' - ,pt: 'horas atrás' - ,sk: 'hodín pred' - ,ko: '시간 후' - ,it: 'ore fa' - ,nl: 'uren geleden' - ,tr: 'saat önce' - ,zh_cn: '小时前' - ,pl: 'Godzin temu' - ,hu: 'órája' - } - ,'Silence for %1 minutes' : { - cs:'Ztlumit na %1 minut' - ,he: 'שקט ל %1 דקות ' - ,bg: 'Заглушаване за %1 минути' - ,hr: 'Utišaj na %1 minuta' - ,ro: 'Liniște pentru %1 minute' - ,fr: 'Silence pour %1 minutes' - ,ru: 'Молчание %1 минут' - ,sv: 'Tyst i %1 minuter' - ,nb: 'Stille i %1 minutter' - ,fi: 'Hiljennä %1 minuutiksi' - ,de: 'Ruhe für %1 Minuten' - ,dk: 'Stilhed i %1 minutter' - ,pt: 'Silencir por %1 minutos' - ,es: 'Silenciado por %1 minutos' - ,sk: 'Stíšiť na %1 minút' - ,ko: '%1 분 동안 무음' - ,it: 'Silenzio per %1 minuti' - ,nl: 'Sluimer %1 minuten' - ,tr: '%1 dakika sürelik sessizlik' - ,zh_cn: '静音%1分钟' - ,zh_tw: '靜音%1分鐘' - ,pl: 'Wycisz na %1 minut' - ,hul: 'Lehalkítás %1 percre' - } - ,'Check BG' : { - cs:'Zkontrolovat glykémii' - ,he: 'בדוק סוכר בדם ' - ,de: 'BZ kontrollieren' - ,dk: 'Kontroller blodsukker' - ,ro: 'Verificați glicemia' - ,es: 'Verificar glucemia' - ,fr: 'Vérifier la glycémie' - ,ru: 'Проверьте гликемию' - ,sv: 'Kontrollera blodglukos' - ,nb: 'Sjekk blodsukker' - ,sk: 'Skontrolovať glykémiu' - ,fi: 'Tarkista VS' - ,pt: 'Verifique a glicemia' - ,bg: 'Проверка КЗ' - ,hr: 'Provjeri GUK' - ,ko: '혈당 체크' - ,it: 'Controllare BG' - ,nl: 'Controleer BG' - ,tr: 'KŞ\'ini kontrol et' - ,zh_cn: '测量血糖' - ,pl: 'Sprawdź glukozę z krwi' - ,hu: 'Ellenőrizd a cukorszintet' - } - ,'BASAL' : { - cs: 'BAZÁL' - ,he: 'רמה בזלית ' - ,de: 'BASAL' - ,dk: 'BASAL' - ,ro: 'Bazală' - ,ru: 'Базал' - ,fr: 'Basale' - ,sk: 'BAZÁL' - ,sv: 'BASAL' - ,nb: 'BASAL' - ,fi: 'Basaali' - ,pt: 'BASAL' - ,bg: 'Базал' - ,hr: 'Bazal' - ,ko: 'BASAL' - ,es: 'BASAL' - ,it: 'BASALE' - ,nl: 'Basaal' - ,tr: 'Bazal' - ,zh_cn: '基础率' - ,zh_tw: '基礎率' - ,pl: 'BAZA' - ,hu: 'BAZÁL' - } - ,'Current basal' : { - cs:'Současný bazál' - ,he: 'רמה בזלית נוכחית ' - ,de: 'Aktuelle Basalrate' - ,dk: 'Nuværende basal' - ,ro: 'Bazala curentă' - ,fr: 'Débit basal actuel' - ,ru: 'Актуальный базал' - ,sk: 'Aktuálny bazál' - ,sv: 'Nuvarande basal' - ,nb: 'Gjeldende basal' - ,fi: 'Nykyinen basaali' - ,pt: 'Basal atual' - ,es: 'Basal actual' - ,bg: 'Актуален базал' - ,hr: 'Trenutni bazal' - ,ko: '현재 basal' - ,it: 'Basale corrente' - ,nl: 'Huidige basaal' - ,tr: 'Geçerli Bazal' - ,zh_cn: '当前基础率' - ,pl: 'Dawka podstawowa' - ,hu: 'Aktuális bazál' - } - ,'Sensitivity' : { - cs:'Citlivost (ISF)' - ,he: 'רגישות ' - ,de: 'Sensitivität' - ,dk: 'Insulinfølsomhed (ISF)' - ,ro: 'Sensibilitate la insulină (ISF)' - ,fr: 'Sensibilité à l\'insuline (ISF)' - ,ru: 'Чуствительность к инсулину ISF' - ,sk: 'Citlivosť (ISF)' - ,sv: 'Insulinkönslighet (ISF)' - ,nb: 'Insulinsensitivitet (ISF)' - ,fi: 'Herkkyys' - ,es: 'Sensibilidad' - ,pt: 'Fator de sensibilidade' - ,bg: 'Инсулинова чувствителност (ISF)' - ,hr: 'Osjetljivost' - ,ko: '인슐린 민감도(ISF)' - ,it: 'ISF - sensibilità' - ,nl: 'Gevoeligheid' - ,tr: 'Duyarlılık Faktörü (ISF)' - ,zh_cn: '胰岛素敏感系数' - ,pl: 'Wrażliwość' - ,hu: 'Inzulin érzékenység' - } - ,'Current Carb Ratio' : { - cs:'Sacharidový poměr (I:C)' - ,he: 'וחס פחמימות לאינסולין נוכחי ' - ,de: 'Aktuelles KH-Verhältnis' - ,dk: 'Nuværende kulhydratratio' - ,fr: 'Rapport Insuline-glucides actuel (I:C)' - ,ro: 'Raport Insulină:Carbohidrați (ICR)' - ,ru: 'Актуальное соотношение инсулин:углеводы I:C' - ,sk: 'Aktuálny sacharidový pomer (I"C)' - ,sv: 'Gällande kolhydratkvot' - ,nb: 'Gjeldende karbohydratforhold' - ,es: 'Relación actual Insulina:Carbohidratos' - ,pt: 'Relação insulina:carboidrato atual' - ,fi: 'Nykyinen hiilihydraattiherkkyys' - ,bg: 'Актуално Въглехидратно Съотношение' - ,hr: 'Trenutni I:C' - ,ko: '현재 탄수화물 비율(ICR)' - ,it: 'Attuale rapporto I:C' - ,nl: 'Huidige KH ratio' - ,tr: 'Geçerli Karbonhidrat oranı I/C (ICR)' - ,zh_cn: '当前碳水化合物系数' - ,pl: 'Obecny przelicznik węglowodanowy' - ,hu: 'Aktuális szénhidrát arány' - } - ,'Basal timezone' : { - cs:'Časová zóna' - ,he: 'איזור זמן לרמה הבזלית ' - ,de: 'Basal Zeitzone' - ,dk: 'Basal tidszone' - ,ro: 'Fus orar pentru bazală' - ,es: 'Zona horaria basal' - ,fr: 'Fuseau horaire' - ,ru: 'Часовой пояс базала' - ,sk: 'Časová zóna pre bazál' - ,sv: 'Basal tidszon' - ,nb: 'Basal tidssone' - ,pt: 'Fuso horário da basal' - ,fi: 'Aikavyöhyke' - ,bg: 'Базална часова зона' - ,hr: 'Vremenska zona bazala' - ,ko: 'Basal 타임존' - ,it: 'fuso orario basale' - ,nl: 'Basaal tijdzone' - ,tr: 'Bazal saat dilimi' - ,zh_cn: '基础率时区' - ,pl: 'Strefa czasowa dawki podstawowej' - ,hu: 'Bazál időzóna' - } - ,'Active profile' : { - cs:'Aktivní profil' - ,he: 'פרופיל פעיל ' - ,de: 'Aktives Profil' - ,dk: 'Aktiv profil' - ,ro: 'Profilul activ' - ,fr: 'Profil actif' - ,ru: 'Действующий профиль' - ,sk: 'Aktívny profil' - ,sv: 'Aktiv profil' - ,nb: 'Aktiv profil' - ,pt: 'Perfil ativo' - ,es: 'Perfil activo' - ,fi: 'Aktiivinen profiili' - ,bg: 'Активен профил' - ,hr: 'Aktivni profil' - ,ko: '활성 프로파일' - ,it: 'Attiva profilo' - ,nl: 'Actief profiel' - ,tr: 'Aktif profil' - ,zh_cn: '当前配置文件' - ,pl: 'Profil aktywny' - ,hu: 'Aktív profil' - } - ,'Active temp basal' : { - cs:'Aktivní dočasný bazál' - ,he: 'רמה בזלית זמנית פעילה ' - ,de: 'Aktive temp. Basalrate' - ,dk: 'Aktiv midlertidig basal' - ,ro: 'Bazală temporară activă' - ,fr: 'Débit basal temporaire actif' - ,ru: 'Активный временный базал' - ,sk: 'Aktívny dočasný bazál' - ,sv: 'Aktiv tempbasal' - ,nb: 'Aktiv midlertidig basal' - ,pt: 'Basal temporária ativa' - ,es: 'Basal temporal activa' - ,fi: 'Aktiivinen tilapäisbasaali' - ,bg: 'Активен временен базал' - ,hr: 'Aktivni temp bazal' - ,ko: '활성 임시 basal' - ,it: 'Attiva Basale Temp' - ,nl: 'Actieve tijdelijke basaal' - ,tr: 'Aktif geçici bazal oranı' - ,zh_cn: '当前临时基础率' - ,pl: 'Aktywa tymczasowa dawka podstawowa' - ,hu: 'Aktív átmeneti bazál' - } - ,'Active temp basal start' : { - cs:'Začátek dočasného bazálu' - ,he: 'התחלה רמה בזלית זמנית ' - ,de: 'Start aktive temp. Basalrate' - ,dk: 'Aktiv midlertidig basal start' - ,ro: 'Start bazală temporară activă' - ,fr: 'Début du débit basal temporaire' - ,ru: 'Старт актуального временного базала' - ,sk: 'Štart dočasného bazálu' - ,sv: 'Aktiv tempbasal start' - ,nb: 'Aktiv midlertidig basal start' - ,pt: 'Início da basal temporária ativa' - ,es: 'Inicio Basal temporal activa' - ,fi: 'Aktiivisen tilapäisbasaalin aloitus' - ,bg: 'Старт на активен временен базал' - ,hr: 'Početak aktivnog tamp bazala' - ,ko: '활성 임시 basal 시작' - ,it: 'Attiva Inizio Basale temp' - ,nl: 'Actieve tijdelijke basaal start' - ,tr: 'Aktif geçici bazal oranı başlangıcı' - ,zh_cn: '当前临时基础率开始' - ,pl: 'Start aktywnej tymczasowej dawki podstawowej' - ,hu: 'Aktív átmeneti bazál kezdete' - } - ,'Active temp basal duration' : { - cs:'Trvání dočasného bazálu' - ,he: 'משך רמה בזלית זמנית ' - ,de: 'Dauer aktive temp. Basalrate' - ,dk: 'Aktiv midlertidig basal varighed' - ,ro: 'Durata bazalei temporare active' - ,fr: 'Durée du débit basal temporaire' - ,ru: 'Длительность актуального временного базала' - ,sk: 'Trvanie dočasného bazálu' - ,sv: 'Aktiv tempbasal varaktighetstid' - ,nb: 'Aktiv midlertidig basal varighet' - ,pt: 'Duração de basal temporária ativa' - ,es: 'Duración Basal Temporal activa' - ,fi: 'Aktiivisen tilapäisbasaalin kesto' - ,bg: 'Продължителност на Активен временен базал' - ,hr: 'Trajanje aktivnog temp bazala' - ,ko: '활성 임시 basal 시간' - ,it: 'Attiva durata basale temp' - ,nl: 'Actieve tijdelijk basaal duur' - ,zh_cn: '当前临时基础率期间' - ,pl: 'Czas trwania aktywnej tymczasowej dawki podstawowej' - ,tr: 'Aktif geçici bazal süresi' - ,hu: 'Aktív átmeneti bazál időtartalma' - } - ,'Active temp basal remaining' : { - cs:'Zbývající dočasný bazál' - ,he: 'זמן שנשאר ברמה בזלית זמנית ' - ,de: 'Verbleibene Dauer temp. Basalrate' - ,dk: 'Resterende tid for aktiv midlertidig basal' - ,ro: 'Rest de bazală temporară activă' - ,fr: 'Durée restante de débit basal temporaire' - ,ru: 'Остается актуального временного базала' - ,sk: 'Zostatok dočasného bazálu' - ,sv: 'Återstående tempbasaltid' - ,nb: 'Gjenstående tid for midlertidig basal' - ,pt: 'Basal temporária ativa restante' - ,es: 'Basal temporal activa restante' - ,fi: 'Aktiivista tilapäisbasaalia jäljellä' - ,bg: 'Оставащ Активен временен базал' - ,hr: 'Prestali aktivni temp bazal' - ,ko: '남아 있는 활성 임시 basal' - ,it: 'Attiva residuo basale temp' - ,nl: 'Actieve tijdelijke basaal resteert' - ,zh_cn: '当前临时基础率剩余' - ,pl: 'Pozostała aktywna tymczasowa dawka podstawowa' - ,tr: 'Aktif geçici bazal kalan' - ,hu: 'Átmeneti bazál visszamaradó ideje' - } - ,'Basal profile value' : { - cs: 'Základní hodnota bazálu' - ,he: 'רמה בזלית מפרופיל ' - ,de: 'Basal-Profil Wert' - ,dk: 'Basalprofil værdi' - ,ro: 'Valoarea profilului bazalei' - ,ru: 'Величина профильного базала' - ,fr: 'Valeur du débit basal' - ,sv: 'Basalprofil värde' - ,es: 'Valor perfil Basal' - ,nb: 'Basalprofil verdi' - ,fi: 'Basaaliprofiilin arvo' - ,pt: 'Valor do perfil basal' - ,sk: 'Základná hodnota bazálu' - ,bg: 'Базален профил стойност' - ,hr: 'Profilna vrijednost bazala' - ,ko: 'Basal 프로파일 값' - ,it: 'Valore profilo basale' - ,nl: 'Basaal profiel waarde' - ,zh_cn: '基础率配置文件值' - ,pl: 'Wartość profilu podstawowego' - ,tr: 'Bazal profil değeri' - ,hu: 'Bazál profil értéke' - } - ,'Active combo bolus' : { - cs:'Aktivní kombinovaný bolus' - ,he: 'בולוס קומבו פעיל ' - ,de: 'Aktiver verzögerter Bolus' - ,dk: 'Aktiv kombobolus' - ,ro: 'Bolus combinat activ' - ,fr: 'Bolus Duo/Combo actif' - ,ru: 'Активный комбинированный болюс' - ,sv: 'Aktiv kombobolus' - ,nb: 'Kombinasjonsbolus' - ,fi: 'Aktiivinen yhdistelmäbolus' - ,pt: 'Bolus duplo em atividade' - ,es: 'Activo combo-bolo' - ,sk: 'Aktívny kombinovaný bolus' - ,bg: '' - ,hr: 'Aktivni dual bolus' - ,ko: '활성 콤보 bolus' - ,it: 'Attiva Combo bolo' - ,nl: 'Actieve combo bolus' - ,zh_cn: '当前双波大剂量' - ,pl: 'Aktywny bolus złożony' - ,tr: 'Aktive kombo bolus' - ,hu: 'Aktív kombinált bólus' - } - ,'Active combo bolus start' : { - cs: 'Začátek kombinovaného bolusu' - ,he: 'התחלת בולוס קומבו פעיל ' - ,de: 'Start des aktiven verzögerten Bolus' - ,dk: 'Aktiv kombibolus start' - ,ro: 'Start bolus combinat activ' - ,fr: 'Début de Bolus Duo/Combo' - ,ru: 'Старт активного комбинир болюса' - ,sv: 'Aktiv kombobolus start' - ,nb: 'Kombinasjonsbolus start' - ,fi: 'Aktiivisen yhdistelmäboluksen alku' - ,pt: 'Início do bolus duplo em atividade' - ,es: 'Inicio del combo-bolo activo' - ,sk: 'Štart kombinovaného bolusu' - ,bg: 'Активен комбиниран болус' - ,hr: 'Početak aktivnog dual bolusa' - ,ko: '활성 콤보 bolus 시작' - ,it: 'Attivo inizio Combo bolo' - ,nl: 'Actieve combo bolus start' - ,zh_cn: '当前双波大剂量开始' - ,pl: 'Start aktywnego bolusa złożonego' - ,tr: 'Aktif gecikmeli bolus başlangıcı' - ,hu: 'Aktív kombinált bólus kezdete' - } - ,'Active combo bolus duration' : { - cs: 'Trvání kombinovaného bolusu' - ,he: 'משך בולוס קומבו פעיל ' - ,de: 'Dauer des aktiven verzögerten Bolus' - ,dk: 'Aktiv kombibolus varighed' - ,ro: 'Durată bolus combinat activ' - ,fr: 'Durée du Bolus Duo/Combo' - ,ru: 'Длительность активного комбинир болюса' - ,sv: 'Aktiv kombibolus varaktighet' - ,es: 'Duración del Combo-Bolo activo' - ,nb: 'Kombinasjonsbolus varighet' - ,fi: 'Aktiivisen yhdistelmäboluksen kesto' - ,pt: 'Duração de bolus duplo em atividade' - ,sk: 'Trvanie kombinovaného bolusu' - ,bg: 'Продължителност на активния комбиниран болус' - ,hr: 'Trajanje aktivnog dual bolusa' - ,ko: '활성 콤보 bolus 기간' - ,it: 'Attivo durata Combo bolo' - ,nl: 'Actieve combo bolus duur' - ,zh_cn: '当前双波大剂量期间' - ,pl: 'Czas trwania aktywnego bolusa złożonego' - ,tr: 'Active combo bolus süresi' - ,hu: 'Aktív kombinált bólus időtartalma' - } - ,'Active combo bolus remaining' : { - cs: 'Zbývající kombinovaný bolus' - ,he: 'זמן שנשאר בבולוס קומבו פעיל ' - ,de: 'Verbleibender aktiver verzögerter Bolus' - ,dk: 'Resterende aktiv kombibolus' - ,ro: 'Rest de bolus combinat activ' - ,fr: 'Activité restante du Bolus Duo/Combo' - ,ru: 'Остается активного комбинир болюса' - ,sv: 'Återstående aktiv kombibolus' - ,es: 'Restante Combo-Bolo activo' - ,nb: 'Gjenstående kombinasjonsbolus' - ,fi: 'Aktiivista yhdistelmäbolusta jäljellä' - ,pt: 'Restante de bolus duplo em atividade' - ,sk: 'Zostávajúci kombinovaný bolus' - ,bg: 'Оставащ активен комбиниран болус' - ,hr: 'Preostali aktivni dual bolus' - ,ko: '남아 있는 활성 콤보 bolus' - ,it: 'Attivo residuo Combo bolo' - ,nl: 'Actieve combo bolus resteert' - ,zh_cn: '当前双波大剂量剩余' - ,pl: 'Pozostały aktywny bolus złożony' - ,tr: 'Aktif kombo (yayım) bolus kaldı' - ,hu: 'Aktív kombinált bólus fennmaradó idő' - } - ,'BG Delta' : { - cs:'Změna glykémie' - ,he: 'הפרש רמת סוכר ' - ,de: 'BZ Differenz' - ,dk: 'BS deltaværdi' - ,ro: 'Diferență glicemie' - ,fr: 'Différence de glycémie' - ,ru: 'Изменение гликемии' - ,sv: 'BS deltavärde' - ,nb: 'BS deltaverdi' - ,fi: 'VS muutos' - ,pt: 'Diferença de glicemia' - ,es: 'Diferencia de glucemia' - ,sk: 'Zmena glykémie' - ,bg: 'Дельта ГК' - ,hr: 'GUK razlika' - ,ko: '혈당 차이' - ,it: 'BG Delta' - ,nl: 'BG Delta' - ,zh_cn: '血糖增量' - ,zh_tw: '血糖增量' - ,pl: 'Zmiana glikemii' - ,tr: 'KŞ farkı' - ,hu: 'Cukorszint változása' - } - ,'Elapsed Time' : { - cs:'Dosažený čas' - ,he: 'זמן שעבר ' - ,de: 'Vergangene Zeit' - ,dk: 'Forløbet tid' - ,ro: 'Timp scurs' - ,fr: 'Temps écoulé' - ,ru: 'Прошло времени' - ,sv: 'Förfluten tid' - ,nb: 'Forløpt tid' - ,fi: 'Kulunut aika' - ,pt: 'Tempo transcorrido' - ,es: 'Tiempo transcurrido' - ,sk: 'Uplynutý čas' - ,bg: 'Изминало време' - ,hr: 'Proteklo vrijeme' - ,ko: '경과 시간' - ,it: 'Tempo Trascorso' - ,nl: 'Verstreken tijd' - ,zh_cn: '所需时间' - ,zh_tw: '所需時間' - ,pl: 'Upłynął czas' - ,tr: 'Geçen zaman' - ,hu: 'Eltelt idő' - } - ,'Absolute Delta' : { - cs:'Absolutní rozdíl' - ,he: 'הפרש רמת סוכר אבסולוטית ' - ,de: 'Absolute Differenz' - ,dk: 'Absolut deltaværdi' - ,ro: 'Diferență absolută' - ,fr: 'Différence absolue' - ,ru: 'Абсолютное изменение' - ,sv: 'Absolut deltavärde' - ,nb: 'Absolutt forskjell' - ,fi: 'Absoluuttinen muutos' - ,pt: 'Diferença absoluta' - ,es: 'Diferencia absoluta' - ,sk: 'Absolútny rozdiel' - ,bg: 'Абсолютно изменение' - ,hr: 'Apsolutna razlika' - ,ko: '절대적인 차이' - ,it: 'Delta Assoluto' - ,nl: 'Abslute delta' - ,zh_cn: '绝对增量' - ,zh_tw: '絕對增量' - ,pl: 'różnica absolutna' - ,tr: 'Mutlak fark' - ,hu: 'Abszolút külonbség' - } - ,'Interpolated' : { - cs:'Interpolováno' - ,he: 'אינטרפולציה ' - ,de: 'Interpoliert' - ,dk: 'Interpoleret' - ,ro: 'Interpolat' - ,fr: 'Interpolé' - ,ru: 'Интерполировано' - ,sv: 'Interpolerad' - ,nb: 'Interpolert' - ,fi: 'Laskettu' - ,pt: 'Interpolado' - ,es: 'Interpolado' - ,sk: 'Interpolované' - ,bg: 'Интерполирано' - ,hr: 'Interpolirano' - ,ko: '삽입됨' - ,it: 'Interpolata' - ,nl: 'Geinterpoleerd' - ,zh_cn: '插值' - ,zh_tw: '插值' - ,pl: 'Interpolowany' - ,tr: 'Aralıklı' - ,hu: 'Interpolált' - } - ,'BWP' : { // Bolus Wizard Preview - cs: 'KALK' - ,he: 'BWP' - ,de: 'BWP' - ,dk: 'Bolusberegner (BWP)' - ,ro: 'Ajutor bolusare (BWP)' - ,ru: 'Калькулятор болюса' - ,fr: 'Calculateur de bolus (BWP)' - ,sv: 'Boluskalkylator' - ,es: 'VistaPreviaCalculoBolo (BWP)' - ,nb: 'Boluskalkulator' - ,hr: 'Čarobnjak bolusa' - ,fi: 'Annoslaskuri' - ,pt: 'Ajuda de bolus' - ,sk: 'BK' - ,bg: 'БП' - ,ko: 'BWP' - ,it: 'BWP' - ,nl: 'BWP' - ,zh_cn: 'BWP' - ,zh_tw: 'BWP' - ,pl: 'Kalkulator bolusa' - ,tr: 'BWP' - ,hu: 'BWP' - } - ,'Urgent' : { - cs:'Urgentní' - ,he: 'דחוף ' - ,de: 'Akut' - ,dk: 'Akut' - ,ro: 'Urgent' - ,fr: 'Urgent' - ,ru: 'Срочно' - ,es: 'Urgente' - ,sv: 'Akut' - ,nb: 'Akutt' - ,fi: 'Kiireellinen' - ,pt: 'Urgente' - ,sk: 'Urgentné' - ,bg: 'Спешно' - ,hr: 'Hitno' - ,ko: '긴급' - ,it: 'Urgente' - ,ja: '緊急' - ,nl: 'Urgent' - ,zh_cn: '紧急' - ,zh_tw: '緊急' - ,pl:'Pilny' - ,tr: 'Acil' - ,hu: 'Sűrgős' - } - ,'Warning' : { - cs:'Varování' - ,he: 'אזהרה ' - ,de: 'Warnung' - ,dk: 'Advarsel' - ,ro: 'Atenție' - ,fr: 'Attention' - ,ru: 'Осторожно' - ,sv: 'Varning' - ,nb: 'Advarsel' - ,fi: 'Varoitus' - ,pt: 'Aviso' - ,es: 'Aviso' - ,sk: 'Varovanie' - ,bg: 'Предупреждение' - ,hr: 'Upozorenje' - ,ko: '경고' - ,it: 'Avviso' - ,nl: 'Waarschuwing' - ,zh_cn: '警告' - ,zh_tw: '警告' - ,pl: 'Ostrzeżenie' - ,tr: 'Uyarı' - ,hu: 'Figyelmeztetés' - } - ,'Info' : { - cs: 'Informativní' - ,he: 'לידיעה ' - ,de: 'Info' - ,dk: 'Info' - ,ro: 'Informație' - ,fr: 'Information' - ,ru: 'Информация' - ,sv: 'Information' - ,nb: 'Informasjon' - ,fi: 'Info' - ,pt: 'Informações' - ,es: 'Información' - ,sk: 'Info' - ,bg: 'Информация' - ,hr: 'Info' - ,ko: '정보' - ,it: 'Info' - ,nl: 'Info' - ,zh_cn: '信息' - ,zh_tw: '資訊' - ,pl: 'Informacja' - ,tr: 'Info' - ,hu: 'Információ' - } - ,'Lowest' : { - cs: 'Nejnižší' - ,he: 'הנמוך ביותר ' - ,de: 'Niedrigster' - ,dk: 'Laveste' - ,ro: 'Cea mai mică' - ,ru: 'Самое нижнее' - ,fr: 'Valeur la plus basse' - ,sv: 'Lägsta' - ,nb: 'Laveste' - ,es: 'Más bajo' - ,fi: 'Matalin' - ,pt: 'Mais baixo' - ,sk: 'Najnižsie' - ,bg: 'Най-ниско' - ,hr: 'Najniže' - ,ko: '가장 낮은' - ,it: 'Minore' - ,nl: 'Laagste' - ,tr: 'En düşük değer' - ,zh_cn: '血糖极低' - ,zh_tw: '血糖極低' - ,pl: 'Niski' - ,hu: 'Legalacsonyabb' - } - ,'Snoozing high alarm since there is enough IOB' : { - cs:'Vypínání alarmu vyskoké glykémie, protože je dostatek IOB' - ,he: 'נודניק את ההתראה הגבוהה מפני שיש מספיק אינסולין פעיל בגוף' - ,de: 'Ignoriere Alarm hoch, da genügend aktives Bolus-Insulin (IOB) vorhanden' - ,dk: 'Udsætter høj alarm siden der er nok aktiv insulin (IOB)' - ,ro: 'Ignoră alarma de hiper deoarece este suficientă insulină activă IOB' - ,fr: 'Alarme haute ignorée car suffisamment d\'insuline à bord (IOB)' - ,bg: 'Изключване на аларма за висока КЗ, тъй като има достатъчно IOB' - ,hr: 'Stišan alarm za hiper pošto ima dovoljno aktivnog inzulina' - ,es: 'Ignorar alarma de Hiperglucemia al tener suficiente insulina activa' - ,ru: 'Отключение предупреждение о высоком СК ввиду достаточности инсулина в организме' - ,sv: 'Snoozar höglarm då aktivt insulin är tillräckligt' - ,nb: 'Utsetter høy-alarm siden det er nok aktivt insulin' - ,fi: 'Korkean sokerin varoitus poistettu riittävän insuliinin vuoksi' - ,pt: 'Ignorar alarme de hiper em função de IOB suficiente' - ,sk: 'Odloženie alarmu vysokej glykémie, pretože je dostatok IOB' - ,ko: '충분한 IOB가 남아 있기 때문에 고혈당 알람을 스누즈' - ,it: 'Addormenta allarme alto poiché non vi è sufficiente IOB' - ,nl: 'Snooze hoog alarm, er is genoeg IOB' - ,tr: 'Yeterli IOB(Aktif İnsülin) olduğundan KŞ yüksek uyarımını ertele' - ,zh_cn: '有足够的IOB(活性胰岛素),暂停高血糖警报' - ,pl: 'Wycisz alarm wysokiej glikemi, jest wystarczająco dużo aktywnej insuliny' - ,hu: 'Magas cukor riasztás késleltetése mivel elegendő inzulin van kiadva (IOB)' - } - ,'Check BG, time to bolus?' : { - cs:'Zkontrolovat glykémii, čas na bolus?' - ,he: 'בדוק רמת סוכר. צריך להוסיף אינסולין? ' - ,de: 'BZ kontrollieren, ggf. Bolus abgeben?' - ,dk: 'Kontroler BS, tid til en bolus?' - ,ro: 'Verifică glicemia, poate este necesar un bolus?' - ,fr: 'Vérifier la glycémie, bolus nécessaire ?' - ,bg: 'Провери КЗ, не е ли време за болус?' - ,hr: 'Provjeri GUK, vrijeme je za bolus?' - ,ru: 'Проверьте ГК, дать болюс?' - ,sv: 'Kontrollera BS, dags att ge bolus?' - ,nb: 'Sjekk blodsukker, på tide med bolus?' - ,fi: 'Tarkista VS, aika bolustaa?' - ,pt: 'Meça a glicemia, hora de bolus de correção?' - ,es: 'Controle su glucemia, ¿quizás un bolo Insulina?' - ,sk: 'Skontrolovať glykémiu, čas na bolus?' - ,ko: 'Bolus를 주입할 시간입니다. 혈당 체크 하시겠습니까?' - ,it: 'Controllare BG, il tempo del bolo?' - ,nl: 'Controleer BG, tijd om te bolussen?' - ,tr: 'KŞine bakın, gerekirse bolus verin?' - ,zh_cn: '测量血糖,该输注大剂量了?' - ,pl: 'Sprawdź glikemię, czas na bolusa ?' - ,hu: 'Ellenőrizd a cukorszintet. Ideje bóluszt adni?' - } - ,'Notice' : { - cs:'Poznámka' - ,he: 'הודעה ' - ,de: 'Notiz' - ,dk: 'Note' - ,ro: 'Notificare' - ,ru: 'Заметка' - ,fr: 'Notification' - ,bg: 'Известие' - ,hr: 'Poruka' - ,sv: 'Notering' - ,es: 'Nota' - ,nb: 'NB' - ,fi: 'Huomio' - ,nl: 'Notitie' - ,pt: 'Nota' - ,sk: 'Poznámka' - ,ko: '알림' - ,it: 'Preavviso' - ,tr: 'Not' - ,zh_cn: '提示' - ,pl: 'Uwaga' - ,hu: 'Megjegyzés' - } - ,'required info missing' : { - cs:'chybějící informace' - ,he: 'חסרה אינפורמציה ' - ,de: 'Benötigte Information fehlt' - ,dk: 'nødvendig information mangler' - ,ro: 'Informații importante lipsă' - ,fr: 'Information nécessaire manquante' - ,ru: 'Отсутствует необходимая информация' - ,bg: 'Липсва необходима информация' - ,hr: 'nedostaju potrebne informacije' - ,sv: 'Nödvändig information saknas' - ,nb: 'Nødvendig informasjon mangler' - ,es: 'Falta información requerida' - ,fi: 'tarvittava tieto puuttuu' - ,pt: 'Informação essencial faltando' - ,sk: 'chýbajúca informácia' - ,ko: '요청한 정보 손실' - ,it: 'richiesta informazioni mancanti' - ,nl: 'vereiste gegevens ontbreken' - ,tr: 'gerekli bilgi eksik' - ,zh_cn: '所需信息不全' - ,pl: 'brak wymaganych informacji' - ,hu: 'Szükséges információ hiányos' - } - ,'Insulin on Board' : { - cs:'Aktivní inzulín' - ,he: 'אינסולין פעיל בגוף ' - ,de: 'Aktives Insulin' - ,dk: 'Aktivt insulin (IOB)' - ,ro: 'Insulină activă (IOB)' - ,fr: 'Insuline à bord (IOB)' - ,ru: 'Активный инсулин (IOB)' - ,bg: 'Активен Инсулин (IOB)' - ,hr: 'Aktivni inzulín' - ,sv: 'Aktivt insulin (IOB)' - ,nb: 'Aktivt insulin (IOB)' - ,fi: 'Aktiivinen insuliini' - ,pt: 'Insulina ativa' - ,es: 'Insulina activa (IOB)' - ,sk: 'Aktívny inzulín (IOB)' - ,ko: '활성 인슐린(IOB)' - ,it: 'IOB - Insulina Attiva' - ,nl: 'IOB - Inuline on board' - ,tr: '(IOB) Aktif İnsülin' - ,zh_cn: '活性胰岛素(IOB)' - ,pl: 'Aktywna insulina' - ,hu: 'Aktív inzulin (IOB)' - } - ,'Current target' : { - cs:'Aktuální cílová hodnota' - ,he: 'מטרה נוכחית ' - ,de: 'Aktueller Zielbereich' - ,dk: 'Aktuelt mål' - ,ro: 'Țintă curentă' - ,fr: 'Cible actuelle' - ,ru: 'Актуальное целевое значение' - ,bg: 'Настояща целева КЗ' - ,hr: 'Trenutni cilj' - ,sv: 'Aktuellt mål' - ,nb: 'Gjeldende mål' - ,fi: 'Tämänhetkinen tavoite' - ,es: 'Objetivo actual' - ,pt: 'Meta atual' - ,sk: 'Aktuálny cieľ' - ,ko: '현재 목표' - ,it: 'Obiettivo attuale' - ,nl: 'huidig doel' - ,tr: 'Mevcut hedef' - ,zh_cn: '当前目标' - ,pl: 'Aktualny cel' - ,hu: 'Jelenlegi cél' - } - ,'Expected effect' : { - cs:'Očekávaný efekt' - ,he: 'אפקט צפוי ' - ,de: 'Erwarteter Effekt' - ,dk: 'Forventet effekt' - ,ro: 'Efect presupus' - ,fr: 'Effect escompté' - ,ru: 'Ожидаемый эффект' - ,bg: 'Очакван ефект' - ,hr: 'Očekivani efekt' - ,sv: 'Förväntad effekt' - ,nb: 'Forventet effekt' - ,fi: 'Oletettu vaikutus' - ,pt: 'Efeito esperado' - ,es: 'Efecto previsto' - ,sk: 'Očakávaný efekt' - ,ko: '예상 효과' - ,it: 'Effetto Previsto' - ,nl: 'verwacht effect' - ,tr: 'Beklenen etki' - ,zh_cn: '预期效果' - ,pl: 'Oczekiwany efekt' - ,hu: 'Elvárt efektus' - } - ,'Expected outcome' : { - cs:'Očekávaný výsledek' - ,he: 'תוצאת צפויה ' - ,de: 'Erwartetes Ergebnis' - ,dk: 'Forventet udfald' - ,ro: 'Rezultat așteptat' - ,fr: 'Résultat escompté' - ,ru: 'Ожидаемый результат' - ,bg: 'Очакван резултат' - ,hr: 'Očekivani ishod' - ,sv: 'Förväntat resultat' - ,nb: 'Forventet resultat' - ,fi: 'Oletettu lopputulos' - ,pt: 'Resultado esperado' - ,es: 'Resultado previsto' - ,sk: 'Očakávaný výsledok' - ,ko: '예상 결과' - ,it: 'Risultato previsto' - ,nl: 'Veracht resultaat' - ,tr: 'Beklenen sonuç' - ,zh_cn: '预期结果' - ,pl: 'Oczekowany resultat' - ,hu: 'Elvárt eredmény' - } - ,'Carb Equivalent' : { - cs:'Ekvivalent v sacharidech' - ,he: 'מקבילה בפחמימות ' - ,de: 'Kohlenhydrat-Äquivalent' - ,dk: 'Kulhydrat ækvivalent' - ,ro: 'Echivalență în carbohidrați' - ,fr: 'Equivalent glucidique' - ,ru: 'Эквивалент в углеводах' - ,bg: 'Равностойност във ВХ' - ,hr: 'Ekvivalent u UGH' - ,sv: 'Kolhydratsinnehåll' - ,nb: 'Karbohydratekvivalent' - ,nl: 'Koolhydraat equivalent' - ,fi: 'Hiilihydraattivastaavuus' - ,es: 'Equivalencia en Carbohidratos' - ,pt: 'Equivalente em carboidratos' - ,sk: 'Sacharidový ekvivalent' - ,ko: '탄수화물 양' - ,it: 'Carb equivalenti' - ,tr: 'Karbonhidrat eşdeğeri' - ,zh_cn: '碳水当量' - ,pl: 'Odpowiednik w węglowodanach' - ,hu: 'Szénhidrát megfelelője' - } - ,'Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs' : { - cs:'Nadbytek inzulínu: o %1U více, než na dosažení spodní hranice cíle. Nepočítáno se sacharidy.' - ,he: 'עודף אינסולין שווה ערך ליחידה אחת%1 יותר מאשר הצורך להגיע ליעד נמוך, לא לוקח בחשבון פחמימות ' - ,de: 'Überschüssiges Insulin: %1U mehr als zum Erreichen der Untergrenze notwendig, Kohlenhydrate sind unberücksichtigt' - ,dk: 'Overskud af insulin modsvarende %1U mere end nødvendigt for at nå lav mål, kulhydrater ikke medregnet' - ,es: 'Exceso de insulina en %1U más de lo necesario para alcanzar un objetivo bajo, sin tener en cuenta los carbohidratos' - ,ro: 'Insulină în exces: %1U mai mult decât este necesar pentru a atinge ținta inferioară, fără a ține cont de carbohidrați' - ,fr: 'Insuline en excès: %1U de plus que nécessaire pour atteindre la cible inférieure, sans prendre en compte les glucides' - ,bg: 'Излишният инсулин %1U е повече от необходимия за достигане до долната граница, ВХ не се вземат под внимание' - ,hr: 'Višak inzulina je %1U više nego li je potrebno da se postigne donja ciljana granica, ne uzevši u obzir UGH' - ,ru: 'Избыток инсулина равного %1U, необходимого для достижения нижнего целевого значения, углеводы не приняты в расчет' - ,sv: 'Överskott av insulin motsvarande %1U mer än nödvändigt för att nå lågt målvärde, kolhydrater ej medräknade' - ,nb: 'Insulin tilsvarende %1U mer enn det trengs for å nå lavt mål, karbohydrater ikke medregnet' - ,nl: 'Insulineoverschot van %1U om laag doel te behalen (excl. koolhydraten)' - ,fi: 'Liikaa insuliinia: %1U enemmän kuin tarvitaan tavoitteeseen pääsyyn (huomioimatta hiilihydraatteja)' - , pl: 'Nadmiar insuliny, %1J więcej niż potrzeba, aby osiągnąć cel dolnej granicy, nie biorąc pod uwagę węglowodanów' - ,pt: 'Excesso de insulina equivalente a %1U além do necessário para atingir a meta inferior, sem levar em conta carboidratos' - ,sk: 'Nadbytok inzulínu o %1U viac ako je potrebné na dosiahnutie spodnej cieľovej hranice. Neráta sa so sacharidmi.' - ,ko: '낮은 혈당 목표에 도달하기 위해 필요한 인슐린양보다 %1U의 인슐린 양이 초과 되었고 탄수화물 양이 초과되지 않았습니다.' - ,it: 'L\'eccesso d\'insulina equivalente %1U più che necessari per raggiungere l\'obiettivo basso, non rappresentano i carboidrati.' - ,tr: 'Fazla insülin: Karbonhidratları dikkate alınmadan, alt hedefe ulaşmak için gerekenden %1U\'den daha fazla' //??? - ,zh_cn: '胰岛素超过至血糖下限目标所需剂量%1单位,不计算碳水化合物' - ,hu: 'Felesleges inzulin megegyező %1U egységgel az alacsony cél eléréséhez, nem számolva a szénhidrátokkal' - } - ,'Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS' : { - cs:'Nadbytek inzulínu: o %1U více, než na dosažení spodní hranice cíle. UJISTĚTE SE, ŽE JE TO POKRYTO SACHARIDY' - ,he: 'עודף אינסולין %1 נדרש כדי להגיע למטרה התחתונה. שים לב כי עליך לכסות אינסולין בגוף על ידי פחמימות ' - ,de: 'Überschüssiges Insulin: %1U mehr als zum Erreichen der Untergrenze notwendig. SICHERSTELLEN, DASS IOB DURCH KOHLENHYDRATE ABGEDECKT WIRD' - ,dk: 'Overskud af insulin modsvarande %1U mere end nødvendigt for at nå lav målværdi, VÆR SIKKER PÅ AT IOB ER DÆKKET IND AF KULHYDRATER' - ,ro: 'Insulină în exces: %1U mai mult decât este necesar pentru a atinge ținta inferioară, ASIGURAȚI-VĂ CĂ INSULINA ESTE ACOPERITĂ DE CARBOHIDRAȚI' - ,fr: 'Insuline en excès: %1U de plus que nécessaire pour atteindre la cible inférieure, ASSUREZ UN APPORT SUFFISANT DE GLUCIDES' - ,bg: 'Излишният инсулин %1U е повече от необходимия за достигане до долната граница, ПРОВЕРИ ДАЛИ IOB СЕ ПОКРИВА ОТ ВЪГЛЕХИДРАТИТЕ' - ,hr: 'Višak inzulina je %1U više nego li je potrebno da se postigne donja ciljana granica, OBAVEZNO POKRIJTE SA UGH' - ,ru: 'Избыток инсулина, равного %1U, необходимого для достижения нижнего целевого значения, ПОКРОЙТЕ АКТИВН IOB ИНСУЛИН УГЛЕВОДАМИ' - ,sv: 'Överskott av insulin motsvarande %1U mer än nödvändigt för att nå lågt målvärde, SÄKERSTÄLL ATT IOB TÄCKS AV KOLHYDRATER' - ,es: 'Exceso de insulina en %1U más de la necesaria para alcanzar objetivo inferior. ASEGÚRESE QUE LA INSULINA ACTIVA IOB ESTA CUBIERTA POR CARBOHIDRATOS' - ,nb: 'Insulin tilsvarende %1U mer enn det trengs for å nå lavt mål, PASS PÅ AT AKTIVT INSULIN ER DEKKET OPP MED KARBOHYDRATER' - ,nl: 'Insulineoverschot van %1U om laag doel te behalen, ZORG VOOR VOLDOENDE KOOLHYDRATEN VOOR DE ACTIEVE INSULINE' - ,fi: 'Liikaa insuliinia: %1U enemmän kuin tarvitaan tavoitteeseen pääsyyn, VARMISTA RIITTÄVÄ HIILIHYDRAATTIEN SAANTI' - ,pt: 'Excesso de insulina equivalente a %1U além do necessário para atingir a meta inferior. ASSEGURE-SE DE QUE A IOB ESTEJA COBERTA POR CARBOIDRATOS' - ,sk: 'Nadbytok inzulínu o %1U viac ako je potrebné na dosiahnutie spodnej cieľovej hranice. UISTITE SA, ŽE JE TO POKRYTÉ SACHARIDMI' - ,ko: '낮은 혈당 목표에 도달하기 위해 필요한 인슐린양보다 %1U의 인슐린 양이 초과 되었습니다. 탄수화물로 IOB를 커버하세요.' - ,it: 'L\'eccesso d\'insulina equivalente %1U più che necessario per raggiungere l\'obiettivo basso, ASSICURARSI IOB SIA COPERTO DA CARBOIDRATI' - ,tr: 'Fazla insülin: Alt KŞ hedefine ulaşmak için gerekenden %1 daha fazla insülin.IOB(Aktif İnsülin) Karbonhidrat tarafından karşılandığından emin olun.' - ,zh_cn: '胰岛素超过至血糖下限目标所需剂量%1单位,确认IOB(活性胰岛素)被碳水化合物覆盖' - ,pl: 'Nadmiar insuliny: o %1J więcej niż potrzeba, aby osiągnąć cel dolnej granicy. UPEWNIJ SIĘ, ŻE AKTYWNA INSULINA JEST POKRYTA WĘGLOWODANAMI' - ,hu: 'Felesleges inzulin megegyező %1U egységgel az alacsony cél eléréséhez. FONTOS, HOGY A IOB LEGYEN SZÉNHIDRÁTTAL TAKARVA' - } - ,'%1U reduction needed in active insulin to reach low target, too much basal?' : { - cs:'Nutné snížení aktivního inzulínu o %1U k dosažení spodního cíle. Příliž mnoho bazálu?' - ,he: 'צריך %1 פחות אינסולין כדי להגיע לגבול התחתון. האם הרמה הבזלית גבוהה מדי? ' - ,de: 'Aktives Insulin um %1U reduzieren, um Untergrenze zu erreichen. Basal zu hoch?' - ,dk: '%1U reduktion nødvendig i aktiv insulin for at nå lav mål, for meget basal?' - ,ro: '%1U sunt în plus ca insulină activă pentru a atinge ținta inferioară, bazala este prea mare?' - ,fr: 'Réduction d\'insuline active nécessaire pour atteindre la cible inférieure. Débit basal trop élevé ?' - ,bg: '%1U намаляне е необходимо в активния инсулин до достигане до долната граница, прекалено висок базал?' - ,hr: 'Potrebno je smanjiti aktivni inzulin za %1U kako bi se dostigla donja ciljana granica, previše bazala? ' - ,ru: 'Для достижения нижнего целевого значения необходимо понизить величину активного инсулина на %1U, велика база?' - ,sv: '%1U minskning nödvändig i aktivt insulin för att nå lågt målvärde, för hög basal?' - ,nb: '%1U reduksjon trengs i aktivt insulin for å nå lavt mål, for høy basal?' - ,fi: 'Pääset tavoitteesen vähentämällä %1U aktiivista insuliinia, liikaa basaalia?' - ,es: 'Se necesita una reducción del %1U insulina activa para objetivo inferior, exceso en basal?' - ,pt: 'Necessária redução de %1U na insulina ativa para atingir a meta inferior, excesso de basal?' - ,nl: '%1U reductie vereist in actieve insuline om laag doel te bereiken, teveel basaal?' - ,sk: 'Nutné zníženie aktívneho inzulínu o %1U pre dosiahnutie spodnej cieľovej hranice. Príliš veľa bazálu?' - ,ko: '낮은 혈당 목표에 도달하기 위해 활성 인슐린 양을 %1U 줄일 필요가 있습니다. basal양이 너무 많습니까?' - ,it: 'Riduzione 1U% necessaria d\'insulina attiva per raggiungere l\'obiettivo basso, troppa basale?' - ,tr: 'Alt KŞ hedefi için %1U aktif insülin azaltılmalı, bazal oranı çok mu yüksek?' - ,zh_cn: '活性胰岛素已可至血糖下限目标,需减少%1单位,基础率过高?' - ,pl: '%1J potrzebnej redukcji w aktywnej insulinie, aby osiągnąć niski cel dolnej granicy, Za duża dawka podstawowa ?' - ,hu: '%1U egységnyi inzulin redukció szükséges az alacsony cél eléréséhez, túl magas a bazál?' - } - ,'basal adjustment out of range, give carbs?' : { - cs:'úprava změnou bazálu není možná. Podat sacharidy?' - ,he: 'השינוי ברמה הבזלית גדול מדי. תן פחמימות? ' - ,de: 'Basalrate geht außerhalb des Zielbereiches. Kohlenhydrate nehmen?' - ,dk: 'basalændring uden for grænseværdi, giv kulhydrater?' - ,ro: 'ajustarea bazalei duce în afara intervalului țintă. Suplimentați carbohirații?' - ,fr: 'ajustement de débit basal hors de limites, prenez des glucides?' - ,bg: 'Корекция на базала не е възможна, добавка на въглехидрати? ' - ,hr: 'prilagodba bazala je izvan raspona, dodati UGH?' - ,ru: 'Корректировка базала вне диапазона, добавить углеводов?' - ,sv: 'basaländring utanför gräns, ge kolhydrater?' - ,es: 'ajuste basal fuera de rango, dar carbohidratos?' - ,nb: 'basaljustering utenfor tillatt område, gi karbohydrater?' - ,fi: 'säätö liian suuri, anna hiilihydraatteja?' - ,pt: 'ajuste de basal fora da meta, dar carboidrato?' - ,sk: 'úprava pomocou zmeny bazálu nie je možná. Podať sacharidy?' - ,ko: '적정 basal 양의 범위를 초과했습니다. 탄수화물 보충 하시겠습니까?' - ,it: 'regolazione basale fuori campo, dare carboidrati?' - ,nl: 'basaal aanpassing buiten bereik, geef KH?' - ,tr: 'Bazal oran ayarlaması limit dışı, karbonhidrat alınsın mı?' - ,zh_cn: '基础率调整在范围之外,需要碳水化合物?' - ,pl: 'dawka podstawowa poza zakresem, podać węglowodany?' - ,hu: 'bazál változtatása az arányokon kívül esik, szénhidrát bevitele?' - } - ,'basal adjustment out of range, give bolus?' : { - cs:'úprava změnou bazálu není možná. Podat bolus?' - ,he: 'השינוי ברמה הבזלית גדול מדי. תן אינסולין? ' - ,de: 'Anpassung der Basalrate außerhalb des Zielbereichs. Bolus abgeben?' - ,dk: 'basalændring udenfor grænseværdi, giv bolus?' - ,ro: 'ajustarea bazalei duce în afara intervalului țintă. Suplimentați insulina?' - ,fr: 'ajustement de débit basal hors de limites, prenez un bolus?' - ,bg: 'Корекция на базала не е възможна, добавка на болус? ' - ,hr: 'prilagodna bazala je izvan raspona, dati bolus?' - ,ru: 'Корректировка базала вне диапазона, добавить болюс?' - ,sv: 'basaländring utanför gräns, ge bolus?' - ,nb: 'basaljustering utenfor tillatt område, gi bolus?' - ,fi: 'säätö liian suuri, anna bolus?' - ,es: 'Ajuste de basal fuera de rango, corregir con insulina?' - ,pt: 'ajuste de basal fora da meta, dar bolus de correção?' - ,sk: 'úprava pomocou zmeny bazálu nie je možná. Podať bolus?' - ,ko: '적정 basal 양의 범위를 초과했습니다. bolus를 추가하시겠습니까?' - ,it: 'regolazione basale fuori campo, dare bolo?' - ,nl: 'basaal aanpassing buiten bereik, bolus?' - ,tr: 'Bazal oran ayarlaması limit dışı, bolus alınsın mı?' - ,zh_cn: '基础率调整在范围之外,需要大剂量?' - ,pl: 'dawka podstawowa poza zakresem, podać insulinę?' - ,hu: 'bazál változtatása az arányokon kívül esik, bólusz beadása?' - } - ,'above high' : { - cs:'nad horním' - ,he: 'מעל גבוה ' - ,de: 'überhalb Obergrenze' - ,dk: 'over højt grænse' - ,ro: 'peste ținta superioară' - ,fr: 'plus haut que la limite supérieure' - ,ru: 'Выше верхней границы' - ,bg: 'над горната' - ,hr: 'iznad gornje granice' - ,sv: 'över hög nivå' - ,nb: 'over høy grense' - ,fi: 'yli korkean' - ,pt: 'acima do limite superior' - ,sk: 'nad horným' - ,es: 'por encima límite superior' - ,ko: '고혈당 초과' - ,it: 'sopra alto' - ,nl: 'boven hoog' - ,tr: 'üzerinde yüksek' - ,zh_cn: '血糖过高' - ,zh_tw: '血糖過高' - ,pl: 'powyżej wysokiego' - ,hu: 'magas felett' - } - ,'below low' : { - cs:'pod spodním' - ,he: 'מתחת נמוך ' - ,de: 'unterhalb Untergrenze' - ,dk: 'under lavt grænse' - ,ro: 'sub ținta inferioară' - ,fr: 'plus bas que la limite inférieure' - ,bg: 'под долната' - ,hr: 'ispod donje granice' - ,ru: 'Ниже нижней границы' - ,sv: 'under låg nivå' - ,nb: 'under lav grense' - ,fi: 'alle matalan' - ,es: 'por debajo límite inferior' - ,pt: 'abaixo do limite inferior' - ,sk: 'pod spodným' - ,ko: '저혈당 미만' - ,it: 'sotto bassa' - ,nl: 'onder laag' - ,tr: 'altında düşük' - ,zh_cn: '血糖过低' - ,zh_tw: '血糖過低' - ,pl: 'poniżej niskiego' - ,hu: 'alacsony alatt' - } - ,'Projected BG %1 target' : { - cs:'Předpokládaná glykémie %1 cílem' - ,he: 'תחזית רמת סןכר %1 ' - ,de: 'Erwarteter BZ %1' - ,dk: 'Ønsket BS %1 mål' - ,ro: 'Glicemie estimată %1 în țintă' - ,fr: 'Glycémie cible projetée %1 ' - ,bg: 'Предполагаемата КЗ %1 в граници' - ,hr: 'Procjena GUK %1 cilja' - ,ru: 'Расчетная целевая гликемия %1' - ,sv: 'Önskat BS %1 mål' - ,nb: 'Predikert BS %1 mål' - ,fi: 'Laskettu VS %1 tavoitteen' - ,pt: 'Meta de glicemia estimada %1' - ,sk: 'Predpokladaná glykémia %1 cieľ' - ,ko: '목표된 혈당 %1' - ,it: 'Proiezione BG %1 obiettivo' - ,es: 'Glucemia estimada %1 en objetivo' - ,nl: 'Verwachte BG %1 doel' - ,tr: 'Beklenen KŞ %1 hedefi' - ,zh_cn: '预计血糖%1目标' - ,pl: 'Oczekiwany poziom glikemii %1' - ,hu: 'Kiszámított BG cél %1' - } - ,'aiming at' : { - cs:'s cílem' - ,he: 'מטרה ' - ,de: 'angestrebt werden' - ,dk: 'ønsket udfald' - ,fr: 'visant' - ,ro: 'ținta este' - ,ru: 'цель на' - ,bg: 'цел към' - ,hr: 'ciljano' - ,sv: 'önskad utgång' - ,nb: 'sikter på' - ,fi: 'tavoitellaan' - ,es: 'resultado deseado' - ,pt: 'meta' - ,sk: 'cieľom' - ,ko: '목표' - ,it: 'puntare a' - ,nl: 'doel is' - ,tr: 'istenen sonuç' - ,zh_cn: '目标在' - ,pl: 'pożądany wynik' - ,hu: 'cél' - } - ,'Bolus %1 units' : { - cs:'Bolus %1 jednotek' - ,he: 'בולוס %1 יחידות ' - ,de: 'Bolus von %1 Einheiten' - ,dk: 'Bolus %1 enheder' - ,ro: 'Bolus de %1 unități' - ,fr: 'Bolus %1 unités' - ,bg: 'Болус %1 единици' - ,hr: 'Bolus %1 jedinica' - ,ru: 'Болюс %1 единиц' - ,sv: 'Bolus %1 enheter' - ,nb: 'Bolus %1 enheter' - ,fi: 'Bolusta %1 yksikköä' - ,pt: 'Bolus %1 unidades' - ,es: 'Bolus %1 unidades' - ,sk: 'Bolus %1 jednotiek' - ,ko: 'Bolus %1 단위' - ,it: 'Bolo %1 unità' - ,nl: 'Bolus %1 eenheden' - ,tr: 'Bolus %1 Ünite' - ,zh_cn: '大剂量%1单位' - ,pl: 'Bolus %1 jednostek' - ,hu: 'Bólus %1 egységet' - } - ,'or adjust basal' : { - cs:'nebo úprava bazálu' - ,he: 'או שנה רמה בזלית ' - ,de: 'oder Basal anpassen' - ,dk: 'eller juster basal' - ,ro: 'sau ajustează bazala' - ,fr: 'ou ajuster le débit basal' - ,bg: 'или корекция на базала' - ,hr: 'ili prilagodba bazala' - ,ru: 'или корректировать базал' - ,sv: 'eller justera basal' - ,nb: 'eller justere basal' - ,fi: 'tai säädä basaalia' - ,pt: 'ou ajuste basal' - ,es: 'o ajustar basal' - ,sk: 'alebo úprava bazálu' - ,ko: '또는 조절 basal' - ,it: 'o regolare basale' - ,nl: 'of pas basaal aan' - ,tr: 'ya da bazal ayarlama' - ,zh_cn: '或调整基础率' - ,pl: 'lub dostosuj dawkę bazową' - ,hu: 'vagy a bazál változtatása' - } - ,'Check BG using glucometer before correcting!' : { - cs:'Před korekcí zkontrolujte glukometrem glykémii!' - ,he: 'מדוד רמת סוכר בדם באמצעות מד סוכר לפני תיקון ' - ,de: 'Überprüfe deinen BZ mit dem Messgerät, bevor du eine Korrektur vornimmst!' - ,dk: 'Kontrollere blodsukker med fingerprikker / blodsukkermåler før der korrigeres!' - ,ro: 'Verifică glicemia cu glucometrul înainte de a face o corecție!' - ,fr: 'Vérifier la glycémie avec un glucomètre avant de corriger!' - ,bg: 'Провери КЗ с глюкомер, преди кореция!' - ,hr: 'Provjeri GUK glukometrom prije korekcije!' - ,ru: 'Перед корректировкой сверьте ГК с глюкометром' - ,sv: 'Kontrollera blodglukos med fingerstick före korrigering!' - ,nb: 'Sjekk blodsukker før korrigering!' - ,fi: 'Tarkista VS mittarilla ennen korjaamista!' - ,pt: 'Verifique glicemia de ponta de dedo antes de corrigir!' - ,es: 'Verifique glucemia antes de corregir!' - ,sk: 'Pred korekciou skontrolujte glykémiu glukometrom!' - ,ko: '수정하기 전에 혈당체크기를 사용하여 혈당을 체크하세요!' - ,it: 'Controllare BG utilizzando glucometro prima di correggere!' - ,nl: 'Controleer BG met bloeddruppel voor correctie!' - ,zh_cn: '校正前请使用血糖仪测量血糖!' - ,pl: 'Sprawdź glikemię z krwi przed podaniem korekty!' - ,tr: 'Düzeltme bolusu öncesi glikometreyle parmaktan KŞini kontrol edin!' - ,hu: 'Ellenőrizd a cukorszintet mérővel korrekció előtt!' - } - ,'Basal reduction to account %1 units:' : { - cs:'Úprava bazálu pro náhradu bolusu %1 U ' - ,he: 'משנה רמה בזלית בשביל %1 יחידות ' - ,de: 'Reduktion der Basalrate um %1 Einheiten zu kompensieren' - ,dk: 'Basalsænkning for at nå %1 enheder' - ,ro: 'Reducere bazală pentru a compensa %1 unități:' - ,fr: 'Réduction du débit basal pour obtenir l\'effet d\' %1 unité' - ,bg: 'Намаляне на базала с %1 единици' - ,hr: 'Smanjeni bazal da uračuna %1 jedinica:' - ,ru: 'Снижение базы из-за %1 единиц болюса' - ,sv: 'Basalsänkning för att nå %1 enheter' - ,nb: 'Basalredusering for å nå %1 enheter' - ,fi: 'Basaalin vähennys saadaksesi %1 yksikön vaikutuksen:' - ,pt: 'Redução de basal para compensar %1 unidades:' - ,es: 'Reducir basal para compesar %1 unidades:' - ,sk: 'Úprava bazálu pre výpočet %1 jednotiek:' - ,ko: '%1 단위로 계산하기 위해 Basal 감소' - ,it: 'Riduzione basale per conto %1 unità:' - ,nl: 'Basaal verlaagd voor %1 eenheden' - ,zh_cn: '基础率减少到%1单位' - ,pl: 'Dawka bazowa zredukowana do 1% J' - ,tr: '%1 birimi telafi etmek için azaltılmış Bazaloranı:' - ,hu: 'A bazál csökkentése %1 egység kiszámításához:' - } - ,'30m temp basal' : { - cs:'30ti minutový dočasný bazál' - ,he: 'שלושים דקות רמה בזלית זמנית ' - ,de: '30min temporäres Basal' - ,dk: '30 minuters midlertidig basal' - ,ro: 'bazală temporară de 30 minute' - ,fr: 'débit basal temporaire de 30 min' - ,bg: '30м временен базал' - ,hr: '30m temp bazal' - ,ru: '30 мин врем базал' - ,sv: '30 minuters temporär basal' - ,nb: '30 minutters midlertidig basal' - ,fi: '30m tilapäinen basaali' - ,pt: 'Basal temp 30m' - ,es: '30 min. temporal basal' - ,sk: '30 minutový dočasný bazál' - ,ko: '30분 임시 basal' - ,it: '30m basale temp' - ,nl: '30 minuten tijdelijke basaal' - ,zh_cn: '30分钟临时基础率' - ,pl: '30 minut tymczasowej dawki bazowej' - ,tr: '30 dk. geçici Bazal ' - ,hu: '30p általános bazál' - } - ,'1h temp basal' : { - cs:'hodinový dočasný bazál' - ,he: 'שעה רמה בזלית זמנית ' - ,de: '1h temporäres Basal' - ,dk: '60 minutters midlertidig basal' - ,ro: 'bazală temporară de 1 oră' - ,fr: 'débit basal temporaire de 1 heure' - ,bg: '1 час временен базал' - ,hr: '1h temp bazal' - ,ru: '1 час врем базал' - ,sv: '60 minuters temporär basal' - ,nb: '60 minutters midlertidig basal' - ,fi: '1h tilapäinen basaali' - ,es: '1h temporal Basasl' - ,pt: 'Basal temp 1h' - ,sk: 'hodinový dočasný bazál' - ,ko: '1시간 임시 basal' - ,it: '1h basale temp' - ,nl: '1 uur tijdelijke basaal' - ,zh_cn: '1小时临时基础率' - ,pl: '1 godzina tymczasowej dawki bazowej' - ,tr: '1 sa. geçici bazal' - ,hu: '10 általános bazál' - } - ,'Cannula change overdue!' : { - cs:'Čas na výměnu set vypršel!' - ,he: 'יש צורך בהחלפת קנולה! ' - ,de: 'Kanülenwechsel überfällig!' - ,dk: 'Tid for skift af Infusionssæt overskredet!' - ,ro: 'Depășire termen schimbare canulă!' - ,bg: 'Времето за смяна на сет просрочено' - ,hr: 'Prošao rok za zamjenu kanile!' - ,fr: 'Dépassement de date de changement de canule!' - ,ru: 'Срок замены катетера помпы истек' - ,sv: 'Infusionsset, bytestid överskriden' - ,nb: 'Byttetid for infusjonssett overskredet' - ,fi: 'Kanyylin ikä yli määräajan!' - ,pt: 'Substituição de catéter vencida!' - ,es: '¡Cambio de agujas vencido!' - ,sk: 'Výmena kanyli po lehote!' - ,ko: '주입세트(cannula) 기한이 지났습니다. 변경하세요!' - ,it: 'Cambio Cannula in ritardo!' - ,nl: 'Cannule te oud!' - ,zh_cn: '超过更换管路的时间' - ,pl: 'Przekroczono czas wymiany wkłucia!' - ,tr: 'Kanül değişimi gecikmiş!' - ,hu: 'Kanil cseréjének ideje elmúlt' - } - ,'Time to change cannula' : { - cs:'Čas na výměnu setu' - ,he: 'הגיע הזמן להחליף קנולה ' - ,de: 'Es ist Zeit, die Kanüle zu wechseln' - ,dk: 'Tid til at skifte infusionssæt' - ,fr: 'Le moment est venu de changer de canule' - ,ro: 'Este vremea să schimbați canula' - ,bg: 'Време за смяна на сет' - ,hr: 'Vrijeme za zamjenu kanile' - ,ru: 'Пора заменить катетер помпы' - ,sv: 'Dags att byta infusionsset' - ,nb: 'På tide å bytte infusjonssett' - ,fi: 'Aika vaihtaa kanyyli' - ,es:' Hora sustituir cánula' - ,pt: 'Hora de subistituir catéter' - ,sk: 'Čas na výmenu kanyli' - ,ko: '주입세트(cannula)를 변경할 시간' - ,it: 'Tempo di cambiare la cannula' - ,nl: 'Verwissel canule' - ,zh_cn: '已到更换管路的时间' - ,pl: 'Czas do wymiany wkłucia' - ,tr: 'Kanül değiştirme zamanı' - ,hu: 'Ideje kicserélni a kanilt' - } - ,'Change cannula soon' : { - cs:'Blíží se čas na výměnu setu' - ,he: 'החלף קנולה בקרוב ' - ,de: 'Kanüle bald wechseln' - ,dk: 'Skift infusionssæt snart' - ,ro: 'Schimbați canula în curând' - ,fr: 'Changement de canule bientòt' - ,bg: 'Смени сета скоро' - ,hr: 'Zamijena kanile uskoro' - ,ru: 'Приближается время замены катетера помпы' - ,sv: 'Byt infusionsset snart' - ,nb: 'Bytt infusjonssett snart' - ,fi: 'Vaihda kanyyli pian' - ,pt: 'Substituir catéter em breve' - ,sk: 'Čoskoro bude potrebné vymeniť kanylu' - ,ko: '주입세트(cannula)를 곧 변경하세요.' - ,it: 'Cambio cannula prossimamente' - ,nl: 'Verwissel canule binnenkort' - ,zh_cn: '接近更换管路的时间' - ,pl: 'Wkrótce wymiana wkłucia' - ,tr: 'Yakında kanül değiştirin' - ,hu: 'Hamarosan cseréld ki a kanilt' - } - ,'Cannula age %1 hours' : { - cs:'Stáří setu %1 hodin' - ,he: 'כיל הקנולה %1 שעות ' - ,de: 'Kanülen Alter %1 Stunden' - ,dk: 'Infusionssæt tid %1 timer' - ,fr: 'âge de la canule %1 heures' - ,ro: 'Vechimea canulei în ore: %1' - ,bg: 'Сетът е на %1 часове' - ,hr: 'Staros kanile %1 sati' - ,ru: 'Катетер помпы работает %1 час' - ,sv: 'Infusionsset tid %1 timmar' - ,nb: 'infusjonssett alder %1 timer' - ,fi: 'Kanyylin ikä %1 tuntia' - ,pt: 'Idade do catéter %1 horas' - ,es: 'Cánula usada %1 horas' - ,sk: 'Vek kanyli %1 hodín' - ,ko: '주입세트(cannula) %1시간 사용' - ,it: 'Durata Cannula %1 ore' - ,nl: 'Canule leeftijd %1 uren' - ,zh_cn: '管路已使用%1小时' - ,pl: 'Czas od wymiany wkłucia %1 godzin' - ,tr: 'Kanül yaşı %1 saat' - ,hu: 'Kamil életkora %1 óra' - } - ,'Inserted' : { - cs:'Nasazený' - ,he: 'הוכנס ' - ,de: 'Eingesetzt' - ,dk: 'Isat' - ,ro: 'Inserat' - ,fr: 'Insérée' - ,bg: 'Поставен' - ,hr: 'Postavljanje' - ,ru: 'Установлен' - ,sv: 'Applicerad' - ,nb: 'Satt inn' - ,fi: 'Asetettu' - ,es: 'Insertado' - ,pt: 'Inserido' - ,sk: 'Zavedený' - ,ko: '삽입된' - ,it: 'Inserito' - ,nl: 'Ingezet' - ,zh_cn: '已植入' - ,zh_tw: '已植入' - ,pl: 'Zamontowano' - ,tr: 'Yerleştirilmiş' - ,hu: 'Behelyezve' - - } - ,'CAGE' : { - cs:'SET' - ,he: 'גיל הקנולה ' - ,de: 'CAGE' - ,dk: 'Indstik alder' - ,ro: 'VC' - ,bg: 'ВС' - ,hr: 'Starost kanile' - ,fr: 'CAGE' - ,ru: 'КатПомп' - ,sv: 'Nål' - ,nb: 'Nålalder' - ,fi: 'KIKÄ' - ,pt: 'ICAT' - ,es: 'Cánula desde' - ,sk: 'SET' - ,ko: '주입세트사용기간' - ,it: 'CAGE' - ,nl: 'CAGE' - ,zh_cn: '管路' - ,zh_tw: '管路' - ,pl: 'Wiek wkłucia' - ,tr: 'CAGE' - ,hu: 'CAGE' - } - ,'COB' : { - cs:'SACH' - ,he: 'COB ' - ,de: 'COB' - ,dk: 'COB' - ,ro: 'COB' - ,bg: 'АВХ' - ,hr: 'Aktivni UGH' - ,fr: 'COB' - ,ru: 'АктУгл COB' - ,sv: 'COB' - ,nb: 'Aktive karbohydrater' - ,fi: 'AH' - ,pt: 'COB' - ,es: 'Carb. activos' - ,sk: 'SACH' - ,ko: 'COB' - ,it: 'COB' - ,nl: 'COB' - ,zh_cn: '活性碳水COB' - ,pl: 'Aktywne węglowodany' - ,tr: 'COB' - ,hu: 'COB' - } - ,'Last Carbs' : { - cs:'Poslední sacharidy' - ,he: 'פחמימות אחרונות ' - ,de: 'Letzte Kohlenhydrate' - ,dk: 'Seneste kulhydrater' - ,ro: 'Ultimii carbohidrați' - ,fr: 'Derniers glucides' - ,bg: 'Последни ВХ' - ,hr: 'Posljednji UGH' - ,ru: 'Прошлые углеводы' - ,sv: 'Senaste kolhydrater' - ,nb: 'Siste karbohydrater' - ,fi: 'Viimeisimmät hiilihydraatit' - ,pt: 'Último carboidrato' - ,es: 'último carbohidrato' - ,sk: 'Posledné sacharidy' - ,ko: '마지막 탄수화물' - ,it: 'Ultimi carboidrati' - ,nl: 'Laatse KH' - ,zh_cn: '上次碳水' - ,pl: 'Ostatnie węglowodany' - ,tr: 'Son Karbonhidrat' - ,hu: 'Utolsó szénhidrátok' - } - ,'IAGE' : { - cs:'INZ' - ,he: 'גיל אינסולין ' - ,de: 'IAGE' - ,dk: 'Insulinalder' - ,ro: 'VI' - ,fr: 'IAGE' - ,bg: 'ИнсСрок' - ,hr: 'Starost inzulina' - ,ru: 'ИнсСрок' - ,sv: 'Insulinålder' - ,nb: 'Insulinalder' - ,fi: 'IIKÄ' - ,pt: 'IddI' - ,es: 'Insul.desde' - ,sk: 'INZ' - ,ko: '인슐린사용기간' - ,it: 'IAGE' - ,nl: 'IAGE' - ,zh_cn: '胰岛素' - ,zh_tw: '胰島素' - ,pl: 'Wiek insuliny' - ,tr: 'IAGE' - ,hu: 'IAGE' - } - ,'Insulin reservoir change overdue!' : { - cs:'Čas na výměnu zásobníku vypršel!' - ,he: 'החלף מאגר אינסולין! ' - ,de: 'Ampullenwechsel überfällig!' - ,dk: 'Tid for skift af insulinreservoir overskredet!' - ,fr: 'Dépassement de date de changement de réservoir d\'insuline!' - ,ro: 'Termenul de schimbare a rezervorului de insulină a fost depășit' - ,bg: 'Смянатата на резервоара просрочена' - ,hr: 'Prošao rok za zamjenu spremnika!' - ,ru: 'Срок замены резервуара инсулина истек' - ,sv: 'Insulinbytestid överskriden' - ,nb: 'Insulinbyttetid overskrevet' - ,fi: 'Insuliinisäiliö vanhempi kuin määräaika!' - ,pt: 'Substituição de reservatório vencida!' - ,es: 'Excedido plazo del cambio depósito de insulina!' - ,sk: 'Čas na výmenu inzulínu po lehote!' - ,ko: '레저보(펌프 주사기)의 사용기한이 지났습니다. 변경하세요!' - ,it: 'Cambio serbatoio d\'insulina in ritardo!' - ,nl: 'Verwissel insulinereservoir nu!' - ,zh_cn: '超过更换胰岛素储液器的时间' - ,pl: 'Przekroczono czas wymiany zbiornika na insulinę!' - ,tr: 'İnsülin rezervuarı değişimi gecikmiş!' - ,hu: 'Inzulin tartály cseréjének ideje elmúlt' - } - ,'Time to change insulin reservoir' : { - cs:'Čas na výměnu zásobníku' - ,he: 'הגיע הזמן להחליף מאגר אינסולין ' - ,de: 'Es ist Zeit, die Ampulle zu wechseln' - ,dk: 'Tid til at skifte insulinreservoir' - ,ro: 'Este timpul pentru schimbarea rezervorului de insulină' - ,fr: 'Le moment est venu de changer de réservoir d\'insuline' - ,bg: 'Време е за смяна на резервоара' - ,hr: 'Vrijeme za zamjenu spremnika' - ,ru: 'Наступил срок замены резервуара инсулина' - ,sv: 'Dags att byta insulinreservoar' - ,nb: 'På tide å bytte insulinreservoar' - ,fi: 'Aika vaihtaa insuliinisäiliö' - ,pt: 'Hora de substituir reservatório' - ,es: 'Hora de sustituir depósito insulina' - ,sk: 'Čas na výmenu inzulínu' - ,ko: '레저보(펌프 주사기)를 변경할 시간' - ,it: 'Momento di cambiare serbatoio d\'insulina' - ,nl: 'Verwissel insuline reservoir' - ,zh_cn: '已到更换胰岛素储液器的时间' - ,pl: 'Czas do zmiany zbiornika na insulinę!' - ,tr: 'İnsülin rezervuarını değiştirme zamanı!' - ,hu: 'Itt az ideje az inzulin tartály cseréjének' - } - ,'Change insulin reservoir soon' : { - cs:'Blíží se čas na výměnu zásobníku' - ,he: 'החלף מאגר אינסולין בקרוב ' - ,de: 'Ampulle bald wechseln' - ,dk: 'Skift insulinreservoir snart' - ,ro: 'Rezervorul de insulină trebuie schimbat în curând' - ,fr: 'Changement de réservoir d\'insuline bientôt' - ,bg: 'Смени резервоара скоро' - ,hr: 'Zamjena spremnika uskoro' - ,ru: 'Наступает срок замены резервуара инсулина' - ,sv: 'Byt insulinreservoar snart' - ,nb: 'Bytt insulinreservoar snart' - ,fi: 'Vaihda insuliinisäiliö pian' - ,pt: 'Substituir reservatório em brave' - ,es: 'Sustituir depósito insulina en breve' - ,sk: 'Čoskoro bude potrebné vymeniť inzulín' - ,ko: '레저보(펌프 주사기)안의 인슐린을 곧 변경하세요.' - ,it: 'Cambiare serbatoio d\'insulina prossimamente' - ,nl: 'Verwissel insuline reservoir binnenkort' - ,zh_cn: '接近更换胰岛素储液器的时间' - ,pl: 'Wkrótce wymiana zbiornika na insulinę!' - ,tr: 'Yakında insülin rezervuarını değiştirin' - ,hu: 'Hamarosan cseréld ki az inzulin tartályt' - } - ,'Insulin reservoir age %1 hours' : { - cs:'Stáří zásobníku %1 hodin' - ,he: 'גיל מאגר אינסולין %1 שעות ' - ,de: 'Ampullen Alter %1 Stunden' - ,dk: 'Insulinreservoiralder %1 timer' - ,fr: 'Âge du réservoir d\'insuline %1 heures' - ,ro: 'Vârsta reservorului de insulină %1 ore' - ,ru: 'Картридж инсулина отработал %1часов' - ,bg: 'Резервоарът е на %1 часа' - ,hr: 'Spremnik zamijenjen prije %1 sati' - ,sv: 'Insulinreservoarsålder %1 timmar' - ,nb: 'Insulinreservoaralder %1 timer' - ,fi: 'Insuliinisäiliön ikä %1 tuntia' - ,pt: 'Idade do reservatório %1 horas' - ,sk: 'Vek inzulínu %1 hodín' - ,es: 'Depósito insulina desde %1 horas' - ,ko: '레저보(펌프 주사기) %1시간 사용' - ,it: 'IAGE - Durata Serbatoio d\'insulina %1 ore' - ,nl: 'Insuline reservoir leeftijd %1 uren' - ,zh_cn: '胰岛素储液器已使用%1小时' - ,pl: 'Wiek zbiornika na insulinę %1 godzin' - ,tr: 'İnsülin rezervuar yaşı %1 saat' - ,hu: 'Az inzulin tartály %1 órája volt cserélve' - } - ,'Changed' : { - cs:'Vyměněno' - ,he: 'הוחלף ' - ,de: 'Gewechselt' - ,dk: 'Skiftet' - ,fr: 'Changé' - ,ro: 'Schimbat' - ,ru: 'Замена произведена' - ,bg: 'Сменен' - ,hr: 'Promijenjeno' - ,sv: 'Bytt' - ,nb: 'Byttet' - ,fi: 'Vaihdettu' - ,pt: 'Substituído' - ,es: 'Cambiado' - ,sk: 'Vymenený' - ,ko: '변경됨' - ,it: 'Cambiato' - ,nl: 'veranderd' - ,zh_cn: '已更换' - ,pl: 'Wymieniono' - ,tr: 'Değişmiş' - ,hu: 'Cserélve' - } - ,'IOB' : { - cs:'IOB' - ,he: 'IOB ' - ,de: 'IOB' - ,dk: 'IOB' - ,ro: 'IOB' - ,ru: 'АктИнс IOB' - ,fr: 'IOB' - ,bg: 'АИ' - ,hr: 'Aktivni inzulin' - ,sv: 'IOB' - ,nb: 'Aktivt insulin' - ,es: 'Insulina Activa IOB' - ,fi: 'IOB' - ,pt: 'IOB' - ,sk: 'IOB' - ,ko: 'IOB' - ,it: 'IOB' - ,nl: 'IOB' - ,zh_cn: '活性胰岛素IOB' - ,pl: 'Aktywna insulina' - ,tr: 'IOB' - ,hu: 'IOB' - } - ,'Careportal IOB' : { - cs:'IOB z ošetření' - ,he: 'Careportal IOB ' - ,de: 'Careportal IOB' - ,dk: 'IOB i Careportal' - ,ro: 'IOB în Careportal' - ,ru: 'АктИнс на портале лечения' - ,fr: 'Careportal IOB' - ,bg: 'АИ от Кеърпортал' - ,hr: 'Careportal IOB' - ,sv: 'IOB i Careportal' - ,nb: 'Aktivt insulin i Careportal' - ,fi: 'Careportal IOB' - ,es: 'Insulina activa en Careportal' - ,pt: 'IOB do Careportal' - ,sk: 'IOB z portálu starostlivosti' - ,ko: '케어포털 IOB' - ,it: 'IOB Somministrazioni' - ,nl: 'Careportal IOB' - ,zh_cn: '服务面板IOB(活性胰岛素)' - ,pl: 'Aktywna insulina z portalu' - ,tr: 'Careportal IOB (Aktif İnsülin)' - ,hu: 'Careportal IOB érték' - } - ,'Last Bolus' : { - cs:'Poslední bolus' - ,he: 'בולוס אחרון ' - ,de: 'Letzter Bolus' - ,dk: 'Seneste Bolus' - ,fr: 'Dernier Bolus' - ,ro: 'Ultimul bolus' - ,ru: 'Прошлый болюс' - ,bg: 'Последен болус' - ,hr: 'Prethodni bolus' - ,sv: 'Senaste Bolus' - ,nb: 'Siste Bolus' - ,fi: 'Viimeisin bolus' - ,pt: 'Último bolus' - ,es: 'Último bolo' - ,sk: 'Posledný bolus' - ,ko: '마지막 Bolus' - ,it: 'Ultimo bolo' - ,nl: 'Laatste bolus' - ,zh_cn: '上次大剂量' - ,pl: 'Ostatni bolus' - ,tr: 'Son Bolus' - ,hu: 'Utolsó bólus' - } - ,'Basal IOB' : { - cs:'IOB z bazálů' - ,he: 'IOB בזלי ' - ,de: 'Basal IOB' - ,dk: 'Basal IOB' - ,ro: 'IOB bazală' - ,ru: 'АктуальнБазал IOB' - ,fr: 'IOB du débit basal' - ,bg: 'Базален АИ' - ,hr: 'Bazalni aktivni inzulin' - ,sv: 'Basal IOB' - ,nb: 'Basal Aktivt Insulin' - ,fi: 'Basaalin IOB' - ,pt: 'IOB basal' - ,es: 'Basal Insulina activa' - ,sk: 'Bazálny IOB' - ,ko: 'Basal IOB' - ,it: 'Basale IOB' - ,nl: 'Basaal IOB' - ,zh_cn: '基础率IOB(活性胰岛素)' - ,pl: 'Aktywna insulina z dawki bazowej' - ,tr: 'Bazal IOB' - ,hu: 'Bazál IOB' - } - ,'Source' : { - cs:'Zdroj' - ,he: 'מקור ' - ,de: 'Quelle' - ,dk: 'Kilde' - ,ro: 'Sursă' - ,fr: 'Source' - ,ru: 'Источник' - ,bg: 'Източник' - ,hr: 'Izvor' - ,sv: 'Källa' - ,nb: 'Kilde' - ,fi: 'Lähde' - ,pt: 'Fonte' - ,es: 'Fuente' - ,sk: 'Zdroj' - ,ko: '출처' - ,it: 'Fonte' - ,nl: 'bron' - ,zh_cn: '来源' - ,pl: 'Źródło' - ,tr: 'Kaynak' - ,hu: 'Forrás' - } - ,'Stale data, check rig?' : { - cs:'Zastaralá data, zkontrolovat mobil?' - ,he: 'מידע ישן, בדוק את המערכת? ' - ,de: 'Daten sind veraltet, Übertragungsgerät prüfen?' - ,dk: 'Gammel data, kontrollere uploader?' - ,ro: 'Date învechite, verificați uploaderul!' - ,fr: 'Valeurs trop anciennes, vérifier l\'uploadeur' - ,ru: 'Старые данные, проверьте загрузчик' - ,bg: 'Стари данни, провери телефона' - ,hr: 'Nedostaju podaci, provjera opreme?' - ,es: 'Datos desactualizados, controlar la subida?' - ,sv: 'Gammal data, kontrollera rigg?' - ,nb: 'Gamle data, sjekk rigg?' - ,fi: 'Tiedot vanhoja, tarkista lähetin?' - , pl: 'Dane są nieaktualne, sprawdź urządzenie transmisyjne.' - ,pt: 'Dados antigos, verificar uploader?' - ,sk: 'Zastaralé dáta, skontrolujte uploader' - ,ko: '오래된 데이터입니다. 확인해 보시겠습니까?' - ,it: 'dati non aggiornati, controllare il telefono?' - ,nl: 'Geen data, controleer uploader' - ,zh_cn: '数据过期,检查一下设备?' - ,tr: 'Veri güncel değil, vericiyi kontrol et?' - ,hu: 'Öreg adatok, ellenőrizd a feltöltőt' - } - ,'Last received:' : { - cs:'Naposledy přijato:' - ,he: 'התקבל לאחרונה: ' - ,de: 'Zuletzt empfangen:' - ,dk: 'Senest modtaget:' - ,fr: 'Dernière réception:' - ,ro: 'Ultimile date:' - ,ru: 'Получено:' - ,bg: 'Последно получени' - ,hr: 'Zadnji podaci od:' - ,sv: 'Senast mottagen:' - ,nb: 'Sist mottatt:' - ,fi: 'Viimeksi vastaanotettu:' - ,pt: 'Último recebido:' - ,es: 'Último recibido:' - ,sk: 'Naposledy prijaté:' - ,ko: '마지막 수신' - ,it: 'Ultime ricevute:' - ,nl: 'laatste ontvangen' - ,zh_cn: '上次接收:' - ,pl: 'Ostatnio odebrane:' - ,tr: 'Son alınan:' - ,hu: 'Utóljára fogadott:' - } - ,'%1m ago' : { - cs:'%1m zpět' - ,he: 'לפני %1 דקות ' - ,de: 'vor %1m' - ,dk: '%1m siden' - ,ro: 'acum %1 minute' - ,fr: 'il y a %1 min' - ,ru: '% мин назад' - ,bg: 'преди %1 мин.' - ,hr: 'prije %1m' - ,sv: '%1m sedan' - ,nb: '%1m siden' - ,fi: '%1m sitten' - ,es: '%1min. atrás' - ,pt: '%1m atrás' - ,sk: 'pred %1m' - ,ko: '%1분 전' - ,it: '%1m fa' - ,nl: '%1m geleden' - ,zh_cn: '%1分钟前' - ,pl: '%1 minut temu' - ,tr: '%1 dk. önce' - ,hu: '%1p ezelőtt' - } - ,'%1h ago' : { - cs:'%1h zpět' - ,he: 'לפני %1 שעות ' - ,de: 'vor %1h' - ,dk: '%1t siden' - ,ro: 'acum %1 ore' - ,fr: '%1 heures plus tôt' - ,ru: '% час назад' - ,bg: 'преди %1 час' - ,hr: 'prije %1 sati' - ,sv: '%1h sedan' - ,nb: '%1t siden' - ,fi: '%1h sitten' - ,pt: '%1h atrás' - ,es: '%1h. atrás' - ,sk: 'pred %1h' - ,ko: '%1시간 전' - ,it: '%1h fa' - ,nl: '%1u geleden' - ,zh_cn: '%1小时前' - ,pl: '%1 godzin temu' - ,tr: '%1 sa. önce' - ,hu: '%1ó ezelőtt' - } - ,'%1d ago' : { - cs:'%1d zpět' - ,he: 'לפני %1 ימים ' - ,de: 'vor 1d' - ,dk: '%1d siden' - ,ro: 'acum %1 zile' - ,fr: '%1 jours plus tôt' - ,ru: '% дн назад' - ,bg: 'преди %1 ден' - ,hr: 'prije %1 dana' - ,sv: '%1d sedan' - ,nb: '%1d siden' - ,fi: '%1d sitten' - ,pt: '%1d atrás' - ,es: '%1d atrás' - ,sk: 'pred %1d' - ,ko: '%1일 전' - ,it: '%1d fa' - ,nl: '%1d geleden' - ,zh_cn: '%1天前' - ,pl: '%1 dni temu' - ,tr: '%1 gün önce' - ,hu: '%1n ezelőtt' - } - ,'RETRO' : { - cs:'RETRO' - ,he: 'רטרו ' - ,de: 'RETRO' - ,dk: 'RETRO' - ,ro: 'VECHI' - ,ru: 'ПРОШЛОЕ' - ,bg: 'РЕТРО' - ,hr: 'RETRO' - ,fr: 'RETRO' - ,sv: 'RETRO' - ,nb: 'GAMMELT' - ,fi: 'RETRO' - ,pt: 'RETRO' - ,es: 'RETRO' - ,sk: 'RETRO' - ,ko: 'RETRO' - ,it: 'RETRO' - ,nl: 'RETRO' - ,zh_cn: '历史数据' - ,pl: 'RETRO' - ,tr: 'RETRO Geçmiş' - ,hu: 'RETRO' - } - ,'SAGE' : { - cs:'SENZ' - ,he: 'גיל הסנסור ' - ,de:'SAGE' - ,dk: 'Sensoralder' - ,ro: 'VS' - ,ru: 'Сенсор работает' - ,fr: 'SAGE' - ,bg: 'ВС' - ,hr: 'Starost senzora' - ,sv: 'Sensor' - ,nb: 'Sensoralder' - ,fi: 'SIKÄ' - ,pt: 'IddS' - ,sk: 'SENZ' - ,es: 'Sensor desde' - ,ko: '센서사용기간' - ,it: 'SAGE' - ,nl: 'SAGE' - ,zh_cn: '探头' - ,zh_tw: '探頭' - ,pl: 'Wiek sensora' - ,tr: 'SAGE' - ,hu: 'SAGE' - } - ,'Sensor change/restart overdue!' : { - cs:'Čas na výměnu senzoru vypršel!' - ,he: 'שנה או אתחל את הסנסור! ' - ,de: 'Sensorwechsel/-neustart überfällig!' - ,dk: 'Sensor skift/genstart overskredet!' - ,ro: 'Depășire termen schimbare/restart senzor!' - ,fr: 'Changement/Redémarrage du senseur dépassé!' - ,ru: 'Рестарт сенсора пропущен' - ,bg: 'Смяната/рестартът на сензора са пресрочени' - ,hr: 'Prošao rok za zamjenu/restart senzora!' - ,sv: 'Sensor byte/omstart överskriden!' - ,nb: 'Sensor bytte/omstart overskredet!' - ,fi: 'Sensorin vaihto/uudelleenkäynnistys yli määräajan!' - ,pt: 'Substituição/reinício de sensor vencido' - ,es: 'Sustituir/reiniciar, sensor vencido' - ,sk: 'Čas na výmenu/reštart sensoru uplynul!' - ,ko: '센서 사용기한이 지났습니다. 센서를 교체/재시작 하세요!' - ,it: 'Cambio/riavvio del sensore in ritardo!' - ,nl: 'Sensor vevang/hertstart tijd gepasseerd' - ,zh_cn: '超过更换/重启探头的时间' - ,pl: 'Przekroczono czas wymiany/restartu sensora!' - ,tr: 'Sensör değişimi/yeniden başlatma gecikti!' - ,hu: 'Szenzor cseréjének / újraindításának ideje lejárt' - } - ,'Time to change/restart sensor' : { - cs:'Čas na výměnu senzoru' - ,he: 'הגיע הזמן לשנות או לאתחל את הסנסור ' - ,de: 'Es ist Zeit, den Sensor zu wechseln/neuzustarten' - ,dk: 'Tid til at skifte/genstarte sensor' - ,ro: 'Este timpul pentru schimbarea senzorului' - ,ru: 'Время замены/рестарта сенсора' - ,fr: 'C\'est le moment de changer/redémarrer le senseur' - ,bg: 'Време за смяна/рестарт на сензора' - ,hr: 'Vrijeme za zamjenu/restart senzora' - ,sv: 'Dags att byta/starta om sensorn' - ,nb: 'På tide å bytte/restarte sensoren' - ,fi: 'Aika vaihtaa / käynnistää sensori uudelleen' - ,pt: 'Hora de substituir/reiniciar sensor' - ,es: 'Hora de sustituir/reiniciar sensor' - ,sk: 'Čas na výmenu/reštart senzoru' - ,ko: '센서 교체/재시작 시간' - ,it: 'Tempo di cambiare/riavvio sensore' - ,nl: 'Sensor vervangen of herstarten' - ,zh_cn: '已到更换/重启探头的时间' - ,pl: 'Czas do wymiany/restartu sensora' - ,tr: 'Sensörü değiştirme/yeniden başlatma zamanı' - ,hu: 'Ideje a szenzort cserélni / újraindítani' - } - ,'Change/restart sensor soon' : { - cs:'Blíží se čas na výměnu senzoru' - ,he: 'שנה או אתחל את הסנסור בקרוב ' - ,de: 'Sensor bald wechseln/neustarten' - ,dk: 'Skift eller genstart sensor snart' - ,ro: 'Schimbați/restartați senzorul în curând' - ,fr: 'Changement/Redémarrage du senseur bientôt' - ,ru: 'Приближается срок замены/рестарта сенсора' - ,bg: 'Смени/рестартирай сензора скоро' - ,hr: 'Zamijena/restart senzora uskoro' - ,sv: 'Byt/starta om sensorn snart' - ,nb: 'Bytt/restart sensoren snart' - ,fi: 'Vaihda/käynnistä sensori uudelleen pian' - ,pt: 'Mudar/reiniciar sensor em breve' - ,es: 'Cambiar/Reiniciar sensor en breve' - ,sk: 'Čoskoro bude potrebné vymeniť/reštartovať senzor' - ,ko: '센서를 곧 교체/재시작 하세요' - ,it: 'Modifica/riavvio sensore prossimamente' - ,nl: 'Herstart of vervang sensor binnenkort' - ,zh_cn: '接近更换/重启探头的时间' - ,pl: 'Wkrótce czas wymiany/restartu sensora' - ,tr: 'Sensörü yakında değiştir/yeniden başlat' - ,hu: 'Hamarosan indítsd újra vagy cseréld ki a szenzort' - } - ,'Sensor age %1 days %2 hours' : { - cs:'Stáří senzoru %1 dní %2 hodin' - ,he: 'גיל הסנסור %1 ימים %2 שעות ' - ,de: 'Sensor Alter %1 Tage %2 Stunden' - ,dk: 'Sensoralder %1 dage %2 timer' - ,ro: 'Senzori vechi de %1 zile și %2 ore' - ,fr: 'Âge su senseur %1 jours et %2 heures' - ,ru: 'Сенсор работает %1 дн %2 час' - ,bg: 'Сензорът е на %1 дни %2 часа ' - ,hr: 'Starost senzora %1 dana i %2 sati' - ,sv: 'Sensorålder %1 dagar %2 timmar' - ,nb: 'Sensoralder %1 dager %2 timer' - ,fi: 'Sensorin ikä %1 päivää, %2 tuntia' - ,pt: 'Idade do sensor %1 dias %2 horas' - ,es: 'Sensor desde %1 días %2 horas' - ,sk: 'Vek senzoru %1 dní %2 hodín' - ,ko: '센서사용기간 %1일 %2시간' - ,it: 'Durata Sensore %1 giorni %2 ore' - ,nl: 'Sensor leeftijd %1 dag(en) en %2 uur' - ,zh_cn: '探头使用了%1天%2小时' - ,pl: 'Wiek sensora: %1 dni %2 godzin' - ,tr: 'Sensör yaşı %1 gün %2 saat' - ,hu: 'Szenzor ideje %1 nap és %2 óra' - } - ,'Sensor Insert' : { - cs: 'Výměna sensoru' - ,he: 'הכנס סנסור ' - ,de: 'Sensor eingesetzt' - ,dk: 'Sensor isat' - ,ro: 'Inserția senzorului' - ,fr: 'Insertion du senseur' - ,ru: 'Сенсор установлен' - ,bg: 'Поставяне на сензора' - ,hr: 'Postavljanje senzora' - ,sv: 'Sensor insättning' - ,nb: 'Sensor satt inn' - ,fi: 'Sensorin Vaihto' - ,es: 'Insertar sensor' - ,pt: 'Inserção de sensor' - ,sk: 'Výmena senzoru' - ,ko: '센서삽입' - ,it: 'SAGE - inserimento sensore' - ,nl: 'Sensor ingebracht' - ,zh_cn: '植入探头' - ,pl: 'Zamontuj sensor' - ,tr: 'Sensor yerleştirme' - ,hu: 'Szenzor behelyezve' - } - ,'Sensor Start' : { - cs: 'Znovuspuštění sensoru' - ,he: 'סנסור התחיל ' - ,de: 'Sensorstart' - ,dk: 'Sensor start' - ,ro: 'Pornirea senzorului' - ,ru: 'Старт сенсора' - ,fr: 'Démarrage du senseur' - ,bg: 'Стартиране на сензора' - ,hr: 'Pokretanje senzora' - ,sv: 'Sensorstart' - ,nb: 'Sensorstart' - ,fi: 'Sensorin Aloitus' - ,pl: 'Uruchomienie sensora' - ,pt: 'Início de sensor' - ,es: 'Inicio del sensor' - ,sk: 'Štart senzoru' - ,ko: '센서시작' - ,it: 'SAGE - partenza sensore' - ,nl: 'Sensor start' - ,zh_cn: '启动探头' - ,tr: 'Sensör başlatma' - ,hu: 'Szenzor indítása' - } - ,'days' : { - cs: 'dní' - ,he: 'ימים ' - ,de: 'Tage' - ,dk: 'dage' - ,ro: 'zile' - ,fr: 'jours' - ,ru: 'дн' - ,bg: 'дни' - ,hr: 'dana' - ,sv: 'dagar' - ,nb: 'dager' - ,fi: 'päivää' - ,pt: 'dias' - ,es: 'días' - ,sk: 'dní' - ,ko: '일' - ,it: 'giorni' - ,nl: 'dagen' - ,zh_cn: '天' - ,pl: 'dni' - ,tr: 'Gün' - ,hu: 'napok' - } - ,'Insulin distribution' : { - cs: 'Rozložení inzulínu' - ,he: 'התפלגות אינסולין ' - ,de: 'Insulinverteilung' - ,dk: 'Insulinfordeling' - ,ro: 'Distribuția de insulină' - ,fr: 'Distribution de l\'insuline' - ,ru: 'распределение инсулина' - ,fi: 'Insuliinijakauma' - ,sv: 'Insulindistribution' - ,ko: '인슐린주입' - ,it: 'Distribuzione di insulina' - ,es: 'Distribución de la insulina' - ,nl: 'Insuline verdeling' - ,zh_cn: '胰岛素分布' - ,bg: 'разпределение на инсулина' - ,hr: 'Raspodjela inzulina' - ,pl: 'podawanie insuliny' - ,tr: 'İnsülin dağılımı' - ,hu: 'Inzulin disztribúció' - ,nb: 'Insulinfordeling' - } - ,'To see this report, press SHOW while in this view' : { - cs: 'Pro zobrazení toho výkazu stiskněte Zobraz na této záložce' - ,he: 'כדי להציג דוח זה, לחץ על"הראה" בתצוגה זו ' - ,de: 'Auf ZEIGEN drücken, um den Bericht in dieser Ansicht anzuzeigen' - ,dk: 'For at se denne rapport, klick på "VIS"' - ,fr: 'Pour voir le rapport, cliquer sur MONTRER dans cette fenêtre' - ,ro: 'Pentru a vedea acest raport, apăsați butonul SHOW' - ,ru: 'чтобы увидеть отчет, нажмите show/показать' - ,fi: 'Nähdäksesi tämän raportin, paina NÄYTÄ tässä näkymässä' - ,ko: '이 보고서를 보려면 "확인"을 누르세요' - ,it: 'Per guardare questo report, premere SHOW all\'interno della finestra' - ,es: 'Presione SHOW para mostrar el informe en esta vista' - ,nl: 'Om dit rapport te zien, druk op "Laat zien"' - ,zh_cn: '要查看此报告,请在此视图中按生成' - ,sv: 'För att se denna rapport, klicka på "Visa"' - ,bg: 'За да видите тази статистика, натиснете ПОКАЖИ' - ,hr: 'Za prikaz ovog izvješća, pritisnite PRIKAŽI na ovom prozoru' - ,pl: 'Aby wyświetlić ten raport, naciśnij przycisk POKAŻ w tym widoku' - ,tr: 'Bu raporu görmek için bu görünümde GÖSTER düğmesine basın.' - ,hu: 'A jelentés megtekintéséhez kattints a MUTASD gombra' - ,nb: 'Klikk på "VIS" for å se denne rapporten' - } - ,'AR2 Forecast' : { - cs: 'AR2 predikci' - ,he: 'AR2 תחזית ' - ,de: 'AR2-Vorhersage' - ,dk: 'AR2 Forudsiglse' - ,ro: 'Predicție AR2' - ,fr: 'Prédiction AR2' - ,ru: 'прогноз AR2' - ,es: 'Pronóstico AR2' - ,fi: 'AR2 Ennusteet' - ,ko: 'AR2 예측' - ,it: 'Previsione AR2' - ,nl: 'AR2 Voorspelling' - ,zh_cn: 'AR2 预测' - ,sv: 'AR2 Förutsägelse' - ,bg: 'AR2 прогнози' - ,hr: 'AR2 procjena' - ,pl: 'Prognoza AR2' - ,tr: 'AR2 Tahmini' - ,hu: 'AR2 előrejelzés' - ,nb: 'AR2-prediksjon' - } - ,'OpenAPS Forecasts' : { - cs: 'OpenAPS predikci' - ,he: 'תחזית OPENAPS ' - ,de: 'OpenAPS-Vorhersage' - ,dk: 'OpenAPS Forudsiglse' - ,ro: 'Predicții OpenAPS' - ,fr: 'Prédictions OpenAPS' - ,ru: 'прогнозы OpenAPS' - ,es: 'Pronóstico OpenAPS' - ,fi: 'OpenAPS Ennusteet' - ,ko: 'OpenAPS 예측' - ,it: 'Previsione OpenAPS' - ,nl: 'OpenAPS Voorspelling' - ,zh_cn: 'OpenAPS 预测' - ,sv: 'OpenAPS Förutsägelse' - ,bg: 'OpenAPS прогнози' - ,hr: 'OpenAPS prognoze' - ,pl: 'Prognoza OpenAPS' - ,tr: 'OpenAPS Tahminleri' - ,hu: 'OpenAPS előrejelzés' - ,nb: 'OpenAPS-prediksjon' - } - ,'Temporary Target' : { - cs: 'Dočasný cíl glykémie' - ,he: 'מטרה זמנית ' - ,de: 'Temporäres Ziel' - ,dk: 'Midlertidigt mål' - ,fr: 'Cible temporaire' - ,ro: 'Țintă temporară' - ,ru: 'Временная цель' - ,fi: 'Tilapäinen tavoite' - ,es: 'Objetivo temporal' - ,ko: '임시목표' - ,it: 'Obbiettivo temporaneo' - ,nl: 'Tijdelijk doel' - ,zh_cn: '临时目标' - ,sv: 'Tillfälligt mål' - ,bg: 'временна цел' - ,hr: 'Privremeni cilj' - ,pl: 'Cel tymczasowy' - ,tr: 'Geçici Hedef' - ,hu: 'Átmeneti cél' - ,nb: 'Midlertidig mål' - } - ,'Temporary Target Cancel' : { - cs: 'Dočasný cíl glykémie konec' - ,he: 'בטל מטרה זמנית ' - ,de: 'Temporäres Ziel abbrechen' - ,dk: 'Afslut midlertidigt mål' - ,fr: 'Effacer la cible temporaire' - ,ro: 'Renunțare la ținta temporară' - ,ru: 'Отмена временной цели' - ,fi: 'Peruuta tilapäinen tavoite' - ,es: 'Objetivo temporal cancelado' - ,ko: '임시목표취소' - ,it: 'Obbiettivo temporaneo cancellato' - ,nl: 'Annuleer tijdelijk doel' - ,zh_cn: '临时目标取消' - ,sv: 'Avsluta tillfälligt mål' - ,bg: 'Отмяна на временна цел' - ,hr: 'Otkaz privremenog cilja' - ,pl: 'Zel tymczasowy anulowany' - ,tr: 'Geçici Hedef İptal' - ,hu: 'Átmeneti cél törlése' - ,nb: 'Avslutt midlertidig mål' - } - ,'OpenAPS Offline' : { - cs: 'OpenAPS vypnuto' - ,he: 'OPENAPS לא פעיל ' - ,de: 'OpenAPS Offline' - ,dk: 'OpenAPS Offline' - ,ro: 'OpenAPS deconectat' - ,fr: 'OpenAPS déconnecté' - ,ru: 'OpenAPS вне сети' - ,fi: 'OpenAPS poissa verkosta' - ,ko: 'OpenAPS Offline' - ,it: 'OpenAPS disconnesso' - ,es: 'OpenAPS desconectado' - ,nl: 'OpenAPS Offline' - ,zh_cn: 'OpenAPS 离线' - ,sv: 'OpenAPS Offline' - ,bg: 'OpenAPS спрян' - ,hr: 'OpenAPS odspojen' - ,pl: 'OpenAPS nieaktywny' - ,tr: 'OpenAPS Offline (çevrimdışı)' - ,hu: 'OpenAPS nem elérhető (offline)' - ,nb: 'OpenAPS offline' - } - ,'Profiles' : { - cs: 'Profily' - ,he: 'פרופילים ' - ,de: 'Profile' - ,dk: 'Profiler' - ,fr: 'Profils' - ,ro: 'Profile' - ,ru: 'Профили' - ,fi: 'Profiilit' - ,ko: '프로파일' - ,it: 'Profili' - ,es: 'Perfil' - ,nl: 'Profielen' - ,zh_cn: '配置文件' - ,sv: 'Profiler' - ,nb: 'Profiler' - ,bg: 'Профили' - ,hr: 'Profili' - ,pl: 'Profile' - ,tr: 'Profiller' - ,hu: 'Profilok' - } - ,'Time in fluctuation' : { - cs: 'Doba měnící se glykémie' - ,he: 'זמן בתנודות ' - ,fi: 'Aika muutoksessa' - ,fr: 'Temps passé en fluctuation' - ,ko: '변동시간' - ,it: 'Tempo in fluttuazione' - ,ro: 'Timp în fluctuație' - ,es: 'Tiempo fluctuando' - ,ru: 'Время флуктуаций' - ,nl: 'Tijd met fluctuaties' - ,zh_cn: '波动时间' - ,sv: 'Tid i fluktation' - ,de: 'Zeit in Fluktuation (Schwankung)' - ,dk: 'Tid i fluktation' - ,bg: 'Време в промяна' - ,hr: 'Vrijeme u fluktuaciji' - ,pl: 'Czas fluaktacji (odchyleń)' - ,tr: 'Dalgalanmada geçen süre' - ,hu: 'Kilengésben töltött idő' - ,nb: 'Tid i fluktuasjon' - } - ,'Time in rapid fluctuation' : { - cs: 'Doba rychle se měnící glykémie' - ,he: 'זמן בתנודות מהירות ' - ,fi: 'Aika nopeassa muutoksessa' - ,fr: 'Temps passé en fluctuation rapide' - ,ko: '빠른변동시간' - ,it: 'Tempo in rapida fluttuazione' - ,ro: 'Timp în fluctuație rapidă' - ,es: 'Tiempo fluctuando rápido' - ,ru: 'Время быстрых флуктуаций' - ,nl: 'Tijd met grote fluctuaties' - ,zh_cn: '快速波动时间' - ,sv: 'Tid i snabb fluktation' - ,de: 'Zeit in starker Fluktuation (Schwankung)' - ,dk: 'Tid i hurtig fluktation' - ,bg: 'Време в бърза промяна' - ,hr: 'Vrijeme u brzoj fluktuaciji' - ,pl: 'Czas szybkich fluaktacji (odchyleń)' - ,tr: 'Hızlı dalgalanmalarda geçen süre' - ,hu: 'Magas kilengésekben töltött idő' - ,nb: 'Tid i hurtig fluktuasjon' - } - ,'This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:' : { - cs: 'Toto je pouze hrubý odhad, který může být nepřesný a nenahrazuje kontrolu z krve. Vzorec je převzatý z:' - ,he: 'זוהי רק הערכה גסה שיכולה להיות מאוד לא מדויקת ואינה מחליפה את בדיקת הדם בפועל. הנוסחה המשמשת נלקחת מ: ' - ,fi: 'Tämä on epätarkka arvio joka saattaa heittää huomattavasti mittaustuloksesta, eikä korvaa laboratoriotestiä. Laskentakaava on otettu artikkelista: ' - ,fr: 'Ceci est seulement une estimation grossière qui peut être très imprécise et ne remplace pas une mesure sanguine adéquate. La formule est empruntée à l\'article:' - ,ko: '이것은 대충 예측한 것이기 때문에 부정확할 수 있고 실제 혈당으로 대체되지 않습니다. 사용된 공식:' - ,it: 'Questa è solo un\'approssimazione che può essere molto inaccurata e che non sostituisce la misurazione capillare. La formula usata è presa da:' - ,ro: 'Aceasta este doar o aproximare brută, care poate fi foarte imprecisă și nu ține loc de testare capilară. Formula matematică folosită este luată din:' - ,es: 'Esto es sólo una estimación apróximada que puede ser muy inexacta y no reemplaza las pruebas de sangre reales. La fórmula utilizada está tomada de: ' - ,ru: 'Это приблизительная оценка не заменяющая фактический анализ крови. Используемая формула взята из:' - ,zh_cn: '这只是一个粗略的估计,可能非常不准确,并不能取代测指血' - ,nl: 'Dit is enkel een grove schatting die onjuist kan zijn welke geen bloedtest vervangt. De gebruikte formule is afkomstig van:' - ,sv: 'Detta är en grov uppskattning som kan vara missvisande. Det ersätter inte blodprov. Formeln är hämtad från:' - ,de: 'Dies ist lediglich eine grobe Schätzung, die sehr ungenau sein kann und eine Überprüfung des tatsächlichen Blutzuckers nicht ersetzen kann. Die verwendete Formel wurde genommen von:' - ,dk: 'Dette er kun en grov estimering som kan være misvisende. Det erstatter ikke en blodprøve. Formelen er hemtet fra:' - ,bg: 'Това е само грубо изчисление, което може да е много неточно и не изключва реалния кръвен тест. Формулата, кокято е използвана е взета от:' - ,hr: 'Ovo je samo gruba procjena koja može biti neprecizna i ne mijenja testiranje iz krvi. Formula je uzeta iz:' - ,pl: 'To tylko przybliżona ocena, która może być bardzo niedokładna i nie może zastąpić faktycznego poziomu cukru we krwi. Zastosowano formułę:' - ,tr: 'Bu bir kaba tahmindir ve çok hata içerebilir gerçek kan şekeri testlerinin yerini tutmayacaktır. Kullanılan formülde buradandır:' - ,hu: 'Ez egy nagyon durva számítás ami nem pontos és nem helyettesíti a cukorszint mérését. A képlet a következő helyről lett véve:' - ,nb: 'Dette er kun et grovt estimat som kan være misvisende. Det erstatter ikke en blodprøve. Formelen er hentet fra:' - } - , 'Filter by hours' : { - cs: ' Filtr podle hodin' - ,fi: 'Huomioi raportissa seuraavat tunnit' - ,ko: '시간으로 정렬' - ,it: 'Filtra per ore' - ,fr: 'Filtrer par heures' - ,ro: 'Filtrare pe ore' - ,es: 'Filtrar por horas' - ,ru: 'Почасовая фильтрация' - ,nl: 'Filter op uren' - ,zh_cn: '按小时过滤' - ,sv: 'Filtrera per timme' - ,de: 'Filtern nach Stunden' - ,dk: 'Filtrer per time' - ,bg: 'Филтър по часове' - ,hr: 'Filter po satima' - ,pl: 'Filtruj po godzinach' - ,tr: 'Saatlere göre filtrele' - ,hu: 'Megszűrni órák alapján' - ,nb: 'Filtrer per time' - } - , 'Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.' : { - cs: 'Doba měnící se glykémie a rapidně se měnící glykémie měří % času ve zkoumaném období, během kterého se glykémie měnila relativně rychle nebo rapidně. Nižší hodnota je lepší.' - ,fi: 'Aika Muutoksessa ja Aika Nopeassa Muutoksessa mittaa osuutta tarkkailtavasta aikaperiodista, jolloin glukoosi on ollut nopeassa tai hyvin nopeassa muutoksessa. Pienempi arvo on parempi.' - ,fr: 'Le Temps passé en fluctuation et le temps passé en fluctuation rapide mesurent la part de temps durant la période examinée, pendant laquelle la glycémie a évolué relativement ou très rapidement. Les valeurs basses sont les meilleures.' - ,ko: '변동시간과 빠른 변동시간은 조사된 기간 동안 %의 시간으로 측정되었습니다.혈당은 비교적 빠르게 변화되었습니다. 낮을수록 좋습니다.' - ,it: 'Tempo in fluttuazione e Tempo in rapida fluttuazione misurano la % di tempo durante il periodo esaminato, durante il quale la glicemia stà variando velocemente o rapidamente. Bassi valori sono migliori.' - ,ro: 'Timpul în fluctuație și timpul în fluctuație rapidă măsoară procentul de timp, din perioada examinată, în care glicemia din sânge a avut o variație relativ rapidă sau rapidă. Valorile mici sunt de preferat.' - ,es: 'Tiempo en fluctuación y Tiempo en fluctuación rápida miden el % de tiempo del período exáminado, durante la cual la glucosa en sangre ha estado cambiando relativamente rápido o rápidamente. Valores más bajos son mejores.' - ,ru: 'Время флуктуаций и время быстрых флуктуаций означает % времени в рассматриваемый период в течение которого ГК менялась относительно быстро или просто быстро. Более низкие значения предпочтительней' - ,nl: 'Tijd met fluctuaties of grote fluctuaties in % van de geevalueerde periode, waarbij de bloed glucose relatief snel wijzigde.Lagere waarden zijn beter.' - ,zh_cn: '在检查期间血糖波动时间和快速波动时间占的时间百分比,在此期间血糖相对快速或快速地变化。百分比值越低越好。' - ,sv: 'Tid i fluktuation och tid i snabb fluktuation mäter% av tiden under den undersökta perioden, under vilken blodsockret har förändrats relativt snabbt eller snabbt. Lägre värden är bättre' - ,de: 'Zeit in Fluktuation und Zeit in starker Fluktuation messen den Teil der Zeit, in der sich der Blutzuckerwert relativ oder sehr schnell verändert hat. Niedrigere Werte sind besser.' - ,dk: 'Tid i fluktuation og tid i hurtig fluktuation måler % af tiden i den undersøgte periode, under vilket blodsukkret har ændret sig relativt hurtigt. Lavere værdier er bedre.' - ,bg: 'Време в промяна и време в бърза промяна измерват % от време в разгледания период, през който КЗ са се променяли бързо или много бързо. По-ниски стойности са по-добри.' - ,hr: 'Vrijeme u fluktuaciji i vrijeme u brzoj fluktuaciji mjere % vremena u gledanom periodu, tijekom kojeg se GUK mijenja relativno brzo ili brzo. Niže vrijednosti su bolje.' - ,pl: 'Czas fluktuacji i szybki czas fluktuacji mierzą % czasu w badanym okresie, w którym poziom glukozy we krwi zmieniał się szybko lub bardzo szybko. Preferowane są wolniejsze zmiany' - ,tr: 'Dalgalanmadaki zaman ve Hızlı dalgalanmadaki zaman, kan şekerinin nispeten hızlı veya çok hızlı bir şekilde değiştiği, incelenen dönemdeki zamanın %\'sini ölçer. Düşük değerler daha iyidir.' - ,hu: 'A sima és magas kilengésnél mért idő százalékban kifelyezve, ahol a cukorszint aránylag nagyokat változott. A kisebb értékek jobbak ebben az esetben' - ,nb: 'Tid i fluktuasjon og tid i hurtig fluktuasjon måler % av tiden i den aktuelle periodn der blodsukkeret har endret seg relativt raskt. Lave verdier er best.' - } - , 'Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.' : { - cs: 'Průměrná celková denní změna je součet absolutních hodnoty všech glykémií za sledované období, děleno počtem dní. Nižší hodnota je lepší.' - ,fi: 'Keskimääräinen Kokonaismuutos kertoo kerkimääräisen päivätason verensokerimuutoksien yhteenlasketun arvon. Pienempi arvo on parempi.' - ,fr: 'La Variation Totale Journalière Moyenne est la somme de toute les excursions glycémiques absolues pour une période analysée, divisée par le nombre de jours. Les valeurs basses sont les meilleures.' - ,ko: '전체 일일 변동 평균은 조사된 기간동안 전체 혈당 절대값의 합을 전체 일수로 나눈 값입니다. 낮을수록 좋습니다.' - ,it: 'Media Totale Giornaliera Variazioni è la somma dei valori assoluti di tutte le escursioni glicemiche per il periodo esaminato, diviso per il numero di giorni. Bassi valori sono migliori.' - ,ro: 'Schimbarea medie totală zilnică este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de zile. Valorile mici sunt de preferat.' - ,ru: 'Усредненное ежедневное изменение это сумма абсолютных величин всех отклонений ГК в рассматриваемый период, деленная на количество дней. Меньшая величина предпочтительней' - ,es: 'El cambio medio diario total es la suma de los valores absolutos de todas las glucémias en el período examinado, dividido por el número de días. Mejor valores bajos.' - ,nl: 'Gemiddelde veranderingen per dag is een som van alle waardes die uitschieten over de bekeken periode, gedeeld door het aantal dagen in deze periode. Lager is beter.' - ,zh_cn: '平均每日总变化是检查期间所有血糖偏移的绝对值之和除以天数。越低越好' - ,sv: 'Medel Total Daglig Förändring är summan av absolutvärdet av alla glukosförändringar under den undersökta perioden, dividerat med antalet dagar. Lägre är bättre.' - ,de: 'Die gesamte mittlere Änderung pro Tag ist die Summe der absoluten Werte aller Glukoseveränderungen im Betrachtungszeitraum geteilt durch die Anzahl der Tage. Niedrigere Werte sind besser.' - ,dk: 'Middel Total Daglig Ændring er summen af absolutværdier af alla glukoseændringer i den undersøgte periode, divideret med antallet af dage. Lavere er bedre.' - ,bg: 'Средната дневна промяна е сумата на всички промени в стойностите на КЗ за разгледания период, разделена на броя дни в периода. По-ниската стойност е по-добра' - ,hr: 'Srednja ukupna dnevna promjena je suma apsolutnih vrijednosti svih pomaka u gledanom periodu, podijeljeno s brojem dana. Niže vrijednosti su bolje.' - ,pl: 'Sednia całkowita dziennych zmian jest sumą wszystkich zmian glikemii w badanym okresie, podzielonym przez liczbę dni. Mniejsze są lepsze' - ,tr: 'Toplam Günlük Değişim, incelenen süre için, gün sayısına bölünen tüm glukoz değerlerinin mutlak değerinin toplamıdır. Düşük değer daha iyidir.' - ,hu: 'Az átlagos napi változás az abszolút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.' - ,nb: 'Gjennomsnitt total daglig endring er summen av absolutverdier av alle glukoseendringer i den aktuelle perioden, divideret med antall dager. Lave verdier er best.' - - } - , 'Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.' : { - cs: 'Průměrná hodinová změna je součet absolutní hodnoty všech glykémií za sledované období, dělených počtem hodin v daném období. Nižší hodnota je lepší.' - ,fi: 'Keskimääräinen tunti kertoo keskimääräisen tuntitason verensokerimuutoksien yhteenlasketun arvon. Pienempi arvo on parempi.' - ,fr: 'La Variation Horaire Moyenne est la somme de toute les excursions glycémiques absolues pour une période analysée, divisée par le nombre d\'heures dans la période. Les valeures basses sont les meilleures.' - ,ko: '시간당 변동 평균은 조사된 기간 동안 전체 혈당 절대값의 합을 기간의 시간으로 나눈 값입니다.낮을수록 좋습니다.' - ,it: 'Media Oraria Variazioni è la somma del valore assoluto di tutte le escursioni glicemiche per il periodo esaminato, diviso per il numero di ore. Bassi valori sono migliori.' - ,ro: 'Variația media orară este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de ore din aceeași perioadă. Valorile mici sunt de preferat.' - ,ru: 'Усредненное часовое изменение это сумма абсолютных величин всех отклонений ГК в рассматриваемый период, деленная на количество часов в этот период. Более низкое предпочтительней' - ,es: 'El cambio medio por hora, es la suma del valor absoluto de todas las glucemias para el período examinado, dividido por el número de horas en el período. Más bajo es mejor.' - ,nl: 'Gemiddelde veranderingen per uur is een som van alle waardes die uitschieten over de bekeken periode, gedeeld door het aantal uur in deze periode. Lager is beter.' - ,zh_cn: '平均每小时变化是检查期间所有血糖偏移的绝对值之和除以该期间的小时数。 越低越好' - ,sv: 'Medelvärde per timme är summan av absolutvärdet av alla glukosförändringar under den undersökta perioden dividerat med antalet timmar under perioden. Lägre är bättre.' - ,de: 'Die mittlere Änderung pro Stunde ist die Summe der absoluten Werte aller Glukoseveränderungen im Betrachtungszeitraum geteilt durch die Anzahl der Stunden. Niedrigere Werte sind besser.' - ,dk: 'Middelværdier per time er summen af absolutværdier fra alle glukoseændringer i den undersøgte periode divideret med antallet af timer. Lavere er bedre.' - ,bg: 'Средната промяна за час е сумата на всички промени в стойностите на КЗ за разгледания период, разделена на броя часове в периода. По-ниската стойност е по-добра' - ,hr: 'Srednja ukupna promjena po satu je suma apsolutnih vrijednosti svih pomaka u gledanom periodu, podijeljeno s brojem sati. Niže vrijednosti su bolje.' - ,pl: 'Sednia całkowita godzinnych zmian jest sumą wszystkich zmian glikemii w badanym okresie, podzielonym przez liczbę godzin. Mniejsze są lepsze' - ,tr: 'Saat başına ortalama değişim, gözlem periyodu üzerindeki tüm glikoz değişikliklerinin mutlak değerlerinin saat sayısına bölünmesiyle elde edilen toplam değerdir. Düşük değerler daha iyidir.' - ,hu: 'Az átlagos óránkénti változás az abszút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.' - ,nb: 'Gjennomsnitt endring per time er summen av absoluttverdier av alle glukoseendringer i den aktuelle perioden divideret med antall timer. Lave verdier er best.' - } - , 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' : { - cs: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,he: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,nb: 'Out of Range RMS er beregnet ved å ta kvadratet av avstanden utenfor målområdet for alle blodsukkerverdier i den aktuelle perioden, summere dem, dele på antallet, og ta kvadratroten av resultatet. Dette målet er lignende som prodentvis tid i målområdet, men vekter målinger som ligger langt utenfor målområdet høyere. Lave verdier er best.' - ,ro: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,de: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,dk: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,es: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,fr: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,sv: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,fi: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,bg: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,hr: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,pl: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,pt: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,nl: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,ru: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,sk: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,ko: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,it: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,tr: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,zh_cn: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - ,hu: 'Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.' - } - , 'GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.' : { - cs: '">zde.' - ,he: '">here.' - ,fi: '">here.' - ,ko: '">here.' - ,it: '">qui.' - ,es: '">here.' - ,fr: '">ici.' - ,ro: '">aici.' - ,ru: '">здесь.' - ,nl: '">is hier te vinden.' - ,zh_cn: '">here.' - ,sv: '">här.' - ,de: '">hier.' - ,dk: '">her.' - ,bg: '">тук.' - ,hr: '">ovdje.' - ,pl: '">tutaj.' - ,tr: '">buradan.' - ,hu: '">itt találhatóak.' - ,nb: '">her.' - } - , 'Mean Total Daily Change' : { - cs: 'Průměrná celková denní změna' - ,he: 'שינוי יומי ממוצע ' - ,fi: 'Keskimääräinen Kokonaismuutos' - ,fr: 'Variation Totale Journalière Moyenne' - ,ko: '전체 일일 변동 평균' - ,it: 'Media Totale Giornaliera Variazioni' - ,ro: 'Variația medie totală zilnică' - ,ru: 'Усредненное изменение за день' - ,es: 'Variación media total diaria' - ,nl: 'Gemiddelde veranderingen per dag' - ,zh_cn: '平均每日总变化' - ,sv: 'Medel Total Daglig Förändring' - ,de: 'Gesamte mittlere Änderung pro Tag' - ,dk: 'Middel Total Daglig Ændring' - ,bg: 'Средна промяна за ден' - ,hr: 'Srednja ukupna dnevna promjena' - ,pl: 'Średnia całkowita dziennych zmian' - ,tr: 'Günde toplam ortalama değişim' - ,hu: 'Áltagos napi változás' - ,nb: 'Gjennomsnitt total daglig endring' - } - , 'Mean Hourly Change' : { - cs: 'Průměrná hodinová změna' - ,he: 'שינוי ממוצע לשעה ' - ,fi: 'Keskimääräinen tuntimuutos' - ,fr: 'Variation Horaire Moyenne' - ,ko: '시간당 변동 평균' - ,it: 'Media Oraria Variazioni' - ,ro: 'Variația medie orară' - ,es: 'Variación media total por horas' - ,ru: 'Усредненное изменение за час' - ,nl: 'Gemiddelde veranderingen per uur' - ,zh_cn: '平均每小时变化' - ,sv: 'Medelvärde per timme' - ,de: 'Mittlere Änderung pro Stunde' - ,dk: 'Middelværdier per time' - ,bg: 'Средна промяна за час' - ,hr: 'Srednja ukupna promjena po satu' - ,pl: 'Średnia całkowita godzinnych zmian' - ,tr: 'Saatte ortalama değişim' - ,hu: 'Átlagos óránkénti változás' - ,nb: 'Gjennomsnitt endring per time' - } - , 'FortyFiveDown': { - bg: 'slightly dropping' - , cs: 'lehce dolů' - , de: 'leicht sinkend' - , dk: 'svagt faldende' - , el: 'slightly dropping' - , en: 'slightly dropping' - , es: 'Disminuye lentamente' - , fi: 'laskee hitaasti' - , fr: 'en chute lente' - , he: 'slightly dropping' - , hr: 'sporo padajuće' - , ko: 'slightly dropping' - , it: 'leggera diminuzione' - , nb: 'svakt fallende' - , pl: 'niewielki spadek' - , pt: 'slightly dropping' - , ro: 'scădere ușoară' - , ru: 'незначительное падение' - , sk: 'slightly dropping' - , sv: 'slightly dropping' - , nl: 'slightly dropping' - , tr: 'biraz düşen' - , zh_cn: '缓慢下降' - , zh_tw: 'slightly dropping' - , hu: 'lassan csökken' - - }, - 'FortyFiveUp': { - bg: 'slightly rising' - , cs: 'lehce nahoru' - , de: 'leicht steigend' - , dk: 'svagt stigende' - , el: 'slightly rising' - , en: 'slightly rising' - , es: 'Asciende lentamente' - , fi: 'nousee hitaasti' - , fr: 'en montée lente' - , he: 'slightly rising' - , hr: 'sporo rastuće' - , it: 'leggero aumento' - , ko: 'slightly rising' - , nb: 'svakt stigende' - , pl: 'niewielki wzrost' - , pt: 'slightly rising' - , ro: 'creștere ușoară' - , ru: 'незначительный подъем' - , sk: 'slightly rising' - , sv: 'slightly rising' - , nl: 'slightly rising' - , tr: 'biraz yükselen' - , zh_cn: '缓慢上升' - , zh_tw: 'slightly rising' - , hu: 'lassan növekszik' - }, - 'Flat': { - bg: 'holding' - , cs: 'stabilní' - , de: 'gleichbleibend' - , dk: 'stabilt' - , el: 'holding' - , en: 'holding' - , es: 'Sin variación' - , fi: 'tasainen' - , fr: 'stable' - , he: 'holding' - , hr: 'ravno' - , it: 'stabile' - , ko: 'holding' - , nb: 'stabilt' - , pl: 'stabilny' - , pt: 'holding' - , ro: 'stabil' - , ru: 'ровный' - , sk: 'holding' - , sv: 'holding' - , nl: 'holding' - , tr: 'sabit' - , zh_cn: '平' - , zh_tw: 'holding' - , hu: 'stabil' - }, - 'SingleUp': { - bg: 'rising' - , cs: 'nahoru' - , de: 'steigend' - , dk: 'stigende' - , el: 'rising' - , en: 'rising' - , es: 'Ascendiendo' - , fi: 'nousussa' - , fr: 'en montée' - , he: 'rising' - , hr: 'rastuće' - , it: 'aumento' - , ko: 'rising' - , nb: 'stigende' - , pl: 'wzrost' - , pt: 'rising' - , ro: 'creștere' - , ru: 'растет' - , sk: 'rising' - , sv: 'rising' - , nl: 'rising' - , tr: 'yükseliyor' - , zh_cn: '上升' - , zh_tw: 'rising' - , hu: 'emelkedik' - }, - 'SingleDown': { - bg: 'dropping' - , cs: 'dolů' - , de: 'sinkend' - , dk: 'faldende' - , el: 'dropping' - , en: 'dropping' - , es: 'Bajando' - , fi: 'laskussa' - , fr: 'en chute' - , he: 'dropping' - , hr: 'padajuće' - , it: 'diminuzione' - , ko: 'dropping' - , nb: 'fallende' - , pl: 'spada' - , pt: 'dropping' - , ro: 'scădere' - , ru: 'падает' - , sk: 'dropping' - , sv: 'dropping' - , nl: 'dropping' - , tr: 'düşüyor' - , zh_cn: '下降' - , zh_tw: 'dropping' - , hu: 'csökken' - }, - 'DoubleDown': { - bg: 'rapidly dropping' - , cs: 'rychle dolů' - , de: 'schnell sinkend' - , dk: 'hurtigt faldende' - , el: 'rapidly dropping' - , en: 'rapidly dropping' - , es: 'Bajando rápido' - , fi: 'laskee nopeasti' - , fr: 'en chute rapide' - , he: 'rapidly dropping' - , hr: 'brzo padajuće' - , it: 'rapida diminuzione' - , ko: 'rapidly dropping' - , nb: 'hurtig fallende' - , pl: 'szybko spada' - , pt: 'rapidly dropping' - , ro: 'scădere bruscă' - , ru: 'быстро падает' - , sk: 'rapidly dropping' - , sv: 'rapidly dropping' - , nl: 'rapidly dropping' - , tr: 'hızlı düşen' - , zh_cn: '快速下降' - , zh_tw: 'rapidly dropping' - , hu: 'gyorsan csökken' - }, - 'DoubleUp': { - bg: 'rapidly rising' - , cs: 'rychle nahoru' - , de: 'schnell steigend' - , dk: 'hurtigt stigende' - , el: 'rapidly rising' - , en: 'rapidly rising' - , es: 'Subiendo rápido' - , fi: 'nousee nopeasti' - , fr: 'en montée rapide' - , he: 'rapidly rising' - , hr: 'brzo rastuće' - , it: 'rapido aumento' - , ko: 'rapidly rising' - , nb: 'hurtig stigende' - , pl: 'szybko rośnie' - , pt: 'rapidly rising' - , ro: 'creștere rapidă' - , ru: 'быстрый рост' - , sk: 'rapidly rising' - , sv: 'rapidly rising' - , nl: 'rapidly rising' - , tr: 'hızla yükselen' - , zh_cn: '快速上升' - , zh_tw: 'rapidly rising' - , hu: 'gyorsan emelkedik' - }, - 'virtAsstUnknown': { - bg: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , cs: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , de: 'Dieser Wert ist momentan unbekannt. Prüfe deine Nightscout-Webseite für weitere Details!' - , dk: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , el: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , en: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , es: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , fi: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , fr: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , he: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , hr: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , it: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , ko: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , nb: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , pl: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , pt: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , ro: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , nl: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , ru: 'В настоящий момент величина неизвестна. Зайдите на сайт Nightscout.' - , sk: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , sv: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , tr: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , zh_cn: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , zh_tw: 'That value is unknown at the moment. Please see your Nightscout site for more details.' - , hu: 'Az adat ismeretlen. Kérem nézd meg a Nightscout oldalt részletekért' - }, - 'virtAsstTitleAR2Forecast': { - bg: 'AR2 Forecast' - , cs: 'AR2 Forecast' - , de: 'AR2-Vorhersage' - , dk: 'AR2 Forecast' - , el: 'AR2 Forecast' - , en: 'AR2 Forecast' - , es: 'AR2 Forecast' - , fi: 'AR2 Forecast' - , fr: 'AR2 Forecast' - , he: 'AR2 Forecast' - , hr: 'AR2 Forecast' - , it: 'AR2 Forecast' - , ko: 'AR2 Forecast' - , nb: 'AR2 Forecast' - , pl: 'AR2 Forecast' - , pt: 'AR2 Forecast' - , ro: 'AR2 Forecast' - , nl: 'AR2 Forecast' - , ru: 'Прогноз AR2' - , sk: 'AR2 Forecast' - , sv: 'AR2 Forecast' - , tr: 'AR2 Forecast' - , zh_cn: 'AR2 Forecast' - , zh_tw: 'AR2 Forecast' - , hu: 'AR2 Előrejelzés' - }, - 'virtAsstTitleCurrentBasal': { - bg: 'Current Basal' - , cs: 'Current Basal' - , de: 'Aktuelles Basalinsulin' - , dk: 'Current Basal' - , el: 'Current Basal' - , en: 'Current Basal' - , es: 'Current Basal' - , fi: 'Current Basal' - , fr: 'Current Basal' - , he: 'Current Basal' - , hr: 'Current Basal' - , it: 'Current Basal' - , ko: 'Current Basal' - , nb: 'Current Basal' - , pl: 'Current Basal' - , pt: 'Current Basal' - , ro: 'Current Basal' - , nl: 'Current Basal' - , ru: 'Актуальный Базал' - , sk: 'Current Basal' - , sv: 'Current Basal' - , tr: 'Current Basal' - , zh_cn: 'Current Basal' - , zh_tw: 'Current Basal' - , hu: 'Jelenlegi Bazál' - }, - 'virtAsstTitleCurrentCOB': { - bg: 'Current COB' - , cs: 'Current COB' - , de: 'Aktuelle Kohlenhydrate' - , dk: 'Current COB' - , el: 'Current COB' - , en: 'Current COB' - , es: 'Current COB' - , fi: 'Current COB' - , fr: 'Current COB' - , he: 'Current COB' - , hr: 'Current COB' - , it: 'Current COB' - , ko: 'Current COB' - , nb: 'Current COB' - , pl: 'Current COB' - , pt: 'Current COB' - , ro: 'Current COB' - , nl: 'Current COB' - , ru: 'АктивнУгл COB' - , sk: 'Current COB' - , sv: 'Current COB' - , tr: 'Current COB' - , zh_cn: 'Current COB' - , zh_tw: 'Current COB' - , hu: 'Jelenlegi COB' - }, - 'virtAsstTitleCurrentIOB': { - bg: 'Current IOB' - , cs: 'Current IOB' - , de: 'Aktuelles Restinsulin' - , dk: 'Current IOB' - , el: 'Current IOB' - , en: 'Current IOB' - , es: 'Current IOB' - , fi: 'Current IOB' - , fr: 'Current IOB' - , he: 'Current IOB' - , hr: 'Current IOB' - , it: 'Current IOB' - , ko: 'Current IOB' - , nb: 'Current IOB' - , pl: 'Current IOB' - , pt: 'Current IOB' - , ro: 'Current IOB' - , nl: 'Current IOB' - , ru: 'АктИнс IOB' - , sk: 'Current IOB' - , sv: 'Current IOB' - , tr: 'Current IOB' - , zh_cn: 'Current IOB' - , zh_tw: 'Current IOB' - , hu: 'Jelenlegi IOB' - }, - 'virtAsstTitleLaunch': { - bg: 'Welcome to Nightscout' - , cs: 'Welcome to Nightscout' - , de: 'Willkommen bei Nightscout' - , dk: 'Welcome to Nightscout' - , el: 'Welcome to Nightscout' - , en: 'Welcome to Nightscout' - , es: 'Welcome to Nightscout' - , fi: 'Welcome to Nightscout' - , fr: 'Welcome to Nightscout' - , he: 'Welcome to Nightscout' - , hr: 'Welcome to Nightscout' - , it: 'Welcome to Nightscout' - , ko: 'Welcome to Nightscout' - , nb: 'Welcome to Nightscout' - , pl: 'Welcome to Nightscout' - , pt: 'Welcome to Nightscout' - , ro: 'Welcome to Nightscout' - , nl: 'Welcome to Nightscout' - , ru: 'Добро пожаловать в Nightscout' - , sk: 'Welcome to Nightscout' - , sv: 'Welcome to Nightscout' - , tr: 'Welcome to Nightscout' - , zh_cn: 'Welcome to Nightscout' - , zh_tw: 'Welcome to Nightscout' - , hu: 'Üdvözöllek a Nightscouton' - }, - 'virtAsstTitleLoopForecast': { - bg: 'Loop Forecast' - , cs: 'Loop Forecast' - , de: 'Loop-Vorhersage' - , dk: 'Loop Forecast' - , el: 'Loop Forecast' - , en: 'Loop Forecast' - , es: 'Loop Forecast' - , fi: 'Loop Forecast' - , fr: 'Loop Forecast' - , he: 'Loop Forecast' - , hr: 'Loop Forecast' - , it: 'Loop Forecast' - , ko: 'Loop Forecast' - , nb: 'Loop Forecast' - , pl: 'Loop Forecast' - , pt: 'Loop Forecast' - , ro: 'Loop Forecast' - , nl: 'Loop Forecast' - , ru: 'Прогноз Loop' - , sk: 'Loop Forecast' - , sv: 'Loop Forecast' - , tr: 'Loop Forecast' - , zh_cn: 'Loop Forecast' - , zh_tw: 'Loop Forecast' - , hu: 'Loop Előrejelzés' - }, - 'virtAsstTitleLastLoop': { - bg: 'Last Loop' - , cs: 'Last Loop' - , de: 'Letzter Loop' - , dk: 'Last Loop' - , el: 'Last Loop' - , en: 'Last Loop' - , es: 'Last Loop' - , fi: 'Last Loop' - , fr: 'Last Loop' - , he: 'Last Loop' - , hr: 'Last Loop' - , it: 'Last Loop' - , ko: 'Last Loop' - , nb: 'Last Loop' - , pl: 'Last Loop' - , pt: 'Last Loop' - , ro: 'Last Loop' - , nl: 'Last Loop' - , ru: 'Прошлый Loop' - , sk: 'Last Loop' - , sv: 'Last Loop' - , tr: 'Last Loop' - , zh_cn: 'Last Loop' - , zh_tw: 'Last Loop' - , hu: 'Utolsó Loop' - }, - 'virtAsstTitleOpenAPSForecast': { - bg: 'OpenAPS Forecast' - , cs: 'OpenAPS Forecast' - , de: 'OpenAPS-Vorhersage' - , dk: 'OpenAPS Forecast' - , el: 'OpenAPS Forecast' - , en: 'OpenAPS Forecast' - , es: 'OpenAPS Forecast' - , fi: 'OpenAPS Forecast' - , fr: 'OpenAPS Forecast' - , he: 'OpenAPS Forecast' - , hr: 'OpenAPS Forecast' - , it: 'OpenAPS Forecast' - , ko: 'OpenAPS Forecast' - , nb: 'OpenAPS Forecast' - , pl: 'OpenAPS Forecast' - , pt: 'OpenAPS Forecast' - , ro: 'OpenAPS Forecast' - , nl: 'OpenAPS Forecast' - , ru: 'Прогноз OpenAPS' - , sk: 'OpenAPS Forecast' - , sv: 'OpenAPS Forecast' - , tr: 'OpenAPS Forecast' - , zh_cn: 'OpenAPS Forecast' - , zh_tw: 'OpenAPS Forecast' - , hu: 'OpenAPS Előrejelzés' - }, - 'virtAsstTitlePumpReservoir': { - bg: 'Insulin Remaining' - , cs: 'Insulin Remaining' - , de: 'Verbleibendes Insulin' - , dk: 'Insulin Remaining' - , el: 'Insulin Remaining' - , en: 'Insulin Remaining' - , es: 'Insulin Remaining' - , fi: 'Insulin Remaining' - , fr: 'Insulin Remaining' - , he: 'Insulin Remaining' - , hr: 'Insulin Remaining' - , it: 'Insulin Remaining' - , ko: 'Insulin Remaining' - , nb: 'Insulin Remaining' - , pl: 'Insulin Remaining' - , pt: 'Insulin Remaining' - , ro: 'Insulin Remaining' - , nl: 'Insulin Remaining' - , ru: 'Осталось Инсулина' - , sk: 'Insulin Remaining' - , sv: 'Insulin Remaining' - , tr: 'Insulin Remaining' - , zh_cn: 'Insulin Remaining' - , zh_tw: 'Insulin Remaining' - , hu: 'Fennmaradó inzulin' - }, - 'virtAsstTitlePumpBattery': { - bg: 'Pump Battery' - , cs: 'Pump Battery' - , de: 'Pumpenbatterie' - , dk: 'Pump Battery' - , el: 'Pump Battery' - , en: 'Pump Battery' - , es: 'Pump Battery' - , fi: 'Pump Battery' - , fr: 'Pump Battery' - , he: 'Pump Battery' - , hr: 'Pump Battery' - , it: 'Pump Battery' - , ko: 'Pump Battery' - , nb: 'Pump Battery' - , pl: 'Pump Battery' - , pt: 'Pump Battery' - , ro: 'Pump Battery' - , nl: 'Pump Battery' - , ru: 'Батарея помпы' - , sk: 'Pump Battery' - , sv: 'Pump Battery' - , tr: 'Pump Battery' - , zh_cn: 'Pump Battery' - , zh_tw: 'Pump Battery' - , hu: 'Pumpa töltöttsége' - }, - 'virtAsstTitleRawBG': { - bg: 'Current Raw BG' - , cs: 'Current Raw BG' - , de: 'Aktueller Blutzucker-Rohwert' - , dk: 'Current Raw BG' - , el: 'Current Raw BG' - , en: 'Current Raw BG' - , es: 'Current Raw BG' - , fi: 'Current Raw BG' - , fr: 'Current Raw BG' - , he: 'Current Raw BG' - , hr: 'Current Raw BG' - , it: 'Current Raw BG' - , ko: 'Current Raw BG' - , nb: 'Current Raw BG' - , pl: 'Current Raw BG' - , pt: 'Current Raw BG' - , ro: 'Current Raw BG' - , nl: 'Current Raw BG' - , ru: 'Актуальн RAW ГК ' - , sk: 'Current Raw BG' - , sv: 'Current Raw BG' - , tr: 'Current Raw BG' - , zh_cn: 'Current Raw BG' - , zh_tw: 'Current Raw BG' - , hu: 'Jelenlegi nyers cukorszint' - }, - 'virtAsstTitleUploaderBattery': { - bg: 'Uploader Battery' - , cs: 'Uploader Battery' - , de: 'Uploader Batterie' - , dk: 'Uploader Battery' - , el: 'Uploader Battery' - , en: 'Uploader Battery' - , es: 'Uploader Battery' - , fi: 'Uploader Battery' - , fr: 'Uploader Battery' - , he: 'Uploader Battery' - , hr: 'Uploader Battery' - , it: 'Uploader Battery' - , ko: 'Uploader Battery' - , nb: 'Uploader Battery' - , pl: 'Uploader Battery' - , pt: 'Uploader Battery' - , ro: 'Uploader Battery' - , nl: 'Uploader Battery' - , ru: 'Батарея загрузчика' - , sk: 'Uploader Battery' - , sv: 'Uploader Battery' - , tr: 'Uploader Battery' - , zh_cn: 'Uploader Battery' - , zh_tw: 'Current Raw BG' - , hu: 'Feltöltő töltöttsége' - }, - 'virtAsstTitleCurrentBG': { - bg: 'Current BG' - , cs: 'Current BG' - , de: 'Aktueller Blutzucker' - , dk: 'Current BG' - , el: 'Current BG' - , en: 'Current BG' - , es: 'Current BG' - , fi: 'Current BG' - , fr: 'Current BG' - , he: 'Current BG' - , hr: 'Current BG' - , it: 'Current BG' - , ko: 'Current BG' - , nb: 'Current BG' - , pl: 'Current BG' - , pt: 'Current BG' - , ro: 'Current BG' - , nl: 'Current BG' - , ru: 'Актуальная ГК' - , sk: 'Current BG' - , sv: 'Current BG' - , tr: 'Current BG' - , zh_cn: 'Current BG' - , zh_tw: 'Current BG' - , hu: 'Jelenlegi Cukorszint' - }, - 'virtAsstTitleFullStatus': { - bg: 'Full Status' - , cs: 'Full Status' - , de: 'Gesamtstatus' - , dk: 'Full Status' - , el: 'Full Status' - , en: 'Full Status' - , es: 'Full Status' - , fi: 'Full Status' - , fr: 'Full Status' - , he: 'Full Status' - , hr: 'Full Status' - , it: 'Full Status' - , ko: 'Full Status' - , nb: 'Full Status' - , pl: 'Full Status' - , pt: 'Full Status' - , ro: 'Full Status' - , nl: 'Full Status' - , ru: 'Полная информация о статусе' - , sk: 'Full Status' - , sv: 'Full Status' - , tr: 'Full Status' - , zh_cn: 'Full Status' - , zh_tw: 'Full Status' - , hu: 'Teljes Státusz' - }, - 'virtAsstTitleCGMMode': { - bg: 'CGM Mode' - , cs: 'CGM Mode' - , de: 'CGM Mode' - , dk: 'CGM Mode' - , el: 'CGM Mode' - , en: 'CGM Mode' - , es: 'CGM Mode' - , fi: 'CGM Mode' - , fr: 'CGM Mode' - , he: 'CGM Mode' - , hr: 'CGM Mode' - , it: 'CGM Mode' - , ko: 'CGM Mode' - , nb: 'CGM Mode' - , pl: 'CGM Mode' - , pt: 'CGM Mode' - , ro: 'CGM Mode' - , nl: 'CGM Mode' - , ru: 'CGM Mode' - , sk: 'CGM Mode' - , sv: 'CGM Mode' - , tr: 'CGM Mode' - , zh_cn: 'CGM Mode' - , zh_tw: 'CGM Mode' - , hu: 'CGM Mód' - }, - 'virtAsstTitleCGMStatus': { - bg: 'CGM Status' - , cs: 'CGM Status' - , de: 'CGM Status' - , dk: 'CGM Status' - , el: 'CGM Status' - , en: 'CGM Status' - , es: 'CGM Status' - , fi: 'CGM Status' - , fr: 'CGM Status' - , he: 'CGM Status' - , hr: 'CGM Status' - , it: 'CGM Status' - , ko: 'CGM Status' - , nb: 'CGM Status' - , pl: 'CGM Status' - , pt: 'CGM Status' - , ro: 'CGM Status' - , nl: 'CGM Status' - , ru: 'CGM Status' - , sk: 'CGM Status' - , sv: 'CGM Status' - , tr: 'CGM Status' - , zh_cn: 'CGM Status' - , zh_tw: 'CGM Status' - , hu: 'CGM Státusz' - }, - 'virtAsstTitleCGMSessionAge': { - bg: 'CGM Session Age' - , cs: 'CGM Session Age' - , de: 'CGM Session Age' - , dk: 'CGM Session Age' - , el: 'CGM Session Age' - , en: 'CGM Session Age' - , es: 'CGM Session Age' - , fi: 'CGM Session Age' - , fr: 'CGM Session Age' - , he: 'CGM Session Age' - , hr: 'CGM Session Age' - , it: 'CGM Session Age' - , ko: 'CGM Session Age' - , nb: 'CGM Session Age' - , pl: 'CGM Session Age' - , pt: 'CGM Session Age' - , ro: 'CGM Session Age' - , nl: 'CGM Session Age' - , ru: 'CGM Session Age' - , sk: 'CGM Session Age' - , sv: 'CGM Session Age' - , tr: 'CGM Session Age' - , zh_cn: 'CGM Session Age' - , zh_tw: 'CGM Session Age' - , hu: 'CGM életkora' - }, - 'virtAsstTitleCGMTxStatus': { - bg: 'CGM Transmitter Status' - , cs: 'CGM Transmitter Status' - , de: 'CGM Transmitter Status' - , dk: 'CGM Transmitter Status' - , el: 'CGM Transmitter Status' - , en: 'CGM Transmitter Status' - , es: 'CGM Transmitter Status' - , fi: 'CGM Transmitter Status' - , fr: 'CGM Transmitter Status' - , he: 'CGM Transmitter Status' - , hr: 'CGM Transmitter Status' - , it: 'CGM Transmitter Status' - , ko: 'CGM Transmitter Status' - , nb: 'CGM Transmitter Status' - , pl: 'CGM Transmitter Status' - , pt: 'CGM Transmitter Status' - , ro: 'CGM Transmitter Status' - , nl: 'CGM Transmitter Status' - , ru: 'CGM Transmitter Status' - , sk: 'CGM Transmitter Status' - , sv: 'CGM Transmitter Status' - , tr: 'CGM Transmitter Status' - , zh_cn: 'CGM Transmitter Status' - , zh_tw: 'CGM Transmitter Status' - , hu: 'CGM kapcsolat státusza' - }, - 'virtAsstTitleCGMTxAge': { - bg: 'CGM Transmitter Age' - , cs: 'CGM Transmitter Age' - , de: 'CGM Transmitter Age' - , dk: 'CGM Transmitter Age' - , el: 'CGM Transmitter Age' - , en: 'CGM Transmitter Age' - , es: 'CGM Transmitter Age' - , fi: 'CGM Transmitter Age' - , fr: 'CGM Transmitter Age' - , he: 'CGM Transmitter Age' - , hr: 'CGM Transmitter Age' - , it: 'CGM Transmitter Age' - , ko: 'CGM Transmitter Age' - , nb: 'CGM Transmitter Age' - , pl: 'CGM Transmitter Age' - , pt: 'CGM Transmitter Age' - , ro: 'CGM Transmitter Age' - , nl: 'CGM Transmitter Age' - , ru: 'CGM Transmitter Age' - , sk: 'CGM Transmitter Age' - , sv: 'CGM Transmitter Age' - , tr: 'CGM Transmitter Age' - , zh_cn: 'CGM Transmitter Age' - , zh_tw: 'CGM Transmitter Age' - }, - 'virtAsstTitleCGMNoise': { - bg: 'CGM Noise' - , cs: 'CGM Noise' - , de: 'CGM Noise' - , dk: 'CGM Noise' - , el: 'CGM Noise' - , en: 'CGM Noise' - , es: 'CGM Noise' - , fi: 'CGM Noise' - , fr: 'CGM Noise' - , he: 'CGM Noise' - , hr: 'CGM Noise' - , it: 'CGM Noise' - , ko: 'CGM Noise' - , nb: 'CGM Noise' - , pl: 'CGM Noise' - , pt: 'CGM Noise' - , ro: 'CGM Noise' - , nl: 'CGM Noise' - , ru: 'CGM Noise' - , sk: 'CGM Noise' - , sv: 'CGM Noise' - , tr: 'CGM Noise' - , zh_cn: 'CGM Noise' - , zh_tw: 'CGM Noise' - , hu: 'CGM Zaj' - }, - 'virtAsstTitleDelta': { - bg: 'Blood Glucose Delta' - , cs: 'Blood Glucose Delta' - , de: 'Blutzucker-Delta' - , dk: 'Blood Glucose Delta' - , el: 'Blood Glucose Delta' - , en: 'Blood Glucose Delta' - , es: 'Blood Glucose Delta' - , fi: 'Blood Glucose Delta' - , fr: 'Blood Glucose Delta' - , he: 'Blood Glucose Delta' - , hr: 'Blood Glucose Delta' - , it: 'Blood Glucose Delta' - , ko: 'Blood Glucose Delta' - , nb: 'Blood Glucose Delta' - , pl: 'Blood Glucose Delta' - , pt: 'Blood Glucose Delta' - , ro: 'Blood Glucose Delta' - , nl: 'Blood Glucose Delta' - , ru: 'Дельта ГК' - , sk: 'Blood Glucose Delta' - , sv: 'Blood Glucose Delta' - , tr: 'Blood Glucose Delta' - , zh_cn: 'Blood Glucose Delta' - , zh_tw: 'Blood Glucose Delta' - , hu: 'Csukoszint delta' - }, - 'virtAsstStatus': { - bg: '%1 and %2 as of %3.' - , cs: '%1 %2 čas %3.' - , de: '%1 und bis %3 %2.' - , dk: '%1 og %2 af %3.' - , el: '%1 and %2 as of %3.' - , en: '%1 and %2 as of %3.' - , es: '%1 y %2 como de %3.' - , fi: '%1 ja %2 alkaen %3.' - , fr: '%1 and %2 as of %3.' - , he: '%1 and %2 as of %3.' - , hr: '%1 and %2 as of %3.' - , it: '%1 e %2 come %3.' - , ko: '%1 and %2 as of %3.' - , nb: '%1 and %2 as of %3.' - , pl: '%1 i %2 rozpoczęte od %3.' - , pt: '%1 and %2 as of %3.' - , ro: '%1 și %2 din %3.' - , nl: '%1 and %2 as of %3.' - , ru: '%1 и %2 начиная с %3.' - , sk: '%1 and %2 as of %3.' - , sv: '%1 and %2 as of %3.' - , tr: '%1 ve %2 e kadar %3.' - , zh_cn: '%1 和 %2 到 %3.' - , zh_tw: '%1 and %2 as of %3.' - , hu: '%1 es %2 %3-tól.' - }, - 'virtAsstBasal': { - bg: '%1 současný bazál je %2 jednotek za hodinu' - , cs: '%1 current basal is %2 units per hour' - , de: '%1 aktuelle Basalrate ist %2 Einheiten je Stunde' - , dk: '%1 nuværende basal er %2 enheder per time' - , el: '%1 current basal is %2 units per hour' - , en: '%1 current basal is %2 units per hour' - , es: '%1 basal actual es %2 unidades por hora' - , fi: '%1 nykyinen basaali on %2 yksikköä tunnissa' - , fr: '%1 current basal is %2 units per hour' - , he: '%1 current basal is %2 units per hour' - , hr: '%1 current basal is %2 units per hour' - , it: '%1 basale attuale è %2 unità per ora' - , ko: '%1 current basal is %2 units per hour' - , nb: '%1 current basal is %2 units per hour' - , pl: '%1 obecna dawka bazalna %2 J na godzinę' - , pt: '%1 current basal is %2 units per hour' - , ro: '%1 bazala curentă este %2 unități pe oră' - , ru: '%1 текущий базал %2 ед в час' - , sk: '%1 current basal is %2 units per hour' - , sv: '%1 current basal is %2 units per hour' - , nl: '%1 current basal is %2 units per hour' - , tr: '%1 geçerli bazal oranı saatte %2 ünite' - , zh_cn: '%1 当前基础率是 %2 U/小时' - , zh_tw: '%1 current basal is %2 units per hour' - , hu: '%1 a jelenlegi bazál %2 egység óránként' - }, - 'virtAsstBasalTemp': { - bg: '%1 dočasný bazál %2 jednotek za hodinu skončí %3' - , cs: '%1 temp basal of %2 units per hour will end %3' - , de: '%1 temporäre Basalrate von %2 Einheiten endet %3' - , dk: '%1 midlertidig basal af %2 enheder per time stopper %3' - , el: '%1 temp basal of %2 units per hour will end %3' - , en: '%1 temp basal of %2 units per hour will end %3' - , es: '%1 Basal temporal de %2 unidades por hora hasta el fin %3' - , fi: '%1 tilapäinen basaali on %2 tunnissa, päättyy %3' - , fr: '%1 temp basal of %2 units per hour will end %3' - , he: '%1 temp basal of %2 units per hour will end %3' - , hr: '%1 temp basal of %2 units per hour will end %3' - , it: '%1 basale temporanea di %2 unità per ora finirà %3' - , ko: '%1 temp basal of %2 units per hour will end %3' - , nb: '%1 temp basal of %2 units per hour will end %3' - , pl: '%1 tymczasowa dawka bazalna %2 J na godzinę zakoczy się o %3' - , pt: '%1 temp basal of %2 units per hour will end %3' - , ro: '%1 bazala temporară de %2 unități pe oră se va termina la %3' - , ru: '%1 временный базал %2 ед в час закончится в %3' - , sk: '%1 temp basal of %2 units per hour will end %3' - , sv: '%1 temp basal of %2 units per hour will end %3' - , nl: '%1 temp basal of %2 units per hour will end %3' - , tr: '%1 geçici bazal %2 ünite %3 sona eriyor' - , zh_cn: '%1 临时基础率 %2 U/小时将会在 %3结束' - , zh_tw: '%1 temp basal of %2 units per hour will end %3' - , hu: '%1 átmeneti bazál %2 egység óránként ami %3 -kor jár le' - }, - 'virtAsstIob': { - bg: 'a máte %1 jednotek aktivního inzulínu.' - , cs: 'and you have %1 insulin on board.' - , de: 'und du hast %1 Insulin wirkend.' - , dk: 'og du har %1 insulin i kroppen.' - , el: 'and you have %1 insulin on board.' - , en: 'and you have %1 insulin on board.' - , es: 'y tu tienes %1 insulina activa.' - , fi: 'ja sinulla on %1 aktivista insuliinia.' - , fr: 'and you have %1 insulin on board.' - , he: 'and you have %1 insulin on board.' - , hr: 'and you have %1 insulin on board.' - , it: 'e tu hai %1 insulina attiva.' - , ko: 'and you have %1 insulin on board.' - , nb: 'and you have %1 insulin on board.' - , pl: 'i masz %1 aktywnej insuliny.' - , pt: 'and you have %1 insulin on board.' - , ro: 'și mai aveți %1 insulină activă.' - , ru: 'и вы имеете %1 инсулина в организме.' - , sk: 'and you have %1 insulin on board.' - , sv: 'and you have %1 insulin on board.' - , nl: 'and you have %1 insulin on board.' - , tr: 've Sizde %1 aktif insulin var' - , zh_cn: '并且你有 %1 的活性胰岛素.' - , zh_tw: 'and you have %1 insulin on board.' - , hu: 'és neked %1 inzulin van a testedben.' - }, - 'virtAsstIobIntent': { - bg: 'Máte %1 jednotek aktivního inzulínu' - , cs: 'You have %1 insulin on board' - , de: 'Du hast noch %1 Insulin wirkend' - , dk: 'Du har %1 insulin i kroppen' - , el: 'You have %1 insulin on board' - , en: 'You have %1 insulin on board' - , es: 'Tienes %1 insulina activa' - , fi: 'Sinulla on %1 aktiivista insuliinia' - , fr: 'You have %1 insulin on board' - , he: 'You have %1 insulin on board' - , hr: 'You have %1 insulin on board' - , it: 'Tu hai %1 insulina attiva' - , ko: 'You have %1 insulin on board' - , nb: 'You have %1 insulin on board' - , pl: 'Masz %1 aktywnej insuliny' - , pt: 'You have %1 insulin on board' - , ro: 'Aveți %1 insulină activă' - , ru: 'вы имеете %1 инсулина в организме' - , sk: 'You have %1 insulin on board' - , sv: 'You have %1 insulin on board' - , nl: 'You have %1 insulin on board' - , tr: 'Sizde %1 aktif insülin var' - , zh_cn: '你有 %1 的活性胰岛素' - , zh_tw: 'You have %1 insulin on board' - , hu: 'Neked %1 inzulin van a testedben' - }, - 'virtAsstIobUnits': { - bg: '%1 units of' - , cs: '%1 jednotek' - , de: 'noch %1 Einheiten' - , dk: '%1 enheder af' - , el: '%1 units of' - , en: '%1 units of' - , es: '%1 unidades de' - , fi: '%1 yksikköä' - , fr: '%1 units of' - , he: '%1 units of' - , hr: '%1 units of' - , it: '%1 unità di' - , ko: '%1 units of' - , nb: '%1 units of' - , pl: '%1 jednostek' - , pt: '%1 units of' - , ro: '%1 unități' - , nl: '%1 units of' - , ru: '%1 единиц' - , sk: '%1 units of' - , sv: '%1 units of' - , tr: 'hala %1 birim' - , zh_cn: '%1 单位' - , zh_tw: '%1 units of' - , hu: '%1 egység' - }, - 'virtAsstLaunch': { - bg: 'What would you like to check on Nightscout?' - , cs: 'What would you like to check on Nightscout?' - , de: 'Was möchtest du von Nightscout wissen?' - , dk: 'What would you like to check on Nightscout?' - , el: 'What would you like to check on Nightscout?' - , en: 'What would you like to check on Nightscout?' - , es: 'What would you like to check on Nightscout?' - , fi: 'What would you like to check on Nightscout?' - , fr: 'What would you like to check on Nightscout?' - , he: 'What would you like to check on Nightscout?' - , hr: 'What would you like to check on Nightscout?' - , it: 'What would you like to check on Nightscout?' - , ko: 'What would you like to check on Nightscout?' - , nb: 'What would you like to check on Nightscout?' - , pl: 'What would you like to check on Nightscout?' - , pt: 'What would you like to check on Nightscout?' - , ro: 'What would you like to check on Nightscout?' - , nl: 'What would you like to check on Nightscout?' - , ru: 'Что проверить в Nightscout?' - , sk: 'What would you like to check on Nightscout?' - , sv: 'What would you like to check on Nightscout?' - , tr: 'What would you like to check on Nightscout?' - , zh_cn: 'What would you like to check on Nightscout?' - , zh_tw: 'What would you like to check on Nightscout?' - , hu: 'Mit szeretnél ellenőrizni a Nightscout oldalon?' - }, - 'virtAsstPreamble': { - bg: 'Your' - , cs: 'Vaše' - , de: 'Deine' - , dk: 'Dine' - , el: 'Your' - , en: 'Your' - , es: 'Tú' - , fi: 'Sinun' - , fr: 'Your' - , he: 'Your' - , hr: 'Your' - , it: 'Tuo' - , ko: 'Your' - , nb: 'Your' - , pl: 'twój' - , pt: 'Your' - , nl: 'Jouw' - , ro: '' - , ru: 'ваш' - , sk: 'Your' - , sv: 'Your' - , tr: 'Senin' - , zh_cn: '你的' - , zh_tw: 'Your' - , hu: 'A tied' - }, - 'virtAsstPreamble3person': { - bg: '%1 has a ' - , cs: '%1 má ' - , de: '%1 hat eine' - , dk: '%1 har en ' - , el: '%1 has a ' - , en: '%1 has a ' - , es: '%1 tiene un ' - , fi: '%1 on ' - , fr: '%1 has a ' - , he: '%1 has a ' - , hr: '%1 has a ' - , it: '%1 ha un ' - , ko: '%1 has a ' - , nb: '%1 has a ' - , nl: '%1 heeft een ' - , pl: '%1 ma ' - , pt: '%1 has a ' - , ro: '%1 are ' - , ru: '%1 имеет ' - , sk: '%1 has a ' - , sv: '%1 has a ' - , tr: '%1 bir tane var' - , zh_cn: '%1 有一个 ' - , zh_tw: '%1 has a ' - , hu: '%1 -nak van ' - }, - 'virtAsstNoInsulin': { - bg: 'no' - , cs: 'žádný' - , de: 'kein' - , dk: 'nej' - , el: 'no' - , en: 'no' - , es: 'no' - , fi: 'ei' - , fr: 'no' - , he: 'no' - , hr: 'no' - , it: 'no' - , ko: 'no' - , nb: 'no' - , nl: 'geen' - , pl: 'nie' - , pt: 'no' - , ro: 'fără' - , ru: 'нет' - , sk: 'no' - , sv: 'no' - , tr: 'yok' - , zh_cn: '否' - , zh_tw: 'no' - , hu: 'semmilyen' - }, - 'virtAsstUploadBattery': { - bg: 'Your uploader battery is at %1' - , cs: 'Baterie mobilu má %1' - , en: 'Your uploader battery is at %1' - , hr: 'Your uploader battery is at %1' - , de: 'Der Akku deines Uploader-Handys ist bei %1' - , dk: 'Din uploaders batteri er %1' - , ko: 'Your uploader battery is at %1' - , nl: 'De batterij van je mobiel is bij %l' - , zh_cn: '你的手机电池电量是 %1 ' - , sv: 'Din uppladdares batteri är %1' - , fi: 'Lähettimen paristoa jäljellä %1' - , ro: 'Bateria uploaderului este la %1' - , pl: 'Twoja bateria ma %1' - , ru: 'батарея загрузчика %1' - , tr: 'Yükleyici piliniz %1' - , hu: 'A felöltőd töltöttsége %1' - }, - 'virtAsstReservoir': { - bg: 'You have %1 units remaining' - , cs: 'V zásobníku zbývá %1 jednotek' - , en: 'You have %1 units remaining' - , hr: 'You have %1 units remaining' - , de: 'Du hast %1 Einheiten übrig' - , dk: 'Du har %1 enheder tilbage' - , ko: 'You have %1 units remaining' - , nl: 'Je hebt nog %l eenheden in je reservoir' - , zh_cn: '你剩余%1 U的胰岛素' - , sv: 'Du har %1 enheter kvar' - , fi: '%1 yksikköä insuliinia jäljellä' - , ro: 'Mai aveți %1 unități rămase' - , pl: 'W zbiorniku pozostało %1 jednostek' - , ru: 'остается %1 ед' - , tr: '%1 birim kaldı' - , hu: '%1 egység maradt hátra' - }, - 'virtAsstPumpBattery': { - bg: 'Your pump battery is at %1 %2' - , cs: 'Baterie v pumpě má %1 %2' - , en: 'Your pump battery is at %1 %2' - , hr: 'Your pump battery is at %1 %2' - , de: 'Der Batteriestand deiner Pumpe ist bei %1 %2' - , dk: 'Din pumpes batteri er %1 %2' - , ko: 'Your pump battery is at %1 %2' - , nl: 'Je pomp batterij is bij %1 %2' - , zh_cn: '你的泵电池电量是%1 %2' - , sv: 'Din pumps batteri är %1 %2' - , fi: 'Pumppu on %1 %2' - , ro: 'Bateria pompei este la %1 %2' - , pl: 'Bateria pompy jest w %1 %2' - , ru: 'батарея помпы %1 %2' - , tr: 'Pompa piliniz %1 %2' - , hu: 'A pumpád töltöttsége %1 %2' - }, - 'virtAsstUploaderBattery': { - bg: 'Your uploader battery is at %1' - , cs: 'Your uploader battery is at %1' - , en: 'Your uploader battery is at %1' - , hr: 'Your uploader battery is at %1' - , de: 'Der Akku deines Uploader-Handys ist bei %1' - , dk: 'Your uploader battery is at %1' - , ko: 'Your uploader battery is at %1' - , nl: 'Your uploader battery is at %1' - , zh_cn: 'Your uploader battery is at %1' - , sv: 'Your uploader battery is at %1' - , fi: 'Your uploader battery is at %1' - , ro: 'Your uploader battery is at %1' - , pl: 'Your uploader battery is at %1' - , ru: 'Батарея загрузчика %1' - , tr: 'Your uploader battery is at %1' - , hu: 'A feltöltőd töltöttsége %1' - }, - 'virtAsstLastLoop': { - bg: 'The last successful loop was %1' - , cs: 'Poslední úšpěšné provedení smyčky %1' - , en: 'The last successful loop was %1' - , hr: 'The last successful loop was %1' - , de: 'Der letzte erfolgreiche Loop war %1' - , dk: 'Seneste successfulde loop var %1' - , ko: 'The last successful loop was %1' - , nl: 'De meest recente goede loop was %1' - , zh_cn: '最后一次成功闭环的是在%1' - , sv: 'Senaste lyckade loop var %1' - , fi: 'Viimeisin onnistunut loop oli %1' - , ro: 'Ultima decizie loop implementată cu succes a fost %1' - , pl: 'Ostatnia pomyślna pętla była %1' - , ru: 'недавний успешный цикл был %1' - , tr: 'Son başarılı döngü %1 oldu' - , hu: 'Az utolsó sikeres loop %1-kor volt' - }, - 'virtAsstLoopNotAvailable': { - bg: 'Loop plugin does not seem to be enabled' - , cs: 'Plugin smyčka není patrně povolený' - , en: 'Loop plugin does not seem to be enabled' - , hr: 'Loop plugin does not seem to be enabled' - , de: 'Das Loop-Plugin scheint nicht aktiviert zu sein' - , dk: 'Loop plugin lader ikke til at være slået til' - , ko: 'Loop plugin does not seem to be enabled' - , nl: 'De Loop plugin is niet geactiveerd' - , zh_cn: 'Loop插件看起来没有被启用' - , sv: 'Loop plugin verkar inte vara aktiverad' - , fi: 'Loop plugin ei ole aktivoitu' - , ro: 'Extensia loop pare a fi dezactivată' - , pl: 'Plugin Loop prawdopodobnie nie jest włączona' - , ru: 'Расширение ЗЦ Loop не активировано' - , tr: 'Döngü eklentisi etkin görünmüyor' - , hu: 'A loop kiegészítés valószínűleg nincs bekapcsolva' - }, - 'virtAsstLoopForecastAround': { - bg: 'According to the loop forecast you are expected to be around %1 over the next %2' - , cs: 'Podle přepovědi smyčky je očekávána glykémie around %1 během následujících %2' - , en: 'According to the loop forecast you are expected to be around %1 over the next %2' - , hr: 'According to the loop forecast you are expected to be around %1 over the next %2' - , de: 'Entsprechend der Loop-Vorhersage landest in den nächsten %2 bei %1' - , dk: 'Ifølge Loops forudsigelse forventes du at blive around %1 i den næste %2' - , ko: 'According to the loop forecast you are expected to be around %1 over the next %2' - , nl: 'Volgens de Loop voorspelling is je waarde around %1 over de volgnede %2' - , zh_cn: '根据loop的预测,在接下来的%2你的血糖将会是around %1' - , sv: 'Enligt Loops förutsägelse förväntas du bli around %1 inom %2' - , fi: 'Ennusteen mukaan olet around %1 seuraavan %2 ajan' - , ro: 'Potrivit previziunii date de loop se estiemază around %1 pentru următoarele %2' - , pl: 'Zgodnie z prognozą pętli, glikemia around %1 będzie podczas następnego %2' - , ru: 'по прогнозу алгоритма ЗЦ ожидается около %1 за последующие %2' - , tr: 'Döngü tahminine göre sonraki %2 ye göre around %1 olması bekleniyor' - , hu: 'A loop előrejelzése alapján a követlező %2 időszakban körülbelül %1 lesz' - }, - 'virtAsstLoopForecastBetween': { - bg: 'According to the loop forecast you are expected to be between %1 and %2 over the next %3' - , cs: 'Podle přepovědi smyčky je očekávána glykémie between %1 and %2 během následujících %3' - , en: 'According to the loop forecast you are expected to be between %1 and %2 over the next %3' - , hr: 'According to the loop forecast you are expected to be between %1 and %2 over the next %3' - , de: 'Entsprechend der Loop-Vorhersage landest du zwischen %1 und %2 während der nächsten %3' - , dk: 'Ifølge Loops forudsigelse forventes du at blive between %1 and %2 i den næste %3' - , ko: 'According to the loop forecast you are expected to be between %1 and %2 over the next %3' - , nl: 'Volgens de Loop voorspelling is je waarde between %1 and %2 over de volgnede %3' - , zh_cn: '根据loop的预测,在接下来的%3你的血糖将会是between %1 and %2' - , sv: 'Enligt Loops förutsägelse förväntas du bli between %1 and %2 inom %3' - , fi: 'Ennusteen mukaan olet between %1 and %2 seuraavan %3 ajan' - , ro: 'Potrivit previziunii date de loop se estiemază between %1 and %2 pentru următoarele %3' - , pl: 'Zgodnie z prognozą pętli, glikemia between %1 and %2 będzie podczas następnego %3' - , ru: 'по прогнозу алгоритма ЗЦ ожидается между %1 и %2 за последующие %3' - , tr: 'Döngü tahminine göre sonraki %3 ye göre between %1 and %2 olması bekleniyor' - , hu: 'A loop előrejelzése alapján a követlező %3 időszakban %1 és %2 között leszel' - }, - 'virtAsstAR2ForecastAround': { - bg: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , cs: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , en: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , hr: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , de: 'Entsprechend der AR2-Vorhersage landest du in %2 bei %1' - , dk: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , ko: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , nl: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , zh_cn: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , sv: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , fi: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , ro: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , pl: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , ru: 'По прогнозу AR2 ожидается около %1 в следующие %2' - , tr: 'According to the AR2 forecast you are expected to be around %1 over the next %2' - , hu: 'Az AR2ües előrejelzés alapján a követlező %2 időszakban körülbelül %1 lesz' - }, - 'virtAsstAR2ForecastBetween': { - bg: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , cs: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , en: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , hr: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , de: 'Entsprechend der AR2-Vorhersage landest du in %3 zwischen %1 and %2' - , dk: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , ko: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , nl: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , zh_cn: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , sv: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , fi: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , ro: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , pl: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , ru: 'По прогнозу AR2 ожидается между %1 и %2 в следующие %3' - , tr: 'According to the AR2 forecast you are expected to be between %1 and %2 over the next %3' - , hu: 'Az AR2 előrejelzése alapján a követlező %3 időszakban %1 és %2 között leszel' - }, - 'virtAsstForecastUnavailable': { - bg: 'Unable to forecast with the data that is available' - , cs: 'S dostupnými daty přepověď není možná' - , en: 'Unable to forecast with the data that is available' - , hr: 'Unable to forecast with the data that is available' - , de: 'Mit den verfügbaren Daten ist eine Loop-Vorhersage nicht möglich' - , dk: 'Det er ikke muligt at forudsige md de tilgængelige data' - , ko: 'Unable to forecast with the data that is available' - , nl: 'Niet mogelijk om een voorspelling te doen met de data die beschikbaar is' - , zh_cn: '血糖数据不可用,无法预测未来走势' - , sv: 'Förutsägelse ej möjlig med tillgänlig data' - , fi: 'Ennusteet eivät ole toiminnassa puuttuvan tiedon vuoksi' - , ro: 'Estimarea este imposibilă pe baza datelor disponibile' - , pl: 'Prognoza pętli nie jest możliwa, z dostępnymi danymi.' - , ru: 'прогноз при таких данных невозможен' - , tr: 'Mevcut verilerle tahmin edilemedi' - , hu: 'Nem tudok előrejelzést készíteni hiányos adatokból' - }, - 'virtAsstRawBG': { - en: 'Your raw bg is %1' - , cs: 'Raw glykémie je %1' - , de: 'Dein Rohblutzucker ist %1' - , dk: 'Dit raw blodsukker er %1' - , ko: 'Your raw bg is %1' - , nl: 'Je raw bloedwaarde is %1' - , zh_cn: '你的血糖是 %1' - , sv: 'Ditt raw blodsocker är %1' - , fi: 'Suodattamaton verensokeriarvo on %1' - , ro: 'Glicemia brută este %1' - , bg: 'Your raw bg is %1' - , hr: 'Your raw bg is %1' - , pl: 'Glikemia RAW wynosi %1' - , ru: 'ваши необработанные данные RAW %1' - , tr: 'Ham kan şekeriniz %1' - , hu: 'A nyers cukorszinted %1' - }, - 'virtAsstOpenAPSForecast': { - en: 'The OpenAPS Eventual BG is %1' - , cs: 'OpenAPS Eventual BG je %1' - , de: 'Der von OpenAPS vorhergesagte Blutzucker ist %1' - , dk: 'OpenAPS forventet blodsukker er %1' - , ko: 'The OpenAPS Eventual BG is %1' - , nl: 'OpenAPS uiteindelijke bloedglucose van %1' - , zh_cn: 'OpenAPS 预测最终血糖是 %1' - , sv: 'OpenAPS slutgiltigt blodsocker är %1' - , fi: 'OpenAPS verensokeriarvio on %1' - , ro: 'Glicemia estimată de OpenAPS este %1' - , bg: 'The OpenAPS Eventual BG is %1' - , hr: 'The OpenAPS Eventual BG is %1' - , pl: 'Glikemia prognozowana przez OpenAPS wynosi %1' - , ru: 'OpenAPS прогнозирует ваш СК как %1 ' - , tr: 'OpenAPS tarafından tahmin edilen kan şekeri %1' - , hu: 'Az OpenAPS cukorszinted %1' - }, - 'virtAsstCob3person': { - bg: '%1 has %2 carbohydrates on board' - , cs: '%1 has %2 carbohydrates on board' - , de: '%1 hat %2 Kohlenhydrate wirkend' - , dk: '%1 has %2 carbohydrates on board' - , el: '%1 has %2 carbohydrates on board' - , en: '%1 has %2 carbohydrates on board' - , es: '%1 has %2 carbohydrates on board' - , fi: '%1 has %2 carbohydrates on board' - , fr: '%1 has %2 carbohydrates on board' - , he: '%1 has %2 carbohydrates on board' - , hr: '%1 has %2 carbohydrates on board' - , it: '%1 has %2 carbohydrates on board' - , ko: '%1 has %2 carbohydrates on board' - , nb: '%1 has %2 carbohydrates on board' - , nl: '%1 has %2 carbohydrates on board' - , pl: '%1 has %2 carbohydrates on board' - , pt: '%1 has %2 carbohydrates on board' - , ro: '%1 has %2 carbohydrates on board' - , ru: '%1 имеет %2 активных углеводов' - , sk: '%1 has %2 carbohydrates on board' - , sv: '%1 has %2 carbohydrates on board' - , tr: '%1 has %2 carbohydrates on board' - , zh_cn: '%1 has %2 carbohydrates on board' - , zh_tw: '%1 has %2 carbohydrates on board' - , hu: '%1 -nak %2 szénhodrátja van a testében' - }, - 'virtAsstCob': { - bg: 'You have %1 carbohydrates on board' - , cs: 'You have %1 carbohydrates on board' - , de: 'Du hast noch %1 Kohlenhydrate wirkend.' - , dk: 'You have %1 carbohydrates on board' - , el: 'You have %1 carbohydrates on board' - , en: 'You have %1 carbohydrates on board' - , es: 'You have %1 carbohydrates on board' - , fi: 'You have %1 carbohydrates on board' - , fr: 'You have %1 carbohydrates on board' - , he: 'You have %1 carbohydrates on board' - , hr: 'You have %1 carbohydrates on board' - , it: 'You have %1 carbohydrates on board' - , ko: 'You have %1 carbohydrates on board' - , nb: 'You have %1 carbohydrates on board' - , nl: 'You have %1 carbohydrates on board' - , pl: 'You have %1 carbohydrates on board' - , pt: 'You have %1 carbohydrates on board' - , ro: 'You have %1 carbohydrates on board' - , ru: 'У вас %1 активных углеводов' - , sk: 'You have %1 carbohydrates on board' - , sv: 'You have %1 carbohydrates on board' - , tr: 'You have %1 carbohydrates on board' - , zh_cn: 'You have %1 carbohydrates on board' - , zh_tw: 'You have %1 carbohydrates on board' - , hu: 'Neked %1 szénhidrát van a testedben' - }, - 'virtAsstCGMMode': { - bg: 'Your CGM mode was %1 as of %2.' - , cs: 'Your CGM mode was %1 as of %2.' - , de: 'Your CGM mode was %1 as of %2.' - , dk: 'Your CGM mode was %1 as of %2.' - , el: 'Your CGM mode was %1 as of %2.' - , en: 'Your CGM mode was %1 as of %2.' - , es: 'Your CGM mode was %1 as of %2.' - , fi: 'Your CGM mode was %1 as of %2.' - , fr: 'Your CGM mode was %1 as of %2.' - , he: 'Your CGM mode was %1 as of %2.' - , hr: 'Your CGM mode was %1 as of %2.' - , it: 'Your CGM mode was %1 as of %2.' - , ko: 'Your CGM mode was %1 as of %2.' - , nb: 'Your CGM mode was %1 as of %2.' - , nl: 'Your CGM mode was %1 as of %2.' - , pl: 'Your CGM mode was %1 as of %2.' - , pt: 'Your CGM mode was %1 as of %2.' - , ro: 'Your CGM mode was %1 as of %2.' - , ru: 'Your CGM mode was %1 as of %2.' - , sk: 'Your CGM mode was %1 as of %2.' - , sv: 'Your CGM mode was %1 as of %2.' - , tr: 'Your CGM mode was %1 as of %2.' - , zh_cn: 'Your CGM mode was %1 as of %2.' - , zh_tw: 'Your CGM mode was %1 as of %2.' - , hu: 'A CGM módod %1 volt %2 -kor.' - }, - 'virtAsstCGMStatus': { - bg: 'Your CGM status was %1 as of %2.' - , cs: 'Your CGM status was %1 as of %2.' - , de: 'Your CGM status was %1 as of %2.' - , dk: 'Your CGM status was %1 as of %2.' - , el: 'Your CGM status was %1 as of %2.' - , en: 'Your CGM status was %1 as of %2.' - , es: 'Your CGM status was %1 as of %2.' - , fi: 'Your CGM status was %1 as of %2.' - , fr: 'Your CGM status was %1 as of %2.' - , he: 'Your CGM status was %1 as of %2.' - , hr: 'Your CGM status was %1 as of %2.' - , it: 'Your CGM status was %1 as of %2.' - , ko: 'Your CGM status was %1 as of %2.' - , nb: 'Your CGM status was %1 as of %2.' - , nl: 'Your CGM status was %1 as of %2.' - , pl: 'Your CGM status was %1 as of %2.' - , pt: 'Your CGM status was %1 as of %2.' - , ro: 'Your CGM status was %1 as of %2.' - , ru: 'Your CGM status was %1 as of %2.' - , sk: 'Your CGM status was %1 as of %2.' - , sv: 'Your CGM status was %1 as of %2.' - , tr: 'Your CGM status was %1 as of %2.' - , zh_cn: 'Your CGM status was %1 as of %2.' - , zh_tw: 'Your CGM status was %1 as of %2.' - , hu: 'A CGM státuszod %1 volt %2 -kor.' - }, - 'virtAsstCGMSessAge': { - bg: 'Your CGM session has been active for %1 days and %2 hours.' - , cs: 'Your CGM session has been active for %1 days and %2 hours.' - , de: 'Your CGM session has been active for %1 days and %2 hours.' - , dk: 'Your CGM session has been active for %1 days and %2 hours.' - , el: 'Your CGM session has been active for %1 days and %2 hours.' - , en: 'Your CGM session has been active for %1 days and %2 hours.' - , es: 'Your CGM session has been active for %1 days and %2 hours.' - , fi: 'Your CGM session has been active for %1 days and %2 hours.' - , fr: 'Your CGM session has been active for %1 days and %2 hours.' - , he: 'Your CGM session has been active for %1 days and %2 hours.' - , hr: 'Your CGM session has been active for %1 days and %2 hours.' - , it: 'Your CGM session has been active for %1 days and %2 hours.' - , ko: 'Your CGM session has been active for %1 days and %2 hours.' - , nb: 'Your CGM session has been active for %1 days and %2 hours.' - , nl: 'Your CGM session has been active for %1 days and %2 hours.' - , pl: 'Your CGM session has been active for %1 days and %2 hours.' - , pt: 'Your CGM session has been active for %1 days and %2 hours.' - , ro: 'Your CGM session has been active for %1 days and %2 hours.' - , ru: 'Your CGM session has been active for %1 days and %2 hours.' - , sk: 'Your CGM session has been active for %1 days and %2 hours.' - , sv: 'Your CGM session has been active for %1 days and %2 hours.' - , tr: 'Your CGM session has been active for %1 days and %2 hours.' - , zh_cn: 'Your CGM session has been active for %1 days and %2 hours.' - , zh_tw: 'Your CGM session has been active for %1 days and %2 hours.' - , hu: 'A CGM kapcsolatod %1 napja és %2 órája aktív' - }, - 'virtAsstCGMSessNotStarted': { - bg: 'There is no active CGM session at the moment.' - , cs: 'There is no active CGM session at the moment.' - , de: 'There is no active CGM session at the moment.' - , dk: 'There is no active CGM session at the moment.' - , el: 'There is no active CGM session at the moment.' - , en: 'There is no active CGM session at the moment.' - , es: 'There is no active CGM session at the moment.' - , fi: 'There is no active CGM session at the moment.' - , fr: 'There is no active CGM session at the moment.' - , he: 'There is no active CGM session at the moment.' - , hr: 'There is no active CGM session at the moment.' - , it: 'There is no active CGM session at the moment.' - , ko: 'There is no active CGM session at the moment.' - , nb: 'There is no active CGM session at the moment.' - , nl: 'There is no active CGM session at the moment.' - , pl: 'There is no active CGM session at the moment.' - , pt: 'There is no active CGM session at the moment.' - , ro: 'There is no active CGM session at the moment.' - , ru: 'There is no active CGM session at the moment.' - , sk: 'There is no active CGM session at the moment.' - , sv: 'There is no active CGM session at the moment.' - , tr: 'There is no active CGM session at the moment.' - , zh_cn: 'There is no active CGM session at the moment.' - , zh_tw: 'There is no active CGM session at the moment.' - , hu: 'Jelenleg nincs aktív CGM kapcsolatod' - }, - 'virtAsstCGMTxStatus': { - bg: 'Your CGM transmitter status was %1 as of %2.' - , cs: 'Your CGM transmitter status was %1 as of %2.' - , de: 'Your CGM transmitter status was %1 as of %2.' - , dk: 'Your CGM transmitter status was %1 as of %2.' - , el: 'Your CGM transmitter status was %1 as of %2.' - , en: 'Your CGM transmitter status was %1 as of %2.' - , es: 'Your CGM transmitter status was %1 as of %2.' - , fi: 'Your CGM transmitter status was %1 as of %2.' - , fr: 'Your CGM transmitter status was %1 as of %2.' - , he: 'Your CGM transmitter status was %1 as of %2.' - , hr: 'Your CGM transmitter status was %1 as of %2.' - , it: 'Your CGM transmitter status was %1 as of %2.' - , ko: 'Your CGM transmitter status was %1 as of %2.' - , nb: 'Your CGM transmitter status was %1 as of %2.' - , nl: 'Your CGM transmitter status was %1 as of %2.' - , pl: 'Your CGM transmitter status was %1 as of %2.' - , pt: 'Your CGM transmitter status was %1 as of %2.' - , ro: 'Your CGM transmitter status was %1 as of %2.' - , ru: 'Your CGM transmitter status was %1 as of %2.' - , sk: 'Your CGM transmitter status was %1 as of %2.' - , sv: 'Your CGM transmitter status was %1 as of %2.' - , tr: 'Your CGM transmitter status was %1 as of %2.' - , zh_cn: 'Your CGM transmitter status was %1 as of %2.' - , zh_tw: 'Your CGM transmitter status was %1 as of %2.' - , hu: 'A CGM jeladód státusza %1 volt %2-kor' - }, - 'virtAsstCGMTxAge': { - bg: 'Your CGM transmitter is %1 days old.' - , cs: 'Your CGM transmitter is %1 days old.' - , de: 'Your CGM transmitter is %1 days old.' - , dk: 'Your CGM transmitter is %1 days old.' - , el: 'Your CGM transmitter is %1 days old.' - , en: 'Your CGM transmitter is %1 days old.' - , es: 'Your CGM transmitter is %1 days old.' - , fi: 'Your CGM transmitter is %1 days old.' - , fr: 'Your CGM transmitter is %1 days old.' - , he: 'Your CGM transmitter is %1 days old.' - , hr: 'Your CGM transmitter is %1 days old.' - , it: 'Your CGM transmitter is %1 days old.' - , ko: 'Your CGM transmitter is %1 days old.' - , nb: 'Your CGM transmitter is %1 days old.' - , nl: 'Your CGM transmitter is %1 days old.' - , pl: 'Your CGM transmitter is %1 days old.' - , pt: 'Your CGM transmitter is %1 days old.' - , ro: 'Your CGM transmitter is %1 days old.' - , ru: 'Your CGM transmitter is %1 days old.' - , sk: 'Your CGM transmitter is %1 days old.' - , sv: 'Your CGM transmitter is %1 days old.' - , tr: 'Your CGM transmitter is %1 days old.' - , zh_cn: 'Your CGM transmitter is %1 days old.' - , zh_tw: 'Your CGM transmitter is %1 days old.' - , hu: 'A CGM jeladód %1 napos.' - }, - 'virtAsstCGMNoise': { - bg: 'Your CGM noise was %1 as of %2.' - , cs: 'Your CGM noise was %1 as of %2.' - , de: 'Your CGM noise was %1 as of %2.' - , dk: 'Your CGM noise was %1 as of %2.' - , el: 'Your CGM noise was %1 as of %2.' - , en: 'Your CGM noise was %1 as of %2.' - , es: 'Your CGM noise was %1 as of %2.' - , fi: 'Your CGM noise was %1 as of %2.' - , fr: 'Your CGM noise was %1 as of %2.' - , he: 'Your CGM noise was %1 as of %2.' - , hr: 'Your CGM noise was %1 as of %2.' - , it: 'Your CGM noise was %1 as of %2.' - , ko: 'Your CGM noise was %1 as of %2.' - , nb: 'Your CGM noise was %1 as of %2.' - , nl: 'Your CGM noise was %1 as of %2.' - , pl: 'Your CGM noise was %1 as of %2.' - , pt: 'Your CGM noise was %1 as of %2.' - , ro: 'Your CGM noise was %1 as of %2.' - , ru: 'Your CGM noise was %1 as of %2.' - , sk: 'Your CGM noise was %1 as of %2.' - , sv: 'Your CGM noise was %1 as of %2.' - , tr: 'Your CGM noise was %1 as of %2.' - , zh_cn: 'Your CGM noise was %1 as of %2.' - , zh_tw: 'Your CGM noise was %1 as of %2.' - , hu: 'A CGM jeladó zaja %1 volt %2-kor' - }, - 'virtAsstCGMBattOne': { - bg: 'Your CGM battery was %1 volts as of %2.' - , cs: 'Your CGM battery was %1 volts as of %2.' - , de: 'Your CGM battery was %1 volts as of %2.' - , dk: 'Your CGM battery was %1 volts as of %2.' - , el: 'Your CGM battery was %1 volts as of %2.' - , en: 'Your CGM battery was %1 volts as of %2.' - , es: 'Your CGM battery was %1 volts as of %2.' - , fi: 'Your CGM battery was %1 volts as of %2.' - , fr: 'Your CGM battery was %1 volts as of %2.' - , he: 'Your CGM battery was %1 volts as of %2.' - , hr: 'Your CGM battery was %1 volts as of %2.' - , it: 'Your CGM battery was %1 volts as of %2.' - , ko: 'Your CGM battery was %1 volts as of %2.' - , nb: 'Your CGM battery was %1 volts as of %2.' - , nl: 'Your CGM battery was %1 volts as of %2.' - , pl: 'Your CGM battery was %1 volts as of %2.' - , pt: 'Your CGM battery was %1 volts as of %2.' - , ro: 'Your CGM battery was %1 volts as of %2.' - , ru: 'Your CGM battery was %1 volts as of %2.' - , sk: 'Your CGM battery was %1 volts as of %2.' - , sv: 'Your CGM battery was %1 volts as of %2.' - , tr: 'Your CGM battery was %1 volts as of %2.' - , zh_cn: 'Your CGM battery was %1 volts as of %2.' - , zh_tw: 'Your CGM battery was %1 volts as of %2.' - , hu: 'A CGM töltöttsége %1 VOLT volt %2-kor' - }, - 'virtAsstCGMBattTwo': { - bg: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , cs: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , de: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , dk: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , el: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , en: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , es: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , fi: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , fr: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , he: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , hr: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , it: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , ko: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , nb: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , nl: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , pl: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , pt: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , ro: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , ru: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , sk: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , sv: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , tr: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , zh_cn: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , zh_tw: 'Your CGM battery levels were %1 volts and %2 volts as of %3.' - , hu: 'A CGM töltöttsége %1 és %2 VOLT volt %3-kor' - }, - 'virtAsstDelta': { - bg: 'Your delta was %1 between %2 and %3.' - , cs: 'Your delta was %1 between %2 and %3.' - , de: 'Dein Delta war %1 zwischen %2 und %3.' - , dk: 'Your delta was %1 between %2 and %3.' - , el: 'Your delta was %1 between %2 and %3.' - , en: 'Your delta was %1 between %2 and %3.' - , es: 'Your delta was %1 between %2 and %3.' - , fi: 'Your delta was %1 between %2 and %3.' - , fr: 'Your delta was %1 between %2 and %3.' - , he: 'Your delta was %1 between %2 and %3.' - , hr: 'Your delta was %1 between %2 and %3.' - , it: 'Your delta was %1 between %2 and %3.' - , ko: 'Your delta was %1 between %2 and %3.' - , nb: 'Your delta was %1 between %2 and %3.' - , nl: 'Your delta was %1 between %2 and %3.' - , pl: 'Your delta was %1 between %2 and %3.' - , pt: 'Your delta was %1 between %2 and %3.' - , ro: 'Your delta was %1 between %2 and %3.' - , ru: 'Дельта была %1 между %2 и %3.' - , sk: 'Your delta was %1 between %2 and %3.' - , sv: 'Your delta was %1 between %2 and %3.' - , tr: 'Your delta was %1 between %2 and %3.' - , zh_cn: 'Your delta was %1 between %2 and %3.' - , zh_tw: 'Your delta was %1 between %2 and %3.' - , hu: 'A deltád %1 volt %2 és %3 között' - }, - 'virtAsstUnknownIntentTitle': { - en: 'Unknown Intent' - , cs: 'Unknown Intent' - , de: 'Unbekannte Absicht' - , dk: 'Unknown Intent' - , ko: 'Unknown Intent' - , nl: 'Unknown Intent' - , zh_cn: 'Unknown Intent' - , sv: 'Unknown Intent' - , fi: 'Unknown Intent' - , ro: 'Unknown Intent' - , bg: 'Unknown Intent' - , hr: 'Unknown Intent' - , pl: 'Unknown Intent' - , ru: 'Неизвестное намерение' - , tr: 'Ismeretlen szándék' - }, - 'virtAsstUnknownIntentText': { - en: 'I\'m sorry, I don\'t know what you\'re asking for.' - , cs: 'I\'m sorry, I don\'t know what you\'re asking for.' - , de: 'Tut mir leid, ich hab deine Frage nicht verstanden.' - , dk: 'I\'m sorry, I don\'t know what you\'re asking for.' - , ko: 'I\'m sorry, I don\'t know what you\'re asking for.' - , nl: 'I\'m sorry, I don\'t know what you\'re asking for.' - , zh_cn: 'I\'m sorry, I don\'t know what you\'re asking for.' - , sv: 'I\'m sorry, I don\'t know what you\'re asking for.' - , fi: 'I\'m sorry, I don\'t know what you\'re asking for.' - , ro: 'I\'m sorry, I don\'t know what you\'re asking for.' - , bg: 'I\'m sorry, I don\'t know what you\'re asking for.' - , hr: 'I\'m sorry, I don\'t know what you\'re asking for.' - , pl: 'I\'m sorry, I don\'t know what you\'re asking for.' - , ru: 'Ваш запрос непонятен' - , tr: 'I\'m sorry, I don\'t know what you\'re asking for.' - , hu: 'Sajnálom, nem tudom mit szeretnél tőlem.' - }, - 'Fat [g]': { - cs: 'Tuk [g]' - ,de: 'Fett [g]' - ,dk: 'Fet [g]' - ,es: 'Grasas [g]' - ,fi: 'Rasva [g]' - ,fr: 'Graisses [g]' - ,ko: 'Fat [g]' - ,nl: 'Vet [g]' - ,zh_cn: '脂肪[g]' - ,ro: 'Grăsimi [g]' - ,ru: 'жиры [g]' - ,it: 'Grassi [g]' - ,sv: 'Fett [g]' - ,bg: 'Мазнини [гр]' - ,hr: 'Masnoće [g]' - ,pl: 'Tłuszcz [g]' - ,tr: 'Yağ [g]' - ,he: '[g] שמן' - ,hu: 'Zsír [g]' - ,nb: 'Fett [g]' - }, - 'Protein [g]': { - cs: 'Proteiny [g]' - ,de: 'Proteine [g]' - ,dk: 'Protein [g]' - ,es: 'Proteina [g]' - ,fi: 'Proteiini [g]' - ,fr: 'Protéines [g]' - ,ko: 'Protein [g]' - ,nl: 'Proteine [g]' - ,zh_cn: '蛋白质[g]' - ,ro: 'Proteine [g]' - ,ru: 'белки [g]' - ,it: 'Proteine [g]' - ,sv: 'Protein [g]' - ,bg: 'Протеини [гр]' - ,hr: 'Proteini [g]' - ,pl: 'Białko [g]' - ,tr: 'Protein [g]' - ,he: '[g] חלבון' - ,hu: 'Protein [g]' - ,nb: 'Protein [g]' - }, - 'Energy [kJ]': { - cs: 'Energie [kJ]' - ,de: 'Energie [kJ]' - ,dk: 'Energi [kJ]' - ,fi: 'Energia [kJ]' - ,es: 'Energía [Kj]' - ,fr: 'Énergie [kJ]' - ,ro: 'Energie [g]' - ,ru: 'энергия [kJ]' - ,it: 'Energia [kJ]' - ,zh_cn: '能量 [kJ]' - ,ko: 'Energy [kJ]' - ,nl: 'Energie [kJ]' - ,sv: 'Energi [kJ]' - ,bg: 'Енергия [kJ]' - ,hr: 'Energija [kJ]' - ,pl: 'Energia [kJ}' - ,tr: 'Enerji [kJ]' - ,he: '[kJ] אנרגיה' - ,hu: 'Energia [kJ]' - ,nb: 'Energi [kJ]' - }, - 'Clock Views:': { - cs: 'Hodiny:' - ,fi: 'Kellonäkymä:' - ,ko: '시계 보기' - ,nl: 'Klokweergave:' - ,es: 'Vista del reloj:' - ,fr: 'Vue Horloge:' - ,ro: 'Vedere tip ceas:' - ,ru: 'цифры крупно:' - ,it: 'Vista orologio:' - ,zh_cn: '时钟视图' - ,sv: 'Visa klocka:' - ,de: 'Uhr-Anzeigen' - ,dk: 'Vis klokken:' - ,bg: 'Часовник изглед:' - ,hr: 'Satovi:' - ,pl: 'Widoki zegarów' - ,tr: 'Saat Görünümü' - ,he: 'צגים השעון' - ,hu: 'Óra:' - ,nb: 'Klokkevisning:' - }, - 'Clock': { - cs: 'Hodiny' - ,fr: 'L\'horloge' - ,ko: '시계모드' - ,nl: 'Klok' - ,zh_cn: '时钟' - ,sv: 'Klocka' - ,de: 'Uhr' - ,dk: 'Klokken' - ,fi: 'Kello' - ,ro: 'Ceas' - ,it: 'Orologio' - ,bg: 'Часовник' - ,hr: 'Sat' - ,pl: 'Zegar' - ,ru: 'часы' - ,tr: 'Saat' - ,he: 'שעון' - ,hu: 'Óra:' - ,nb: 'Klokke' - }, - 'Color': { - cs: 'Barva' - ,fr: 'Couleur' - ,ko: '색상모드' - ,nl: 'Kleur' - ,zh_cn: '彩色' - ,sv: 'Färg' - ,de: 'Farbe' - ,dk: 'Farve' - ,fi: 'Väri' - ,ro: 'Culoare' - ,it: 'Colore' - ,bg: 'Цвят' - ,hr: 'Boja' - ,pl: 'Kolor' - ,ru: 'цвет' - ,tr: 'Renk' - ,he: 'צבע' - ,hu: 'Szinek' - ,nb: 'Farge' - }, - 'Simple': { - cs: 'Jednoduchý' - ,fr: 'Simple' - ,ko: '간편 모드' - ,nl: 'Simpel' - ,zh_cn: '简单' - ,sv: 'Simpel' - ,de: 'Einfach' - ,dk: 'Simpel' - ,fi: 'Yksinkertainen' - ,ro: 'Simplu' - ,it: 'Semplice' - ,bg: 'Прост' - ,hr: 'Jednostavan' - ,pl: 'Prosty' - ,ru: 'простой' - ,tr: 'Basit' - ,he: 'פשוט' - ,hu: 'Csak cukor' - ,nb: 'Enkel' - }, - 'TDD average' : { - cs: 'Průměrná denní dávka' - , fi: 'Päivän kokonaisinsuliinin keskiarvo' - , ko: 'TDD average' - , nl: 'Gemiddelde dagelijkse insuline (TDD)' - ,zh_cn: '日胰岛素用量平均值' - , sv: 'Genomsnittlig daglig mängd insulin' - , de: 'durchschnittliches Insulin pro Tag (TDD)' - , dk: 'Gennemsnitlig daglig mængde insulin' - , ro: 'Media Dozei Zilnice Totale de insulină (TDD)' - , it: 'Totale Dose Giornaliera media (TDD)' - , bg: 'Обща дневна доза средно' - , hr: 'Srednji TDD' - , pl: 'Średnia dawka dzienna' - , ru: 'средняя суточная доза инсулина' - , tr: 'Ortalama günlük Toplam Doz (TDD)' - , hu: 'Átlagos napi adag (TDD)' - , nb: 'Gjennomsnitt TDD' - }, - 'Bolus average' : { - cs: 'Bolus average' - ,he: 'Bolus average' - ,nb: 'Gjennomsnitt bolus' - ,ro: 'Bolus average' - ,de: 'Bolus average' - ,dk: 'Bolus average' - ,es: 'Bolus average' - ,fr: 'Bolus average' - ,sv: 'Bolus average' - ,fi: 'Bolus average' - ,bg: 'Bolus average' - ,hr: 'Bolus average' - ,pl: 'Bolus average' - ,pt: 'Bolus average' - ,nl: 'Bolus average' - ,ru: 'Bolus average' - ,sk: 'Bolus average' - ,ko: 'Bolus average' - ,it: 'Bolus average' - ,tr: 'Bolus average' - ,zh_cn: 'Bolus average' - ,hu: 'Bolus average' - }, - 'Basal average' : { - cs: 'Basal average' - ,he: 'Basal average' - ,nb: 'Gjennomsnitt basal' - ,ro: 'Basal average' - ,de: 'Basal average' - ,dk: 'Basal average' - ,es: 'Basal average' - ,fr: 'Basal average' - ,sv: 'Basal average' - ,fi: 'Basal average' - ,bg: 'Basal average' - ,hr: 'Basal average' - ,pl: 'Basal average' - ,pt: 'Basal average' - ,nl: 'Basal average' - ,ru: 'Basal average' - ,sk: 'Basal average' - ,ko: 'Basal average' - ,it: 'Basal average' - ,tr: 'Basal average' - ,zh_cn: 'Basal average' - ,hu: 'Basal average' - }, - 'Base basal average:' : { - cs: 'Base basal average' - ,he: 'Base basal average' - ,nb: 'Programmert gj.snitt basal' - ,ro: 'Base basal average' - ,de: 'Base basal average' - ,dk: 'Base basal average' - ,es: 'Base basal average' - ,fr: 'Base basal average' - ,sv: 'Base basal average' - ,fi: 'Base basal average' - ,bg: 'Base basal average' - ,hr: 'Base basal average' - ,pl: 'Base basal average' - ,pt: 'Base basal average' - ,nl: 'Base basal average' - ,ru: 'Base basal average' - ,sk: 'Base basal average' - ,ko: 'Base basal average' - ,it: 'Base basal average' - ,tr: 'Base basal average' - ,zh_cn: 'Base basal average' - ,hu: 'Base basal average' - }, - 'Carbs average': { - cs: 'Průměrné množství sacharidů' - , fi: 'Hiilihydraatit keskiarvo' - , ko: 'Carbs average' - , nl: 'Gemiddelde koolhydraten per dag' - ,zh_cn: '碳水化合物平均值' - , sv: 'Genomsnittlig mängd kolhydrater per dag' - , de: 'durchschnittliche Kohlenhydrate pro Tag' - , dk: 'Gennemsnitlig mængde kulhydrater per dag' - , ro: 'Media carbohidraților' - , it: 'Media carboidrati' - , bg: 'Въглехидрати средно' - , hr: 'Prosjek UGH' - , pl: 'Średnia ilość węglowodanów' - , ru: 'среднее кол-во углеводов за сутки' - , tr: 'Günde ortalama karbonhidrat' - , he: 'פחמימות ממוצע' - , hu: 'Szenhidrát átlag' - , nb: 'Gjennomsnitt totale karbohydrater' - }, - 'Eating Soon': { - cs: 'Blížící se jídlo' - , fi: 'Ruokailu pian' - , ko: 'Eating Soon' - , nl: 'Pre-maaltijd modus' - ,zh_cn: '过会吃饭' - , sv: 'Äter snart' - , de: 'Bald Essen' - , dk: 'Spiser snart' - , ro: 'Mâncare în curând' - , it: 'Mangiare presto' - , bg: 'Преди хранене' - , hr: 'Uskoro obrok' - , pl: 'Przed jedzeniem' - , ru: 'Ожидаемый прием пищи' - , tr: 'Yakında Yenecek' - , he: 'אוכל בקרוב' - , hu: 'Hamarosan evés' - , nb: 'Spiser snart' - }, - 'Last entry {0} minutes ago': { - cs: 'Poslední hodnota {0} minut zpět' - , fi: 'Edellinen verensokeri {0} minuuttia sitten' - , ko: 'Last entry {0} minutes ago' - , nl: 'Laatste waarde {0} minuten geleden' - ,zh_cn: '最后一个条目 {0} 分钟之前' - , sv: 'Senaste värde {0} minuter sedan' - , de: 'Letzter Eintrag vor {0} Minuten' - , dk: 'Seneste værdi {0} minutter siden' - , ro: 'Ultima înregistrare acum {0} minute' - , it: 'Ultimo inserimento {0} minuti fa' - , bg: 'Последен запис преди {0} минути' - , hr: 'Posljednji zapis prije {0} minuta' - , pl: 'Ostatni wpis przed {0} minutami' - , ru: 'предыдущая запись {0} минут назад' - , tr: 'Son giriş {0} dakika önce' - , hu: 'Utolsó bejegyzés {0} volt' - , dk: 'Siste verdi {0} minutter siden' - }, - 'change': { - cs: 'změna' - , fi: 'muutos' - , ko: 'change' - , nl: 'wijziging' - ,zh_cn: '改变' - , sv: 'byta' - , de: 'verändern' - , dk: 'ændre' - , ro: 'schimbare' - , it: 'cambio' - , bg: 'промяна' - , hr: 'promjena' - , pl: 'zmiana' - , ru: 'замена' - , tr: 'değişiklik' - , he: 'שינוי' - , hu: 'változás' - , dk: 'endre' - }, - 'Speech': { - cs: 'Hlas' - , fi: 'Puhe' - , ko: 'Speech' - , nl: 'Spraak' - ,zh_cn: '朗读' - , sv: 'Tal' - , de: 'Sprache' - , dk: 'Tale' - , ro: 'Vorbă' - , it: 'Voce' - , bg: 'Глас' - , hr: 'Govor' - , pl: 'Głos' - , ru: 'речь' - , tr: 'Konuş' - , he: 'דיבור' - , hu: 'Beszéd' - , nb: 'Tale' - }, - 'Target Top': { - cs: 'Horní cíl' - , dk: 'Højt mål' - , fi: 'Tavoite ylä' - , ko: 'Target Top' - , nl: 'Hoog tijdelijk doel' - , ro: 'Țintă superioară' - , it: 'Limite superiore' - ,zh_cn: '目标高值' - , sv: 'Högt målvärde' - , bg: 'Горна граница' - , hr: 'Gornja granica' - , pl: 'Górny limit' - , ru: 'верхняя граница цели' - , de: 'Oberes Ziel' - , tr: 'Hedef Üst' - , he: 'ראש היעד' - , hu: 'Felsó cél' - , nb: 'Høyt mål' - }, - 'Target Bottom': { - cs: 'Dolní cíl' - , dk: 'Lavt mål' - , fi: 'Tavoite ala' - , ko: 'Target Bottom' - , nl: 'Laag tijdelijk doel' - ,zh_cn: '目标低值' - , ro: 'Țintă inferioară' - , it: 'Limite inferiore' - , sv: 'Lågt målvärde' - , bg: 'Долна граница' - , hr: 'Donja granica' - , pl: 'Dolny limit' - , ru: 'нижняя граница цели' - , de: 'Unteres Ziel' - , tr: 'Hedef Alt' - , he: 'תחתית היעד' - , hu: 'Alsó cél' - , nb: 'Lavt mål' - }, - 'Canceled': { - cs: 'Zrušený' - , dk: 'Afbrudt' - , fi: 'Peruutettu' - , ko: 'Canceled' - , nl: 'Geannuleerd' - ,zh_cn: '被取消了' - , ro: 'Anulat' - , it: 'Cancellato' - , sv: 'Avbruten' - , bg: 'Отказан' - , hr: 'Otkazano' - , pl: 'Anulowane' - , ru: 'отменено' - , de: 'Abgebrochen' - , tr: 'İptal edildi' - , he: 'מבוטל' - , hu: 'Megszüntetett' - , dk: 'Avbrutt' - }, - 'Meter BG': { - cs: 'Hodnota z glukoměru' - , dk: 'Blodsukkermåler BS' - , fi: 'Mittarin VS' - , ko: 'Meter BG' - , nl: 'Bloedglucosemeter waarde' - ,zh_cn: '指血血糖值' - , ro: 'Glicemie din glucometru' - , it: 'Glicemia Capillare' - , sv: 'Blodsockermätare BG' - , bg: 'Измерена КЗ' - , hr: 'GUK iz krvi' - , pl: 'Glikemia z krwi' - , ru: 'ГК по глюкометру' - , de: 'Wert Blutzuckermessgerät' - , tr: 'Glikometre KŞ' - , he: 'סוכר הדם של מד' - , hu: 'Cukorszint a mérőből' - , nb: 'Blodsukkermåler BS' - }, - 'predicted': { - cs: 'přepověď' - , dk: 'forudset' - , fi: 'ennuste' - , ko: 'predicted' - , nl: 'verwachting' - ,zh_cn: '预测' - , ro: 'estimat' - , it: 'predetto' - , sv: 'prognos' - ,bg: 'прогнозна' - , hr: 'prognozirano' - , pl: 'prognoza' - , ru: 'прогноз' - , de: 'vorhergesagt' - , tr: 'tahmin' - , he: 'חזה' - , hu: 'előrejelzés' - , nb: 'predikert' - }, - 'future': { - cs: 'budoucnost' - , dk: 'fremtidige' - , fi: 'tulevaisuudessa' - , ko: 'future' - , nl: 'toekomstig' - ,zh_cn: '将来' - , ro: 'viitor' - , it: 'futuro' - , sv: 'framtida' - , bg: 'бъдеще' - , hr: 'budućnost' - , pl: 'przyszłość' - , ru: 'будущее' - , de: 'Zukunft' - , tr: 'gelecek' - , he: 'עתיד' - , hu: 'jövő' - , nb: 'Fremtid' - }, - 'ago': { - cs: 'zpět' - , dk: 'siden' - , fi: 'sitten' - , ko: 'ago' - , nl: 'geleden' - ,zh_cn: '之前' - , ro: 'în trecut' - , sv: 'förfluten' - , bg: 'преди' - , hr: 'prije' - , pl: 'temu' - , ru: 'в прошлом' - , de: 'vor' - , tr: 'önce' - , he: 'לפני' - , hu: 'ezelött' - , nb: 'Siden' - }, - 'Last data received': { - cs: 'Poslední data přiajata' - , dk: 'Sidste data modtaget' - , fi: 'Tietoa vastaanotettu viimeksi' - , ko: 'Last data received' - , nl: 'Laatste gegevens ontvangen' - ,zh_cn: '上次收到数据' - , ro: 'Ultimele date primite' - , it: 'Ultimo dato ricevuto' - , sv: 'Data senast mottagen' - , bg: 'Последни данни преди' - , hr: 'Podaci posljednji puta primljeni' - , pl: 'Ostatnie otrzymane dane' - , ru: 'прошлые данные получены' - , de: 'Zuletzt Daten empfangen' - , tr: 'Son veri alındı' - , he: 'הנתונים המקבל אחרונים' - , hu: 'Utólsó adatok fogadva' - , nb: 'Siste data mottatt' - }, - 'Clock View': { - cs: 'Hodiny' - ,dk: 'Vis klokken' - ,fi: 'Kellonäkymä' - ,es: 'Vista del reloj' - ,fr: 'Vue Horloge' - ,ro: 'Vedere tip ceas' - ,ru: 'вид циферблата' - ,ko: 'Clock View' - ,it: 'Vista orologio' - ,sv: 'Visa klocka' - ,bg: 'Изглед часовник' - ,hr: 'Prikaz sata' - ,nl: 'Klokweergave' - ,zh_cn: '时钟视图' - ,de: 'Uhr-Anzeigen' - ,pl: 'Widok zegara' - ,tr: 'Saat Görünümü' - ,he: 'צג השעון' - ,hu: 'Idő' - , nb: 'Klokkevisning' - }, - 'Protein': { - fi: 'Proteiini' - ,de: 'Protein' - ,tr: 'Protein' - ,hr: 'Proteini' - , pl: 'Białko' - ,ru: 'Белки' - ,he: 'חלבון' - ,nl: 'Eiwit' - ,hu: 'Protein' - , nb: 'Protein' - }, - 'Fat': { - fi: 'Rasva' - ,de: 'Fett' - ,tr: 'Yağ' - ,hr: 'Masti' - , pl: 'Tłuszcz' - ,ru: 'Жиры' - ,he: 'שמן' - ,nl: 'Vet' - ,hu: 'Zsír' - , nb: 'Fett' - }, - 'Protein average' : { - fi: 'Proteiini keskiarvo' - ,de: 'Proteine Durchschnitt' - ,tr: 'Protein Ortalaması' - ,hr: 'Prosjek proteina' - , pl: 'Średnia białka' - ,ru: 'Средний белок' - ,he: 'חלבון ממוצע' - ,nl: 'eiwitgemiddelde' - ,hu: 'Protein átlag' - , nb: 'Gjennomsnitt protein' - }, - 'Fat average' : { - fi: 'Rasva keskiarvo' - ,de: 'Fett Durchschnitt' - ,tr: 'Yağ Ortalaması' - ,hr: 'Prosjek masti' - , pl: 'Średnia tłuszczu' - ,ru: 'Средний жир' - ,he: 'שמן ממוצע' - ,nl: 'Vetgemiddelde' - ,hu: 'Zsír átlag' - , nb: 'Gjennomsnitt fett' - }, - 'Total carbs' : { - fi: 'Hiilihydraatit yhteensä' - , de: 'Kohlenhydrate gesamt' - ,tr: 'Toplam Karbonhidrat' - ,hr: 'Ukupno ugh' - , pl: 'Węglowodany ogółem' - ,ru: 'Всего углеводов' - ,he: 'כל פחמימות' - ,nl: 'Totaal koolhydraten' - ,hu: 'Összes szénhidrát' - , nb: 'Totale karbohydrater' - }, - 'Total protein': { - fi: 'Proteiini yhteensä' - , de: 'Protein gesamt' - ,tr: 'Toplam Protein' - ,hr: 'Ukupno proteini' - , pl: 'Białko ogółem' - ,ru: 'Всего белков' - ,he: 'כל חלבונים' - ,nl: 'Totaal eiwitten' - ,hu: 'Összes protein' - , nb: 'Totalt protein' - }, - 'Total fat': { - fi: 'Rasva yhteensä' - , de: 'Fett gesamt' - ,tr: 'Toplam Yağ' - ,hr: 'Ukupno masti' - , pl: 'Tłuszcz ogółem' - ,ru: 'Всего жиров' - ,he: 'כל שומנים' - ,nl: 'Totaal vetten' - ,hu: 'Összes zsír' - , nb: 'Totalt fett' - }, - 'Database Size': { - pl: 'Rozmiar Bazy Danych' - ,nl: 'Grootte database' - ,de: 'Datenbankgröße' - ,hu: 'Adatbázis mérete' - , nb: 'Databasestørrelse' - }, - 'Database Size near its limits!': { - pl: 'Rozmiar bazy danych zbliża się do limitu!' - ,nl: 'Database grootte nadert limiet!' - ,de: 'Datenbank fast voll!' - ,hu: 'Az adatbázis majdnem megtelt!' - , nb: 'Databasestørrelsen nærmer seg grensene' - }, - 'Database size is %1 MiB out of %2 MiB. Please backup and clean up database!': { - pl: 'Baza danych zajmuje %1 MiB z dozwolonych %2 MiB. Proszę zrób kopię zapasową i oczyść bazę danych!' - ,nl: 'Database grootte is %1 MiB van de %2 MiB. Maak een backup en verwijder oude data' - ,de: 'Die Datenbankgröße beträgt %1 MiB von %2 MiB. Bitte sichere deine Daten und bereinige die Datenbank!' - ,hu: 'Az adatbázis mérete %1 MiB a rendelkezésre álló %2 MiB-ból. Készítsen biztonsági másolatot!' - , nb: 'Databasestørrelsen er %1 MiB av %2 MiB. Vennligst ta backup og rydd i databasen!' - }, - 'Database file size': { - pl: 'Rozmiar pliku bazy danych' - ,nl: 'Database bestandsgrootte' - ,de: 'Datenbank-Dateigröße' - ,hu: 'Adatbázis file mérete' - , nb: 'Database filstørrelse' - - }, - '%1 MiB of %2 MiB (%3%)': { - pl: '%1 MiB z %2 MiB (%3%)' - ,nl: '%1 MiB van de %2 MiB (%3%)' - ,de: '%1 MiB von %2 MiB (%3%)' - ,hu: '%1 MiB %2 MiB-ból (%3%)' - ,nb: '%1 MiB av %2 MiB (%3%)' - }, - 'Data size': { - pl: 'Rozmiar danych' - ,nl: 'Datagrootte' - ,de: 'Datengröße' - ,hu: 'Adatok mérete' - ,nb: 'Datastørrelse' - }, - 'virtAsstDatabaseSize': { - en: '%1 MiB. That is %2% of available database space.' - ,pl: '%1 MiB co stanowi %2% przestrzeni dostępnej dla bazy danych' - ,nl: '%1 MiB dat is %2% van de beschikbaare database ruimte' - ,de: '%1 MiB. Das sind %2% des verfügbaren Datenbank-Speicherplatzes.' - ,hu: '%1 MiB ami %2% a rendelkezésre álló méretből' - }, - 'virtAsstTitleDatabaseSize': { - en: 'Database file size' - ,pl: 'Rozmiar pliku bazy danych' - ,nl: 'Database bestandsgrootte' - ,de: 'Datenbank-Dateigröße' - ,hu: 'Adatbázis file méret' - }, - 'Carbs/Food/Time' : { - cs: 'Carbs/Food/Time' - ,he: 'Carbs/Food/Time' - ,nb: 'Karbo/Mat/Abs.tid' - ,ro: 'Carbs/Food/Time' - ,de: 'Carbs/Food/Time' - ,dk: 'Carbs/Food/Time' - ,es: 'Carbs/Food/Time' - ,fr: 'Carbs/Food/Time' - ,sv: 'Carbs/Food/Time' - ,fi: 'Carbs/Food/Time' - ,bg: 'Carbs/Food/Time' - ,hr: 'Carbs/Food/Time' - ,pl: 'Carbs/Food/Time' - ,pt: 'Carbs/Food/Time' - ,nl: 'Carbs/Food/Time' - ,ru: 'Carbs/Food/Time' - ,sk: 'Carbs/Food/Time' - ,ko: 'Carbs/Food/Time' - ,it: 'Carbs/Food/Time' - ,tr: 'Carbs/Food/Time' - ,zh_cn: 'Carbs/Food/Time' - ,hu: 'Carbs/Food/Time' - } - }; - + var translations = {}; + language.translations = translations; + language.offerTranslations = function offerTranslations(localization) { + translations = localization; + language.translations = translations; + } // case sensitive language.translateCS = function translateCaseSensitive(text) { - if (translations[text] && translations[text][language.lang]) { - return translations[text][language.lang]; + if (translations[text]) { + return translations[text]; } + // console.log('localization:', text, 'not found'); return text; }; @@ -16005,8 +63,8 @@ function init() { var utext = text.toUpperCase(); _.forEach(translations, function (ts, key) { var ukey = key.toUpperCase(); - if (ukey === utext && ts[language.lang]) { - text = ts[language.lang]; + if (ukey === utext) { + text = ts; } }); return text; @@ -16041,6 +99,25 @@ function init() { }); }; + language.getFilename = function getFilename(code) { + + if (code == 'en') { + return 'en/en.json'; + } + + let file; + language.languages.forEach(function (l) { + if (l.code == code) file = l.file; + }); + return file + '.json'; + } + + // this is a server only call and needs fs by reference as the class is also used in the client + language.loadLocalization = function loadLocalization(fs) { + const l = fs.readFileSync('./translations/' + this.getFilename(this.lang)); + this.offerTranslations(JSON.parse(l)); + } + language.set = function set(newlang) { language.lang = newlang; @@ -16051,6 +128,12 @@ function init() { return language(); }; + // if run on server and we get a filesystem handle, load english by default + if (fs) { + language.set('en'); + language.loadLocalization(fs); + } + return language(); } diff --git a/server.js b/server.js index f4350bbbe00..6c3b7bb87d5 100644 --- a/server.js +++ b/server.js @@ -26,9 +26,11 @@ // DB Connection setup and utils /////////////////////////////////////////////////// -var env = require('./env')( ); -var language = require('./lib/language')(); -var translate = language.set(env.settings.language).translate; +const fs = require('fs'); +const env = require('./env')( ); +const language = require('./lib/language')(); +const translate = language.set(env.settings.language).translate; +language.loadLocalization(fs); /////////////////////////////////////////////////// // setup http server diff --git a/static/translations/js/translations.js b/static/translations/js/translations.js deleted file mode 100644 index 286efa24fd7..00000000000 --- a/static/translations/js/translations.js +++ /dev/null @@ -1,54 +0,0 @@ -(function () { - 'use strict'; - //for the tests window isn't the global object - var $ = window.$; - var _ = window._; - var Nightscout = window.Nightscout; - var client = Nightscout.client; - - client.init(function loaded() { - - var language = client.language; - var result = {}; - - language.languages.forEach(function eachLanguage(l) { - result[l.code] = {total: 0, ok: 0, missing: 0, keys: []}; - _.forEach(language.translations, function (n, t) { - result[l.code].total++; - if (language.translations[t][l.code]) { - result[l.code].ok++; - } else { - result[l.code].missing++; - result[l.code].keys.push(t); - } - }); - }); - - var table = $('').append(''); - var table2 = $('
LanguageCodeTranslatedNot translatedPercent
').append(''); - language.languages.forEach(function eachLanguage(l) { - if (l.code === 'en') { - return; - } - var tr = $(''); - tr.append($(''); - tr2.append($(''; - legend += ''; - legend += ''; - legend += ''; - legend += ''; - legend += ''; - legend += ''; - legend += '
LanguageCodeMissing
').append(l.language)); - tr.append($('').append(l.code)); - tr.append($('').append(result[l.code].ok)); - tr.append($('').append(result[l.code].missing)); - tr.append($('').append((result[l.code].ok / result[l.code].total * 100).toFixed(1) + '%')); - - var tr2 = $('
').append(l.language)); - tr2.append($('').append(l.code)); - tr2.append($('').attr('width', '300px').append(result[l.code].keys.join('
'))); - - table.append(tr); - table2.append(tr2); - }); - - var placeholder = $('#translations'); - placeholder.html(table); - placeholder.append('
'); - placeholder.append(table2); - }); -})(); \ No newline at end of file diff --git a/tests/api.alexa.test.js b/tests/api.alexa.test.js index 440050eb2cc..6fa5c12044a 100644 --- a/tests/api.alexa.test.js +++ b/tests/api.alexa.test.js @@ -1,7 +1,9 @@ 'use strict'; -var request = require('supertest'); -var language = require('../lib/language')(); +const fs = require('fs'); +const request = require('supertest'); +const language = require('../lib/language')(fs); + const bodyParser = require('body-parser'); require('should'); diff --git a/tests/ar2.test.js b/tests/ar2.test.js index 01f4f3d41a1..858a6ed3b89 100644 --- a/tests/ar2.test.js +++ b/tests/ar2.test.js @@ -1,15 +1,16 @@ 'use strict'; -var should = require('should'); -var levels = require('../lib/levels'); +const should = require('should'); +const levels = require('../lib/levels'); +const fs = require('fs'); -var FIVE_MINS = 300000; -var SIX_MINS = 360000; +const FIVE_MINS = 300000; +const SIX_MINS = 360000; describe('ar2', function ( ) { var ctx = { settings: {} - , language: require('../lib/language')() + , language: require('../lib/language')(fs) }; ctx.ddata = require('../lib/data/ddata')(); ctx.notifications = require('../lib/notifications')(env, ctx); diff --git a/tests/basalprofileplugin.test.js b/tests/basalprofileplugin.test.js index fa97f84274e..d809a735000 100644 --- a/tests/basalprofileplugin.test.js +++ b/tests/basalprofileplugin.test.js @@ -1,4 +1,6 @@ -var should = require('should'); +const should = require('should'); +const fs = require('fs'); +const language = require('../lib/language')(fs); describe('basalprofile', function ( ) { @@ -6,9 +8,8 @@ describe('basalprofile', function ( ) { var env = require('../env')(); var ctx = { settings: {} - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); ctx.ddata = require('../lib/data/ddata')(); ctx.notifications = require('../lib/notifications')(env, ctx); @@ -64,12 +65,11 @@ describe('basalprofile', function ( ) { done(); } } - , language: require('../lib/language')() + , language: language }; var time = new Date('2015-06-21T00:00:00+00:00').getTime(); - var sbx = sandbox.clientInit(ctx, time, data); sbx.data.profile = profile; basal.setProperties(sbx); @@ -83,12 +83,11 @@ describe('basalprofile', function ( ) { var ctx = { settings: {} , pluginBase: { } - , language: require('../lib/language')() + , language: language }; var time = new Date('2015-06-21T00:00:00+00:00').getTime(); - var sbx = sandbox.clientInit(ctx, time, data); sbx.data.profile = profile; diff --git a/tests/cob.test.js b/tests/cob.test.js index 54fbcb6c50d..b0c1a19d265 100644 --- a/tests/cob.test.js +++ b/tests/cob.test.js @@ -1,14 +1,15 @@ 'use strict'; -var _ = require('lodash'); +const _ = require('lodash'); +const fs = require('fs'); +const language = require('../lib/language')(fs); require('should'); describe('COB', function ( ) { var ctx = {}; ctx.settings = {}; - ctx.language = require('../lib/language')(); - ctx.language.set('en'); + ctx.language = language; var cob = require('../lib/plugins/cob')(ctx); diff --git a/tests/dbsize.test.js b/tests/dbsize.test.js index ce95f8652c0..f4ea4071149 100644 --- a/tests/dbsize.test.js +++ b/tests/dbsize.test.js @@ -1,5 +1,7 @@ 'use strict'; +const fs = require('fs'); +const language = require('../lib/language')(fs); require('should'); describe('Database Size', function() { @@ -14,9 +16,8 @@ describe('Database Size', function() { var sandbox = require('../lib/sandbox')(); var ctx = { settings: {} - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); ctx.levels = require('../lib/levels'); var sbx = sandbox.clientInit(ctx, Date.now(), dataInRange); @@ -40,9 +41,8 @@ describe('Database Size', function() { var sandbox = require('../lib/sandbox')(); var ctx = { settings: {} - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); ctx.levels = require('../lib/levels'); var sbx = sandbox.clientInit(ctx, Date.now(), dataWarn); @@ -67,9 +67,8 @@ describe('Database Size', function() { var sandbox = require('../lib/sandbox')(); var ctx = { settings: {} - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); ctx.levels = require('../lib/levels'); var sbx = sandbox.clientInit(ctx, Date.now(), dataUrgent); @@ -93,11 +92,10 @@ describe('Database Size', function() { var sandbox = require('../lib/sandbox')(); var ctx = { settings: {} - , language: require('../lib/language')() + , language: language , notifications: require('../lib/notifications')(env, ctx) }; ctx.notifications.initRequests(); - ctx.language.set('en'); ctx.levels = require('../lib/levels'); var sbx = sandbox.clientInit(ctx, Date.now(), dataWarn); @@ -121,11 +119,10 @@ describe('Database Size', function() { var sandbox = require('../lib/sandbox')(); var ctx = { settings: {} - , language: require('../lib/language')() + , language: language , notifications: require('../lib/notifications')(env, ctx) }; ctx.notifications.initRequests(); - ctx.language.set('en'); ctx.levels = require('../lib/levels'); var sbx = sandbox.clientInit(ctx, Date.now(), dataUrgent); @@ -156,9 +153,8 @@ describe('Database Size', function() { done(); } } - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); var sandbox = require('../lib/sandbox')(); var sbx = sandbox.clientInit(ctx, Date.now(), dataUrgent); @@ -188,9 +184,8 @@ describe('Database Size', function() { done(); } } - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); var sandbox = require('../lib/sandbox')(); var sbx = sandbox.clientInit(ctx, Date.now(), dataUrgent); @@ -220,9 +215,8 @@ describe('Database Size', function() { done(); } } - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); var sandbox = require('../lib/sandbox')(); var sbx = sandbox.clientInit(ctx, Date.now(), dataInRange); @@ -252,9 +246,8 @@ describe('Database Size', function() { done(); } } - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); var sandbox = require('../lib/sandbox')(); var sbx = sandbox.clientInit(ctx, Date.now(), dataInRange); @@ -274,9 +267,8 @@ describe('Database Size', function() { done(); } } - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); var sandbox = require('../lib/sandbox')(); var sbx = sandbox.clientInit(ctx, Date.now(), {}); @@ -291,9 +283,8 @@ describe('Database Size', function() { var ctx = { settings: {} - , language: require('../lib/language')() + , language: language }; - ctx.language.set('en'); var sandbox = require('../lib/sandbox')(); var sbx = sandbox.clientInit(ctx, Date.now(), dataUrgent); diff --git a/tests/iob.test.js b/tests/iob.test.js index 3b92fb8d05a..b44099488c4 100644 --- a/tests/iob.test.js +++ b/tests/iob.test.js @@ -1,12 +1,12 @@ 'use strict'; -var _ = require('lodash'); -var should = require('should'); +const _ = require('lodash'); +const should = require('should'); +const fs = require('fs'); describe('IOB', function() { var ctx = {}; - ctx.language = require('../lib/language')(); - ctx.language.set('en'); + ctx.language = require('../lib/language')(fs); ctx.settings = require('../lib/settings')(); var iob = require('../lib/plugins/iob')(ctx); diff --git a/tests/language.test.js b/tests/language.test.js index fb024b85965..d61eec72ddd 100644 --- a/tests/language.test.js +++ b/tests/language.test.js @@ -1,5 +1,7 @@ 'use strict'; +const fs = require('fs'); + require('should'); describe('language', function ( ) { @@ -12,18 +14,21 @@ describe('language', function ( ) { it('translate to French', function () { var language = require('../lib/language')(); language.set('fr'); + language.loadLocalization(fs); language.translate('Carbs').should.equal('Glucides'); }); it('translate to Czech', function () { var language = require('../lib/language')(); language.set('cs'); + language.loadLocalization(fs); language.translate('Carbs').should.equal('Sacharidy'); }); it('translate to Czech uppercase', function () { var language = require('../lib/language')(); language.set('cs'); + language.loadLocalization(fs); language.translate('carbs', { ci: true }).should.equal('Sacharidy'); }); diff --git a/tests/loop.test.js b/tests/loop.test.js index bfe11d5075c..bc42b0b5d48 100644 --- a/tests/loop.test.js +++ b/tests/loop.test.js @@ -1,11 +1,13 @@ 'use strict'; -var _ = require('lodash'); -var should = require('should'); -var moment = require('moment'); +const _ = require('lodash'); +const should = require('should'); +const moment = require('moment'); +const fs = require('fs'); +const language = require('../lib/language')(fs); var ctx = { - language: require('../lib/language')() + language: language , settings: require('../lib/settings')() }; ctx.language.set('en'); @@ -130,7 +132,7 @@ describe('loop', function ( ) { done(); } } - , language: require('../lib/language')() + , language: language }; var sbx = sandbox.clientInit(ctx, now.valueOf(), {devicestatus: statuses}); @@ -166,9 +168,9 @@ describe('loop', function ( ) { first.value.should.equal('Error: SomeError'); done(); } - , language: require('../lib/language')() + , language: language }, - language: require('../lib/language')() + language: language }; var errorTime = moment(statuses[1].created_at); @@ -201,7 +203,7 @@ describe('loop', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -228,7 +230,7 @@ describe('loop', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -250,7 +252,7 @@ describe('loop', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; var sbx = sandbox.clientInit(ctx, now.valueOf(), {devicestatus: statuses}); diff --git a/tests/openaps.test.js b/tests/openaps.test.js index b2e767c8fe2..1cc10bf15b1 100644 --- a/tests/openaps.test.js +++ b/tests/openaps.test.js @@ -1,11 +1,14 @@ 'use strict'; -var _ = require('lodash'); -var should = require('should'); -var moment = require('moment'); +const _ = require('lodash'); +const should = require('should'); +const moment = require('moment'); +const fs = require('fs'); + +const language = require('../lib/language')(fs); var ctx = { - language: require('../lib/language')() + language: language , settings: require('../lib/settings')() }; ctx.language.set('en'); @@ -272,7 +275,7 @@ describe('openaps', function ( ) { done(); } } - , language: require('../lib/language')() + , language: language }; var sbx = sandbox.clientInit(ctx, now.valueOf(), {devicestatus: statuses}); @@ -303,7 +306,7 @@ describe('openaps', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -331,7 +334,7 @@ describe('openaps', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -353,7 +356,7 @@ describe('openaps', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -377,7 +380,7 @@ describe('openaps', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; var sbx = sandbox.clientInit(ctx, now.valueOf(), {devicestatus: statuses}); diff --git a/tests/pump.test.js b/tests/pump.test.js index d051cbe7163..755efee6785 100644 --- a/tests/pump.test.js +++ b/tests/pump.test.js @@ -3,9 +3,11 @@ var _ = require('lodash'); var should = require('should'); var moment = require('moment'); +const fs = require('fs'); +const language = require('../lib/language')(fs); var ctx = { - language: require('../lib/language')() + language: language , settings: require('../lib/settings')() }; ctx.language.set('en'); @@ -69,7 +71,7 @@ describe('pump', function ( ) { done(); } } - , language: require('../lib/language')() + , language: language }; var sbx = sandbox.clientInit(ctx, now.valueOf(), {devicestatus: statuses}); @@ -100,7 +102,7 @@ describe('pump', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -124,7 +126,7 @@ describe('pump', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -152,7 +154,7 @@ describe('pump', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -181,7 +183,7 @@ describe('pump', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -209,7 +211,7 @@ describe('pump', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -237,7 +239,7 @@ describe('pump', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.notifications.initRequests(); @@ -261,7 +263,7 @@ describe('pump', function ( ) { units: 'mg/dl' } , notifications: require('../lib/notifications')(env, ctx) - , language: require('../lib/language')() + , language: language }; ctx.language.set('en'); var sbx = sandbox.clientInit(ctx, now.valueOf(), {devicestatus: statuses}); diff --git a/tests/rawbg.test.js b/tests/rawbg.test.js index 48c21186cc5..d581a3d9bf4 100644 --- a/tests/rawbg.test.js +++ b/tests/rawbg.test.js @@ -1,11 +1,12 @@ 'use strict'; require('should'); +const fs = require('fs'); describe('Raw BG', function ( ) { var ctx = { settings: { units: 'mg/dl'} - , language: require('../lib/language')() + , language: require('../lib/language')(fs) , pluginBase: {} }; ctx.language.set('en'); diff --git a/tests/upbat.test.js b/tests/upbat.test.js index 42d18bb0854..927e8072f85 100644 --- a/tests/upbat.test.js +++ b/tests/upbat.test.js @@ -1,6 +1,8 @@ 'use strict'; require('should'); +const fs = require('fs'); + describe('Uploader Battery', function ( ) { var data = {devicestatus: [{mills: Date.now(), uploader: {battery: 20}}]}; @@ -9,7 +11,7 @@ describe('Uploader Battery', function ( ) { var sandbox = require('../lib/sandbox')(); var ctx = { settings: {} - , language: require('../lib/language')() + , language: require('../lib/language')(fs) }; ctx.language.set('en'); ctx.levels = require('../lib/levels'); @@ -42,7 +44,7 @@ describe('Uploader Battery', function ( ) { done(); } } - , language: require('../lib/language')() + , language: require('../lib/language')(fs) }; ctx.language.set('en'); @@ -63,7 +65,7 @@ describe('Uploader Battery', function ( ) { done(); } } - , language: require('../lib/language')() + , language: require('../lib/language')(fs) }; ctx.language.set('en'); @@ -82,7 +84,7 @@ describe('Uploader Battery', function ( ) { options.hide.should.equal(true); done(); } - }, language: require('../lib/language')() + }, language: require('../lib/language')(fs) }; ctx.language.set('en'); @@ -97,7 +99,7 @@ describe('Uploader Battery', function ( ) { var ctx = { settings: {} - , language: require('../lib/language')() + , language: require('../lib/language')(fs) }; ctx.language.set('en'); diff --git a/translations/bg_BG.json b/translations/bg_BG.json new file mode 100644 index 00000000000..f590b2faeab --- /dev/null +++ b/translations/bg_BG.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Активиране на порта", + "Mo": "Пон", + "Tu": "Вт", + "We": "Ср", + "Th": "Четв", + "Fr": "Пет", + "Sa": "Съб", + "Su": "Нед", + "Monday": "Понеделник", + "Tuesday": "Вторник", + "Wednesday": "Сряда", + "Thursday": "Четвъртък", + "Friday": "Петък", + "Saturday": "Събота", + "Sunday": "Неделя", + "Category": "Категория", + "Subcategory": "Подкатегория", + "Name": "Име", + "Today": "Днес", + "Last 2 days": "Последните 2 дни", + "Last 3 days": "Последните 3 дни", + "Last week": "Последната седмица", + "Last 2 weeks": "Последните 2 седмици", + "Last month": "Последният месец", + "Last 3 months": "Последните 3 месеца", + "between": "between", + "around": "around", + "and": "and", + "From": "От", + "To": "До", + "Notes": "Бележки", + "Food": "Храна", + "Insulin": "Инсулин", + "Carbs": "Въглехидрати", + "Notes contain": "бележките съдържат", + "Target BG range bottom": "Долна граница на КЗ", + "top": "горна", + "Show": "Покажи", + "Display": "Покажи", + "Loading": "Зареждане", + "Loading profile": "Зареждане на профил", + "Loading status": "Зареждане на статус", + "Loading food database": "Зареждане на данни с храни", + "not displayed": "Не се показва", + "Loading CGM data of": "Зареждане на CGM данни от", + "Loading treatments data of": "Зареждане на въведените лечения от", + "Processing data of": "Зареждане на данни от", + "Portion": "Порция", + "Size": "Големина", + "(none)": "(няма)", + "None": "няма", + "": "<няма>", + "Result is empty": "Няма резултат", + "Day to day": "Ден за ден", + "Week to week": "Week to week", + "Daily Stats": "Дневна статистика", + "Percentile Chart": "Процентна графика", + "Distribution": "Разпределение", + "Hourly stats": "Статистика по часове", + "netIOB stats": "netIOB татистика", + "temp basals must be rendered to display this report": "временните базали трябва да са показани за да се покаже тази това", + "Weekly success": "Седмичен успех", + "No data available": "Няма данни за показване", + "Low": "Ниска", + "In Range": "В граници", + "Period": "Период", + "High": "Висока", + "Average": "Средна", + "Low Quartile": "Ниска четвъртинка", + "Upper Quartile": "Висока четвъртинка", + "Quartile": "Четвъртинка", + "Date": "Дата", + "Normal": "Нормалнa", + "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 парола. Tрябва да въведете API парола", + "Database loaded": "База с данни заредена", + "Error: Database failed to load": "ГРЕШКА. Базата с данни не успя да се зареди", + "Error": "Error", + "Create new record": "Създаване на нов запис", + "Save record": "Запази запис", + "Portions": "Порции", + "Unit": "Единици", + "GI": "ГИ", + "Edit record": "Редактирай запис", + "Delete record": "Изтрий запис", + "Move to the top": "Преместване в началото", + "Hidden": "Скрити", + "Hide after use": "Скрий след употреба", + "Your API secret must be at least 12 characters long": "Вашата АPI парола трябва да е дълга поне 12 символа", + "Bad API secret": "Некоректна API парола", + "API secret hash stored": "УРА! API парола запаметена", + "Status": "Статус", + "Not loaded": "Не е заредено", + "Food Editor": "Редактор за храна", + "Your database": "Твоята база с данни", + "Filter": "Филтър", + "Save": "Запази", + "Clear": "Изчисти", + "Record": "Запиши", + "Quick picks": "Бърз избор", + "Show hidden": "Покажи скритото", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Събития", + "Time": "Време", + "Event Type": "Вид събитие", + "Blood Glucose": "Кръвна захар", + "Entered By": "Въведено от", + "Delete this treatment?": "Изтрий това събитие", + "Carbs Given": "ВХ", + "Inzulin Given": "Инсулин", + "Event Time": "Въвеждане", + "Please verify that the data entered is correct": "Моля проверете, че датата е въведена правилно", + "BG": "КЗ", + "Use BG correction in calculation": "Използвай корекцията за КЗ в изчислението", + "BG from CGM (autoupdated)": "КЗ от сензора (автоматично)", + "BG from meter": "КЗ от глюкомер", + "Manual BG": "Ръчно въведена КЗ", + "Quickpick": "Бърз избор", + "or": "или", + "Add from database": "Добави от базата с данни", + "Use carbs correction in calculation": "Включи корекцията чрез ВХ в изчислението", + "Use COB correction in calculation": "Включи активните ВХ в изчислението", + "Use IOB in calculation": "Включи активния инсулин в изчислението", + "Other correction": "Друга корекция", + "Rounding": "Закръгляне", + "Enter insulin correction in treatment": "Въведи корекция с инсулин като лечение", + "Insulin needed": "Необходим инсулин", + "Carbs needed": "Необходими въглехидрати", + "Carbs needed if Insulin total is negative value": "Необходими въглехидрати, ако няма инсулин", + "Basal rate": "Базален инсулин", + "60 minutes earlier": "Преди 60 минути", + "45 minutes earlier": "Преди 45 минути", + "30 minutes earlier": "Преди 30 минути", + "20 minutes earlier": "Преди 20 минути", + "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": "Активен инсулин", + "Carbs-on-Board": "Активни въглехидрати", + "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": "Корекция чрез въглехидрати", + "Note": "Бележка", + "Question": "Въпрос", + "Exercise": "Спорт", + "Pump Site Change": "Смяна на сет", + "CGM Sensor Start": "Ре/Стартиране на сензор", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Смяна на сензор", + "Dexcom Sensor Start": "Ре/Стартиране на Декском сензор", + "Dexcom Sensor Change": "Смяна на Декском сензор", + "Insulin Cartridge Change": "Смяна на резервоар", + "D.A.D. Alert": "Сигнал от обучено куче", + "Glucose Reading": "Кръвна захар", + "Measurement Method": "Метод на измерване", + "Meter": "Глюкомер", + "Insulin Given": "Инсулин", + "Amount in grams": "К-во в грамове", + "Amount in units": "К-во в единици", + "View all treatments": "Преглед на всички събития", + "Enable Alarms": "Активни аларми", + "Pump Battery Change": "Смяна на батерия на помпата", + "Pump Battery Low Alarm": "Аларма за слаба батерия на помпата", + "Pump Battery change overdue!": "Смяната на батерията на помпата - наложителна", + "When enabled an alarm may sound.": "Когато е активирано, алармата ще има звук", + "Urgent High Alarm": "Много висока КЗ", + "High Alarm": "Висока КЗ", + "Low Alarm": "Ниска КЗ", + "Urgent Low Alarm": "Много ниска КЗ", + "Stale Data: Warn": "Стари данни", + "Stale Data: Urgent": "Много стари данни", + "mins": "мин", + "Night Mode": "Нощен режим", + "When enabled the page will be dimmed from 10pm - 6am.": "Когато е активирано, страницата ще е затъмнена от 22-06ч", + "Enable": "Активен", + "Show Raw BG Data": "Показвай RAW данни", + "Never": "Никога", + "Always": "Винаги", + "When there is noise": "Когато има шум", + "When enabled small white dots will be displayed for raw BG data": "Когато е активно, малки бели точки ще показват RAW данните", + "Custom Title": "Име на страницата", + "Theme": "Тема", + "Default": "Черно-бяла", + "Colors": "Цветна", + "Colorblind-friendly colors": "Цветове за далтонисти", + "Reset, and use defaults": "Нулирай и използвай стандартните настройки", + "Calibrations": "Калибрации", + "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": "Непреработена КЗ", + "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": "В БЪДЕШЕТО", + "Update": "Актуализирай", + "Order": "Ред", + "oldest on top": "Старите най-отгоре", + "newest on top": "Новите най-отгоре", + "All sensor events": "Всички събития от сензора", + "Remove future items from mongo database": "Премахни бъдещите точки от Монго базата с данни", + "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.": "Тази опция ще намери и премахне данни от сензора в бъдещето, създадени поради грешна дата/време.", + "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 records deleted", + "Clean Mongo status database": "Изчисти статуса на Монго базата с данни", + "Delete all documents from devicestatus collection": "Изтрий всички документи от папката статус-устройство", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Тази опция премахва всички документи от папката статус-устройство. Полезно е, когато статусът на батерията не се обновява.", + "Delete all documents": "Изтрий всички документи", + "Delete all documents from devicestatus collection?": "Изтриване на всички документи от папката статус-устройство?", + "Database contains %1 records": "Базата с данни съдържа %1 записи", + "All records removed ...": "Всички записи премахнати ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Настройки на администратора", + "Nightscout reporting": "Найтскаут статистика", + "Cancel": "Откажи", + "Edit treatment": "Редакция на събитие", + "Duration": "Времетраене", + "Duration in minutes": "Времетраене в мин.", + "Temp Basal": "Временен базал", + "Temp Basal Start": "Начало на временен базал", + "Temp Basal End": "Край на временен базал", + "Percent": "Процент", + "Basal change in %": "Промяна на базала с %", + "Basal value": "Временен базал", + "Absolute basal value": "Базална стойност", + "Announcement": "Известяване", + "Loading temp basal data": "Зареждане на данни за временния базал", + "Save current record before changing to new?": "Запази текущият запис преди да промениш новия ", + "Profile Switch": "Смяна на профил", + "Profile": "Профил", + "General profile settings": "Основни настройки на профила", + "Title": "Заглавие", + "Database records": "Записи в базата с данни", + "Add new record": "Добави нов запис", + "Remove this record": "Премахни този запис", + "Clone this record to new": "Копирай този запис като нов", + "Record valid from": "Записът е валиден от ", + "Stored profiles": "Запаметени профили", + "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)": "Съотношение инсулин/въглехидратите ICR 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.": "грам въглехидрат към 1 единица инсулин. Съотношението колко грама въглехидрат се покриват от 1 единица инсулин.", + "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.": "мг/дл или ммол към 1 единица инсулин. Съотношението как се променя кръвната захар със всяка единица инсулинова корекция", + "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]": "Целеви диапазон на КЗ [мг/дл , ммол]", + "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": "Инсулинова чувствителност", + "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.": "Грешни настройки на профила. \nНяма определен профил към избраното време. \nПрепращане към редактора на профила, за създаване на нов профил.", + "Pump": "Помпа", + "Sensor Age": "Възраст на сензора (ВС)", + "Insulin Age": "Възраст на инсулина (ВИ)", + "Temporary target": "Временна граница", + "Reason": "Причина", + "Eating soon": "Ядене скоро", + "Top": "Горе", + "Bottom": "Долу", + "Activity": "Активност", + "Targets": "Граници", + "Bolus insulin:": "Болус инсулин", + "Base basal insulin:": "Основен базален инсулин", + "Positive temp basal insulin:": "Положителен временен базален инсулин", + "Negative temp basal insulin:": "Отрицателен временен базален инсулин", + "Total basal insulin:": "Общо базален инсулин", + "Total daily insulin:": "Общо инсулин за деня", + "Unable to %1 Role": "Невъзможно да %1 Роля", + "Unable to delete Role": "Невъзможно изтриването на Роля", + "Database contains %1 roles": "Базата данни съдържа %1 роли", + "Edit Role": "Промени Роля", + "admin, school, family, etc": "администратор,училище,семейство и т.н.", + "Permissions": "Права", + "Are you sure you want to delete: ": "Потвърдете изтриването", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Всяка роля ще има 1 или повече права. В * правото е маска, правата са йерархия използвайки : като разделител", + "Add new Role": "Добавете нова роля", + "Roles - Groups of People, Devices, etc": "Роли - Група хора,устройства,т.н.", + "Edit this role": "Промени тази роля", + "Admin authorized": "Оторизиран като администратор", + "Subjects - People, Devices, etc": "Субекти - Хора,Устройства,т.н.", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Всеки обект ще има уникален ключ за достъп и 1 или повече роли. Кликнете върху ключа за достъп, за да отворите нов изглед с избрания обект, тази секретна връзка може след това да се споделя", + "Add new Subject": "Добави нов субект", + "Unable to %1 Subject": "Невъзможно %1 субект", + "Unable to delete Subject": "Невъзможно изтриването на субекта", + "Database contains %1 subjects": "Базата данни съдържа %1 субекти", + "Edit Subject": "Промени субект", + "person, device, etc": "човек,устройство,т.н.", + "role1, role2": "Роля1, Роля2", + "Edit this subject": "Промени този субект", + "Delete this subject": "Изтрий този субект", + "Roles": "Роли", + "Access Token": "Ключ за достъп", + "hour ago": "Преди час", + "hours ago": "Преди часове", + "Silence for %1 minutes": "Заглушаване за %1 минути", + "Check BG": "Проверка КЗ", + "BASAL": "Базал", + "Current basal": "Актуален базал", + "Sensitivity": "Инсулинова чувствителност (ISF)", + "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", + "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": "Излишният инсулин %1U е повече от необходимия за достигане до долната граница, ВХ не се вземат под внимание", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Излишният инсулин %1U е повече от необходимия за достигане до долната граница, ПРОВЕРИ ДАЛИ IOB СЕ ПОКРИВА ОТ ВЪГЛЕХИДРАТИТЕ", + "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U намаляне е необходимо в активния инсулин до достигане до долната граница, прекалено висок базал?", + "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": "ВС", + "COB": "АВХ", + "Last Carbs": "Последни ВХ", + "IAGE": "ИнсСрок", + "Insulin reservoir change overdue!": "Смянатата на резервоара просрочена", + "Time to change insulin reservoir": "Време е за смяна на резервоара", + "Change insulin reservoir soon": "Смени резервоара скоро", + "Insulin reservoir age %1 hours": "Резервоарът е на %1 часа", + "Changed": "Сменен", + "IOB": "АИ", + "Careportal IOB": "АИ от Кеърпортал", + "Last Bolus": "Последен болус", + "Basal IOB": "Базален АИ", + "Source": "Източник", + "Stale data, check rig?": "Стари данни, провери телефона", + "Last received:": "Последно получени", + "%1m ago": "преди %1 мин.", + "%1h ago": "преди %1 час", + "%1d ago": "преди %1 ден", + "RETRO": "РЕТРО", + "SAGE": "ВС", + "Sensor change/restart overdue!": "Смяната/рестартът на сензора са пресрочени", + "Time to change/restart sensor": "Време за смяна/рестарт на сензора", + "Change/restart sensor soon": "Смени/рестартирай сензора скоро", + "Sensor age %1 days %2 hours": "Сензорът е на %1 дни %2 часа ", + "Sensor Insert": "Поставяне на сензора", + "Sensor Start": "Стартиране на сензора", + "days": "дни", + "Insulin distribution": "разпределение на инсулина", + "To see this report, press SHOW while in this view": "За да видите тази статистика, натиснете ПОКАЖИ", + "AR2 Forecast": "AR2 прогнози", + "OpenAPS Forecasts": "OpenAPS прогнози", + "Temporary Target": "временна цел", + "Temporary Target Cancel": "Отмяна на временна цел", + "OpenAPS Offline": "OpenAPS спрян", + "Profiles": "Профили", + "Time in fluctuation": "Време в промяна", + "Time in rapid fluctuation": "Време в бърза промяна", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Това е само грубо изчисление, което може да е много неточно и не изключва реалния кръвен тест. Формулата, кокято е използвана е взета от:", + "Filter by hours": "Филтър по часове", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Време в промяна и време в бърза промяна измерват % от време в разгледания период, през който КЗ са се променяли бързо или много бързо. По-ниски стойности са по-добри.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Средната дневна промяна е сумата на всички промени в стойностите на КЗ за разгледания период, разделена на броя дни в периода. По-ниската стойност е по-добра", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Средната промяна за час е сумата на всички промени в стойностите на КЗ за разгледания период, разделена на броя часове в периода. По-ниската стойност е по-добра", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">тук.", + "Mean Total Daily Change": "Средна промяна за ден", + "Mean Hourly Change": "Средна промяна за час", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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 současný bazál je %2 jednotek za hodinu", + "virtAsstBasalTemp": "%1 dočasný bazál %2 jednotek za hodinu skončí %3", + "virtAsstIob": "a máte %1 jednotek aktivního inzulínu.", + "virtAsstIobIntent": "Máte %1 jednotek aktivního inzulínu", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Мазнини [гр]", + "Protein [g]": "Протеини [гр]", + "Energy [kJ]": "Енергия [kJ]", + "Clock Views:": "Часовник изглед:", + "Clock": "Часовник", + "Color": "Цвят", + "Simple": "Прост", + "TDD average": "Обща дневна доза средно", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Въглехидрати средно", + "Eating Soon": "Преди хранене", + "Last entry {0} minutes ago": "Последен запис преди {0} минути", + "change": "промяна", + "Speech": "Глас", + "Target Top": "Горна граница", + "Target Bottom": "Долна граница", + "Canceled": "Отказан", + "Meter BG": "Измерена КЗ", + "predicted": "прогнозна", + "future": "бъдеще", + "ago": "преди", + "Last data received": "Последни данни преди", + "Clock View": "Изглед часовник", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/cs_CZ.json b/translations/cs_CZ.json new file mode 100644 index 00000000000..0c552f45399 --- /dev/null +++ b/translations/cs_CZ.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Poslouchám na portu", + "Mo": "Po", + "Tu": "Út", + "We": "St", + "Th": "Čt", + "Fr": "Pá", + "Sa": "So", + "Su": "Ne", + "Monday": "Pondělí", + "Tuesday": "Úterý", + "Wednesday": "Středa", + "Thursday": "Čtvrtek", + "Friday": "Pátek", + "Saturday": "Sobota", + "Sunday": "Neděle", + "Category": "Kategorie", + "Subcategory": "Podkategorie", + "Name": "Jméno", + "Today": "Dnes", + "Last 2 days": "Poslední 2 dny", + "Last 3 days": "Poslední 3 dny", + "Last week": "Poslední týden", + "Last 2 weeks": "Poslední 2 týdny", + "Last month": "Poslední měsíc", + "Last 3 months": "Poslední 3 měsíce", + "between": "between", + "around": "around", + "and": "and", + "From": "Od", + "To": "Do", + "Notes": "Poznámky", + "Food": "Jídlo", + "Insulin": "Inzulín", + "Carbs": "Sacharidy", + "Notes contain": "Poznámky obsahují", + "Target BG range bottom": "Cílová glykémie spodní", + "top": "horní", + "Show": "Zobraz", + "Display": "Zobraz", + "Loading": "Nahrávám", + "Loading profile": "Nahrávám profil", + "Loading status": "Nahrávám status", + "Loading food database": "Nahrávám databázi jídel", + "not displayed": "není zobrazeno", + "Loading CGM data of": "Nahrávám CGM data", + "Loading treatments data of": "Nahrávám data ošetření", + "Processing data of": "Zpracovávám data", + "Portion": "Porce", + "Size": "Rozměr", + "(none)": "(Žádný)", + "None": "Žádný", + "": "<Žádný>", + "Result is empty": "Prázdný výsledek", + "Day to day": "Den po dni", + "Week to week": "Week to week", + "Daily Stats": "Denní statistiky", + "Percentile Chart": "Percentil", + "Distribution": "Rozložení", + "Hourly stats": "Statistika po hodinách", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "Statistika po týdnech", + "No data available": "Žádná dostupná data", + "Low": "Nízká", + "In Range": "V rozsahu", + "Period": "Období", + "High": "Vysoká", + "Average": "Průměr", + "Low Quartile": "Nízký kvartil", + "Upper Quartile": "Vysoký kvartil", + "Quartile": "Kvartil", + "Date": "Datum", + "Normal": "Normální", + "Median": "Medián", + "Readings": "Záznamů", + "StDev": "Směrodatná odchylka", + "Daily stats report": "Denní statistiky", + "Glucose Percentile report": "Tabulka percentil glykémií", + "Glucose distribution": "Rozložení glykémií", + "days total": "dní celkem", + "Total per day": "dní celkem", + "Overall": "Celkem", + "Range": "Rozsah", + "% of Readings": "% záznamů", + "# of Readings": "počet záznamů", + "Mean": "Střední hodnota", + "Standard Deviation": "Standardní odchylka", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Předpokládané HBA1c*", + "Weekly Success": "Týdenní úspěšnost", + "There is not sufficient data to run this report. Select more days.": "Není dostatek dat. Vyberte delší časové období.", + "Using stored API secret hash": "Používám uložený hash API hesla", + "No API secret hash stored yet. You need to enter API secret.": "Není uložený žádný hash API hesla. Musíte zadat API heslo.", + "Database loaded": "Databáze načtena", + "Error: Database failed to load": "Chyba při načítání databáze", + "Error": "Error", + "Create new record": "Vytvořit nový záznam", + "Save record": "Uložit záznam", + "Portions": "Porcí", + "Unit": "Jedn", + "GI": "GI", + "Edit record": "Upravit záznam", + "Delete record": "Smazat záznam", + "Move to the top": "Přesuň na začátek", + "Hidden": "Skrytý", + "Hide after use": "Skryj po použití", + "Your API secret must be at least 12 characters long": "Vaše API heslo musí mít alespoň 12 znaků", + "Bad API secret": "Chybné API heslo", + "API secret hash stored": "Hash API hesla uložen", + "Status": "Status", + "Not loaded": "Nenačtený", + "Food Editor": "Editor jídel", + "Your database": "Vaše databáze", + "Filter": "Filtr", + "Save": "Ulož", + "Clear": "Vymaž", + "Record": "Záznam", + "Quick picks": "Rychlý výběr", + "Show hidden": "Zobraz skryté", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Ošetření", + "Time": "Čas", + "Event Type": "Typ události", + "Blood Glucose": "Glykémie", + "Entered By": "Zadal", + "Delete this treatment?": "Vymazat toto ošetření?", + "Carbs Given": "Sacharidů", + "Inzulin Given": "Inzulínu", + "Event Time": "Čas události", + "Please verify that the data entered is correct": "Prosím zkontrolujte, zda jsou údaje zadány správně", + "BG": "Glykémie", + "Use BG correction in calculation": "Použij korekci na glykémii", + "BG from CGM (autoupdated)": "Glykémie z CGM (automaticky aktualizovaná)", + "BG from meter": "Glykémie z glukoměru", + "Manual BG": "Ručně zadaná glykémie", + "Quickpick": "Rychlý výběr", + "or": "nebo", + "Add from database": "Přidat z databáze", + "Use carbs correction in calculation": "Použij korekci na sacharidy", + "Use COB correction in calculation": "Použij korekci na COB", + "Use IOB in calculation": "Použij IOB ve výpočtu", + "Other correction": "Jiná korekce", + "Rounding": "Zaokrouhlení", + "Enter insulin correction in treatment": "Zahrň inzulín do záznamu ošetření", + "Insulin needed": "Potřebný inzulín", + "Carbs needed": "Potřebné sach", + "Carbs needed if Insulin total is negative value": "Chybějící sacharidy v případě, že výsledek je záporný", + "Basal rate": "Bazál", + "60 minutes earlier": "60 min předem", + "45 minutes earlier": "45 min předem", + "30 minutes earlier": "30 min předem", + "20 minutes earlier": "20 min předem", + "15 minutes earlier": "15 min předem", + "Time in minutes": "Čas v minutách", + "15 minutes later": "15 min po", + "20 minutes later": "20 min po", + "30 minutes later": "30 min po", + "45 minutes later": "45 min po", + "60 minutes later": "60 min po", + "Additional Notes, Comments": "Dalši poznámky, komentáře", + "RETRO MODE": "V MINULOSTI", + "Now": "Nyní", + "Other": "Jiný", + "Submit Form": "Odeslat formulář", + "Profile Editor": "Editor profilu", + "Reports": "Výkazy", + "Add food from your database": "Přidat jidlo z Vaší databáze", + "Reload database": "Znovu nahraj databázi", + "Add": "Přidej", + "Unauthorized": "Neautorizováno", + "Entering record failed": "Vložení záznamu selhalo", + "Device authenticated": "Zařízení ověřeno", + "Device not authenticated": "Zařízení není ověřeno", + "Authentication status": "Stav ověření", + "Authenticate": "Ověřit", + "Remove": "Vymazat", + "Your device is not authenticated yet": "Toto zařízení nebylo dosud ověřeno", + "Sensor": "Senzor", + "Finger": "Glukoměr", + "Manual": "Ručně", + "Scale": "Měřítko", + "Linear": "Lineární", + "Logarithmic": "Logaritmické", + "Logarithmic (Dynamic)": "Logaritmické (Dynamické)", + "Insulin-on-Board": "IOB", + "Carbs-on-Board": "COB", + "Bolus Wizard Preview": "BWP-Náhled bolusového kalk.", + "Value Loaded": "Hodnoty načteny", + "Cannula Age": "CAGE-Stáří kanyly", + "Basal Profile": "Bazál", + "Silence for 30 minutes": "Ztlumit na 30 minut", + "Silence for 60 minutes": "Ztlumit na 60 minut", + "Silence for 90 minutes": "Ztlumit na 90 minut", + "Silence for 120 minutes": "Ztlumit na 120 minut", + "Settings": "Nastavení", + "Units": "Jednotky", + "Date format": "Formát datumu", + "12 hours": "12 hodin", + "24 hours": "24 hodin", + "Log a Treatment": "Záznam ošetření", + "BG Check": "Kontrola glykémie", + "Meal Bolus": "Bolus na jídlo", + "Snack Bolus": "Bolus na svačinu", + "Correction Bolus": "Bolus na glykémii", + "Carb Correction": "Přídavek sacharidů", + "Note": "Poznámka", + "Question": "Otázka", + "Exercise": "Cvičení", + "Pump Site Change": "Výměna setu", + "CGM Sensor Start": "Spuštění sensoru", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Výměna sensoru", + "Dexcom Sensor Start": "Spuštění sensoru", + "Dexcom Sensor Change": "Výměna sensoru", + "Insulin Cartridge Change": "Výměna inzulínu", + "D.A.D. Alert": "D.A.D. Alert", + "Glucose Reading": "Hodnota glykémie", + "Measurement Method": "Metoda měření", + "Meter": "Glukoměr", + "Insulin Given": "Inzulín", + "Amount in grams": "Množství v gramech", + "Amount in units": "Množství v jednotkách", + "View all treatments": "Zobraz všechny ošetření", + "Enable Alarms": "Povolit alarmy", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "Při povoleném alarmu zní zvuk", + "Urgent High Alarm": "Urgentní vysoká glykémie", + "High Alarm": "Vysoká glykémie", + "Low Alarm": "Nízká glykémie", + "Urgent Low Alarm": "Urgentní nízká glykémie", + "Stale Data: Warn": "Zastaralá data", + "Stale Data: Urgent": "Zastaralá data urgentní", + "mins": "min", + "Night Mode": "Noční mód", + "When enabled the page will be dimmed from 10pm - 6am.": "Když je povoleno, obrazovka je ztlumena 22:00 - 6:00", + "Enable": "Povoleno", + "Show Raw BG Data": "Zobraz RAW data", + "Never": "Nikdy", + "Always": "Vždy", + "When there is noise": "Při šumu", + "When enabled small white dots will be displayed for raw BG data": "Když je povoleno, malé tečky budou zobrazeny pro RAW data", + "Custom Title": "Vlastní název stránky", + "Theme": "Téma", + "Default": "Výchozí", + "Colors": "Barevné", + "Colorblind-friendly colors": "Pro barvoslepé", + "Reset, and use defaults": "Vymaž a nastav výchozí hodnoty", + "Calibrations": "Kalibrace", + "Alarm Test / Smartphone Enable": "Test alarmu", + "Bolus Wizard": "Bolusový kalkulátor", + "in the future": "v budoucnosti", + "time ago": "min zpět", + "hr ago": "hod zpět", + "hrs ago": "hod zpět", + "min ago": "min zpět", + "mins ago": "min zpět", + "day ago": "den zpět", + "days ago": "dnů zpět", + "long ago": "dlouho zpět", + "Clean": "Čistý", + "Light": "Lehký", + "Medium": "Střední", + "Heavy": "Velký", + "Treatment type": "Typ ošetření", + "Raw BG": "Glykémie z RAW dat", + "Device": "Zařízení", + "Noise": "Šum", + "Calibration": "Kalibrace", + "Show Plugins": "Zobrazuj pluginy", + "About": "O aplikaci", + "Value in": "Hodnota v", + "Carb Time": "Čas jídla", + "Language": "Jazyk", + "Add new": "Přidat nový", + "g": "g", + "ml": "ml", + "pcs": "ks", + "Drag&drop food here": "Sem táhni & pusť jídlo", + "Care Portal": "Portál ošetření", + "Medium/Unknown": "Střední/Neznámá", + "IN THE FUTURE": "V BUDOUCNOSTI", + "Update": "Aktualizovat", + "Order": "Pořadí", + "oldest on top": "nejstarší nahoře", + "newest on top": "nejnovější nahoře", + "All sensor events": "Všechny události sensoru", + "Remove future items from mongo database": "Odebrání položek v budoucnosti z Mongo databáze", + "Find and remove treatments in the future": "Najít a odstranit záznamy ošetření v budoucnosti", + "This task find and remove treatments in the future.": "Tento úkol najde a odstraní ošetření v budoucnosti.", + "Remove treatments in the future": "Odstraň ošetření v budoucnosti", + "Find and remove entries in the future": "Najít a odstranit CGM data v budoucnosti", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Tento úkol najde a odstraní CGM data v budoucnosti vzniklé špatně nastaveným datem v uploaderu.", + "Remove entries in the future": "Odstraň CGM data v budoucnosti", + "Loading database ...": "Nahrávám databázi ...", + "Database contains %1 future records": "Databáze obsahuje %1 záznamů v budoucnosti", + "Remove %1 selected records?": "Odstranit %1 vybraných záznamů", + "Error loading database": "Chyba při nahrávání databáze", + "Record %1 removed ...": "Záznam %1 odstraněn ...", + "Error removing record %1": "Chyba při odstaňování záznamu %1", + "Deleting records ...": "Odstraňování záznamů ...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Vyčištění Mongo databáze statusů", + "Delete all documents from devicestatus collection": "Odstranění všech záznamů z kolekce devicestatus", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Tento úkol odstraní všechny dokumenty z kolekce devicestatus. Je to vhodné udělat, pokud se ukazatel stavu baterie neobnovuje správně.", + "Delete all documents": "Odstranit všechny dokumenty", + "Delete all documents from devicestatus collection?": "Odstranit všechny dokumenty z kolekce devicestatus?", + "Database contains %1 records": "Databáze obsahuje %1 záznamů", + "All records removed ...": "Všechny záznamy odstraněny ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Nástroje pro správu", + "Nightscout reporting": "Nightscout - Výkazy", + "Cancel": "Zrušit", + "Edit treatment": "Upravit ošetření", + "Duration": "Doba trvání", + "Duration in minutes": "Doba trvání v minutách", + "Temp Basal": "Dočasný bazál", + "Temp Basal Start": "Dočasný bazál začátek", + "Temp Basal End": "Dočasný bazál konec", + "Percent": "Procenta", + "Basal change in %": "Změna bazálu v %", + "Basal value": "Hodnota bazálu", + "Absolute basal value": "Hodnota bazálu", + "Announcement": "Oznámení", + "Loading temp basal data": "Nahrávám dočasné bazály", + "Save current record before changing to new?": "Uložit současný záznam před změnou na nový?", + "Profile Switch": "Přepnutí profilu", + "Profile": "Profil", + "General profile settings": "Obecná nastavení profilu", + "Title": "Název", + "Database records": "Záznamy v databázi", + "Add new record": "Přidat nový záznam", + "Remove this record": "Vymazat tento záznam", + "Clone this record to new": "Zkopíruj tento záznam do nového", + "Record valid from": "Záznam platný od", + "Stored profiles": "Uložené profily", + "Timezone": "Časová zóna", + "Duration of Insulin Activity (DIA)": "Doba působnosti inzulínu (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.": "Představuje typickou dobu, po kterou inzulín působí. Bývá různá podle pacienta a inzulínu. Typicky 3-4 hodiny pro pacienty s pumpou.", + "Insulin to carb ratio (I:C)": "Inzulíno-sacharidový poměr (I:C).", + "Hours:": "Hodin:", + "hours": "hodin", + "g/hour": "g/hod", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "gramy na jednotku inzulínu. Poměr, jaké množství sacharidů pokryje jednotku inzulínu.", + "Insulin Sensitivity Factor (ISF)": "Citlivost inzulínu (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL nebo mmol/L na jednotku inzulínu. Poměr, jak se změní glykémie po podaní jednotky inzulínu", + "Carbs activity / absorption rate": "Rychlost absorbce sacharidů", + "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).": "gramy za jednotku času. Reprezentuje jak změnu COB za jednoku času, tak množství sacharidů, které se za tu dobu projevily. Křivka absorbce sacharidů je mnohem méně pochopitelná než IOB, ale může být aproximována počáteční pauzou následovanou konstantní hodnotou absorbce (g/hod).", + "Basal rates [unit/hour]": "Bazály [U/hod].", + "Target BG range [mg/dL,mmol/L]": "Cílový rozsah glykémií [mg/dL,mmol/L]", + "Start of record validity": "Začátek platnosti záznamu", + "Icicle": "Rampouch", + "Render Basal": "Zobrazení bazálu", + "Profile used": "Použitý profil", + "Calculation is in target range.": "Kalkulace je v cílovém rozsahu.", + "Loading profile records ...": "Nahrávám profily ...", + "Values loaded.": "Data nahrána.", + "Default values used.": "Použity výchozí hodnoty.", + "Error. Default values used.": "CHYBA: Použity výchozí hodnoty.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Rozsahy časů pro limity glykémií si neodpovídají. Budou nastaveny výchozí hodnoty.", + "Valid from:": "Platné od:", + "Save current record before switching to new?": "Uložit současný záznam před přepnutím na nový?", + "Add new interval before": "Přidat nový interval před", + "Delete interval": "Smazat interval", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Kombinovaný bolus", + "Difference": "Rozdíl", + "New time": "Nový čas", + "Edit Mode": "Editační mód", + "When enabled icon to start edit mode is visible": "Pokud je povoleno, ikona pro vstup do editačního módu je zobrazena", + "Operation": "Operace", + "Move": "Přesunout", + "Delete": "Odstranit", + "Move insulin": "Přesunout inzulín", + "Move carbs": "Přesunout sacharidy", + "Remove insulin": "Odstranit inzulín", + "Remove carbs": "Odstranit sacharidy", + "Change treatment time to %1 ?": "Změnit čas ošetření na %1 ?", + "Change carbs time to %1 ?": "Změnit čas sacharidů na %1 ?", + "Change insulin time to %1 ?": "Změnit čas inzulínu na %1 ?", + "Remove treatment ?": "Odstranit ošetření ?", + "Remove insulin from treatment ?": "Odstranit inzulín z ošetření ?", + "Remove carbs from treatment ?": "Odstranit sacharidy z ošetření ?", + "Rendering": "Vykresluji", + "Loading OpenAPS data of": "Nahrávám OpenAPS data z", + "Loading profile switch data": "Nahrávám data přepnutí profilu", + "Redirecting you to the Profile Editor to create a new profile.": "Chybě nastavený profil.\nNení definovaný žádný platný profil k času zobrazení.\nProvádím přesměrování na editor profilu.", + "Pump": "Pumpa", + "Sensor Age": "Stáří senzoru (SAGE)", + "Insulin Age": "Stáří inzulínu (IAGE)", + "Temporary target": "Dočasný cíl", + "Reason": "Důvod", + "Eating soon": "Následuje jídlo", + "Top": "Horní", + "Bottom": "Dolní", + "Activity": "Aktivita", + "Targets": "Cíl", + "Bolus insulin:": "Bolusový inzulín:", + "Base basal insulin:": "Základní bazální inzulín:", + "Positive temp basal insulin:": "Pozitivní dočasný bazální inzulín:", + "Negative temp basal insulin:": "Negativní dočasný bazální inzulín:", + "Total basal insulin:": "Celkový bazální inzulín:", + "Total daily insulin:": "Celkový denní inzulín:", + "Unable to %1 Role": "Chyba volání %1 Role:", + "Unable to delete Role": "Nelze odstranit Roli:", + "Database contains %1 roles": "Databáze obsahuje %1 rolí", + "Edit Role": "Editovat roli", + "admin, school, family, etc": "administrátor, škola, rodina atd...", + "Permissions": "Oprávnění", + "Are you sure you want to delete: ": "Opravdu vymazat: ", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Každá role má 1 nebo více oprávnění. Oprávnění * je zástupný znak, oprávnění jsou hiearchie používající : jako oddělovač.", + "Add new Role": "Přidat novou roli", + "Roles - Groups of People, Devices, etc": "Role - Skupiny lidí, zařízení atd.", + "Edit this role": "Editovat tuto roli", + "Admin authorized": "Admin autorizován", + "Subjects - People, Devices, etc": "Subjekty - Lidé, zařízení atd.", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Každý subjekt má svůj unikátní token a 1 nebo více rolí. Klikem na přístupový token se otevře nové okno pro tento subjekt. Tento link je možné sdílet.", + "Add new Subject": "Přidat nový subjekt", + "Unable to %1 Subject": "Chyba volání %1 Subjektu:", + "Unable to delete Subject": "Nelze odstranit Subjekt:", + "Database contains %1 subjects": "Databáze obsahuje %1 subjektů", + "Edit Subject": "Editovat subjekt", + "person, device, etc": "osoba, zařízeni atd.", + "role1, role2": "role1, role2", + "Edit this subject": "Editovat tento subjekt", + "Delete this subject": "Smazat tento subjekt", + "Roles": "Role", + "Access Token": "Přístupový token", + "hour ago": "hodina zpět", + "hours ago": "hodin zpět", + "Silence for %1 minutes": "Ztlumit na %1 minut", + "Check BG": "Zkontrolovat glykémii", + "BASAL": "BAZÁL", + "Current basal": "Současný bazál", + "Sensitivity": "Citlivost (ISF)", + "Current Carb Ratio": "Sacharidový poměr (I:C)", + "Basal timezone": "Časová zóna", + "Active profile": "Aktivní profil", + "Active temp basal": "Aktivní dočasný bazál", + "Active temp basal start": "Začátek dočasného bazálu", + "Active temp basal duration": "Trvání dočasného bazálu", + "Active temp basal remaining": "Zbývající dočasný bazál", + "Basal profile value": "Základní hodnota bazálu", + "Active combo bolus": "Aktivní kombinovaný bolus", + "Active combo bolus start": "Začátek kombinovaného bolusu", + "Active combo bolus duration": "Trvání kombinovaného bolusu", + "Active combo bolus remaining": "Zbývající kombinovaný bolus", + "BG Delta": "Změna glykémie", + "Elapsed Time": "Dosažený čas", + "Absolute Delta": "Absolutní rozdíl", + "Interpolated": "Interpolováno", + "BWP": "KALK", + "Urgent": "Urgentní", + "Warning": "Varování", + "Info": "Informativní", + "Lowest": "Nejnižší", + "Snoozing high alarm since there is enough IOB": "Vypínání alarmu vyskoké glykémie, protože je dostatek IOB", + "Check BG, time to bolus?": "Zkontrolovat glykémii, čas na bolus?", + "Notice": "Poznámka", + "required info missing": "chybějící informace", + "Insulin on Board": "Aktivní inzulín", + "Current target": "Aktuální cílová hodnota", + "Expected effect": "Očekávaný efekt", + "Expected outcome": "Očekávaný výsledek", + "Carb Equivalent": "Ekvivalent v sacharidech", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Nadbytek inzulínu: o %1U více, než na dosažení spodní hranice cíle. Nepočítáno se sacharidy.", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Nadbytek inzulínu: o %1U více, než na dosažení spodní hranice cíle. UJISTĚTE SE, ŽE JE TO POKRYTO SACHARIDY", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Nutné snížení aktivního inzulínu o %1U k dosažení spodního cíle. Příliž mnoho bazálu?", + "basal adjustment out of range, give carbs?": "úprava změnou bazálu není možná. Podat sacharidy?", + "basal adjustment out of range, give bolus?": "úprava změnou bazálu není možná. Podat bolus?", + "above high": "nad horním", + "below low": "pod spodním", + "Projected BG %1 target": "Předpokládaná glykémie %1 cílem", + "aiming at": "s cílem", + "Bolus %1 units": "Bolus %1 jednotek", + "or adjust basal": "nebo úprava bazálu", + "Check BG using glucometer before correcting!": "Před korekcí zkontrolujte glukometrem glykémii!", + "Basal reduction to account %1 units:": "Úprava bazálu pro náhradu bolusu %1 U ", + "30m temp basal": "30ti minutový dočasný bazál", + "1h temp basal": "hodinový dočasný bazál", + "Cannula change overdue!": "Čas na výměnu set vypršel!", + "Time to change cannula": "Čas na výměnu setu", + "Change cannula soon": "Blíží se čas na výměnu setu", + "Cannula age %1 hours": "Stáří setu %1 hodin", + "Inserted": "Nasazený", + "CAGE": "SET", + "COB": "SACH", + "Last Carbs": "Poslední sacharidy", + "IAGE": "INZ", + "Insulin reservoir change overdue!": "Čas na výměnu zásobníku vypršel!", + "Time to change insulin reservoir": "Čas na výměnu zásobníku", + "Change insulin reservoir soon": "Blíží se čas na výměnu zásobníku", + "Insulin reservoir age %1 hours": "Stáří zásobníku %1 hodin", + "Changed": "Vyměněno", + "IOB": "IOB", + "Careportal IOB": "IOB z ošetření", + "Last Bolus": "Poslední bolus", + "Basal IOB": "IOB z bazálů", + "Source": "Zdroj", + "Stale data, check rig?": "Zastaralá data, zkontrolovat mobil?", + "Last received:": "Naposledy přijato:", + "%1m ago": "%1m zpět", + "%1h ago": "%1h zpět", + "%1d ago": "%1d zpět", + "RETRO": "RETRO", + "SAGE": "SENZ", + "Sensor change/restart overdue!": "Čas na výměnu senzoru vypršel!", + "Time to change/restart sensor": "Čas na výměnu senzoru", + "Change/restart sensor soon": "Blíží se čas na výměnu senzoru", + "Sensor age %1 days %2 hours": "Stáří senzoru %1 dní %2 hodin", + "Sensor Insert": "Výměna sensoru", + "Sensor Start": "Znovuspuštění sensoru", + "days": "dní", + "Insulin distribution": "Rozložení inzulínu", + "To see this report, press SHOW while in this view": "Pro zobrazení toho výkazu stiskněte Zobraz na této záložce", + "AR2 Forecast": "AR2 predikci", + "OpenAPS Forecasts": "OpenAPS predikci", + "Temporary Target": "Dočasný cíl glykémie", + "Temporary Target Cancel": "Dočasný cíl glykémie konec", + "OpenAPS Offline": "OpenAPS vypnuto", + "Profiles": "Profily", + "Time in fluctuation": "Doba měnící se glykémie", + "Time in rapid fluctuation": "Doba rychle se měnící glykémie", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Toto je pouze hrubý odhad, který může být nepřesný a nenahrazuje kontrolu z krve. Vzorec je převzatý z:", + "Filter by hours": " Filtr podle hodin", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Doba měnící se glykémie a rapidně se měnící glykémie měří % času ve zkoumaném období, během kterého se glykémie měnila relativně rychle nebo rapidně. Nižší hodnota je lepší.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Průměrná celková denní změna je součet absolutních hodnoty všech glykémií za sledované období, děleno počtem dní. Nižší hodnota je lepší.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Průměrná hodinová změna je součet absolutní hodnoty všech glykémií za sledované období, dělených počtem hodin v daném období. Nižší hodnota je lepší.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">zde.", + "Mean Total Daily Change": "Průměrná celková denní změna", + "Mean Hourly Change": "Průměrná hodinová změna", + "FortyFiveDown": "lehce dolů", + "FortyFiveUp": "lehce nahoru", + "Flat": "stabilní", + "SingleUp": "nahoru", + "SingleDown": "dolů", + "DoubleDown": "rychle dolů", + "DoubleUp": "rychle nahoru", + "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 %2 čas %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 jednotek", + "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstPreamble": "Vaše", + "virtAsstPreamble3person": "%1 má ", + "virtAsstNoInsulin": "žádný", + "virtAsstUploadBattery": "Baterie mobilu má %1", + "virtAsstReservoir": "V zásobníku zbývá %1 jednotek", + "virtAsstPumpBattery": "Baterie v pumpě má %1 %2", + "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstLastLoop": "Poslední úšpěšné provedení smyčky %1", + "virtAsstLoopNotAvailable": "Plugin smyčka není patrně povolený", + "virtAsstLoopForecastAround": "Podle přepovědi smyčky je očekávána glykémie around %1 během následujících %2", + "virtAsstLoopForecastBetween": "Podle přepovědi smyčky je očekávána glykémie between %1 and %2 během následujících %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": "S dostupnými daty přepověď není možná", + "virtAsstRawBG": "Raw glykémie je %1", + "virtAsstOpenAPSForecast": "OpenAPS Eventual BG je %1", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Tuk [g]", + "Protein [g]": "Proteiny [g]", + "Energy [kJ]": "Energie [kJ]", + "Clock Views:": "Hodiny:", + "Clock": "Hodiny", + "Color": "Barva", + "Simple": "Jednoduchý", + "TDD average": "Průměrná denní dávka", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Průměrné množství sacharidů", + "Eating Soon": "Blížící se jídlo", + "Last entry {0} minutes ago": "Poslední hodnota {0} minut zpět", + "change": "změna", + "Speech": "Hlas", + "Target Top": "Horní cíl", + "Target Bottom": "Dolní cíl", + "Canceled": "Zrušený", + "Meter BG": "Hodnota z glukoměru", + "predicted": "přepověď", + "future": "budoucnost", + "ago": "zpět", + "Last data received": "Poslední data přiajata", + "Clock View": "Hodiny", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/da_DK.json b/translations/da_DK.json new file mode 100644 index 00000000000..fcf693eb5e0 --- /dev/null +++ b/translations/da_DK.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Lytter på port", + "Mo": "Man", + "Tu": "Tir", + "We": "Ons", + "Th": "Tor", + "Fr": "Fre", + "Sa": "Lør", + "Su": "Søn", + "Monday": "Mandag", + "Tuesday": "Tirsdag", + "Wednesday": "Onsdag", + "Thursday": "Torsdag", + "Friday": "Fredag", + "Saturday": "Lørdag", + "Sunday": "Søndag", + "Category": "Kategori", + "Subcategory": "Underkategori", + "Name": "Navn", + "Today": "I dag", + "Last 2 days": "Sidste 2 dage", + "Last 3 days": "Sidste 3 dage", + "Last week": "Sidste uge", + "Last 2 weeks": "Sidste 2 uger", + "Last month": "Sidste måned", + "Last 3 months": "Sidste 3 måneder", + "between": "between", + "around": "around", + "and": "and", + "From": "Fra", + "To": "Til", + "Notes": "Noter", + "Food": "Mad", + "Insulin": "Insulin", + "Carbs": "Kulhydrater", + "Notes contain": "Noter indeholder", + "Target BG range bottom": "Nedre grænse for blodsukkerværdier", + "top": "Top", + "Show": "Vis", + "Display": "Vis", + "Loading": "Indlæser", + "Loading profile": "Indlæser profil", + "Loading status": "Indlæsnings status", + "Loading food database": "Indlæser mad database", + "not displayed": "Vises ikke", + "Loading CGM data of": "Indlæser CGM-data for", + "Loading treatments data of": "Indlæser behandlingsdata for", + "Processing data of": "Behandler data for", + "Portion": "Portion", + "Size": "Størrelse", + "(none)": "(ingen)", + "None": "Ingen", + "": "", + "Result is empty": "Tomt resultat", + "Day to day": "Dag til dag", + "Week to week": "Week to week", + "Daily Stats": "Daglig statistik", + "Percentile Chart": "Procentgraf", + "Distribution": "Distribution", + "Hourly stats": "Timestatistik", + "netIOB stats": "netIOB statistik", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "Uge resultat", + "No data available": "Mangler data", + "Low": "Lav", + "In Range": "Indenfor intervallet", + "Period": "Periode", + "High": "Høj", + "Average": "Gennemsnit", + "Low Quartile": "Nedre kvartil", + "Upper Quartile": "Øvre kvartil", + "Quartile": "Kvartil", + "Date": "Dato", + "Normal": "Normal", + "Median": "Median", + "Readings": "Aflæsninger", + "StDev": "Standard afvigelse", + "Daily stats report": "Daglig statistik rapport", + "Glucose Percentile report": "Glukoserapport i procent", + "Glucose distribution": "Glukosefordeling", + "days total": "antal dage", + "Total per day": "antal dage", + "Overall": "Gennemsnit", + "Range": "Interval", + "% of Readings": "% af aflæsningerne", + "# of Readings": "Antal aflæsninger", + "Mean": "Gennemsnit", + "Standard Deviation": "Standardafvigelse", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Beregnet A1c-værdi ", + "Weekly Success": "Uge resultat", + "There is not sufficient data to run this report. Select more days.": "Der er utilstrækkeligt data til at generere rapporten. Vælg flere dage.", + "Using stored API secret hash": "Anvender gemt API-nøgle", + "No API secret hash stored yet. You need to enter API secret.": "Mangler API-nøgle. Du skal indtaste API nøglen", + "Database loaded": "Database indlæst", + "Error: Database failed to load": "Fejl: Database kan ikke indlæses", + "Error": "Error", + "Create new record": "Opret ny post", + "Save record": "Gemmer post", + "Portions": "Portioner", + "Unit": "Enheder", + "GI": "GI", + "Edit record": "Rediger post", + "Delete record": "Slet post", + "Move to the top": "Gå til toppen", + "Hidden": "Skjult", + "Hide after use": "Skjul efter brug", + "Your API secret must be at least 12 characters long": "Din API nøgle skal være mindst 12 tegn lang", + "Bad API secret": "Forkert API-nøgle", + "API secret hash stored": "Hemmelig API-hash gemt", + "Status": "Status", + "Not loaded": "Ikke indlæst", + "Food Editor": "Mad editor", + "Your database": "Din database", + "Filter": "Filter", + "Save": "Gem", + "Clear": "Rense", + "Record": "Post", + "Quick picks": "Hurtig valg", + "Show hidden": "Vis skjulte", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Behandling", + "Time": "Tid", + "Event Type": "Hændelsestype", + "Blood Glucose": "Glukoseværdi", + "Entered By": "Indtastet af", + "Delete this treatment?": "Slet denne hændelse?", + "Carbs Given": "Antal kulhydrater", + "Inzulin Given": "Insulin", + "Event Time": "Tidspunkt for hændelsen", + "Please verify that the data entered is correct": "Venligst verificer at indtastet data er korrekt", + "BG": "BS", + "Use BG correction in calculation": "Anvend BS-korrektion i beregning", + "BG from CGM (autoupdated)": "BS fra CGM (automatisk)", + "BG from meter": "BS fra blodsukkerapperat", + "Manual BG": "Manuelt BS", + "Quickpick": "Hurtig valg", + "or": "eller", + "Add from database": "Tilføj fra database", + "Use carbs correction in calculation": "Benyt kulhydratkorrektion i beregning", + "Use COB correction in calculation": "Benyt aktive kulhydrater i beregning", + "Use IOB in calculation": "Benyt aktivt insulin i beregningen", + "Other correction": "Øvrig korrektion", + "Rounding": "Afrunding", + "Enter insulin correction in treatment": "Indtast insulinkorrektion", + "Insulin needed": "Insulin påkrævet", + "Carbs needed": "Kulhydrater påkrævet", + "Carbs needed if Insulin total is negative value": "Kulhydrater er nødvendige når total insulin mængde er negativ", + "Basal rate": "Basal rate", + "60 minutes earlier": "60 min tidligere", + "45 minutes earlier": "45 min tidligere", + "30 minutes earlier": "30 min tidigere", + "20 minutes earlier": "20 min tidligere", + "15 minutes earlier": "15 min tidligere", + "Time in minutes": "Tid i minutter", + "15 minutes later": "15 min senere", + "20 minutes later": "20 min senere", + "30 minutes later": "30 min senere", + "45 minutes later": "45 min senere", + "60 minutes later": "60 min senere", + "Additional Notes, Comments": "Ekstra noter, kommentarer", + "RETRO MODE": "Retro mode", + "Now": "Nu", + "Other": "Øvrige", + "Submit Form": "Gem hændelsen", + "Profile Editor": "Profil editor", + "Reports": "Rapporteringsværktøj", + "Add food from your database": "Tilføj mad fra din database", + "Reload database": "Genindlæs databasen", + "Add": "Tilføj", + "Unauthorized": "Uautoriseret", + "Entering record failed": "Tilføjelse af post fejlede", + "Device authenticated": "Enhed godkendt", + "Device not authenticated": "Enhed ikke godkendt", + "Authentication status": "Godkendelsesstatus", + "Authenticate": "Godkende", + "Remove": "Fjern", + "Your device is not authenticated yet": "Din enhed er ikke godkendt endnu", + "Sensor": "Sensor", + "Finger": "Finger", + "Manual": "Manuel", + "Scale": "Skala", + "Linear": "Lineær", + "Logarithmic": "Logaritmisk", + "Logarithmic (Dynamic)": "Logaritmisk (Dynamisk)", + "Insulin-on-Board": "Aktivt insulin (IOB)", + "Carbs-on-Board": "Aktive kulhydrater (COB)", + "Bolus Wizard Preview": "Bolus Wizard (BWP)", + "Value Loaded": "Værdi indlæst", + "Cannula Age": "Indstik alder (CAGE)", + "Basal Profile": "Basal profil", + "Silence for 30 minutes": "Stilhed i 30 min", + "Silence for 60 minutes": "Stilhed i 60 min", + "Silence for 90 minutes": "Stilhed i 90 min", + "Silence for 120 minutes": "Stilhed i 120 min", + "Settings": "Indstillinger", + "Units": "Enheder", + "Date format": "Dato format", + "12 hours": "12 timer", + "24 hours": "24 timer", + "Log a Treatment": "Log en hændelse", + "BG Check": "BS kontrol", + "Meal Bolus": "Måltidsbolus", + "Snack Bolus": "Mellemmåltidsbolus", + "Correction Bolus": "Korrektionsbolus", + "Carb Correction": "Kulhydratskorrektion", + "Note": "Note", + "Question": "Spørgsmål", + "Exercise": "Træning", + "Pump Site Change": "Skift insulin infusionssted", + "CGM Sensor Start": "Sensorstart", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Sensor ombytning", + "Dexcom Sensor Start": "Dexcom sensor start", + "Dexcom Sensor Change": "Dexcom sensor ombytning", + "Insulin Cartridge Change": "Skift insulin beholder", + "D.A.D. Alert": "Vuf Vuf! (Diabeteshundealarm!)", + "Glucose Reading": "Blodsukker aflæsning", + "Measurement Method": "Målemetode", + "Meter": "Blodsukkermåler", + "Insulin Given": "Insulin dosis", + "Amount in grams": "Antal gram", + "Amount in units": "Antal enheder", + "View all treatments": "Vis behandlinger", + "Enable Alarms": "Aktivere alarmer", + "Pump Battery Change": "Udskift pumpebatteri", + "Pump Battery Low Alarm": "Pumpebatteri lav Alarm", + "Pump Battery change overdue!": "Pumpebatteri skal skiftes!", + "When enabled an alarm may sound.": "Når aktiveret kan alarm lyde", + "Urgent High Alarm": "Kritisk høj grænse overskredet", + "High Alarm": "Høj grænse overskredet", + "Low Alarm": "Lav grænse overskredet", + "Urgent Low Alarm": "Advarsel: Lav", + "Stale Data: Warn": "Advarsel: Gamle data", + "Stale Data: Urgent": "Kritisk: Gamle data", + "mins": "min", + "Night Mode": "Nat tilstand", + "When enabled the page will be dimmed from 10pm - 6am.": "Når aktiveret vil denne side nedtones fra 22:00-6:00", + "Enable": "Aktivere", + "Show Raw BG Data": "Vis rå BS data", + "Never": "Aldrig", + "Always": "Altid", + "When there is noise": "Når der er støj", + "When enabled small white dots will be displayed for raw BG data": "Ved aktivering vil små hvide prikker blive vist for rå BG tal", + "Custom Title": "Valgfri titel", + "Theme": "Tema", + "Default": "Standard", + "Colors": "Farver", + "Colorblind-friendly colors": "Farveblindvenlige farver", + "Reset, and use defaults": "Returner til standardopsætning", + "Calibrations": "Kalibrering", + "Alarm Test / Smartphone Enable": "Alarm test / Smartphone aktiveret", + "Bolus Wizard": "Bolusberegner", + "in the future": "i fremtiden", + "time ago": "tid siden", + "hr ago": "time siden", + "hrs ago": "timer siden", + "min ago": "minut siden", + "mins ago": "minutter siden", + "day ago": "dag siden", + "days ago": "dage siden", + "long ago": "længe siden", + "Clean": "Rent", + "Light": "Let", + "Medium": "Middel", + "Heavy": "Meget", + "Treatment type": "Behandlingstype", + "Raw BG": "Råt BS", + "Device": "Enhed", + "Noise": "Støj", + "Calibration": "Kalibrering", + "Show Plugins": "Vis plugins", + "About": "Om", + "Value in": "Værdi i", + "Carb Time": "Kulhydratstid", + "Language": "Sprog", + "Add new": "Tilføj ny", + "g": "g", + "ml": "ml", + "pcs": "stk", + "Drag&drop food here": "Træk og slip mad her", + "Care Portal": "Omsorgsportal", + "Medium/Unknown": "Medium/Ukendt", + "IN THE FUTURE": "I fremtiden", + "Update": "Opdater", + "Order": "Sorter", + "oldest on top": "ældste først", + "newest on top": "nyeste først", + "All sensor events": "Alle sensorhændelser", + "Remove future items from mongo database": "Fjern fremtidige værdier fra mongo databasen", + "Find and remove treatments in the future": "Find og fjern fremtidige behandlinger", + "This task find and remove treatments in the future.": "Denne handling finder og fjerner fremtidige behandlinger.", + "Remove treatments in the future": "Fjern behandlinger i fremtiden", + "Find and remove entries in the future": "Find og fjern indgange i fremtiden", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Denne handling finder og fjerner CGM data i fremtiden forårsaget af indlæsning med forkert dato/tid.", + "Remove entries in the future": "Fjern indgange i fremtiden", + "Loading database ...": "Indlæser database ...", + "Database contains %1 future records": "Databasen indeholder %1 fremtidige indgange", + "Remove %1 selected records?": "Fjern %1 valgte indgange?", + "Error loading database": "Fejl ved indlæsning af database", + "Record %1 removed ...": "Indgang %1 fjernet ...", + "Error removing record %1": "Fejl ved fjernelse af indgang %1", + "Deleting records ...": "Sletter indgange ...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Slet Mongo status database", + "Delete all documents from devicestatus collection": "Fjerne alle dokumenter fra device status tabellen", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Denne handling fjerner alle dokumenter fra device status tabellen. Brugbart når uploader batteri status ikke opdateres korrekt.", + "Delete all documents": "Slet alle dokumenter", + "Delete all documents from devicestatus collection?": "Fjern alle dokumenter fra device status tabellen", + "Database contains %1 records": "Databasen indeholder %1 indgange", + "All records removed ...": "Alle hændelser fjernet ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Administrations værktøj", + "Nightscout reporting": "Nightscout - rapporter", + "Cancel": "Annuller", + "Edit treatment": "Rediger behandling", + "Duration": "Varighed", + "Duration in minutes": "Varighed i minutter", + "Temp Basal": "Midlertidig basal", + "Temp Basal Start": "Midlertidig basal start", + "Temp Basal End": "Midlertidig basal slut", + "Percent": "Procent", + "Basal change in %": "Basal ændring i %", + "Basal value": "Basalværdi", + "Absolute basal value": "Absolut basalværdi", + "Announcement": "Meddelelse", + "Loading temp basal data": "Indlæser midlertidig basal data", + "Save current record before changing to new?": "Gem aktuelle hændelse før der skiftes til ny?", + "Profile Switch": "Skift profil", + "Profile": "Profil", + "General profile settings": "Generelle profil indstillinger", + "Title": "Overskrift", + "Database records": "Database hændelser", + "Add new record": "Tilføj ny hændelse", + "Remove this record": "Remove this record", + "Clone this record to new": "Kopier denne hændelse til ny", + "Record valid from": "Hændelse gyldig fra", + "Stored profiles": "Gemte profiler", + "Timezone": "Tidszone", + "Duration of Insulin Activity (DIA)": "Varighed af insulin aktivitet (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.": "Representerer den typiske tid hvor insulinen virker. Varierer per patient og per insulin type. Typisk 3-4 timer for de fleste pumpe insulin og for de fleste patienter. Nogle gange kaldes dette også insulin-livs-tid.", + "Insulin to carb ratio (I:C)": "Insulin til kulhydrat forhold også kaldet Kulhydrat-insulinratio (I:C)", + "Hours:": "Timer:", + "hours": "timer", + "g/hour": "g/time", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "gram kulhydrater per enhed insulin. (Kulhydrat-insulinratio) Den mængde kulhydrat, som dækkes af en enhed insulin.", + "Insulin Sensitivity Factor (ISF)": "Insulinfølsomhedsfaktor (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dl eller mmol per enhed insulin. Beskriver hvor mange mmol eller mg/dl blodsukkeret sænkes per enhed insulin (Insulinfølsomheden)", + "Carbs activity / absorption rate": "Kulhydrattid / optagelsestid", + "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).": "gram per tidsenhed. Repræsentere både ændring i aktive kulhydrater per tidsenhed, samt mængden af kulhydrater der indtages i dette tidsrum. Kulhydratsoptag / aktivitetskurver er svære at forudse i forhold til aktiv insulin, men man kan lave en tilnærmet beregning, ved at inkludere en forsinkelse i beregningen, sammen med en konstant absorberingstid (g/time).", + "Basal rates [unit/hour]": "Basal [enhed/t]", + "Target BG range [mg/dL,mmol/L]": "Ønsket blodsukkerinterval [mg/dl,mmol]", + "Start of record validity": "Starttid for gyldighed", + "Icicle": "Istap", + "Render Basal": "Generer Basal", + "Profile used": "Profil brugt", + "Calculation is in target range.": "Beregning er i målområdet", + "Loading profile records ...": "Henter profildata ...", + "Values loaded.": "Værdier hentes", + "Default values used.": "Standardværdier brugt", + "Error. Default values used.": "Fejl. Standardværdier brugt.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Tidsinterval for målområde lav og høj stemmer ikke overens. Standardværdier er brugt", + "Valid from:": "Gyldig fra:", + "Save current record before switching to new?": "Gem nuværende data inden der skiftes til nyt?", + "Add new interval before": "Tilføj nyt interval før", + "Delete interval": "Slet interval", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Kombineret bolus", + "Difference": "Forskel", + "New time": "Ny tid", + "Edit Mode": "Redigerings tilstand", + "When enabled icon to start edit mode is visible": "Ikon vises når redigering er aktivt", + "Operation": "Operation", + "Move": "Flyt", + "Delete": "Slet", + "Move insulin": "Flyt insulin", + "Move carbs": "Flyt kulhydrater", + "Remove insulin": "Fjern insulin", + "Remove carbs": "Fjern kulhydrater", + "Change treatment time to %1 ?": "Ændre behandlingstid til %1 ?", + "Change carbs time to %1 ?": "Ændre kulhydratstid til %1 ?", + "Change insulin time to %1 ?": "Ændre insulintid til %1 ?", + "Remove treatment ?": "Fjern behandling ?", + "Remove insulin from treatment ?": "Fjern insulin fra behandling ?", + "Remove carbs from treatment ?": "Fjern kulhydrater fra behandling ?", + "Rendering": "Rendering", + "Loading OpenAPS data of": "Henter OpenAPS data for", + "Loading profile switch data": "Henter ny profildata", + "Redirecting you to the Profile Editor to create a new profile.": "Forkert profilindstilling.\nIngen profil defineret til at vise tid.\nOmdirigere til profil editoren for at lave en ny profil.", + "Pump": "Pumpe", + "Sensor Age": "Sensor alder (SAGE)", + "Insulin Age": "Insulinalder (IAGE)", + "Temporary target": "Midlertidig mål", + "Reason": "Årsag", + "Eating soon": "Spiser snart", + "Top": "Toppen", + "Bottom": "Bunden", + "Activity": "Aktivitet", + "Targets": "Mål", + "Bolus insulin:": "Bolusinsulin:", + "Base basal insulin:": "Basalinsulin:", + "Positive temp basal insulin:": "Positiv midlertidig basalinsulin:", + "Negative temp basal insulin:": "Negativ midlertidig basalinsulin:", + "Total basal insulin:": "Total daglig basalinsulin:", + "Total daily insulin:": "Total dagsdosis insulin", + "Unable to %1 Role": "Kan ikke slette %1 rolle", + "Unable to delete Role": "Kan ikke slette rolle", + "Database contains %1 roles": "Databasen indeholder %1 roller", + "Edit Role": "Rediger rolle", + "admin, school, family, etc": "Administrator, skole, familie, etc", + "Permissions": "Rettigheder", + "Are you sure you want to delete: ": "Er du sikker på at du vil slette:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Hver rolle vil have en eller flere rettigheder. Rollen * fungere som wildcard / joker, rettigheder sættes hierakisk med : som skilletegn.", + "Add new Role": "Tilføj ny rolle", + "Roles - Groups of People, Devices, etc": "Roller - Grupper af brugere, Enheder, etc", + "Edit this role": "Rediger denne rolle", + "Admin authorized": "Administrator godkendt", + "Subjects - People, Devices, etc": "Emner - Brugere, Enheder, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Hvert emne vil have en unik sikkerhedsnøgle samt en eller flere roller. Klik på sikkerhedsnøglen for at åbne et nyt view med det valgte emne, dette hemmelige link kan derefter blive delt.", + "Add new Subject": "Tilføj nye emner", + "Unable to %1 Subject": "Kan ikke %1 emne", + "Unable to delete Subject": "Kan ikke slette emne", + "Database contains %1 subjects": "Databasen indeholder %1 emner", + "Edit Subject": "Rediger emne", + "person, device, etc": "person, emne, etc", + "role1, role2": "Rolle1, Rolle2", + "Edit this subject": "Rediger emne", + "Delete this subject": "Fjern emne", + "Roles": "Roller", + "Access Token": "Sikkerhedsnøgle", + "hour ago": "time siden", + "hours ago": "timer sidan", + "Silence for %1 minutes": "Stilhed i %1 minutter", + "Check BG": "Kontroller blodsukker", + "BASAL": "BASAL", + "Current basal": "Nuværende basal", + "Sensitivity": "Insulinfølsomhed (ISF)", + "Current Carb Ratio": "Nuværende kulhydratratio", + "Basal timezone": "Basal tidszone", + "Active profile": "Aktiv profil", + "Active temp basal": "Aktiv midlertidig basal", + "Active temp basal start": "Aktiv midlertidig basal start", + "Active temp basal duration": "Aktiv midlertidig basal varighed", + "Active temp basal remaining": "Resterende tid for aktiv midlertidig basal", + "Basal profile value": "Basalprofil værdi", + "Active combo bolus": "Aktiv kombobolus", + "Active combo bolus start": "Aktiv kombibolus start", + "Active combo bolus duration": "Aktiv kombibolus varighed", + "Active combo bolus remaining": "Resterende aktiv kombibolus", + "BG Delta": "BS deltaværdi", + "Elapsed Time": "Forløbet tid", + "Absolute Delta": "Absolut deltaværdi", + "Interpolated": "Interpoleret", + "BWP": "Bolusberegner (BWP)", + "Urgent": "Akut", + "Warning": "Advarsel", + "Info": "Info", + "Lowest": "Laveste", + "Snoozing high alarm since there is enough IOB": "Udsætter høj alarm siden der er nok aktiv insulin (IOB)", + "Check BG, time to bolus?": "Kontroler BS, tid til en bolus?", + "Notice": "Note", + "required info missing": "nødvendig information mangler", + "Insulin on Board": "Aktivt insulin (IOB)", + "Current target": "Aktuelt mål", + "Expected effect": "Forventet effekt", + "Expected outcome": "Forventet udfald", + "Carb Equivalent": "Kulhydrat ækvivalent", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Overskud af insulin modsvarende %1U mere end nødvendigt for at nå lav mål, kulhydrater ikke medregnet", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Overskud af insulin modsvarande %1U mere end nødvendigt for at nå lav målværdi, VÆR SIKKER PÅ AT IOB ER DÆKKET IND AF KULHYDRATER", + "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U reduktion nødvendig i aktiv insulin for at nå lav mål, for meget basal?", + "basal adjustment out of range, give carbs?": "basalændring uden for grænseværdi, giv kulhydrater?", + "basal adjustment out of range, give bolus?": "basalændring udenfor grænseværdi, giv bolus?", + "above high": "over højt grænse", + "below low": "under lavt grænse", + "Projected BG %1 target": "Ønsket BS %1 mål", + "aiming at": "ønsket udfald", + "Bolus %1 units": "Bolus %1 enheder", + "or adjust basal": "eller juster basal", + "Check BG using glucometer before correcting!": "Kontrollere blodsukker med fingerprikker / blodsukkermåler før der korrigeres!", + "Basal reduction to account %1 units:": "Basalsænkning for at nå %1 enheder", + "30m temp basal": "30 minuters midlertidig basal", + "1h temp basal": "60 minutters midlertidig basal", + "Cannula change overdue!": "Tid for skift af Infusionssæt overskredet!", + "Time to change cannula": "Tid til at skifte infusionssæt", + "Change cannula soon": "Skift infusionssæt snart", + "Cannula age %1 hours": "Infusionssæt tid %1 timer", + "Inserted": "Isat", + "CAGE": "Indstik alder", + "COB": "COB", + "Last Carbs": "Seneste kulhydrater", + "IAGE": "Insulinalder", + "Insulin reservoir change overdue!": "Tid for skift af insulinreservoir overskredet!", + "Time to change insulin reservoir": "Tid til at skifte insulinreservoir", + "Change insulin reservoir soon": "Skift insulinreservoir snart", + "Insulin reservoir age %1 hours": "Insulinreservoiralder %1 timer", + "Changed": "Skiftet", + "IOB": "IOB", + "Careportal IOB": "IOB i Careportal", + "Last Bolus": "Seneste Bolus", + "Basal IOB": "Basal IOB", + "Source": "Kilde", + "Stale data, check rig?": "Gammel data, kontrollere uploader?", + "Last received:": "Senest modtaget:", + "%1m ago": "%1m siden", + "%1h ago": "%1t siden", + "%1d ago": "%1d siden", + "RETRO": "RETRO", + "SAGE": "Sensoralder", + "Sensor change/restart overdue!": "Sensor skift/genstart overskredet!", + "Time to change/restart sensor": "Tid til at skifte/genstarte sensor", + "Change/restart sensor soon": "Skift eller genstart sensor snart", + "Sensor age %1 days %2 hours": "Sensoralder %1 dage %2 timer", + "Sensor Insert": "Sensor isat", + "Sensor Start": "Sensor start", + "days": "dage", + "Insulin distribution": "Insulinfordeling", + "To see this report, press SHOW while in this view": "For at se denne rapport, klick på \"VIS\"", + "AR2 Forecast": "AR2 Forudsiglse", + "OpenAPS Forecasts": "OpenAPS Forudsiglse", + "Temporary Target": "Midlertidigt mål", + "Temporary Target Cancel": "Afslut midlertidigt mål", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "Profiler", + "Time in fluctuation": "Tid i fluktation", + "Time in rapid fluctuation": "Tid i hurtig fluktation", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Dette er kun en grov estimering som kan være misvisende. Det erstatter ikke en blodprøve. Formelen er hemtet fra:", + "Filter by hours": "Filtrer per time", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tid i fluktuation og tid i hurtig fluktuation måler % af tiden i den undersøgte periode, under vilket blodsukkret har ændret sig relativt hurtigt. Lavere værdier er bedre.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Middel Total Daglig Ændring er summen af absolutværdier af alla glukoseændringer i den undersøgte periode, divideret med antallet af dage. Lavere er bedre.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Middelværdier per time er summen af absolutværdier fra alle glukoseændringer i den undersøgte periode divideret med antallet af timer. Lavere er bedre.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">her.", + "Mean Total Daily Change": "Middel Total Daglig Ændring", + "Mean Hourly Change": "Middelværdier per time", + "FortyFiveDown": "svagt faldende", + "FortyFiveUp": "svagt stigende", + "Flat": "stabilt", + "SingleUp": "stigende", + "SingleDown": "faldende", + "DoubleDown": "hurtigt faldende", + "DoubleUp": "hurtigt stigende", + "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 og %2 af %3.", + "virtAsstBasal": "%1 nuværende basal er %2 enheder per time", + "virtAsstBasalTemp": "%1 midlertidig basal af %2 enheder per time stopper %3", + "virtAsstIob": "og du har %1 insulin i kroppen.", + "virtAsstIobIntent": "Du har %1 insulin i kroppen", + "virtAsstIobUnits": "%1 enheder af", + "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstPreamble": "Dine", + "virtAsstPreamble3person": "%1 har en ", + "virtAsstNoInsulin": "nej", + "virtAsstUploadBattery": "Din uploaders batteri er %1", + "virtAsstReservoir": "Du har %1 enheder tilbage", + "virtAsstPumpBattery": "Din pumpes batteri er %1 %2", + "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstLastLoop": "Seneste successfulde loop var %1", + "virtAsstLoopNotAvailable": "Loop plugin lader ikke til at være slået til", + "virtAsstLoopForecastAround": "Ifølge Loops forudsigelse forventes du at blive around %1 i den næste %2", + "virtAsstLoopForecastBetween": "Ifølge Loops forudsigelse forventes du at blive between %1 and %2 i den næste %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": "Det er ikke muligt at forudsige md de tilgængelige data", + "virtAsstRawBG": "Dit raw blodsukker er %1", + "virtAsstOpenAPSForecast": "OpenAPS forventet blodsukker er %1", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Fet [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energi [kJ]", + "Clock Views:": "Vis klokken:", + "Clock": "Klokken", + "Color": "Farve", + "Simple": "Simpel", + "TDD average": "Gennemsnitlig daglig mængde insulin", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Gennemsnitlig mængde kulhydrater per dag", + "Eating Soon": "Spiser snart", + "Last entry {0} minutes ago": "Seneste værdi {0} minutter siden", + "change": "ændre", + "Speech": "Tale", + "Target Top": "Højt mål", + "Target Bottom": "Lavt mål", + "Canceled": "Afbrudt", + "Meter BG": "Blodsukkermåler BS", + "predicted": "forudset", + "future": "fremtidige", + "ago": "siden", + "Last data received": "Sidste data modtaget", + "Clock View": "Vis klokken", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/de_DE.json b/translations/de_DE.json new file mode 100644 index 00000000000..392c3e5d650 --- /dev/null +++ b/translations/de_DE.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Lauscht auf Port", + "Mo": "Mo", + "Tu": "Di", + "We": "Mi", + "Th": "Do", + "Fr": "Fr", + "Sa": "Sa", + "Su": "So", + "Monday": "Montag", + "Tuesday": "Dienstag", + "Wednesday": "Mittwoch", + "Thursday": "Donnerstag", + "Friday": "Freitag", + "Saturday": "Samstag", + "Sunday": "Sonntag", + "Category": "Kategorie", + "Subcategory": "Unterkategorie", + "Name": "Name", + "Today": "Heute", + "Last 2 days": "Letzten 2 Tage", + "Last 3 days": "Letzten 3 Tage", + "Last week": "Letzte Woche", + "Last 2 weeks": "Letzten 2 Wochen", + "Last month": "Letzter Monat", + "Last 3 months": "Letzten 3 Monate", + "between": "between", + "around": "around", + "and": "and", + "From": "Von", + "To": "Bis", + "Notes": "Notiz", + "Food": "Ernährung", + "Insulin": "Insulin", + "Carbs": "Kohlenhydrate", + "Notes contain": "Notizen enthalten", + "Target BG range bottom": "Vorgabe unteres BG-Ziel", + "top": "oben", + "Show": "Zeigen", + "Display": "Anzeigen", + "Loading": "Laden", + "Loading profile": "Lade Profil", + "Loading status": "Lade Status", + "Loading food database": "Lade Ernährungs-Datenbank", + "not displayed": "nicht angezeigt", + "Loading CGM data of": "Lade CGM-Daten von", + "Loading treatments data of": "Lade Behandlungsdaten von", + "Processing data of": "Verarbeite Daten von", + "Portion": "Abschnitt", + "Size": "Größe", + "(none)": "(nichts)", + "None": "Nichts", + "": "", + "Result is empty": "Ergebnis ist leer", + "Day to day": "Von Tag zu Tag", + "Week to week": "Woche zu Woche", + "Daily Stats": "Tägliche Statistik", + "Percentile Chart": "Perzentil-Diagramm", + "Distribution": "Verteilung", + "Hourly stats": "Stündliche Statistik", + "netIOB stats": "netIOB Statistiken", + "temp basals must be rendered to display this report": "temporäre Basalraten müssen für diesen Report sichtbar sein", + "Weekly success": "Wöchentlicher Erfolg", + "No data available": "Keine Daten verfügbar", + "Low": "Tief", + "In Range": "Im Zielbereich", + "Period": "Zeitabschnitt", + "High": "Hoch", + "Average": "Mittelwert", + "Low Quartile": "Unteres Quartil", + "Upper Quartile": "Oberes Quartil", + "Quartile": "Quartil", + "Date": "Datum", + "Normal": "Normal", + "Median": "Median", + "Readings": "Messwerte", + "StDev": "Standardabweichung", + "Daily stats report": "Tagesstatistik Bericht", + "Glucose Percentile report": "Glukose-Perzentil Bericht", + "Glucose distribution": "Glukose Verteilung", + "days total": "Gesamttage", + "Total per day": "Gesamt pro Tag", + "Overall": "Insgesamt", + "Range": "Bereich", + "% of Readings": "% der Messwerte", + "# of Readings": "Anzahl der Messwerte", + "Mean": "Mittelwert", + "Standard Deviation": "Standardabweichung", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Einschätzung HbA1c*", + "Weekly Success": "Wöchtlicher Erfolg", + "There is not sufficient data to run this report. Select more days.": "Für diesen Bericht sind nicht genug Daten verfügbar. Bitte weitere Tage auswählen.", + "Using stored API secret hash": "Gespeicherte API-Prüfsumme verwenden", + "No API secret hash stored yet. You need to enter API secret.": "Keine API-Prüfsumme gespeichert. Bitte API-Prüfsumme eingeben.", + "Database loaded": "Datenbank geladen", + "Error: Database failed to load": "Fehler: Datenbank konnte nicht geladen werden", + "Error": "Error", + "Create new record": "Erstelle neuen Datensatz", + "Save record": "Speichere Datensatz", + "Portions": "Portionen", + "Unit": "Einheit", + "GI": "GI", + "Edit record": "Bearbeite Datensatz", + "Delete record": "Lösche Datensatz", + "Move to the top": "Gehe zum Anfang", + "Hidden": "Verborgen", + "Hide after use": "Verberge nach Gebrauch", + "Your API secret must be at least 12 characters long": "Deine API-Prüfsumme muss mindestens 12 Zeichen lang sein", + "Bad API secret": "Fehlerhafte API-Prüfsumme", + "API secret hash stored": "API-Prüfsumme gespeichert", + "Status": "Status", + "Not loaded": "Nicht geladen", + "Food Editor": "Nahrungsmittel-Editor", + "Your database": "Deine Datenbank", + "Filter": "Filter", + "Save": "Speichern", + "Clear": "Löschen", + "Record": "Datensatz", + "Quick picks": "Schnellauswahl", + "Show hidden": "Verborgenes zeigen", + "Your API secret or token": "Deine API-Prüfsumme oder Token", + "Remember this device. (Do not enable this on public computers.)": "An dieses Gerät erinnern. (Nicht auf öffentlichen Geräten verwenden)", + "Treatments": "Behandlungen", + "Time": "Zeit", + "Event Type": "Ereignis-Typ", + "Blood Glucose": "Blutglukose", + "Entered By": "Eingabe durch", + "Delete this treatment?": "Diese Behandlung löschen?", + "Carbs Given": "Kohlenhydratgabe", + "Inzulin Given": "Insulingabe", + "Event Time": "Ereignis-Zeit", + "Please verify that the data entered is correct": "Bitte Daten auf Plausibilität prüfen", + "BG": "BG", + "Use BG correction in calculation": "Verwende BG-Korrektur zur Kalkulation", + "BG from CGM (autoupdated)": "Blutglukose vom CGM (Auto-Update)", + "BG from meter": "Blutzucker vom Messgerät", + "Manual BG": "BG von Hand", + "Quickpick": "Schnellauswahl", + "or": "oder", + "Add from database": "Ergänze aus Datenbank", + "Use carbs correction in calculation": "Verwende Kohlenhydrate-Korrektur zur Kalkulation", + "Use COB correction in calculation": "Verwende verzehrte Kohlenhydrate zur Kalkulation", + "Use IOB in calculation": "Verwende gespritzes Insulin zur Kalkulation", + "Other correction": "Weitere Korrektur", + "Rounding": "Gerundet", + "Enter insulin correction in treatment": "Insulin Korrektur zur Behandlung eingeben", + "Insulin needed": "Benötigtes Insulin", + "Carbs needed": "Benötigte Kohlenhydrate", + "Carbs needed if Insulin total is negative value": "Benötigte Kohlenhydrate sofern Gesamtinsulin einen negativen Wert aufweist", + "Basal rate": "Basalrate", + "60 minutes earlier": "60 Minuten früher", + "45 minutes earlier": "45 Minuten früher", + "30 minutes earlier": "30 Minuten früher", + "20 minutes earlier": "20 Minuten früher", + "15 minutes earlier": "15 Minuten früher", + "Time in minutes": "Zeit in Minuten", + "15 minutes later": "15 Minuten später", + "20 minutes later": "20 Minuten später", + "30 minutes later": "30 Minuten später", + "45 minutes later": "45 Minuten später", + "60 minutes later": "60 Minuten später", + "Additional Notes, Comments": "Ergänzende Hinweise/Kommentare", + "RETRO MODE": "Retro-Modus", + "Now": "Jetzt", + "Other": "Weitere", + "Submit Form": "Formular absenden", + "Profile Editor": "Profil-Editor", + "Reports": "Berichte", + "Add food from your database": "Ergänze Nahrung aus Deiner Datenbank", + "Reload database": "Datenbank nachladen", + "Add": "Hinzufügen", + "Unauthorized": "Unbefugt", + "Entering record failed": "Eingabe Datensatz fehlerhaft", + "Device authenticated": "Gerät authentifiziert", + "Device not authenticated": "Gerät nicht authentifiziert", + "Authentication status": "Authentifikationsstatus", + "Authenticate": "Authentifizieren", + "Remove": "Entfernen", + "Your device is not authenticated yet": "Dein Gerät ist noch nicht authentifiziert", + "Sensor": "Sensor", + "Finger": "Finger", + "Manual": "Von Hand", + "Scale": "Skalierung", + "Linear": "Linear", + "Logarithmic": "Logarithmisch", + "Logarithmic (Dynamic)": "Logaritmisch (dynamisch)", + "Insulin-on-Board": "Aktives Bolus-Insulin", + "Carbs-on-Board": "Aktiv wirksame Kohlenhydrate", + "Bolus Wizard Preview": "Bolus-Kalkulator Vorschau (BWP)", + "Value Loaded": "Geladener Wert", + "Cannula Age": "Kanülenalter", + "Basal Profile": "Basalraten-Profil", + "Silence for 30 minutes": "Stille für 30 Minuten", + "Silence for 60 minutes": "Stille für 60 Minuten", + "Silence for 90 minutes": "Stille für 90 Minuten", + "Silence for 120 minutes": "Stille für 120 Minuten", + "Settings": "Einstellungen", + "Units": "Einheiten", + "Date format": "Datumsformat", + "12 hours": "12 Stunden", + "24 hours": "24 Stunden", + "Log a Treatment": "Behandlung eingeben", + "BG Check": "BG-Messung", + "Meal Bolus": "Mahlzeiten-Bolus", + "Snack Bolus": "Snack-Bolus", + "Correction Bolus": "Korrektur-Bolus", + "Carb Correction": "Kohlenhydrate Korrektur", + "Note": "Bemerkung", + "Question": "Frage", + "Exercise": "Bewegung", + "Pump Site Change": "Pumpen-Katheter Wechsel", + "CGM Sensor Start": "CGM Sensor Start", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "CGM Sensor Wechsel", + "Dexcom Sensor Start": "Dexcom Sensor Start", + "Dexcom Sensor Change": "Dexcom Sensor Wechsel", + "Insulin Cartridge Change": "Insulin Ampullenwechsel", + "D.A.D. Alert": "Diabeteswarnhund-Alarm", + "Glucose Reading": "Glukosemesswert", + "Measurement Method": "Messmethode", + "Meter": "BZ-Messgerät", + "Insulin Given": "Insulingabe", + "Amount in grams": "Menge in Gramm", + "Amount in units": "Anzahl in Einheiten", + "View all treatments": "Zeige alle Behandlungen", + "Enable Alarms": "Alarme einschalten", + "Pump Battery Change": "Pumpenbatterie wechseln", + "Pump Battery Low Alarm": "Pumpenbatterie niedrig Alarm", + "Pump Battery change overdue!": "Pumpenbatterie Wechsel überfällig!", + "When enabled an alarm may sound.": "Sofern eingeschaltet ertönt ein Alarm", + "Urgent High Alarm": "Achtung Hoch Alarm", + "High Alarm": "Hoch Alarm", + "Low Alarm": "Niedrig Alarm", + "Urgent Low Alarm": "Achtung Niedrig Alarm", + "Stale Data: Warn": "Warnung: Daten nicht mehr gültig", + "Stale Data: Urgent": "Achtung: Daten nicht mehr gültig", + "mins": "Minuten", + "Night Mode": "Nacht Modus", + "When enabled the page will be dimmed from 10pm - 6am.": "Sofern aktiviert wird die Anzeige von 22h - 6h gedimmt", + "Enable": "Aktivieren", + "Show Raw BG Data": "Zeige Roh-BG Daten", + "Never": "Nie", + "Always": "Immer", + "When there is noise": "Sofern Rauschen vorhanden", + "When enabled small white dots will be displayed for raw BG data": "Bei Aktivierung erscheinen kleine weiße Punkte für Roh-BG Daten", + "Custom Title": "Benutzerdefinierter Titel", + "Theme": "Aussehen", + "Default": "Standard", + "Colors": "Farben", + "Colorblind-friendly colors": "Farbenblind-freundliche Darstellung", + "Reset, and use defaults": "Zurücksetzen und Voreinstellungen verwenden", + "Calibrations": "Kalibrierung", + "Alarm Test / Smartphone Enable": "Alarm Test / Smartphone aktivieren", + "Bolus Wizard": "Bolus-Kalkulator", + "in the future": "in der Zukunft", + "time ago": "seit Kurzem", + "hr ago": "Stunde her", + "hrs ago": "Stunden her", + "min ago": "Minute her", + "mins ago": "Minuten her", + "day ago": "Tag her", + "days ago": "Tage her", + "long ago": "lange her", + "Clean": "Löschen", + "Light": "Leicht", + "Medium": "Mittel", + "Heavy": "Stark", + "Treatment type": "Behandlungstyp", + "Raw BG": "Roh-BG", + "Device": "Gerät", + "Noise": "Rauschen", + "Calibration": "Kalibrierung", + "Show Plugins": "Zeige Plugins", + "About": "Über", + "Value in": "Wert in", + "Carb Time": "Kohlenhydrat-Zeit", + "Language": "Sprache", + "Add new": "Neu hinzufügen", + "g": "g", + "ml": "ml", + "pcs": "Stk.", + "Drag&drop food here": "Mahlzeit hierher verschieben", + "Care Portal": "Behandlungs-Portal", + "Medium/Unknown": "Mittel/Unbekannt", + "IN THE FUTURE": "IN DER ZUKUNFT", + "Update": "Aktualisieren", + "Order": "Reihenfolge", + "oldest on top": "älteste oben", + "newest on top": "neueste oben", + "All sensor events": "Alle Sensor-Ereignisse", + "Remove future items from mongo database": "Entferne zukünftige Objekte aus Mongo-Datenbank", + "Find and remove treatments in the future": "Finde und entferne zukünftige Behandlungen", + "This task find and remove treatments in the future.": "Finde und entferne Behandlungen in der Zukunft.", + "Remove treatments in the future": "Entferne Behandlungen in der Zukunft", + "Find and remove entries in the future": "Finde und entferne Einträge in der Zukunft", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Finde und entferne CGM-Daten in der Zukunft, die vom Uploader mit falschem Datum/Uhrzeit erstellt wurden.", + "Remove entries in the future": "Entferne Einträge in der Zukunft", + "Loading database ...": "Lade Datenbank ...", + "Database contains %1 future records": "Datenbank enthält %1 zukünftige Einträge", + "Remove %1 selected records?": "Lösche ausgewählten %1 Eintrag?", + "Error loading database": "Fehler beim Laden der Datenbank", + "Record %1 removed ...": "Eintrag %1 entfernt", + "Error removing record %1": "Fehler beim Entfernen des Eintrags %1", + "Deleting records ...": "Entferne Einträge ...", + "%1 records deleted": "%1 Einträge gelöscht", + "Clean Mongo status database": "Bereinige Mongo Status-Datenbank", + "Delete all documents from devicestatus collection": "Lösche alle Dokumente der Gerätestatus-Sammlung", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Diese Aufgabe entfernt alle Dokumente aus der Gerätestatus-Sammlung. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.", + "Delete all documents": "Lösche alle Dokumente", + "Delete all documents from devicestatus collection?": "Löschen aller Dokumente der Gerätestatus-Sammlung?", + "Database contains %1 records": "Datenbank enthält %1 Einträge", + "All records removed ...": "Alle Einträge entfernt...", + "Delete all documents from devicestatus collection older than 30 days": "Alle Dokumente der Gerätestatus-Sammlung löschen, die älter als 30 Tage sind", + "Number of Days to Keep:": "Daten löschen, die älter sind (in Tagen) als:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Diese Aufgabe entfernt alle Dokumente aus der Gerätestatus-Sammlung, die älter sind als 30 Tage. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.", + "Delete old documents from devicestatus collection?": "Alte Dokumente aus der Gerätestatus-Sammlung entfernen?", + "Clean Mongo entries (glucose entries) database": "Mongo-Einträge (Glukose-Einträge) Datenbank bereinigen", + "Delete all documents from entries collection older than 180 days": "Alle Dokumente aus der Einträge-Sammlung löschen, die älter sind als 180 Tage", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Diese Aufgabe entfernt alle Dokumente aus der Einträge-Sammlung, die älter sind als 180 Tage. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.", + "Delete old documents": "Alte Dokumente löschen", + "Delete old documents from entries collection?": "Alte Dokumente aus der Einträge-Sammlung entfernen?", + "%1 is not a valid number": "%1 ist keine gültige Zahl", + "%1 is not a valid number - must be more than 2": "%1 ist keine gültige Zahl - Eingabe muss größer als 2 sein", + "Clean Mongo treatments database": "Mongo-Behandlungsdatenbank bereinigen", + "Delete all documents from treatments collection older than 180 days": "Alle Dokumente aus der Behandlungs-Sammlung löschen, die älter sind als 180 Tage", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Diese Aufgabe entfernt alle Dokumente aus der Behandlungs-Sammlung, die älter sind als 180 Tage. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.", + "Delete old documents from treatments collection?": "Alte Dokumente aus der Behandlungs-Sammlung entfernen?", + "Admin Tools": "Administrator-Werkzeuge", + "Nightscout reporting": "Nightscout-Berichte", + "Cancel": "Abbruch", + "Edit treatment": "Bearbeite Behandlung", + "Duration": "Dauer", + "Duration in minutes": "Dauer in Minuten", + "Temp Basal": "Temporäre Basalrate", + "Temp Basal Start": "Start Temporäre Basalrate", + "Temp Basal End": "Ende Temporäre Basalrate", + "Percent": "Prozent", + "Basal change in %": "Basalratenänderung in %", + "Basal value": "Basalrate", + "Absolute basal value": "Absoluter Basalratenwert", + "Announcement": "Ankündigung", + "Loading temp basal data": "Lade temporäre Basaldaten", + "Save current record before changing to new?": "Aktuelle Einträge speichern?", + "Profile Switch": "Profil wechseln", + "Profile": "Profil", + "General profile settings": "Allgemeine Profileinstellungen", + "Title": "Überschrift", + "Database records": "Datenbankeinträge", + "Add new record": "Neuen Eintrag hinzufügen", + "Remove this record": "Diesen Eintrag löschen", + "Clone this record to new": "Diesen Eintrag duplizieren", + "Record valid from": "Eintrag gültig ab", + "Stored profiles": "Gesicherte Profile", + "Timezone": "Zeitzone", + "Duration of Insulin Activity (DIA)": "Dauer der Insulinaktivität (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.": "Entspricht der typischen Dauer in der das Insulin wirkt. Variiert je nach Patient und Insulintyp. Häufig 3-4 Stunden für die meisten Pumpeninsuline und die meisten Patienten. Manchmal auch Insulin-Wirkungsdauer genannt.", + "Insulin to carb ratio (I:C)": "Insulin/Kohlenhydrate-Verhältnis (I:KH)", + "Hours:": "Stunden:", + "hours": "Stunden", + "g/hour": "g/Std", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g Kohlenhydrate pro Einheit Insulin. Das Verhältnis wie viele Gramm Kohlenhydrate je Einheit Insulin verbraucht werden.", + "Insulin Sensitivity Factor (ISF)": "Insulinsensibilitätsfaktor (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL oder mmol/L pro Einheit Insulin. Verhältnis von BG-Veränderung je Einheit Korrekturinsulin.", + "Carbs activity / absorption rate": "Kohlenhydrataktivität / Aufnahme Kohlenhydrate", + "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).": "Gramm pro Zeiteinheit. Bedeutet sowohl die Änderung in COB je Zeiteinheit, als auch die Menge an Kohlenhydraten die über diese Zeit wirken sollten. Kohlenhydrat-Absorption / Aktivitätskurven werden weniger genau verstanden als Insulinaktivität, aber sie können angenähert werden indem eine Anfangsverzögerung mit konstanter Aufnahme (g/Std.) verwendet wird.", + "Basal rates [unit/hour]": "Basalraten [Einheit/h]", + "Target BG range [mg/dL,mmol/L]": "Blutzucker-Zielbereich [mg/dL, mmol/L]", + "Start of record validity": "Beginn der Aufzeichnungsgültigkeit", + "Icicle": "Eiszapfen", + "Render Basal": "Basalraten-Darstellung", + "Profile used": "Verwendetes Profil", + "Calculation is in target range.": "Berechnung ist innerhalb des Zielbereichs", + "Loading profile records ...": "Lade Profilaufzeichnungen ...", + "Values loaded.": "Werte geladen.", + "Default values used.": "Standardwerte werden verwendet.", + "Error. Default values used.": "Fehler. Standardwerte werden verwendet.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Zeitspanne vom untersten und obersten Wert wird nicht berücksichtigt. Werte auf Standard zurückgesetzt.", + "Valid from:": "Gültig ab:", + "Save current record before switching to new?": "Aktuellen Datensatz speichern?", + "Add new interval before": "Neues Intervall vorher hinzufügen", + "Delete interval": "Intervall löschen", + "I:C": "IE:KH", + "ISF": "ISF", + "Combo Bolus": "Verzögerter Bolus", + "Difference": "Unterschied", + "New time": "Neue Zeit", + "Edit Mode": "Bearbeitungsmodus", + "When enabled icon to start edit mode is visible": "Wenn aktiviert wird das Icons zum Start des Bearbeitungsmodus sichtbar", + "Operation": "Operation", + "Move": "Verschieben", + "Delete": "Löschen", + "Move insulin": "Insulin verschieben", + "Move carbs": "Kohlenhydrate verschieben", + "Remove insulin": "Insulin löschen", + "Remove carbs": "Kohlenhydrate löschen", + "Change treatment time to %1 ?": "Behandlungsdauer ändern in %1 ?", + "Change carbs time to %1 ?": "Kohlenhydrat-Zeit ändern zu %1 ?", + "Change insulin time to %1 ?": "Insulinzeit ändern zu %1 ?", + "Remove treatment ?": "Behandlung löschen?", + "Remove insulin from treatment ?": "Insulin der Behandlung löschen?", + "Remove carbs from treatment ?": "Kohlenhydrate der Behandlung löschen?", + "Rendering": "Darstellung", + "Loading OpenAPS data of": "Lade OpenAPS-Daten von", + "Loading profile switch data": "Lade Daten Profil-Wechsel", + "Redirecting you to the Profile Editor to create a new profile.": "Sie werden zum Profil-Editor weitergeleitet, um ein neues Profil anzulegen.", + "Pump": "Pumpe", + "Sensor Age": "Sensor-Alter", + "Insulin Age": "Insulin-Alter", + "Temporary target": "Temporäres Ziel", + "Reason": "Begründung", + "Eating soon": "Bald essen", + "Top": "Oben", + "Bottom": "Unten", + "Activity": "Aktivität", + "Targets": "Ziele", + "Bolus insulin:": "Bolus Insulin:", + "Base basal insulin:": "Basis Basal Insulin:", + "Positive temp basal insulin:": "Positives temporäres Basal Insulin:", + "Negative temp basal insulin:": "Negatives temporäres Basal Insulin:", + "Total basal insulin:": "Gesamt Basal Insulin:", + "Total daily insulin:": "Gesamtes tägliches Insulin:", + "Unable to %1 Role": "Unpassend zu %1 Rolle", + "Unable to delete Role": "Rolle nicht löschbar", + "Database contains %1 roles": "Datenbank enthält %1 Rollen", + "Edit Role": "Rolle editieren", + "admin, school, family, etc": "Administrator, Schule, Familie, etc", + "Permissions": "Berechtigungen", + "Are you sure you want to delete: ": "Sind sie sicher, das Sie löschen wollen:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Jede Rolle hat eine oder mehrere Berechtigungen. Die * Berechtigung ist ein Platzhalter, Berechtigungen sind hierachrchisch mit : als Separator.", + "Add new Role": "Eine neue Rolle hinzufügen", + "Roles - Groups of People, Devices, etc": "Rollen - Gruppierungen von Menschen, Geräten, etc.", + "Edit this role": "Editiere diese Rolle", + "Admin authorized": "als Administrator autorisiert", + "Subjects - People, Devices, etc": "Subjekte - Menschen, Geräte, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Jedes Subjekt erhält einen einzigartigen Zugriffsschlüssel und eine oder mehrere Rollen. Klicke auf den Zugriffsschlüssel, um eine neue Ansicht mit dem ausgewählten Subjekt zu erhalten. Dieser geheime Link kann geteilt werden.", + "Add new Subject": "Füge ein neues Subjekt hinzu", + "Unable to %1 Subject": "Unpassend zum %1 Subjekt", + "Unable to delete Subject": "Kann Subjekt nicht löschen", + "Database contains %1 subjects": "Datenbank enthält %1 Subjekte", + "Edit Subject": "Editiere Subjekt", + "person, device, etc": "Person, Gerät, etc", + "role1, role2": "Rolle1, Rolle2", + "Edit this subject": "Editiere dieses Subjekt", + "Delete this subject": "Lösche dieses Subjekt", + "Roles": "Rollen", + "Access Token": "Zugriffsschlüssel", + "hour ago": "vor einer Stunde", + "hours ago": "vor mehreren Stunden", + "Silence for %1 minutes": "Ruhe für %1 Minuten", + "Check BG": "BZ kontrollieren", + "BASAL": "BASAL", + "Current basal": "Aktuelle Basalrate", + "Sensitivity": "Sensitivität", + "Current Carb Ratio": "Aktuelles KH-Verhältnis", + "Basal timezone": "Basal Zeitzone", + "Active profile": "Aktives Profil", + "Active temp basal": "Aktive temp. Basalrate", + "Active temp basal start": "Start aktive temp. Basalrate", + "Active temp basal duration": "Dauer aktive temp. Basalrate", + "Active temp basal remaining": "Verbleibene Dauer temp. Basalrate", + "Basal profile value": "Basal-Profil Wert", + "Active combo bolus": "Aktiver verzögerter Bolus", + "Active combo bolus start": "Start des aktiven verzögerten Bolus", + "Active combo bolus duration": "Dauer des aktiven verzögerten Bolus", + "Active combo bolus remaining": "Verbleibender aktiver verzögerter Bolus", + "BG Delta": "BZ Differenz", + "Elapsed Time": "Vergangene Zeit", + "Absolute Delta": "Absolute Differenz", + "Interpolated": "Interpoliert", + "BWP": "BWP", + "Urgent": "Akut", + "Warning": "Warnung", + "Info": "Info", + "Lowest": "Niedrigster", + "Snoozing high alarm since there is enough IOB": "Ignoriere Alarm hoch, da genügend aktives Bolus-Insulin (IOB) vorhanden", + "Check BG, time to bolus?": "BZ kontrollieren, ggf. Bolus abgeben?", + "Notice": "Notiz", + "required info missing": "Benötigte Information fehlt", + "Insulin on Board": "Aktives Insulin", + "Current target": "Aktueller Zielbereich", + "Expected effect": "Erwarteter Effekt", + "Expected outcome": "Erwartetes Ergebnis", + "Carb Equivalent": "Kohlenhydrat-Äquivalent", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Überschüssiges Insulin: %1U mehr als zum Erreichen der Untergrenze notwendig, Kohlenhydrate sind unberücksichtigt", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Überschüssiges Insulin: %1U mehr als zum Erreichen der Untergrenze notwendig. SICHERSTELLEN, DASS IOB DURCH KOHLENHYDRATE ABGEDECKT WIRD", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Aktives Insulin um %1U reduzieren, um Untergrenze zu erreichen. Basal zu hoch?", + "basal adjustment out of range, give carbs?": "Basalrate geht außerhalb des Zielbereiches. Kohlenhydrate nehmen?", + "basal adjustment out of range, give bolus?": "Anpassung der Basalrate außerhalb des Zielbereichs. Bolus abgeben?", + "above high": "überhalb Obergrenze", + "below low": "unterhalb Untergrenze", + "Projected BG %1 target": "Erwarteter BZ %1", + "aiming at": "angestrebt werden", + "Bolus %1 units": "Bolus von %1 Einheiten", + "or adjust basal": "oder Basal anpassen", + "Check BG using glucometer before correcting!": "Überprüfe deinen BZ mit dem Messgerät, bevor du eine Korrektur vornimmst!", + "Basal reduction to account %1 units:": "Reduktion der Basalrate um %1 Einheiten zu kompensieren", + "30m temp basal": "30min temporäres Basal", + "1h temp basal": "1h temporäres Basal", + "Cannula change overdue!": "Kanülenwechsel überfällig!", + "Time to change cannula": "Es ist Zeit, die Kanüle zu wechseln", + "Change cannula soon": "Kanüle bald wechseln", + "Cannula age %1 hours": "Kanülen Alter %1 Stunden", + "Inserted": "Eingesetzt", + "CAGE": "CAGE", + "COB": "COB", + "Last Carbs": "Letzte Kohlenhydrate", + "IAGE": "IAGE", + "Insulin reservoir change overdue!": "Ampullenwechsel überfällig!", + "Time to change insulin reservoir": "Es ist Zeit, die Ampulle zu wechseln", + "Change insulin reservoir soon": "Ampulle bald wechseln", + "Insulin reservoir age %1 hours": "Ampullen Alter %1 Stunden", + "Changed": "Gewechselt", + "IOB": "IOB", + "Careportal IOB": "Careportal IOB", + "Last Bolus": "Letzter Bolus", + "Basal IOB": "Basal IOB", + "Source": "Quelle", + "Stale data, check rig?": "Daten sind veraltet, Übertragungsgerät prüfen?", + "Last received:": "Zuletzt empfangen:", + "%1m ago": "vor %1m", + "%1h ago": "vor %1h", + "%1d ago": "vor 1d", + "RETRO": "RETRO", + "SAGE": "SAGE", + "Sensor change/restart overdue!": "Sensorwechsel/-neustart überfällig!", + "Time to change/restart sensor": "Es ist Zeit, den Sensor zu wechseln/neuzustarten", + "Change/restart sensor soon": "Sensor bald wechseln/neustarten", + "Sensor age %1 days %2 hours": "Sensor Alter %1 Tage %2 Stunden", + "Sensor Insert": "Sensor eingesetzt", + "Sensor Start": "Sensorstart", + "days": "Tage", + "Insulin distribution": "Insulinverteilung", + "To see this report, press SHOW while in this view": "Auf ZEIGEN drücken, um den Bericht in dieser Ansicht anzuzeigen", + "AR2 Forecast": "AR2-Vorhersage", + "OpenAPS Forecasts": "OpenAPS-Vorhersage", + "Temporary Target": "Temporäres Ziel", + "Temporary Target Cancel": "Temporäres Ziel abbrechen", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "Profile", + "Time in fluctuation": "Zeit in Fluktuation (Schwankung)", + "Time in rapid fluctuation": "Zeit in starker Fluktuation (Schwankung)", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Dies ist lediglich eine grobe Schätzung, die sehr ungenau sein kann und eine Überprüfung des tatsächlichen Blutzuckers nicht ersetzen kann. Die verwendete Formel wurde genommen von:", + "Filter by hours": "Filtern nach Stunden", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Zeit in Fluktuation und Zeit in starker Fluktuation messen den Teil der Zeit, in der sich der Blutzuckerwert relativ oder sehr schnell verändert hat. Niedrigere Werte sind besser.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Die gesamte mittlere Änderung pro Tag ist die Summe der absoluten Werte aller Glukoseveränderungen im Betrachtungszeitraum geteilt durch die Anzahl der Tage. Niedrigere Werte sind besser.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Die mittlere Änderung pro Stunde ist die Summe der absoluten Werte aller Glukoseveränderungen im Betrachtungszeitraum geteilt durch die Anzahl der Stunden. Niedrigere Werte sind besser.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">hier.", + "Mean Total Daily Change": "Gesamte mittlere Änderung pro Tag", + "Mean Hourly Change": "Mittlere Änderung pro Stunde", + "FortyFiveDown": "leicht sinkend", + "FortyFiveUp": "leicht steigend", + "Flat": "gleichbleibend", + "SingleUp": "steigend", + "SingleDown": "sinkend", + "DoubleDown": "schnell sinkend", + "DoubleUp": "schnell steigend", + "virtAsstUnknown": "Dieser Wert ist momentan unbekannt. Prüfe deine Nightscout-Webseite für weitere Details!", + "virtAsstTitleAR2Forecast": "AR2-Vorhersage", + "virtAsstTitleCurrentBasal": "Aktuelles Basalinsulin", + "virtAsstTitleCurrentCOB": "Aktuelle Kohlenhydrate", + "virtAsstTitleCurrentIOB": "Aktuelles Restinsulin", + "virtAsstTitleLaunch": "Willkommen bei Nightscout", + "virtAsstTitleLoopForecast": "Loop-Vorhersage", + "virtAsstTitleLastLoop": "Letzter Loop", + "virtAsstTitleOpenAPSForecast": "OpenAPS-Vorhersage", + "virtAsstTitlePumpReservoir": "Verbleibendes Insulin", + "virtAsstTitlePumpBattery": "Pumpenbatterie", + "virtAsstTitleRawBG": "Aktueller Blutzucker-Rohwert", + "virtAsstTitleUploaderBattery": "Uploader Batterie", + "virtAsstTitleCurrentBG": "Aktueller Blutzucker", + "virtAsstTitleFullStatus": "Gesamtstatus", + "virtAsstTitleCGMMode": "CGM Mode", + "virtAsstTitleCGMStatus": "CGM Status", + "virtAsstTitleCGMSessionAge": "CGM Session Age", + "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", + "virtAsstTitleCGMTxAge": "CGM Transmitter Age", + "virtAsstTitleCGMNoise": "CGM Noise", + "virtAsstTitleDelta": "Blutzucker-Delta", + "virtAsstStatus": "%1 und bis %3 %2.", + "virtAsstBasal": "%1 aktuelle Basalrate ist %2 Einheiten je Stunde", + "virtAsstBasalTemp": "%1 temporäre Basalrate von %2 Einheiten endet %3", + "virtAsstIob": "und du hast %1 Insulin wirkend.", + "virtAsstIobIntent": "Du hast noch %1 Insulin wirkend", + "virtAsstIobUnits": "noch %1 Einheiten", + "virtAsstLaunch": "Was möchtest du von Nightscout wissen?", + "virtAsstPreamble": "Deine", + "virtAsstPreamble3person": "%1 hat eine", + "virtAsstNoInsulin": "kein", + "virtAsstUploadBattery": "Der Akku deines Uploader-Handys ist bei %1", + "virtAsstReservoir": "Du hast %1 Einheiten übrig", + "virtAsstPumpBattery": "Der Batteriestand deiner Pumpe ist bei %1 %2", + "virtAsstUploaderBattery": "Der Akku deines Uploader-Handys ist bei %1", + "virtAsstLastLoop": "Der letzte erfolgreiche Loop war %1", + "virtAsstLoopNotAvailable": "Das Loop-Plugin scheint nicht aktiviert zu sein", + "virtAsstLoopForecastAround": "Entsprechend der Loop-Vorhersage landest in den nächsten %2 bei %1", + "virtAsstLoopForecastBetween": "Entsprechend der Loop-Vorhersage landest du zwischen %1 und %2 während der nächsten %3", + "virtAsstAR2ForecastAround": "Entsprechend der AR2-Vorhersage landest du in %2 bei %1", + "virtAsstAR2ForecastBetween": "Entsprechend der AR2-Vorhersage landest du in %3 zwischen %1 and %2", + "virtAsstForecastUnavailable": "Mit den verfügbaren Daten ist eine Loop-Vorhersage nicht möglich", + "virtAsstRawBG": "Dein Rohblutzucker ist %1", + "virtAsstOpenAPSForecast": "Der von OpenAPS vorhergesagte Blutzucker ist %1", + "virtAsstCob3person": "%1 hat %2 Kohlenhydrate wirkend", + "virtAsstCob": "Du hast noch %1 Kohlenhydrate wirkend.", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Dein Delta war %1 zwischen %2 und %3.", + "virtAsstUnknownIntentTitle": "Unbekannte Absicht", + "virtAsstUnknownIntentText": "Tut mir leid, ich hab deine Frage nicht verstanden.", + "Fat [g]": "Fett [g]", + "Protein [g]": "Proteine [g]", + "Energy [kJ]": "Energie [kJ]", + "Clock Views:": "Uhr-Anzeigen", + "Clock": "Uhr", + "Color": "Farbe", + "Simple": "Einfach", + "TDD average": "durchschnittliches Insulin pro Tag (TDD)", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "durchschnittliche Kohlenhydrate pro Tag", + "Eating Soon": "Bald Essen", + "Last entry {0} minutes ago": "Letzter Eintrag vor {0} Minuten", + "change": "verändern", + "Speech": "Sprache", + "Target Top": "Oberes Ziel", + "Target Bottom": "Unteres Ziel", + "Canceled": "Abgebrochen", + "Meter BG": "Wert Blutzuckermessgerät", + "predicted": "vorhergesagt", + "future": "Zukunft", + "ago": "vor", + "Last data received": "Zuletzt Daten empfangen", + "Clock View": "Uhr-Anzeigen", + "Protein": "Protein", + "Fat": "Fett", + "Protein average": "Proteine Durchschnitt", + "Fat average": "Fett Durchschnitt", + "Total carbs": "Kohlenhydrate gesamt", + "Total protein": "Protein gesamt", + "Total fat": "Fett gesamt", + "Database Size": "Datenbankgröße", + "Database Size near its limits!": "Datenbank fast voll!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Die Datenbankgröße beträgt %1 MiB von %2 MiB. Bitte sichere deine Daten und bereinige die Datenbank!", + "Database file size": "Datenbank-Dateigröße", + "%1 MiB of %2 MiB (%3%)": "%1 MiB von %2 MiB (%3%)", + "Data size": "Datengröße", + "virtAsstDatabaseSize": "%1 MiB. Das sind %2% des verfügbaren Datenbank-Speicherplatzes.", + "virtAsstTitleDatabaseSize": "Datenbank-Dateigröße", + "Carbs/Food/Time": "Carbs/Food/Time" +} \ No newline at end of file diff --git a/translations/el_GR.json b/translations/el_GR.json new file mode 100644 index 00000000000..40d0f4f607d --- /dev/null +++ b/translations/el_GR.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Σύνδεση στην πόρτα", + "Mo": "Δε", + "Tu": "Τρ", + "We": "Τε", + "Th": "Πε", + "Fr": "Πα", + "Sa": "Σα", + "Su": "Κυ", + "Monday": "Δευτέρα", + "Tuesday": "Τρίτη", + "Wednesday": "Τετάρτη", + "Thursday": "Πέμπτη", + "Friday": "Παρασκευή", + "Saturday": "Σάββατο", + "Sunday": "Κυριακή", + "Category": "Κατηγορία", + "Subcategory": "Υποκατηγορία", + "Name": "Όνομα", + "Today": "Σήμερα", + "Last 2 days": "Τελευταίες 2 μέρες", + "Last 3 days": "Τελευταίες 3 μέρες", + "Last week": "Τελευταία εβδομάδα", + "Last 2 weeks": "Τελευταίες 2 εβδομάδες", + "Last month": "Τελευταίος μήνας", + "Last 3 months": "Τελευταίοι 3 μήνες", + "between": "between", + "around": "around", + "and": "and", + "From": "Από", + "To": "Έως", + "Notes": "Σημειώσεις", + "Food": "Φαγητό", + "Insulin": "Ινσουλίνη", + "Carbs": "Υδατάνθρακες", + "Notes contain": "Οι σημειώσεις περιέχουν", + "Target BG range bottom": "Στόχος γλυκόζης - Κάτω όριο", + "top": "Πάνω όριο", + "Show": "Εμφάνιση", + "Display": "Εμφάνιση", + "Loading": "Ανάκτηση", + "Loading profile": "Ανάκτηση Προφίλ", + "Loading status": "Ανάκτηση Κατάστασης", + "Loading food database": "Ανάκτηση Βάσης Δεδομένων Φαγητών", + "not displayed": "Δεν προβάλλεται", + "Loading CGM data of": "Ανάκτηση δεδομένων CGM", + "Loading treatments data of": "Ανάκτηση δεδομένων ενεργειών", + "Processing data of": "Επεξεργασία Δεδομένων", + "Portion": "Μερίδα", + "Size": "Μέγεθος", + "(none)": "(κενό)", + "None": "Κενό", + "": "<κενό>", + "Result is empty": "Δεν υπάρχουν αποτελέσματα", + "Day to day": "Ανά ημέρα", + "Week to week": "Week to week", + "Daily Stats": "Ημερήσια Στατιστικά", + "Percentile Chart": "Γράφημα Εκατοστημορίων", + "Distribution": "Κατανομή", + "Hourly stats": "Ωριαία Στατιστικά", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "Εβδομαδιαία Στατιστικά", + "No data available": "Μη διαθέσιμα δεδομένα", + "Low": "Χαμηλά", + "In Range": "Στο στόχο", + "Period": "Περίοδος", + "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": "Χρηση αποθηκευμένου συνθηματικού", + "No API secret hash stored yet. You need to enter API secret.": "Δεν υπάρχει αποθηκευμένο συνθηματικό API. Πρέπει να εισάγετε το συνθηματικό API", + "Database loaded": "Συνδέθηκε με τη Βάση Δεδομένων", + "Error: Database failed to load": "Σφάλμα:Αποτυχία σύνδεσης με τη Βάση Δεδομένων", + "Error": "Error", + "Create new record": "Δημιουργία νέας εγγραφής", + "Save record": "Αποθήκευση εγγραφής", + "Portions": "Μερίδα", + "Unit": "Μονάδα", + "GI": "GI-Γλυκαιμικός Δείκτης", + "Edit record": "Επεξεργασία εγγραφής", + "Delete record": "Διαγραφή εγγραφής", + "Move to the top": "Μετακίνηση πάνω", + "Hidden": "Απόκρυψη", + "Hide after use": "Απόκρυψη μετά τη χρήση", + "Your API secret must be at least 12 characters long": "Το συνθηματικό πρέπει να είναι τουλάχιστον 12 χαρακτήρων", + "Bad API secret": "Λάθος συνθηματικό", + "API secret hash stored": "Το συνθηματικό αποθηκεύτηκε", + "Status": "Κατάσταση", + "Not loaded": "Δεν έγινε μεταφόρτωση", + "Food Editor": "Επεξεργασία Δεδομένων Φαγητών", + "Your database": "Η Βάση Δεδομένων σας", + "Filter": "Φίλτρο", + "Save": "Αποθήκευση", + "Clear": "Καθαρισμός", + "Record": "Εγγραφή", + "Quick picks": "Γρήγορη επιλογή", + "Show hidden": "Εμφάνιση κρυφών εγγραφών", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Ενέργειες", + "Time": "Ώρα", + "Event Type": "Ενέργεια", + "Blood Glucose": "Γλυκόζη Αίματος", + "Entered By": "Εισήχθη από", + "Delete this treatment?": "Διαγραφή ενέργειας", + "Carbs Given": "Υδατάνθρακες", + "Inzulin Given": "Ινσουλίνη", + "Event Time": "Ώρα ενέργειας", + "Please verify that the data entered is correct": "Παρακαλώ ελέξτε ότι τα δεδομένα είναι σωστά", + "BG": "Τιμή Γλυκόζης Αίματος", + "Use BG correction in calculation": "Χρήση τη διόρθωσης της τιμής γλυκόζης για τον υπολογισμό", + "BG from CGM (autoupdated)": "Τιμή γλυκόζης από τον αισθητήρα (αυτόματο)", + "BG from meter": "Τιμή γλυκόζης από τον μετρητή", + "Manual BG": "Χειροκίνητη εισαγωγή τιμής γλυκόζης", + "Quickpick": "Γρήγορη εισαγωγή", + "or": "ή", + "Add from database": "Επιλογή από τη Βάση Δεδομένων", + "Use carbs correction in calculation": "Χρήση των νέων υδατανθράκων που εισήχθησαν για τον υπολογισμό", + "Use COB correction in calculation": "Χρήση των υδατανθράκων που απομένουν για τον υπολογισμό", + "Use IOB in calculation": "Χρήση της υπολογισθείσας ινσουλίνης που έχει απομείνει για τον υπολογισμό", + "Other correction": "Άλλη διόρθωση", + "Rounding": "Στρογγυλοποίηση", + "Enter insulin correction in treatment": "Υπολογισθείσα ποσότητα ινσουλίνης που απαιτείται", + "Insulin needed": "Απαιτούμενη Ινσουλίνη", + "Carbs needed": "Απαιτούμενοι Υδατάνθρακες", + "Carbs needed if Insulin total is negative value": "Απαιτούνται υδατάνθρακες εάν η συνολική ινσουλίνη έχει αρνητική τιμή", + "Basal rate": "Ρυθμός Βασικής Ινσουλίνης", + "60 minutes earlier": "60 λεπτά πριν", + "45 minutes earlier": "45 λεπτά πριν", + "30 minutes earlier": "30 λεπτά πριν", + "20 minutes earlier": "20 λεπτά πριν", + "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": "Εργαλείο Εκτίμησης Επάρκειας Ινσουλίνης (BWP)", + "Value Loaded": "Τιμή ανακτήθηκε", + "Cannula Age": "Ημέρες Χρήσης Κάνουλας (CAGE)", + "Basal Profile": "Προφίλ Βασικής Ινσουλίνης (BASAL)", + "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": "Διόρθωση με Υδατάνθρακεςς", + "Note": "Σημείωση", + "Question": "Ερώτηση", + "Exercise": "Άσκηση", + "Pump Site Change": "Αλλαγή σημείου αντλίας", + "CGM Sensor Start": "Εκκίνηση αισθητήρα γλυκόζης", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Τοποθέτηση αισθητήρα γλυκόζης", + "Dexcom Sensor Start": "Εκκίνηση αισθητήρα Dexcom", + "Dexcom Sensor Change": "Αλλαγή αισθητήρα Dexcom", + "Insulin Cartridge Change": "Αλλαγή αμπούλας ινσουλίνης", + "D.A.D. Alert": "Προειδοποίηση σκύλου υποστήριξης (Diabetes Alert Dog)", + "Glucose Reading": "Τιμή Γλυκόζης", + "Measurement Method": "Μέθοδος Μέτρησης", + "Meter": "Μετρητής", + "Insulin Given": "Ινσουλίνη", + "Amount in grams": "Ποσότητα σε γρ", + "Amount in units": "Ποσότητα σε μονάδες", + "View all treatments": "Προβολή όλων των ενεργειών", + "Enable Alarms": "Ενεργοποίηση όλων των ειδοποιήσεων", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "Όταν ενεργοποιηθεί, μία ηχητική ειδοποίηση ενδέχεται να ακουστεί", + "Urgent High Alarm": "Ειδοποίηση επικίνδυνα υψηλής γλυκόζης", + "High Alarm": "Ειδοποίηση υψηλής γλυκόζης", + "Low Alarm": "Ειδοποίηση χαμηλής γλυκόζης", + "Urgent Low Alarm": "Ειδοποίηση επικίνδυνα χαμηλής γλυκόζης", + "Stale Data: Warn": "Έλλειψη πρόσφατων δεδομένων: Προειδοποίηση", + "Stale Data: Urgent": "Έλλειψη πρόσφατων δεδομένων: ΕΠΕΙΓΟΝ", + "mins": "λεπτά", + "Night Mode": "Λειτουργία Νυκτός", + "When enabled the page will be dimmed from 10pm - 6am.": "Όταν ενεργοποιηθεί, η φωτεινότητα της οθόνης θα μειωθεί μεταξύ 22.00 - 6.00", + "Enable": "Ενεργοποίηση", + "Show Raw BG Data": "Εμφάνιση αυτούσιων δεδομένων αισθητήρα", + "Never": "Ποτέ", + "Always": "Πάντα", + "When there is noise": "Όταν υπάρχει θόρυβος", + "When enabled small white dots will be displayed for raw BG data": "Όταν εργοποιηθεί, μικρές λευκές κουκίδες θα αναπαριστούν τα αυτούσια δεδομένα του αισθητήρα", + "Custom Title": "Επιθυμητός τίτλος σελίδας", + "Theme": "Θέμα απεικόνισης", + "Default": "Κύριο", + "Colors": "Χρώματα", + "Colorblind-friendly colors": "Χρώματα συμβατά για αχρωματοψία", + "Reset, and use defaults": "Αρχικοποίηση και χρήση των προκαθορισμένων ρυθμίσεων", + "Calibrations": "Βαθμονόμηση", + "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": "Αυτούσιες τιμές γλυκόζης", + "Device": "Συσκευή", + "Noise": "Θόρυβος", + "Calibration": "Βαθμονόμηση", + "Show Plugins": "Πρόσθετα Συστήματος", + "About": "Σχετικά", + "Value in": "Τιμή", + "Carb Time": "Στιγμή χορηγησης υδ/κων", + "Language": "Γλώσσα", + "Add new": "Προσθήκη", + "g": "g", + "ml": "ml", + "pcs": "pcs", + "Drag&drop food here": "Σύρετε εδώ φαγητό", + "Care Portal": "Care Portal", + "Medium/Unknown": "Μέσος/Άγνωστος", + "IN THE FUTURE": "ΣΤΟ ΜΕΛΛΟΝ", + "Update": "Ενημέρωση", + "Order": "Σειρά κατάταξης", + "oldest on top": "τα παλαιότερα πρώτα", + "newest on top": "τα νεότερα πρώτα", + "All sensor events": "Όλα τα συμβάντα του αισθητήρα", + "Remove future items from mongo database": "Αφαίρεση μελλοντικών εγγραφών από τη βάση δεδομένων", + "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.": "Αυτή η ενέργεια αφαιρεί δεδομένα αιθητήρα τα οποία εισήχθησαν με λάθος ημερομηνία και ώρα, από τη βάση δεδομένων", + "Remove entries in the future": "Αφαίρεση μελλοντικών ενεργειών", + "Loading database ...": "Φόρτωση Βάσης Δεδομένων", + "Database contains %1 future records": "Η Βάση Δεδομένων περιέχει 1% μελλοντικές εγγραφές", + "Remove %1 selected records?": "Αφαίρεση των επιλεγμένων εγγραφών?", + "Error loading database": "Σφάλμα στη φόρτωση της βάσης δεδομένων", + "Record %1 removed ...": "Οι εγγραφές αφαιρέθηκαν", + "Error removing record %1": "Σφάλμα αφαίρεσης εγγραφών", + "Deleting records ...": "Αφαίρεση Εγγραφών", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Καθαρισμός βάσης δεδομένων Mongo", + "Delete all documents from devicestatus collection": "Διαγραφή όλων των δεδομένων σχετικών με κατάσταση της συσκευής ανάγνωσης του αισθητήρα", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Αυτή η ενέργεια διαγράφει όλα τα δεδομένα της κατάστασης της συσκευής ανάγνωσης. Χρήσιμη όταν η κατάσταση της συσκευής ανάγνωσης δεν ανανεώνεται σωστά.", + "Delete all documents": "Διαγραφή όλων των δεδομένων", + "Delete all documents from devicestatus collection?": "Διαγραφή όλων των δεδομένων της κατάστασης της συσκευής ανάγνωσης?", + "Database contains %1 records": "Η βάση δεδομένων περιέχει 1% εγγραφές", + "All records removed ...": "Έγινε διαγραφή όλων των δεδομένων", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Εργαλεία Διαχειριστή", + "Nightscout reporting": "Αναφορές", + "Cancel": "Ακύρωση", + "Edit treatment": "Επεξεργασία Εγγραφής", + "Duration": "Διάρκεια", + "Duration in minutes": "Διάρκεια σε λεπτά", + "Temp Basal": "Temp Basal", + "Temp Basal Start": "Temp Basal Start", + "Temp Basal End": "Temp Basal End", + "Percent": "Επι τοις εκατό", + "Basal change in %": "Basal change in %", + "Basal value": "Basal value", + "Absolute basal value": "Absolute basal value", + "Announcement": "Ανακοίνωση", + "Loading temp basal data": "Loading temp basal data", + "Save current record before changing to new?": "Αποθήκευση τρεχουσας εγγραφής πριν δημιουργήσουμε νέα?", + "Profile Switch": "Εναλλαγή προφίλ", + "Profile": "Προφίλ", + "General profile settings": "Γενικές Ρυθμίσεις Προφίλ", + "Title": "Τίτλος", + "Database records": "Εγραφές Βάσης Δεδομένων", + "Add new record": "Προσθήκη νέας εγγραφής", + "Remove this record": "Αφαίρεση εγγραφής", + "Clone this record to new": "Αντιγραφή σε νέα", + "Record valid from": "Ισχύει από", + "Stored profiles": "Αποθηκευμένα προφίλ", + "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.": "Αντιπροσωπευει την τυπική διάρκεια δράσης της χορηγηθείσας ινσουλίνης.", + "Insulin to carb ratio (I:C)": "Αναλογία Ινσουλίνης/Υδατάνθρακα (I:C)", + "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) υδατάνθρακα ανά μονάδα (U) ινσουλίνης. Πόσα γραμμάρια υδατάνθρακα αντιστοιχούν σε μία μονάδα ινσουλίνης", + "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 ανά μονάδα U ινσουλίνης. Το πόσες μονάδες ρίχνει τη γλυκόζη αίματος μία μονάδα U ινσουλίνης", + "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 στη μονάδα του χρόνου. Οι καμπύλες της απορρόφησης υδατανθράκων και της άσκησης δεν έχουν κατανοηθεί πλήρως από την επιστημονική κοινότητα, αλλά μπορούν να προσεγγιστούν βάζοντας μία αρχική καθυστέρηση ακολουθούμενη από έναν σταθερό ρυθμό απορρόφησης (g/hr).", + "Basal rates [unit/hour]": "Ρυθμός Βασικ΄ς ινσουλίνης [U/hour]", + "Target BG range [mg/dL,mmol/L]": "Στόχος Γλυκόζης Αίματος [mg/dl , mmol/l]", + "Start of record validity": "Ισχύει από", + "Icicle": "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": "I:C", + "ISF": "ISF", + "Combo Bolus": "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": "Αντλία", + "Sensor Age": "Ημέρες χρήσης αισθητήρα (SAGE)", + "Insulin Age": "Ημέρες χρήσης αμπούλας ινσουλίνης (IAGE)", + "Temporary target": "Προσωρινός στόχος", + "Reason": "Αιτία", + "Eating soon": "Eating soon", + "Top": "Πάνω", + "Bottom": "Κάτω", + "Activity": "Δραστηριότητα", + "Targets": "Στόχοι", + "Bolus insulin:": "Ινσουλίνη", + "Base basal insulin:": "Βασική Ινσουλίνη", + "Positive temp basal insulin:": "Θετική βασική ινσουλίνη", + "Negative temp basal insulin:": "Αρνητική βασική ινσουλίνη", + "Total basal insulin:": "Συνολική Βασική Ινσουλίνη (BASAL)", + "Total daily insulin:": "Συνολική Ημερήσια Ινσουλίνη", + "Unable to %1 Role": "Unable to %1 Role", + "Unable to delete Role": "Unable to delete Role", + "Database contains %1 roles": "Database contains %1 roles", + "Edit Role": "Edit Role", + "admin, school, family, etc": "admin, school, family, etc", + "Permissions": "Permissions", + "Are you sure you want to delete: ": "Are you sure you want to delete: ", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.", + "Add new Role": "Add new Role", + "Roles - Groups of People, Devices, etc": "Roles - Groups of People, Devices, etc", + "Edit this role": "Edit this role", + "Admin authorized": "Admin authorized", + "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", + "Add new Subject": "Add new Subject", + "Unable to %1 Subject": "לא יכול ל %1 נושאי", + "Unable to delete Subject": "Unable to delete Subject", + "Database contains %1 subjects": "Database contains %1 subjects", + "Edit Subject": "Edit Subject", + "person, device, etc": "person, device, etc", + "role1, role2": "role1, role2", + "Edit this subject": "Edit this subject", + "Delete this subject": "Delete this subject", + "Roles": "Roles", + "Access Token": "Access Token", + "hour ago": "hour ago", + "hours ago": "hours ago", + "Silence for %1 minutes": "Silence for %1 minutes", + "Check BG": "Check BG", + "BASAL": "BASAL", + "Current basal": "Current basal", + "Sensitivity": "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", + "CAGE": "CAGE", + "COB": "COB", + "Last Carbs": "Last Carbs", + "IAGE": "IAGE", + "Insulin reservoir change overdue!": "Insulin reservoir change overdue!", + "Time to change insulin reservoir": "Time to change insulin reservoir", + "Change insulin reservoir soon": "Change insulin reservoir soon", + "Insulin reservoir age %1 hours": "Insulin reservoir age %1 hours", + "Changed": "Changed", + "IOB": "IOB", + "Careportal IOB": "Careportal IOB", + "Last Bolus": "Last Bolus", + "Basal IOB": "Basal IOB", + "Source": "Source", + "Stale data, check rig?": "Stale data, check rig?", + "Last received:": "Last received:", + "%1m ago": "%1m ago", + "%1h ago": "%1h ago", + "%1d ago": "%1d ago", + "RETRO": "RETRO", + "SAGE": "SAGE", + "Sensor change/restart overdue!": "Sensor change/restart overdue!", + "Time to change/restart sensor": "Time to change/restart sensor", + "Change/restart sensor soon": "Change/restart sensor soon", + "Sensor age %1 days %2 hours": "Sensor age %1 days %2 hours", + "Sensor Insert": "Sensor Insert", + "Sensor Start": "Sensor Start", + "days": "days", + "Insulin distribution": "Insulin distribution", + "To see this report, press SHOW while in this view": "To see this report, press SHOW while in this view", + "AR2 Forecast": "AR2 Forecast", + "OpenAPS Forecasts": "OpenAPS Forecasts", + "Temporary Target": "Temporary Target", + "Temporary Target Cancel": "Temporary Target Cancel", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "Profiles", + "Time in fluctuation": "Time in fluctuation", + "Time in rapid fluctuation": "Time in rapid fluctuation", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:", + "Filter by hours": "Filter by hours", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">can be found here.", + "Mean Total Daily Change": "Mean Total Daily Change", + "Mean Hourly Change": "Mean Hourly Change", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Fat [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energy [kJ]", + "Clock Views:": "Clock Views:", + "Clock": "Clock", + "Color": "Color", + "Simple": "Simple", + "TDD average": "TDD average", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Carbs average", + "Eating Soon": "Eating Soon", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "change", + "Speech": "Speech", + "Target Top": "Target Top", + "Target Bottom": "Target Bottom", + "Canceled": "Canceled", + "Meter BG": "Meter BG", + "predicted": "predicted", + "future": "future", + "ago": "ago", + "Last data received": "Last data received", + "Clock View": "Clock View", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/en/en.json b/translations/en/en.json new file mode 100644 index 00000000000..94515b382c8 --- /dev/null +++ b/translations/en/en.json @@ -0,0 +1 @@ +{"Listening on port":"Listening on port","Mo":"Mo","Tu":"Tu","We":"We","Th":"Th","Fr":"Fr","Sa":"Sa","Su":"Su","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Category":"Category","Subcategory":"Subcategory","Name":"Name","Today":"Today","Last 2 days":"Last 2 days","Last 3 days":"Last 3 days","Last week":"Last week","Last 2 weeks":"Last 2 weeks","Last month":"Last month","Last 3 months":"Last 3 months","between":"between","around":"around","and":"and","From":"From","To":"To","Notes":"Notes","Food":"Food","Insulin":"Insulin","Carbs":"Carbs","Notes contain":"Notes contain","Target BG range bottom":"Target BG range bottom","top":"top","Show":"Show","Display":"Display","Loading":"Loading","Loading profile":"Loading profile","Loading status":"Loading status","Loading food database":"Loading food database","not displayed":"not displayed","Loading CGM data of":"Loading CGM data of","Loading treatments data of":"Loading treatments data of","Processing data of":"Processing data of","Portion":"Portion","Size":"Size","(none)":"(none)","None":"None","":"","Result is empty":"Result is empty","Day to day":"Day to day","Week to week":"Week to week","Daily Stats":"Daily Stats","Percentile Chart":"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","Weekly success":"Weekly success","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","GI":"GI","Edit record":"Edit record","Delete record":"Delete record","Move to the top":"Move to the top","Hidden":"Hidden","Hide after use":"Hide after use","Your API secret must be at least 12 characters long":"Your API secret must be at least 12 characters long","Bad API secret":"Bad API secret","API secret hash stored":"API secret hash stored","Status":"Status","Not loaded":"Not loaded","Food Editor":"Food Editor","Your database":"Your database","Filter":"Filter","Save":"Save","Clear":"Clear","Record":"Record","Quick picks":"Quick picks","Show hidden":"Show hidden","Your API secret or token":"Your API secret or token","Remember this device. (Do not enable this on public computers.)":"Remember this device. (Do not enable this on public computers.)","Treatments":"Treatments","Time":"Time","Event Type":"Event Type","Blood Glucose":"Blood Glucose","Entered By":"Entered By","Delete this treatment?":"Delete this treatment?","Carbs Given":"Carbs Given","Inzulin Given":"Inzulin Given","Event Time":"Event Time","Please verify that the data entered is correct":"Please verify that the data entered is correct","BG":"BG","Use BG correction in calculation":"Use BG correction in calculation","BG from CGM (autoupdated)":"BG from CGM (autoupdated)","BG from meter":"BG from meter","Manual BG":"Manual BG","Quickpick":"Quickpick","or":"or","Add from database":"Add from database","Use carbs correction in calculation":"Use carbs correction in calculation","Use COB correction in calculation":"Use COB correction in calculation","Use IOB in calculation":"Use IOB in calculation","Other correction":"Other correction","Rounding":"Rounding","Enter insulin correction in treatment":"Enter insulin correction in treatment","Insulin needed":"Insulin needed","Carbs needed":"Carbs needed","Carbs needed if Insulin total is negative value":"Carbs needed if Insulin total is negative value","Basal rate":"Basal rate","60 minutes earlier":"60 minutes earlier","45 minutes earlier":"45 minutes earlier","30 minutes earlier":"30 minutes earlier","20 minutes earlier":"20 minutes earlier","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","Snack Bolus":"Snack Bolus","Correction Bolus":"Correction Bolus","Carb Correction":"Carb Correction","Note":"Note","Question":"Question","Exercise":"Exercise","Pump Site Change":"Pump Site Change","CGM Sensor Start":"CGM Sensor Start","CGM Sensor Stop":"CGM Sensor Stop","CGM Sensor Insert":"CGM Sensor Insert","Dexcom Sensor Start":"Dexcom Sensor Start","Dexcom Sensor Change":"Dexcom Sensor Change","Insulin Cartridge Change":"Insulin Cartridge Change","D.A.D. Alert":"D.A.D. Alert","Glucose Reading":"Glucose Reading","Measurement Method":"Measurement Method","Meter":"Meter","Insulin Given":"Insulin Given","Amount in grams":"Amount in grams","Amount in units":"Amount in units","View all treatments":"View all treatments","Enable Alarms":"Enable Alarms","Pump Battery Change":"Pump Battery Change","Pump Battery Low Alarm":"Pump Battery Low Alarm","Pump Battery change overdue!":"Pump Battery change overdue!","When enabled an alarm may sound.":"When enabled an alarm may sound.","Urgent High Alarm":"Urgent High Alarm","High Alarm":"High Alarm","Low Alarm":"Low Alarm","Urgent Low Alarm":"Urgent Low Alarm","Stale Data: Warn":"Stale Data: Warn","Stale Data: Urgent":"Stale Data: Urgent","mins":"mins","Night Mode":"Night Mode","When enabled the page will be dimmed from 10pm - 6am.":"When enabled the page will be dimmed from 10pm - 6am.","Enable":"Enable","Show Raw BG Data":"Show Raw BG Data","Never":"Never","Always":"Always","When there is noise":"When there is noise","When enabled small white dots will be displayed for raw BG data":"When enabled small white dots will be displayed for raw BG data","Custom Title":"Custom Title","Theme":"Theme","Default":"Default","Colors":"Colors","Colorblind-friendly colors":"Colorblind-friendly colors","Reset, and use defaults":"Reset, and use defaults","Calibrations":"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","Update":"Update","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","Deleting records ...":"Deleting records ...","%1 records deleted":"%1 records deleted","Clean Mongo status database":"Clean Mongo status database","Delete all documents from devicestatus collection":"Delete all documents from devicestatus collection","This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.":"This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.","Delete all documents":"Delete all documents","Delete all documents from devicestatus collection?":"Delete all documents from devicestatus collection?","Database contains %1 records":"Database contains %1 records","All records removed ...":"All records removed ...","Delete all documents from devicestatus collection older than 30 days":"Delete all documents from devicestatus collection older than 30 days","Number of Days to Keep:":"Number of Days to Keep:","This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.":"This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.","Delete old documents from devicestatus collection?":"Delete old documents from devicestatus collection?","Clean Mongo entries (glucose entries) database":"Clean Mongo entries (glucose entries) database","Delete all documents from entries collection older than 180 days":"Delete all documents from entries collection older than 180 days","This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.":"This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.","Delete old documents":"Delete old documents","Delete old documents from entries collection?":"Delete old documents from entries collection?","%1 is not a valid number":"%1 is not a valid number","%1 is not a valid number - must be more than 2":"%1 is not a valid number - must be more than 2","Clean Mongo treatments database":"Clean Mongo treatments database","Delete all documents from treatments collection older than 180 days":"Delete all documents from treatments collection older than 180 days","This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.":"This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.","Delete old documents from treatments collection?":"Delete old documents from treatments collection?","Admin Tools":"Admin Tools","Nightscout reporting":"Nightscout reporting","Cancel":"Cancel","Edit treatment":"Edit treatment","Duration":"Duration","Duration in minutes":"Duration in minutes","Temp Basal":"Temp Basal","Temp Basal Start":"Temp Basal Start","Temp Basal End":"Temp Basal End","Percent":"Percent","Basal change in %":"Basal change in %","Basal value":"Basal value","Absolute basal value":"Absolute basal value","Announcement":"Announcement","Loading temp basal data":"Loading temp basal data","Save current record before changing to new?":"Save current record before changing to new?","Profile Switch":"Profile Switch","Profile":"Profile","General profile settings":"General profile settings","Title":"Title","Database records":"Database records","Add new record":"Add new record","Remove this record":"Remove this record","Clone this record to new":"Clone this record to new","Record valid from":"Record valid from","Stored profiles":"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","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","Loading profile switch data":"Loading profile switch data","Redirecting you to the Profile Editor to create a new profile.":"Redirecting you to the Profile Editor to create a new profile.","Pump":"Pump","Sensor Age":"Sensor Age","Insulin Age":"Insulin Age","Temporary target":"Temporary target","Reason":"Reason","Eating soon":"Eating soon","Top":"Top","Bottom":"Bottom","Activity":"Activity","Targets":"Targets","Bolus insulin:":"Bolus insulin:","Base basal insulin:":"Base basal insulin:","Positive temp basal insulin:":"Positive temp basal insulin:","Negative temp basal insulin:":"Negative temp basal insulin:","Total basal insulin:":"Total basal insulin:","Total daily insulin:":"Total daily insulin:","Unable to %1 Role":"Unable to %1 Role","Unable to delete Role":"Unable to delete Role","Database contains %1 roles":"Database contains %1 roles","Edit Role":"Edit Role","admin, school, family, etc":"admin, school, family, etc","Permissions":"Permissions","Are you sure you want to delete: ":"Are you sure you want to delete: ","Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.":"Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.","Add new Role":"Add new Role","Roles - Groups of People, Devices, etc":"Roles - Groups of People, Devices, etc","Edit this role":"Edit this role","Admin authorized":"Admin authorized","Subjects - People, Devices, etc":"Subjects - People, Devices, etc","Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.":"Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.","Add new Subject":"Add new Subject","Unable to %1 Subject":"לא יכול ל %1 נושאי","Unable to delete Subject":"Unable to delete Subject","Database contains %1 subjects":"Database contains %1 subjects","Edit Subject":"Edit Subject","person, device, etc":"person, device, etc","role1, role2":"role1, role2","Edit this subject":"Edit this subject","Delete this subject":"Delete this subject","Roles":"Roles","Access Token":"Access Token","hour ago":"hour ago","hours ago":"hours ago","Silence for %1 minutes":"Silence for %1 minutes","Check BG":"Check BG","BASAL":"BASAL","Current basal":"Current basal","Sensitivity":"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","CAGE":"CAGE","COB":"COB","Last Carbs":"Last Carbs","IAGE":"IAGE","Insulin reservoir change overdue!":"Insulin reservoir change overdue!","Time to change insulin reservoir":"Time to change insulin reservoir","Change insulin reservoir soon":"Change insulin reservoir soon","Insulin reservoir age %1 hours":"Insulin reservoir age %1 hours","Changed":"Changed","IOB":"IOB","Careportal IOB":"Careportal IOB","Last Bolus":"Last Bolus","Basal IOB":"Basal IOB","Source":"Source","Stale data, check rig?":"Stale data, check rig?","Last received:":"Last received:","%1m ago":"%1m ago","%1h ago":"%1h ago","%1d ago":"%1d ago","RETRO":"RETRO","SAGE":"SAGE","Sensor change/restart overdue!":"Sensor change/restart overdue!","Time to change/restart sensor":"Time to change/restart sensor","Change/restart sensor soon":"Change/restart sensor soon","Sensor age %1 days %2 hours":"Sensor age %1 days %2 hours","Sensor Insert":"Sensor Insert","Sensor Start":"Sensor Start","days":"days","Insulin distribution":"Insulin distribution","To see this report, press SHOW while in this view":"To see this report, press SHOW while in this view","AR2 Forecast":"AR2 Forecast","OpenAPS Forecasts":"OpenAPS Forecasts","Temporary Target":"Temporary Target","Temporary Target Cancel":"Temporary Target Cancel","OpenAPS Offline":"OpenAPS Offline","Profiles":"Profiles","Time in fluctuation":"Time in fluctuation","Time in rapid fluctuation":"Time in rapid fluctuation","This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:":"This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:","Filter by hours":"Filter by hours","Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.":"Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.","Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.":"Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.","Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.":"Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.","Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.":"Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.","GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.":"\">can be found here.","Mean Total Daily Change":"Mean Total Daily Change","Mean Hourly Change":"Mean Hourly Change","FortyFiveDown":"slightly dropping","FortyFiveUp":"slightly rising","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","virtAsstCob3person":"%1 has %2 carbohydrates on board","virtAsstCob":"You have %1 carbohydrates on board","virtAsstCGMMode":"Your CGM mode was %1 as of %2.","virtAsstCGMStatus":"Your CGM status was %1 as of %2.","virtAsstCGMSessAge":"Your CGM session has been active for %1 days and %2 hours.","virtAsstCGMSessNotStarted":"There is no active CGM session at the moment.","virtAsstCGMTxStatus":"Your CGM transmitter status was %1 as of %2.","virtAsstCGMTxAge":"Your CGM transmitter is %1 days old.","virtAsstCGMNoise":"Your CGM noise was %1 as of %2.","virtAsstCGMBattOne":"Your CGM battery was %1 volts as of %2.","virtAsstCGMBattTwo":"Your CGM battery levels were %1 volts and %2 volts as of %3.","virtAsstDelta":"Your delta was %1 between %2 and %3.","virtAsstUnknownIntentTitle":"Unknown Intent","virtAsstUnknownIntentText":"I'm sorry, I don't know what you're asking for.","Fat [g]":"Fat [g]","Protein [g]":"Protein [g]","Energy [kJ]":"Energy [kJ]","Clock Views:":"Clock Views:","Clock":"Clock","Color":"Color","Simple":"Simple","TDD average":"TDD average","Bolus average":"Bolus average","Basal average":"Basal average","Base basal average:":"Base basal average:","Carbs average":"Carbs average","Eating Soon":"Eating Soon","Last entry {0} minutes ago":"Last entry {0} minutes ago","change":"change","Speech":"Speech","Target Top":"Target Top","Target Bottom":"Target Bottom","Canceled":"Canceled","Meter BG":"Meter BG","predicted":"predicted","future":"future","ago":"ago","Last data received":"Last data received","Clock View":"Clock View","Protein":"Protein","Fat":"Fat","Protein average":"Protein average","Fat average":"Fat average","Total carbs":"Total carbs","Total protein":"Total protein","Total fat":"Total fat","Database Size":"Database Size","Database Size near its limits!":"Database Size near its limits!","Database size is %1 MiB out of %2 MiB. Please backup and clean up database!":"Database size is %1 MiB out of %2 MiB. Please backup and clean up database!","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"} \ No newline at end of file diff --git a/translations/es_ES.json b/translations/es_ES.json new file mode 100644 index 00000000000..481f3982456 --- /dev/null +++ b/translations/es_ES.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Escuchando en el puerto", + "Mo": "Lu", + "Tu": "Mar", + "We": "Mie", + "Th": "Jue", + "Fr": "Vie", + "Sa": "Sab", + "Su": "Dom", + "Monday": "Lunes", + "Tuesday": "Martes", + "Wednesday": "Miércoles", + "Thursday": "Jueves", + "Friday": "Viernes", + "Saturday": "Sábado", + "Sunday": "Domingo", + "Category": "Categoría", + "Subcategory": "Subcategoría", + "Name": "Nombre", + "Today": "Hoy", + "Last 2 days": "Últimos 2 días", + "Last 3 days": "Últimos 3 días", + "Last week": "Semana pasada", + "Last 2 weeks": "Últimas 2 semanas", + "Last month": "Mes pasado", + "Last 3 months": "Últimos 3 meses", + "between": "between", + "around": "around", + "and": "and", + "From": "Desde", + "To": "Hasta", + "Notes": "Notas", + "Food": "Comida", + "Insulin": "Insulina", + "Carbs": "Hidratos de carbono", + "Notes contain": "Contenido de las notas", + "Target BG range bottom": "Objetivo inferior de glucemia", + "top": "Superior", + "Show": "Mostrar", + "Display": "Visualizar", + "Loading": "Cargando", + "Loading profile": "Cargando perfil", + "Loading status": "Cargando estado", + "Loading food database": "Cargando base de datos de alimentos", + "not displayed": "No mostrado", + "Loading CGM data of": "Cargando datos de CGM de", + "Loading treatments data of": "Cargando datos de tratamientos de", + "Processing data of": "Procesando datos de", + "Portion": "Porción", + "Size": "Tamaño", + "(none)": "(ninguno)", + "None": "Ninguno", + "": "", + "Result is empty": "Resultado vacío", + "Day to day": "Día a día", + "Week to week": "Week to week", + "Daily Stats": "Estadísticas diarias", + "Percentile Chart": "Percentiles", + "Distribution": "Distribución", + "Hourly stats": "Estadísticas por hora", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "Resultados semanales", + "No data available": "No hay datos disponibles", + "Low": "Bajo", + "In Range": "En rango", + "Period": "Periodo", + "High": "Alto", + "Average": "Media", + "Low Quartile": "Cuartil inferior", + "Upper Quartile": "Cuartil superior", + "Quartile": "Cuartil", + "Date": "Fecha", + "Normal": "Normal", + "Median": "Mediana", + "Readings": "Valores", + "StDev": "Desviación estándar", + "Daily stats report": "Informe de estadísticas diarias", + "Glucose Percentile report": "Informe de percetiles de glucemia", + "Glucose distribution": "Distribución de glucemias", + "days total": "Total de días", + "Total per day": "Total de días", + "Overall": "General", + "Range": "Intervalo", + "% of Readings": "% de valores", + "# of Readings": "N° de valores", + "Mean": "Media", + "Standard Deviation": "Desviación estándar", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Estimación de HbA1c*", + "Weekly Success": "Resultados semanales", + "There is not sufficient data to run this report. Select more days.": "No hay datos suficientes para generar este informe. Seleccione más días.", + "Using stored API secret hash": "Usando hash del API secreto pre-almacenado", + "No API secret hash stored yet. You need to enter API secret.": "No se ha almacenado ningún hash todavía. Debe introducir su secreto API.", + "Database loaded": "Base de datos cargada", + "Error: Database failed to load": "Error: Carga de base de datos fallida", + "Error": "Error", + "Create new record": "Crear nuevo registro", + "Save record": "Guardar registro", + "Portions": "Porciones", + "Unit": "Unidades", + "GI": "IG", + "Edit record": "Editar registro", + "Delete record": "Borrar registro", + "Move to the top": "Mover arriba", + "Hidden": "Oculto", + "Hide after use": "Ocultar después de utilizar", + "Your API secret must be at least 12 characters long": "Su API secreo debe contener al menos 12 carácteres", + "Bad API secret": "API secreto incorrecto", + "API secret hash stored": "Hash del API secreto guardado", + "Status": "Estado", + "Not loaded": "No cargado", + "Food Editor": "Editor de alimentos", + "Your database": "Su base de datos", + "Filter": "Filtro", + "Save": "Salvar", + "Clear": "Limpiar", + "Record": "Guardar", + "Quick picks": "Selección rápida", + "Show hidden": "Mostrar ocultos", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Tratamientos", + "Time": "Hora", + "Event Type": "Tipo de evento", + "Blood Glucose": "Glucemia", + "Entered By": "Introducido por", + "Delete this treatment?": "¿Borrar este tratamiento?", + "Carbs Given": "Hidratos de carbono dados", + "Inzulin Given": "Insulina dada", + "Event Time": "Hora del evento", + "Please verify that the data entered is correct": "Por favor, verifique que los datos introducidos son correctos", + "BG": "Glucemia en sangre", + "Use BG correction in calculation": "Usar la corrección de glucemia en los cálculos", + "BG from CGM (autoupdated)": "Glucemia del sensor (Auto-actualizado)", + "BG from meter": "Glucemia del glucómetro", + "Manual BG": "Glucemia manual", + "Quickpick": "Selección rápida", + "or": "o", + "Add from database": "Añadir desde la base de datos", + "Use carbs correction in calculation": "Usar la corrección de hidratos de carbono en los cálculos", + "Use COB correction in calculation": "Usar carbohidratos activos para los cálculos", + "Use IOB in calculation": "Usar Insulina activa en los cálculos", + "Other correction": "Otra corrección", + "Rounding": "Redondeo", + "Enter insulin correction in treatment": "Introducir correción de insulina en tratamiento", + "Insulin needed": "Insulina necesaria", + "Carbs needed": "Hidratos de carbono necesarios", + "Carbs needed if Insulin total is negative value": "Carbohidratos necesarios si total insulina es un valor negativo", + "Basal rate": "Tasa basal", + "60 minutes earlier": "60 min antes", + "45 minutes earlier": "45 min antes", + "30 minutes earlier": "30 min antes", + "20 minutes earlier": "20 min antes", + "15 minutes earlier": "15 min antes", + "Time in minutes": "Tiempo en minutos", + "15 minutes later": "15 min más tarde", + "20 minutes later": "20 min más tarde", + "30 minutes later": "30 min más tarde", + "45 minutes later": "45 min más tarde", + "60 minutes later": "60 min más tarde", + "Additional Notes, Comments": "Notas adicionales, Comentarios", + "RETRO MODE": "Modo Retrospectivo", + "Now": "Ahora", + "Other": "Otro", + "Submit Form": "Enviar formulario", + "Profile Editor": "Editor de perfil", + "Reports": "Herramienta de informes", + "Add food from your database": "Añadir alimento a su base de datos", + "Reload database": "Recargar base de datos", + "Add": "Añadir", + "Unauthorized": "No autorizado", + "Entering record failed": "Entrada de registro fallida", + "Device authenticated": "Dispositivo autorizado", + "Device not authenticated": "Dispositivo no autorizado", + "Authentication status": "Estado de autorización", + "Authenticate": "Autentificar", + "Remove": "Eliminar", + "Your device is not authenticated yet": "Su dispositivo no ha sido autentificado todavía", + "Sensor": "Sensor", + "Finger": "Dedo", + "Manual": "Manual", + "Scale": "Escala", + "Linear": "Lineal", + "Logarithmic": "Logarítmica", + "Logarithmic (Dynamic)": "Logarítmo (Dinámico)", + "Insulin-on-Board": "Insulina activa", + "Carbs-on-Board": "Carbohidratos activos", + "Bolus Wizard Preview": "Vista previa del cálculo del bolo", + "Value Loaded": "Valor cargado", + "Cannula Age": "Antigüedad cánula", + "Basal Profile": "Perfil Basal", + "Silence for 30 minutes": "Silenciar durante 30 minutos", + "Silence for 60 minutes": "Silenciar durante 60 minutos", + "Silence for 90 minutes": "Silenciar durante 90 minutos", + "Silence for 120 minutes": "Silenciar durante 120 minutos", + "Settings": "Ajustes", + "Units": "Unidades", + "Date format": "Formato de fecha", + "12 hours": "12 horas", + "24 hours": "24 horas", + "Log a Treatment": "Apuntar un tratamiento", + "BG Check": "Control de glucemia", + "Meal Bolus": "Bolo de comida", + "Snack Bolus": "Bolo de aperitivo", + "Correction Bolus": "Bolo corrector", + "Carb Correction": "Carbohidratos de corrección", + "Note": "Nota", + "Question": "Pregunta", + "Exercise": "Ejercicio", + "Pump Site Change": "Cambio de catéter", + "CGM Sensor Start": "Inicio de sensor", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Cambio de sensor", + "Dexcom Sensor Start": "Inicio de sensor Dexcom", + "Dexcom Sensor Change": "Cambio de sensor Dexcom", + "Insulin Cartridge Change": "Cambio de reservorio de insulina", + "D.A.D. Alert": "Alerta de perro de alerta diabética", + "Glucose Reading": "Valor de glucemia", + "Measurement Method": "Método de medida", + "Meter": "Glucómetro", + "Insulin Given": "Insulina", + "Amount in grams": "Cantidad en gramos", + "Amount in units": "Cantidad en unidades", + "View all treatments": "Visualizar todos los tratamientos", + "Enable Alarms": "Activar las alarmas", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "Cuando estén activas, una alarma podrá sonar", + "Urgent High Alarm": "Alarma de glucemia alta urgente", + "High Alarm": "Alarma de glucemia alta", + "Low Alarm": "Alarma de glucemia baja", + "Urgent Low Alarm": "Alarma de glucemia baja urgente", + "Stale Data: Warn": "Datos obsoletos: aviso", + "Stale Data: Urgent": "Datos obsoletos: Urgente", + "mins": "min", + "Night Mode": "Modo nocturno", + "When enabled the page will be dimmed from 10pm - 6am.": "Cuando esté activo, el brillo de la página bajará de 10pm a 6am.", + "Enable": "Activar", + "Show Raw BG Data": "Mostrat datos en glucemia en crudo", + "Never": "Nunca", + "Always": "Siempre", + "When there is noise": "Cuando hay ruido", + "When enabled small white dots will be displayed for raw BG data": "Cuando esté activo, pequeños puntos blancos mostrarán los datos en crudo", + "Custom Title": "Título personalizado", + "Theme": "Tema", + "Default": "Por defecto", + "Colors": "Colores", + "Colorblind-friendly colors": "Colores para Daltónicos", + "Reset, and use defaults": "Inicializar y utilizar los valores por defecto", + "Calibrations": "Calibraciones", + "Alarm Test / Smartphone Enable": "Test de Alarma / Activar teléfono", + "Bolus Wizard": "Calculo Bolos sugeridos", + "in the future": "en el futuro", + "time ago": "tiempo atrás", + "hr ago": "hr atrás", + "hrs ago": "hrs atrás", + "min ago": "min atrás", + "mins ago": "mins atrás", + "day ago": "día atrás", + "days ago": "días atrás", + "long ago": "Hace mucho tiempo", + "Clean": "Limpio", + "Light": "Ligero", + "Medium": "Medio", + "Heavy": "Fuerte", + "Treatment type": "Tipo de tratamiento", + "Raw BG": "Glucemia en crudo", + "Device": "Dispositivo", + "Noise": "Ruido", + "Calibration": "Calibración", + "Show Plugins": "Mostrar Plugins", + "About": "Sobre", + "Value in": "Valor en", + "Carb Time": "Momento de la ingesta", + "Language": "Lenguaje", + "Add new": "Añadir nuevo", + "g": "gr", + "ml": "ml", + "pcs": "pcs", + "Drag&drop food here": "Arrastre y suelte aquí alimentos", + "Care Portal": "Portal cuidador", + "Medium/Unknown": "Medio/Desconocido", + "IN THE FUTURE": "EN EL FUTURO", + "Update": "Actualizar", + "Order": "Ordenar", + "oldest on top": "Más antiguo arriba", + "newest on top": "Más nuevo arriba", + "All sensor events": "Todos los eventos del sensor", + "Remove future items from mongo database": "Remover elementos futuros desde basedatos Mongo", + "Find and remove treatments in the future": "Encontrar y eliminar tratamientos futuros", + "This task find and remove treatments in the future.": "Este comando encuentra y elimina tratamientos futuros.", + "Remove treatments in the future": "Elimina tratamientos futuros", + "Find and remove entries in the future": "Encuentra y elimina entradas futuras", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Este comando encuentra y elimina datos del sensor futuros creados por actualizaciones con errores en fecha/hora", + "Remove entries in the future": "Elimina entradas futuras", + "Loading database ...": "Cargando base de datos ...", + "Database contains %1 future records": "Base de datos contiene %1 registros futuros", + "Remove %1 selected records?": "Eliminar %1 registros seleccionados?", + "Error loading database": "Error al cargar base de datos", + "Record %1 removed ...": "Registro %1 eliminado ...", + "Error removing record %1": "Error al eliminar registro %1", + "Deleting records ...": "Eliminando registros ...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Limpiar estado de la base de datos Mongo", + "Delete all documents from devicestatus collection": "Borrar todos los documentos desde colección devicesatatus", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Este comando elimina todos los documentos desde la colección devicestatus. Útil cuando el estado de la batería cargadora no se actualiza correctamente", + "Delete all documents": "Borra todos los documentos", + "Delete all documents from devicestatus collection?": "Borrar todos los documentos desde la colección devicestatus?", + "Database contains %1 records": "La Base de datos contiene %1 registros", + "All records removed ...": "Todos los registros eliminados ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Herramientas Administrativas", + "Nightscout reporting": "Informes - Nightscout", + "Cancel": "Cancelar", + "Edit treatment": "Editar tratamiento", + "Duration": "Duración", + "Duration in minutes": "Duración en minutos", + "Temp Basal": "Tasa basal temporal", + "Temp Basal Start": "Inicio Tasa Basal temporal", + "Temp Basal End": "Fin Tasa Basal temporal", + "Percent": "Porcentaje", + "Basal change in %": "Basal modificado en %", + "Basal value": "Valor basal", + "Absolute basal value": "Valor basal absoluto", + "Announcement": "Aviso", + "Loading temp basal data": "Cargando datos tasa basal temporal", + "Save current record before changing to new?": "Grabar datos actuales antes de cambiar por nuevos?", + "Profile Switch": "Cambiar Perfil", + "Profile": "Perfil", + "General profile settings": "Configuración perfil genérico", + "Title": "Titulo", + "Database records": "Registros grabados en base datos", + "Add new record": "Añadir nuevo registro", + "Remove this record": "Eliminar este registro", + "Clone this record to new": "Duplicar este registro como nuevo", + "Record valid from": "Registro válido desde", + "Stored profiles": "Perfiles guardados", + "Timezone": "Zona horaria", + "Duration of Insulin Activity (DIA)": "Duración Insulina Activa (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.": "Representa la duración típica durante la cual la insulina tiene efecto. Varía por paciente y por tipo de insulina. Típicamente 3-4 horas para la mayoría de la insulina bombeada y la mayoría de los pacientes. A veces también se llama insulina de por vida ", + "Insulin to carb ratio (I:C)": "Relación Insulina/Carbohidratos (I:C)", + "Hours:": "Horas:", + "hours": "horas", + "g/hour": "gr/hora", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "gr. de carbohidratos por unidad de insulina. La proporción de cuántos gramos de carbohidratos se consumen por unidad de insulina.", + "Insulin Sensitivity Factor (ISF)": "Factor Sensibilidad a la Insulina (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dl o mmol/L por unidad Insulina. La relación de la caída de glucosa y cada unidad de insulina de corrección administrada.", + "Carbs activity / absorption rate": "Actividad de carbohidratos / tasa de absorción", + "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).": "gramos por unidad de tiempo. Representa tanto el cambio en carbohidratos activos por unidad de tiempo como la cantidad de carbohidratos absorbidos durante este tiempo. Las curvas de captación / actividad de carbohidratos son más difíciles de predecir que la insulina activa, pero se pueden calcular utilizando un retraso de inicio seguido de una tasa de absorción constante (gr/h)", + "Basal rates [unit/hour]": "Tasas basales [Unidad/hora]", + "Target BG range [mg/dL,mmol/L]": "Intervalo glucemia dentro del objetivo [mg/dL,mmol/L]", + "Start of record validity": "Inicio de validez de datos", + "Icicle": "Inverso", + "Render Basal": "Representación Basal", + "Profile used": "Perfil utilizado", + "Calculation is in target range.": "El cálculo está dentro del rango objetivo", + "Loading profile records ...": "Cargando datos perfil ....", + "Values loaded.": "Valores cargados", + "Default values used.": "Se usan valores predeterminados", + "Error. Default values used.": "Error. Se usan valores predeterminados.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Los marcos temporales para objetivo inferior y objetivo superior no coinciden. Los valores predeterminados son usados.", + "Valid from:": "Válido desde:", + "Save current record before switching to new?": "Grabar datos actuales antes cambiar a uno nuevo?", + "Add new interval before": "Agregar nuevo intervalo antes", + "Delete interval": "Borrar intervalo", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Combo-Bolo", + "Difference": "Diferencia", + "New time": "Nueva hora", + "Edit Mode": "Modo edición", + "When enabled icon to start edit mode is visible": "Si está activado, el icono estará visible al inicio del modo de edición", + "Operation": "Operación", + "Move": "Mover", + "Delete": "Borrar", + "Move insulin": "Mover insulina", + "Move carbs": "Mover carbohidratos", + "Remove insulin": "Eliminar insulina", + "Remove carbs": "Eliminar carbohidratos", + "Change treatment time to %1 ?": "Cambiar horario tratamiento a %1 ?", + "Change carbs time to %1 ?": "Cambiar horario carbohidratos a %1 ?", + "Change insulin time to %1 ?": "Cambiar horario insulina a %1 ?", + "Remove treatment ?": "Eliminar tratamiento?", + "Remove insulin from treatment ?": "Eliminar insulina del tratamiento?", + "Remove carbs from treatment ?": "Eliminar carbohidratos del tratamiento?", + "Rendering": "Gráfica", + "Loading OpenAPS data of": "Cargando datos OpenAPS de", + "Loading profile switch data": "Cargando el cambio de perfil de datos", + "Redirecting you to the Profile Editor to create a new profile.": "Configuración incorrecta del perfil. \n No establecido ningún perfil en el tiempo mostrado. \n Continuar en editor de perfil para crear perfil nuevo.", + "Pump": "Bomba", + "Sensor Age": "Días uso del sensor", + "Insulin Age": "Días uso cartucho insulina", + "Temporary target": "Objetivo temporal", + "Reason": "Razonamiento", + "Eating soon": "Comer pronto", + "Top": "Superior", + "Bottom": "Inferior", + "Activity": "Actividad", + "Targets": "Objetivos", + "Bolus insulin:": "Bolo de Insulina", + "Base basal insulin:": "Insulina basal básica", + "Positive temp basal insulin:": "Insulina Basal temporal positiva:", + "Negative temp basal insulin:": "Insulina basal temporal negativa:", + "Total basal insulin:": "Total Insulina basal:", + "Total daily insulin:": "Total Insulina diaria:", + "Unable to %1 Role": "Incapaz de %1 Rol", + "Unable to delete Role": "Imposible elimar Rol", + "Database contains %1 roles": "Base de datos contiene %1 Roles", + "Edit Role": "Editar Rol", + "admin, school, family, etc": "Adminitrador, escuela, família, etc", + "Permissions": "Permisos", + "Are you sure you want to delete: ": "Seguro que quieres eliminarlo:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Cada Rol tiene uno o más permisos. El permiso * es un marcador de posición y los permisos son jerárquicos con : como separador.", + "Add new Role": "Añadir nuevo Rol", + "Roles - Groups of People, Devices, etc": "Roles - Grupos de Gente, Dispositivos, etc.", + "Edit this role": "Editar este Rol", + "Admin authorized": "Administrador autorizado", + "Subjects - People, Devices, etc": "Sujetos - Personas, Dispositivos, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Cada sujeto tendrá un identificador de acceso único y 1 o más roles. Haga clic en el identificador de acceso para abrir una nueva vista con el tema seleccionado, este enlace secreto puede ser compartido.", + "Add new Subject": "Añadir nuevo Sujeto", + "Unable to %1 Subject": "Imposible poner %1 Sujeto", + "Unable to delete Subject": "Imposible eliminar sujeto", + "Database contains %1 subjects": "Base de datos contiene %1 sujetos", + "Edit Subject": "Editar sujeto", + "person, device, etc": "Persona, dispositivo, etc", + "role1, role2": "Rol1, Rol2", + "Edit this subject": "Editar este sujeto", + "Delete this subject": "Eliminar este sujeto", + "Roles": "Roles", + "Access Token": "Acceso Identificador", + "hour ago": "hora atrás", + "hours ago": "horas atrás", + "Silence for %1 minutes": "Silenciado por %1 minutos", + "Check BG": "Verificar glucemia", + "BASAL": "BASAL", + "Current basal": "Basal actual", + "Sensitivity": "Sensibilidad", + "Current Carb Ratio": "Relación actual Insulina:Carbohidratos", + "Basal timezone": "Zona horaria basal", + "Active profile": "Perfil activo", + "Active temp basal": "Basal temporal activa", + "Active temp basal start": "Inicio Basal temporal activa", + "Active temp basal duration": "Duración Basal Temporal activa", + "Active temp basal remaining": "Basal temporal activa restante", + "Basal profile value": "Valor perfil Basal", + "Active combo bolus": "Activo combo-bolo", + "Active combo bolus start": "Inicio del combo-bolo activo", + "Active combo bolus duration": "Duración del Combo-Bolo activo", + "Active combo bolus remaining": "Restante Combo-Bolo activo", + "BG Delta": "Diferencia de glucemia", + "Elapsed Time": "Tiempo transcurrido", + "Absolute Delta": "Diferencia absoluta", + "Interpolated": "Interpolado", + "BWP": "VistaPreviaCalculoBolo (BWP)", + "Urgent": "Urgente", + "Warning": "Aviso", + "Info": "Información", + "Lowest": "Más bajo", + "Snoozing high alarm since there is enough IOB": "Ignorar alarma de Hiperglucemia al tener suficiente insulina activa", + "Check BG, time to bolus?": "Controle su glucemia, ¿quizás un bolo Insulina?", + "Notice": "Nota", + "required info missing": "Falta información requerida", + "Insulin on Board": "Insulina activa (IOB)", + "Current target": "Objetivo actual", + "Expected effect": "Efecto previsto", + "Expected outcome": "Resultado previsto", + "Carb Equivalent": "Equivalencia en Carbohidratos", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Exceso de insulina en %1U más de lo necesario para alcanzar un objetivo bajo, sin tener en cuenta los carbohidratos", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Exceso de insulina en %1U más de la necesaria para alcanzar objetivo inferior. ASEGÚRESE QUE LA INSULINA ACTIVA IOB ESTA CUBIERTA POR CARBOHIDRATOS", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Se necesita una reducción del %1U insulina activa para objetivo inferior, exceso en basal?", + "basal adjustment out of range, give carbs?": "ajuste basal fuera de rango, dar carbohidratos?", + "basal adjustment out of range, give bolus?": "Ajuste de basal fuera de rango, corregir con insulina?", + "above high": "por encima límite superior", + "below low": "por debajo límite inferior", + "Projected BG %1 target": "Glucemia estimada %1 en objetivo", + "aiming at": "resultado deseado", + "Bolus %1 units": "Bolus %1 unidades", + "or adjust basal": "o ajustar basal", + "Check BG using glucometer before correcting!": "Verifique glucemia antes de corregir!", + "Basal reduction to account %1 units:": "Reducir basal para compesar %1 unidades:", + "30m temp basal": "30 min. temporal basal", + "1h temp basal": "1h temporal Basasl", + "Cannula change overdue!": "¡Cambio de agujas vencido!", + "Time to change cannula": " Hora sustituir cánula", + "Change cannula soon": "Change cannula soon", + "Cannula age %1 hours": "Cánula usada %1 horas", + "Inserted": "Insertado", + "CAGE": "Cánula desde", + "COB": "Carb. activos", + "Last Carbs": "último carbohidrato", + "IAGE": "Insul.desde", + "Insulin reservoir change overdue!": "Excedido plazo del cambio depósito de insulina!", + "Time to change insulin reservoir": "Hora de sustituir depósito insulina", + "Change insulin reservoir soon": "Sustituir depósito insulina en breve", + "Insulin reservoir age %1 hours": "Depósito insulina desde %1 horas", + "Changed": "Cambiado", + "IOB": "Insulina Activa IOB", + "Careportal IOB": "Insulina activa en Careportal", + "Last Bolus": "Último bolo", + "Basal IOB": "Basal Insulina activa", + "Source": "Fuente", + "Stale data, check rig?": "Datos desactualizados, controlar la subida?", + "Last received:": "Último recibido:", + "%1m ago": "%1min. atrás", + "%1h ago": "%1h. atrás", + "%1d ago": "%1d atrás", + "RETRO": "RETRO", + "SAGE": "Sensor desde", + "Sensor change/restart overdue!": "Sustituir/reiniciar, sensor vencido", + "Time to change/restart sensor": "Hora de sustituir/reiniciar sensor", + "Change/restart sensor soon": "Cambiar/Reiniciar sensor en breve", + "Sensor age %1 days %2 hours": "Sensor desde %1 días %2 horas", + "Sensor Insert": "Insertar sensor", + "Sensor Start": "Inicio del sensor", + "days": "días", + "Insulin distribution": "Distribución de la insulina", + "To see this report, press SHOW while in this view": "Presione SHOW para mostrar el informe en esta vista", + "AR2 Forecast": "Pronóstico AR2", + "OpenAPS Forecasts": "Pronóstico OpenAPS", + "Temporary Target": "Objetivo temporal", + "Temporary Target Cancel": "Objetivo temporal cancelado", + "OpenAPS Offline": "OpenAPS desconectado", + "Profiles": "Perfil", + "Time in fluctuation": "Tiempo fluctuando", + "Time in rapid fluctuation": "Tiempo fluctuando rápido", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Esto es sólo una estimación apróximada que puede ser muy inexacta y no reemplaza las pruebas de sangre reales. La fórmula utilizada está tomada de: ", + "Filter by hours": "Filtrar por horas", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tiempo en fluctuación y Tiempo en fluctuación rápida miden el % de tiempo del período exáminado, durante la cual la glucosa en sangre ha estado cambiando relativamente rápido o rápidamente. Valores más bajos son mejores.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "El cambio medio diario total es la suma de los valores absolutos de todas las glucémias en el período examinado, dividido por el número de días. Mejor valores bajos.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "El cambio medio por hora, es la suma del valor absoluto de todas las glucemias para el período examinado, dividido por el número de horas en el período. Más bajo es mejor.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", + "Mean Total Daily Change": "Variación media total diaria", + "Mean Hourly Change": "Variación media total por horas", + "FortyFiveDown": "Disminuye lentamente", + "FortyFiveUp": "Asciende lentamente", + "Flat": "Sin variación", + "SingleUp": "Ascendiendo", + "SingleDown": "Bajando", + "DoubleDown": "Bajando rápido", + "DoubleUp": "Subiendo rápido", + "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 y %2 como de %3.", + "virtAsstBasal": "%1 basal actual es %2 unidades por hora", + "virtAsstBasalTemp": "%1 Basal temporal de %2 unidades por hora hasta el fin %3", + "virtAsstIob": "y tu tienes %1 insulina activa.", + "virtAsstIobIntent": "Tienes %1 insulina activa", + "virtAsstIobUnits": "%1 unidades de", + "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstPreamble": "Tú", + "virtAsstPreamble3person": "%1 tiene un ", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Grasas [g]", + "Protein [g]": "Proteina [g]", + "Energy [kJ]": "Energía [Kj]", + "Clock Views:": "Vista del reloj:", + "Clock": "Clock", + "Color": "Color", + "Simple": "Simple", + "TDD average": "TDD average", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Carbs average", + "Eating Soon": "Eating Soon", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "change", + "Speech": "Speech", + "Target Top": "Target Top", + "Target Bottom": "Target Bottom", + "Canceled": "Canceled", + "Meter BG": "Meter BG", + "predicted": "predicted", + "future": "future", + "ago": "ago", + "Last data received": "Last data received", + "Clock View": "Vista del reloj", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/fi_FI.json b/translations/fi_FI.json new file mode 100644 index 00000000000..c15202300b9 --- /dev/null +++ b/translations/fi_FI.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Kuuntelen porttia", + "Mo": "Ma", + "Tu": "Ti", + "We": "Ke", + "Th": "To", + "Fr": "Pe", + "Sa": "La", + "Su": "Su", + "Monday": "Maanantai", + "Tuesday": "Tiistai", + "Wednesday": "Keskiviikko", + "Thursday": "Torstai", + "Friday": "Perjantai", + "Saturday": "Lauantai", + "Sunday": "Sunnuntai", + "Category": "Luokka", + "Subcategory": "Alaluokka", + "Name": "Nimi", + "Today": "Tänään", + "Last 2 days": "Edelliset 2 päivää", + "Last 3 days": "Edelliset 3 päivää", + "Last week": "Viime viikko", + "Last 2 weeks": "Viimeiset 2 viikkoa", + "Last month": "Viime kuu", + "Last 3 months": "Viimeiset 3 kuukautta", + "between": "between", + "around": "around", + "and": "and", + "From": "Alkaen", + "To": "Asti", + "Notes": "Merkinnät", + "Food": "Ruoka", + "Insulin": "Insuliini", + "Carbs": "Hiilihydraatit", + "Notes contain": "Merkinnät sisältävät", + "Target BG range bottom": "Tavoitealueen alaraja", + "top": "yläraja", + "Show": "Näytä", + "Display": "Näyttö", + "Loading": "Lataan", + "Loading profile": "Lataan profiilia", + "Loading status": "Lataan tilaa", + "Loading food database": "Lataan ruokatietokantaa", + "not displayed": "ei näytetä", + "Loading CGM data of": "Lataan sensoritietoja", + "Loading treatments data of": "Lataan toimenpidetietoja", + "Processing data of": "Käsittelen tietoja: ", + "Portion": "Annos", + "Size": "Koko", + "(none)": "(tyhjä)", + "None": "Tyhjä", + "": "", + "Result is empty": "Ei tuloksia", + "Day to day": "Päivittäinen", + "Week to week": "Week to week", + "Daily Stats": "Päivittäiset tilastot", + "Percentile Chart": "Suhteellinen kuvaaja", + "Distribution": "Jakauma", + "Hourly stats": "Tunneittainen tilasto", + "netIOB stats": "netIOB tilasto", + "temp basals must be rendered to display this report": "tämä raportti vaatii, että basaalien piirto on päällä", + "Weekly success": "Viikkotilasto", + "No data available": "Tietoja ei saatavilla", + "Low": "Matala", + "In Range": "Tavoitealueella", + "Period": "Aikaväli", + "High": "Korkea", + "Average": "Keskiarvo", + "Low Quartile": "Alin neljäsosa", + "Upper Quartile": "Ylin neljäsosa", + "Quartile": "Neljäsosa", + "Date": "Päivämäärä", + "Normal": "Normaali", + "Median": "Mediaani", + "Readings": "Lukemia", + "StDev": "Keskijakauma", + "Daily stats report": "Päivittäinen tilasto", + "Glucose Percentile report": "Verensokeriarvojen jakauma", + "Glucose distribution": "Glukoosijakauma", + "days total": "päivän arvio", + "Total per day": "Päivän kokonaismäärä", + "Overall": "Yhteenveto", + "Range": "Alue", + "% of Readings": "% lukemista", + "# of Readings": "Lukemien määrä", + "Mean": "Keskiarvo", + "Standard Deviation": "Keskijakauma", + "Max": "Maks", + "Min": "Min", + "A1c estimation*": "A1c arvio*", + "Weekly Success": "Viikottainen tulos", + "There is not sufficient data to run this report. Select more days.": "Raporttia ei voida luoda liian vähäisen tiedon vuoksi. Valitse useampia päiviä.", + "Using stored API secret hash": "Tallennettu salainen API-tarkiste käytössä", + "No API secret hash stored yet. You need to enter API secret.": "Salainen API-tarkiste puuttuu. Syötä API tarkiste.", + "Database loaded": "Tietokanta ladattu", + "Error: Database failed to load": "Virhe: Tietokannan lataaminen epäonnistui", + "Error": "Virhe", + "Create new record": "Luo uusi tallenne", + "Save record": "Tallenna", + "Portions": "Annokset", + "Unit": "Yksikkö", + "GI": "GI", + "Edit record": "Muokkaa tallennetta", + "Delete record": "Tuhoa tallenne", + "Move to the top": "Siirrä ylimmäksi", + "Hidden": "Piilotettu", + "Hide after use": "Piilota käytön jälkeen", + "Your API secret must be at least 12 characters long": "API-avaimen tulee olla ainakin 12 merkin mittainen", + "Bad API secret": "Väärä API-avain", + "API secret hash stored": "API salaisuus talletettu", + "Status": "Tila", + "Not loaded": "Ei ladattu", + "Food Editor": "Muokkaa ruokia", + "Your database": "Tietokantasi", + "Filter": "Suodatin", + "Save": "Tallenna", + "Clear": "Tyhjennä", + "Record": "Tietue", + "Quick picks": "Nopeat valinnat", + "Show hidden": "Näytä piilotettu", + "Your API secret or token": "API salaisuus tai avain", + "Remember this device. (Do not enable this on public computers.)": "Muista tämä laite (Älä valitse julkisilla tietokoneilla)", + "Treatments": "Hoitotoimenpiteet", + "Time": "Aika", + "Event Type": "Tapahtumatyyppi", + "Blood Glucose": "Verensokeri", + "Entered By": "Tiedot syötti", + "Delete this treatment?": "Tuhoa tämä hoitotoimenpide?", + "Carbs Given": "Hiilihydraatit", + "Inzulin Given": "Insuliiniannos", + "Event Time": "Aika", + "Please verify that the data entered is correct": "Varmista, että tiedot ovat oikein", + "BG": "VS", + "Use BG correction in calculation": "Käytä korjausannosta laskentaan", + "BG from CGM (autoupdated)": "VS sensorilta (päivitetty automaattisesti)", + "BG from meter": "VS mittarilta", + "Manual BG": "Käsin syötetty VS", + "Quickpick": "Pikavalinta", + "or": "tai", + "Add from database": "Lisää tietokannasta", + "Use carbs correction in calculation": "Käytä hiilihydraattikorjausta laskennassa", + "Use COB correction in calculation": "Käytä aktiivisia hiilihydraatteja laskennassa", + "Use IOB in calculation": "Käytä aktiviivista insuliinia laskennassa", + "Other correction": "Muu korjaus", + "Rounding": "Pyöristys", + "Enter insulin correction in treatment": "Syötä insuliinikorjaus", + "Insulin needed": "Insuliinitarve", + "Carbs needed": "Hiilihydraattitarve", + "Carbs needed if Insulin total is negative value": "Hiilihydraattitarve, jos yhteenlaskettu insuliini on negatiivinen", + "Basal rate": "Perusannos", + "60 minutes earlier": "60 minuuttia aiemmin", + "45 minutes earlier": "45 minuuttia aiemmin", + "30 minutes earlier": "30 minuuttia aiemmin", + "20 minutes earlier": "20 minuuttia aiemmin", + "15 minutes earlier": "15 minuuttia aiemmin", + "Time in minutes": "Aika minuuteissa", + "15 minutes later": "15 minuuttia myöhemmin", + "20 minutes later": "20 minuuttia myöhemmin", + "30 minutes later": "30 minuuttia myöhemmin", + "45 minutes later": "45 minuuttia myöhemmin", + "60 minutes later": "60 minuuttia myöhemmin", + "Additional Notes, Comments": "Lisähuomiot, kommentit", + "RETRO MODE": "VANHENTUNEET TIEDOT", + "Now": "Nyt", + "Other": "Muu", + "Submit Form": "Lähetä tiedot", + "Profile Editor": "Profiilin muokkaus", + "Reports": "Raportointityökalu", + "Add food from your database": "Lisää ruoka tietokannasta", + "Reload database": "Lataa tietokanta uudelleen", + "Add": "Lisää", + "Unauthorized": "Et ole autentikoitunut", + "Entering record failed": "Tiedon tallentaminen epäonnistui", + "Device authenticated": "Laite autentikoitu", + "Device not authenticated": "Laite ei ole autentikoitu", + "Authentication status": "Autentikoinnin tila", + "Authenticate": "Autentikoi", + "Remove": "Poista", + "Your device is not authenticated yet": "Laitettasi ei ole vielä autentikoitu", + "Sensor": "Sensori", + "Finger": "Sormi", + "Manual": "Manuaalinen", + "Scale": "Skaala", + "Linear": "Lineaarinen", + "Logarithmic": "Logaritminen", + "Logarithmic (Dynamic)": "Logaritminen (Dynaaminen)", + "Insulin-on-Board": "Aktiivinen Insuliini (IOB)", + "Carbs-on-Board": "Aktiivinen Hiilihydraatti (COB)", + "Bolus Wizard Preview": "Aterialaskurin Esikatselu (BWP)", + "Value Loaded": "Arvo ladattu", + "Cannula Age": "Kanyylin Ikä (CAGE)", + "Basal Profile": "Basaaliprofiili", + "Silence for 30 minutes": "Hiljennä 30 minuutiksi", + "Silence for 60 minutes": "Hiljennä tunniksi", + "Silence for 90 minutes": "Hiljennä 1.5 tunniksi", + "Silence for 120 minutes": "Hiljennä 2 tunniksi", + "Settings": "Asetukset", + "Units": "Yksikköä", + "Date format": "Aikamuoto", + "12 hours": "12 tuntia", + "24 hours": "24 tuntia", + "Log a Treatment": "Tallenna tapahtuma", + "BG Check": "Verensokerin tarkistus", + "Meal Bolus": "Ruokailubolus", + "Snack Bolus": "Ruokakorjaus", + "Correction Bolus": "Korjausbolus", + "Carb Correction": "Hiilihydraattikorjaus", + "Note": "Merkintä", + "Question": "Kysymys", + "Exercise": "Fyysinen harjoitus", + "Pump Site Change": "Kanyylin vaihto", + "CGM Sensor Start": "Sensorin aloitus", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Sensorin vaihto", + "Dexcom Sensor Start": "Sensorin aloitus", + "Dexcom Sensor Change": "Sensorin vaihto", + "Insulin Cartridge Change": "Insuliinisäiliön vaihto", + "D.A.D. Alert": "Diabeteskoirahälytys", + "Glucose Reading": "Verensokeri", + "Measurement Method": "Mittaustapa", + "Meter": "Sokerimittari", + "Insulin Given": "Insuliiniannos", + "Amount in grams": "Määrä grammoissa", + "Amount in units": "Annos yksiköissä", + "View all treatments": "Katso kaikki hoitotoimenpiteet", + "Enable Alarms": "Aktivoi hälytykset", + "Pump Battery Change": "Pumpun patterin vaihto", + "Pump Battery Low Alarm": "Varoitus! Pumpun patteri loppumassa", + "Pump Battery change overdue!": "Pumpun patterin vaihto myöhässä!", + "When enabled an alarm may sound.": "Aktivointi mahdollistaa äänihälytykset", + "Urgent High Alarm": "Kriittinen korkea", + "High Alarm": "Korkea verensokeri", + "Low Alarm": "Matala verensokeri", + "Urgent Low Alarm": "Kriittinen matala", + "Stale Data: Warn": "Vanhat tiedot: varoitus", + "Stale Data: Urgent": "Vanhat tiedot: hälytys", + "mins": "minuuttia", + "Night Mode": "Yömoodi", + "When enabled the page will be dimmed from 10pm - 6am.": "Aktivoimalla sivu himmenee kello 22 ja 06 välillä", + "Enable": "Aktivoi", + "Show Raw BG Data": "Näytä raaka VS tieto", + "Never": "Ei koskaan", + "Always": "Aina", + "When there is noise": "Signaalihäiriöiden yhteydessä", + "When enabled small white dots will be displayed for raw BG data": "Aktivoituna raaka VS tieto piirtyy aikajanalle valkoisina pisteinä", + "Custom Title": "Omavalintainen otsikko", + "Theme": "Teema", + "Default": "Oletus", + "Colors": "Värit", + "Colorblind-friendly colors": "Värisokeille sopivat värit", + "Reset, and use defaults": "Palauta oletusasetukset", + "Calibrations": "Kalibraatiot", + "Alarm Test / Smartphone Enable": "Hälytyksien testaus / Älypuhelimien äänet päälle", + "Bolus Wizard": "Annosopas", + "in the future": "tulevaisuudessa", + "time ago": "aikaa sitten", + "hr ago": "tunti sitten", + "hrs ago": "tuntia sitten", + "min ago": "minuutti sitten", + "mins ago": "minuuttia sitten", + "day ago": "päivä sitten", + "days ago": "päivää sitten", + "long ago": "Pitkän aikaa sitten", + "Clean": "Puhdas", + "Light": "Kevyt", + "Medium": "Keskiverto", + "Heavy": "Raskas", + "Treatment type": "Hoidon tyyppi", + "Raw BG": "Raaka VS", + "Device": "Laite", + "Noise": "Kohina", + "Calibration": "Kalibraatio", + "Show Plugins": "Näytä pluginit", + "About": "Nightscoutista", + "Value in": "Arvo yksiköissä", + "Carb Time": "Syöntiaika", + "Language": "Kieli", + "Add new": "Lisää uusi", + "g": "g", + "ml": "ml", + "pcs": "kpl", + "Drag&drop food here": "Pudota ruoka tähän", + "Care Portal": "Hoidot", + "Medium/Unknown": "Keskiarvo/Ei tiedossa", + "IN THE FUTURE": "TULEVAISUUDESSA", + "Update": "Tallenna", + "Order": "Järjestys", + "oldest on top": "vanhin ylhäällä", + "newest on top": "uusin ylhäällä", + "All sensor events": "Kaikki sensorin tapahtumat", + "Remove future items from mongo database": "Poista tapahtumat mongo-tietokannasta", + "Find and remove treatments in the future": "Etsi ja poista tapahtumat joiden aikamerkintä on tulevaisuudessa", + "This task find and remove treatments in the future.": "Tämä työkalu poistaa tapahtumat joiden aikamerkintä on tulevaisuudessa.", + "Remove treatments in the future": "Poista tapahtumat", + "Find and remove entries in the future": "Etsi ja poista tapahtumat", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Tämä työkalu etsii ja poistaa sensorimerkinnät joiden aikamerkintä sijaitsee tulevaisuudessa.", + "Remove entries in the future": "Poista tapahtumat", + "Loading database ...": "Lataan tietokantaa...", + "Database contains %1 future records": "Tietokanta sisältää %1 merkintää tulevaisuudessa", + "Remove %1 selected records?": "Poista %1 valittua merkintää?", + "Error loading database": "Ongelma tietokannan lataamisessa", + "Record %1 removed ...": "Merkintä %1 poistettu ...", + "Error removing record %1": "Virhe poistaessa merkintää numero %1", + "Deleting records ...": "Poistan merkintöjä...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Siivoa statustietokanta", + "Delete all documents from devicestatus collection": "Poista kaikki tiedot statustietokannasta", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Tämä työkalu poistaa kaikki tiedot statustietokannasta, mikä korjaa tilanteen, jossa puhelimen akun lataustilanne ei näy oikein.", + "Delete all documents": "Poista kaikki tiedot", + "Delete all documents from devicestatus collection?": "Poista tiedot statustietokannasta?", + "Database contains %1 records": "Tietokanta sisältää %1 merkintää", + "All records removed ...": "Kaikki merkinnät poistettu ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Tuhoa vanhat dokumentit", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Ylläpitotyökalut", + "Nightscout reporting": "Nightscout raportointi", + "Cancel": "Peruuta", + "Edit treatment": "Muuta merkintää", + "Duration": "Kesto", + "Duration in minutes": "Kesto minuuteissa", + "Temp Basal": "Tilapäinen basaali", + "Temp Basal Start": "Tilapäinen basaali alku", + "Temp Basal End": "Tilapäinen basaali loppu", + "Percent": "Prosentti", + "Basal change in %": "Basaalimuutos prosenteissa", + "Basal value": "Basaalin määrä", + "Absolute basal value": "Absoluuttinen basaalimäärä", + "Announcement": "Tiedote", + "Loading temp basal data": "Lataan tilapäisten basaalien tietoja", + "Save current record before changing to new?": "Tallenna nykyinen merkintä ennen vaihtoa uuteen?", + "Profile Switch": "Vaihda profiilia", + "Profile": "Profiili", + "General profile settings": "Yleiset profiiliasetukset", + "Title": "Otsikko", + "Database records": "Tietokantamerkintöjä", + "Add new record": "Lisää uusi merkintä", + "Remove this record": "Poista tämä merkintä", + "Clone this record to new": "Kopioi tämä merkintä uudeksi", + "Record valid from": "Merkintä voimassa alkaen", + "Stored profiles": "Tallennetut profiilit", + "Timezone": "Aikavyöhyke", + "Duration of Insulin Activity (DIA)": "Insuliinin vaikutusaika (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.": "Kertoo insuliinin tyypillisen vaikutusajan. Vaihtelee potilaan ja insuliinin tyypin mukaan. Tyypillisesti 3-4 tuntia pumpuissa käytettävällä insuliinilla.", + "Insulin to carb ratio (I:C)": "Insuliiniannoksen hiilihydraattisuhde (I:HH)", + "Hours:": "Tunnit:", + "hours": "tuntia", + "g/hour": "g/tunti", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g hiilihydraattia / yksikkö insuliinia. Suhde, joka kertoo montako grammaa hiilihydraattia vastaa yhtä yksikköä insuliinia.", + "Insulin Sensitivity Factor (ISF)": "Insuliiniherkkyys (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL tai mmol/L / 1 yksikkö insuliinia. Suhde, joka kertoo montako yksikköä verensokeria yksi yksikkö insuliinia laskee.", + "Carbs activity / absorption rate": "Hiilihydraattiaktiivisuus / imeytymisnopeus", + "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).": "grammaa / aika. Kertoo tyypillisen nopeuden, jolla hiilihydraatit imeytyvät syömisen jälkeen. Imeytyminen tunnetaan jokseenkin huonosti, mutta voidaan arvioida keskimääräisesti. Yksikkönä grammaa tunnissa (g/h).", + "Basal rates [unit/hour]": "Basaali [yksikköä/tunti]", + "Target BG range [mg/dL,mmol/L]": "Tavoitealue [mg/dL tai mmol/L]", + "Start of record validity": "Merkinnän alkupäivämäärä", + "Icicle": "Jääpuikko", + "Render Basal": "Näytä basaali", + "Profile used": "Käytetty profiili", + "Calculation is in target range.": "Laskettu arvo on tavoitealueella.", + "Loading profile records ...": "Ladataan profiileja ...", + "Values loaded.": "Arvot ladattu.", + "Default values used.": "Oletusarvot ladattu.", + "Error. Default values used.": "Virhe! Käytetään oletusarvoja.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Matalan ja korkean tavoitteen aikarajat eivät täsmää. Arvot on vaihdettu oletuksiin.", + "Valid from:": "Alkaen:", + "Save current record before switching to new?": "Tallenna nykyinen merkintä ennen vaihtamista uuteen?", + "Add new interval before": "Lisää uusi aikaväli ennen", + "Delete interval": "Poista aikaväli", + "I:C": "I:HH", + "ISF": "ISF", + "Combo Bolus": "Yhdistelmäbolus", + "Difference": "Ero", + "New time": "Uusi aika", + "Edit Mode": "Muokkausmoodi", + "When enabled icon to start edit mode is visible": "Muokkausmoodin ikoni tulee näkyviin kun laitat tämän päälle", + "Operation": "Operaatio", + "Move": "Liikuta", + "Delete": "Poista", + "Move insulin": "Liikuta insuliinia", + "Move carbs": "Liikuta hiilihydraatteja", + "Remove insulin": "Poista insuliini", + "Remove carbs": "Poista hiilihydraatit", + "Change treatment time to %1 ?": "Muuta hoidon aika? Uusi: %1", + "Change carbs time to %1 ?": "Muuta hiilihydraattien aika? Uusi: %1", + "Change insulin time to %1 ?": "Muuta insuliinin aika? Uusi: %1", + "Remove treatment ?": "Poista hoito?", + "Remove insulin from treatment ?": "Poista insuliini hoidosta?", + "Remove carbs from treatment ?": "Poista hiilihydraatit hoidosta?", + "Rendering": "Piirrän graafeja", + "Loading OpenAPS data of": "Lataan OpenAPS tietoja", + "Loading profile switch data": "Lataan profiilinvaihtotietoja", + "Redirecting you to the Profile Editor to create a new profile.": "Väärä profiiliasetus tai profiilia ei löydy.\nSiirrytään profiilin muokkaamiseen uuden profiilin luontia varten.", + "Pump": "Pumppu", + "Sensor Age": "Sensorin ikä", + "Insulin Age": "Insuliinin ikä", + "Temporary target": "Tilapäinen tavoite", + "Reason": "Syy", + "Eating soon": "Syödään pian", + "Top": "Ylä", + "Bottom": "Ala", + "Activity": "Aktiviteetti", + "Targets": "Tavoitteet", + "Bolus insulin:": "Bolusinsuliini:", + "Base basal insulin:": "Basaalin perusannos:", + "Positive temp basal insulin:": "Positiivinen tilapäisbasaali:", + "Negative temp basal insulin:": "Negatiivinen tilapäisbasaali:", + "Total basal insulin:": "Basaali yhteensä:", + "Total daily insulin:": "Päivän kokonaisinsuliiniannos:", + "Unable to %1 Role": "%1 operaatio roolille opäonnistui", + "Unable to delete Role": "Roolin poistaminen epäonnistui", + "Database contains %1 roles": "Tietokanta sisältää %1 roolia", + "Edit Role": "Muokkaa roolia", + "admin, school, family, etc": "ylläpitäjä, koulu, perhe jne", + "Permissions": "Oikeudet", + "Are you sure you want to delete: ": "Oletko varmat että haluat tuhota: ", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Jokaisella roolilla on yksi tai useampia oikeuksia. * on jokeri (tunnistuu kaikkina oikeuksina), oikeudet ovat hierarkia joka käyttää : merkkiä erottimena.", + "Add new Role": "Lisää uusi rooli", + "Roles - Groups of People, Devices, etc": "Roolit - Ihmisten ja laitteiden muodostamia ryhmiä", + "Edit this role": "Muokkaa tätä roolia", + "Admin authorized": "Ylläpitäjä valtuutettu", + "Subjects - People, Devices, etc": "Käyttäjät (Ihmiset, laitteet jne)", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Jokaisella käyttäjällä on uniikki pääsytunniste ja yksi tai useampi rooli. Klikkaa pääsytunnistetta nähdäksesi käyttäjän, jolloin saat jaettavan osoitteen tämän käyttäjän oikeuksilla.", + "Add new Subject": "Lisää uusi käyttäjä", + "Unable to %1 Subject": "%1 operaatio käyttäjälle epäonnistui", + "Unable to delete Subject": "Käyttäjän poistaminen epäonnistui", + "Database contains %1 subjects": "Tietokanta sisältää %1 käyttäjää", + "Edit Subject": "Muokkaa käyttäjää", + "person, device, etc": "henkilö, laite jne", + "role1, role2": "rooli1, rooli2", + "Edit this subject": "Muokkaa tätä käyttäjää", + "Delete this subject": "Poista tämä käyttäjä", + "Roles": "Rooli", + "Access Token": "Pääsytunniste", + "hour ago": "tunti sitten", + "hours ago": "tuntia sitten", + "Silence for %1 minutes": "Hiljennä %1 minuutiksi", + "Check BG": "Tarkista VS", + "BASAL": "Basaali", + "Current basal": "Nykyinen basaali", + "Sensitivity": "Herkkyys", + "Current Carb Ratio": "Nykyinen hiilihydraattiherkkyys", + "Basal timezone": "Aikavyöhyke", + "Active profile": "Aktiivinen profiili", + "Active temp basal": "Aktiivinen tilapäisbasaali", + "Active temp basal start": "Aktiivisen tilapäisbasaalin aloitus", + "Active temp basal duration": "Aktiivisen tilapäisbasaalin kesto", + "Active temp basal remaining": "Aktiivista tilapäisbasaalia jäljellä", + "Basal profile value": "Basaaliprofiilin arvo", + "Active combo bolus": "Aktiivinen yhdistelmäbolus", + "Active combo bolus start": "Aktiivisen yhdistelmäboluksen alku", + "Active combo bolus duration": "Aktiivisen yhdistelmäboluksen kesto", + "Active combo bolus remaining": "Aktiivista yhdistelmäbolusta jäljellä", + "BG Delta": "VS muutos", + "Elapsed Time": "Kulunut aika", + "Absolute Delta": "Absoluuttinen muutos", + "Interpolated": "Laskettu", + "BWP": "Annoslaskuri", + "Urgent": "Kiireellinen", + "Warning": "Varoitus", + "Info": "Info", + "Lowest": "Matalin", + "Snoozing high alarm since there is enough IOB": "Korkean sokerin varoitus poistettu riittävän insuliinin vuoksi", + "Check BG, time to bolus?": "Tarkista VS, aika bolustaa?", + "Notice": "Huomio", + "required info missing": "tarvittava tieto puuttuu", + "Insulin on Board": "Aktiivinen insuliini", + "Current target": "Tämänhetkinen tavoite", + "Expected effect": "Oletettu vaikutus", + "Expected outcome": "Oletettu lopputulos", + "Carb Equivalent": "Hiilihydraattivastaavuus", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Liikaa insuliinia: %1U enemmän kuin tarvitaan tavoitteeseen pääsyyn (huomioimatta hiilihydraatteja)", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Liikaa insuliinia: %1U enemmän kuin tarvitaan tavoitteeseen pääsyyn, VARMISTA RIITTÄVÄ HIILIHYDRAATTIEN SAANTI", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Pääset tavoitteesen vähentämällä %1U aktiivista insuliinia, liikaa basaalia?", + "basal adjustment out of range, give carbs?": "säätö liian suuri, anna hiilihydraatteja?", + "basal adjustment out of range, give bolus?": "säätö liian suuri, anna bolus?", + "above high": "yli korkean", + "below low": "alle matalan", + "Projected BG %1 target": "Laskettu VS %1 tavoitteen", + "aiming at": "tavoitellaan", + "Bolus %1 units": "Bolusta %1 yksikköä", + "or adjust basal": "tai säädä basaalia", + "Check BG using glucometer before correcting!": "Tarkista VS mittarilla ennen korjaamista!", + "Basal reduction to account %1 units:": "Basaalin vähennys saadaksesi %1 yksikön vaikutuksen:", + "30m temp basal": "30m tilapäinen basaali", + "1h temp basal": "1h tilapäinen basaali", + "Cannula change overdue!": "Kanyylin ikä yli määräajan!", + "Time to change cannula": "Aika vaihtaa kanyyli", + "Change cannula soon": "Vaihda kanyyli pian", + "Cannula age %1 hours": "Kanyylin ikä %1 tuntia", + "Inserted": "Asetettu", + "CAGE": "KIKÄ", + "COB": "AH", + "Last Carbs": "Viimeisimmät hiilihydraatit", + "IAGE": "IIKÄ", + "Insulin reservoir change overdue!": "Insuliinisäiliö vanhempi kuin määräaika!", + "Time to change insulin reservoir": "Aika vaihtaa insuliinisäiliö", + "Change insulin reservoir soon": "Vaihda insuliinisäiliö pian", + "Insulin reservoir age %1 hours": "Insuliinisäiliön ikä %1 tuntia", + "Changed": "Vaihdettu", + "IOB": "IOB", + "Careportal IOB": "Careportal IOB", + "Last Bolus": "Viimeisin bolus", + "Basal IOB": "Basaalin IOB", + "Source": "Lähde", + "Stale data, check rig?": "Tiedot vanhoja, tarkista lähetin?", + "Last received:": "Viimeksi vastaanotettu:", + "%1m ago": "%1m sitten", + "%1h ago": "%1h sitten", + "%1d ago": "%1d sitten", + "RETRO": "RETRO", + "SAGE": "SIKÄ", + "Sensor change/restart overdue!": "Sensorin vaihto/uudelleenkäynnistys yli määräajan!", + "Time to change/restart sensor": "Aika vaihtaa / käynnistää sensori uudelleen", + "Change/restart sensor soon": "Vaihda/käynnistä sensori uudelleen pian", + "Sensor age %1 days %2 hours": "Sensorin ikä %1 päivää, %2 tuntia", + "Sensor Insert": "Sensorin Vaihto", + "Sensor Start": "Sensorin Aloitus", + "days": "päivää", + "Insulin distribution": "Insuliinijakauma", + "To see this report, press SHOW while in this view": "Nähdäksesi tämän raportin, paina NÄYTÄ tässä näkymässä", + "AR2 Forecast": "AR2 Ennusteet", + "OpenAPS Forecasts": "OpenAPS Ennusteet", + "Temporary Target": "Tilapäinen tavoite", + "Temporary Target Cancel": "Peruuta tilapäinen tavoite", + "OpenAPS Offline": "OpenAPS poissa verkosta", + "Profiles": "Profiilit", + "Time in fluctuation": "Aika muutoksessa", + "Time in rapid fluctuation": "Aika nopeassa muutoksessa", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Tämä on epätarkka arvio joka saattaa heittää huomattavasti mittaustuloksesta, eikä korvaa laboratoriotestiä. Laskentakaava on otettu artikkelista: ", + "Filter by hours": "Huomioi raportissa seuraavat tunnit", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Aika Muutoksessa ja Aika Nopeassa Muutoksessa mittaa osuutta tarkkailtavasta aikaperiodista, jolloin glukoosi on ollut nopeassa tai hyvin nopeassa muutoksessa. Pienempi arvo on parempi.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Keskimääräinen Kokonaismuutos kertoo kerkimääräisen päivätason verensokerimuutoksien yhteenlasketun arvon. Pienempi arvo on parempi.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Keskimääräinen tunti kertoo keskimääräisen tuntitason verensokerimuutoksien yhteenlasketun arvon. Pienempi arvo on parempi.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", + "Mean Total Daily Change": "Keskimääräinen Kokonaismuutos", + "Mean Hourly Change": "Keskimääräinen tuntimuutos", + "FortyFiveDown": "laskee hitaasti", + "FortyFiveUp": "nousee hitaasti", + "Flat": "tasainen", + "SingleUp": "nousussa", + "SingleDown": "laskussa", + "DoubleDown": "laskee nopeasti", + "DoubleUp": "nousee nopeasti", + "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": "Tämänhetkinen IOB", + "virtAsstTitleLaunch": "Tervetuloa Nightscoutiin", + "virtAsstTitleLoopForecast": "Loop ennuste", + "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 ja %2 alkaen %3.", + "virtAsstBasal": "%1 nykyinen basaali on %2 yksikköä tunnissa", + "virtAsstBasalTemp": "%1 tilapäinen basaali on %2 tunnissa, päättyy %3", + "virtAsstIob": "ja sinulla on %1 aktivista insuliinia.", + "virtAsstIobIntent": "Sinulla on %1 aktiivista insuliinia", + "virtAsstIobUnits": "%1 yksikköä", + "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstPreamble": "Sinun", + "virtAsstPreamble3person": "%1 on ", + "virtAsstNoInsulin": "ei", + "virtAsstUploadBattery": "Lähettimen paristoa jäljellä %1", + "virtAsstReservoir": "%1 yksikköä insuliinia jäljellä", + "virtAsstPumpBattery": "Pumppu on %1 %2", + "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstLastLoop": "Viimeisin onnistunut loop oli %1", + "virtAsstLoopNotAvailable": "Loop plugin ei ole aktivoitu", + "virtAsstLoopForecastAround": "Ennusteen mukaan olet around %1 seuraavan %2 ajan", + "virtAsstLoopForecastBetween": "Ennusteen mukaan olet between %1 and %2 seuraavan %3 ajan", + "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": "Ennusteet eivät ole toiminnassa puuttuvan tiedon vuoksi", + "virtAsstRawBG": "Suodattamaton verensokeriarvo on %1", + "virtAsstOpenAPSForecast": "OpenAPS verensokeriarvio on %1", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Rasva [g]", + "Protein [g]": "Proteiini [g]", + "Energy [kJ]": "Energia [kJ]", + "Clock Views:": "Kellonäkymä:", + "Clock": "Kello", + "Color": "Väri", + "Simple": "Yksinkertainen", + "TDD average": "Päivän kokonaisinsuliinin keskiarvo", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Hiilihydraatit keskiarvo", + "Eating Soon": "Ruokailu pian", + "Last entry {0} minutes ago": "Edellinen verensokeri {0} minuuttia sitten", + "change": "muutos", + "Speech": "Puhe", + "Target Top": "Tavoite ylä", + "Target Bottom": "Tavoite ala", + "Canceled": "Peruutettu", + "Meter BG": "Mittarin VS", + "predicted": "ennuste", + "future": "tulevaisuudessa", + "ago": "sitten", + "Last data received": "Tietoa vastaanotettu viimeksi", + "Clock View": "Kellonäkymä", + "Protein": "Proteiini", + "Fat": "Rasva", + "Protein average": "Proteiini keskiarvo", + "Fat average": "Rasva keskiarvo", + "Total carbs": "Hiilihydraatit yhteensä", + "Total protein": "Proteiini yhteensä", + "Total fat": "Rasva yhteensä", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/fr_FR.json b/translations/fr_FR.json new file mode 100644 index 00000000000..350d518072b --- /dev/null +++ b/translations/fr_FR.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Ecoute sur port", + "Mo": "Lu", + "Tu": "Ma", + "We": "Me", + "Th": "Je", + "Fr": "Ve", + "Sa": "Sa", + "Su": "Di", + "Monday": "Lundi", + "Tuesday": "Mardi", + "Wednesday": "Mercredi", + "Thursday": "Jeudi", + "Friday": "Vendredi", + "Saturday": "Samedi", + "Sunday": "Dimanche", + "Category": "Catégorie", + "Subcategory": "Sous-catégorie", + "Name": "Nom", + "Today": "Aujourd'hui", + "Last 2 days": "2 derniers jours", + "Last 3 days": "3 derniers jours", + "Last week": "Semaine Dernière", + "Last 2 weeks": "2 dernières semaines", + "Last month": "Mois dernier", + "Last 3 months": "3 derniers mois", + "between": "between", + "around": "around", + "and": "and", + "From": "Du", + "To": "Au", + "Notes": "Notes", + "Food": "Nourriture", + "Insulin": "Insuline", + "Carbs": "Glucides", + "Notes contain": "Notes contiennent", + "Target BG range bottom": "Limite inférieure glycémie", + "top": "Supérieure", + "Show": "Montrer", + "Display": "Afficher", + "Loading": "Chargement", + "Loading profile": "Chargement du profil", + "Loading status": "Statut du chargement", + "Loading food database": "Chargement de la base de données alimentaire", + "not displayed": "non affiché", + "Loading CGM data of": "Chargement données CGM de", + "Loading treatments data of": "Chargement données traitement de", + "Processing data of": "Traitement des données de", + "Portion": "Portion", + "Size": "Taille", + "(none)": "(aucun)", + "None": "aucun", + "": "", + "Result is empty": "Pas de résultat", + "Day to day": "jour par jour", + "Week to week": "Week to week", + "Daily Stats": "Stats quotidiennes", + "Percentile Chart": "Percentiles", + "Distribution": "Distribution", + "Hourly stats": "Statistiques horaires", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "Résultat hebdomadaire", + "No data available": "Pas de données disponibles", + "Low": "Bas", + "In Range": "dans la norme", + "Period": "Période", + "High": "Haut", + "Average": "Moyenne", + "Low Quartile": "Quartile inférieur", + "Upper Quartile": "Quartile supérieur", + "Quartile": "Quartile", + "Date": "Date", + "Normal": "Normale", + "Median": "Médiane", + "Readings": "Valeurs", + "StDev": "Déviation St.", + "Daily stats report": "Rapport quotidien", + "Glucose Percentile report": "Rapport percentiles Glycémie", + "Glucose distribution": "Distribution glycémies", + "days total": "jours totaux", + "Total per day": "Total journalier", + "Overall": "En général", + "Range": "Intervalle", + "% of Readings": "% de valeurs", + "# of Readings": "nbr de valeurs", + "Mean": "Moyenne", + "Standard Deviation": "Déviation Standard", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Estimation HbA1c*", + "Weekly Success": "Réussite hebdomadaire", + "There is not sufficient data to run this report. Select more days.": "Pas assez de données pour un rapport. Sélectionnez plus de jours.", + "Using stored API secret hash": "Utilisation du hash API existant", + "No API secret hash stored yet. You need to enter API secret.": "Pas de secret API existant. Vous devez en entrer un.", + "Database loaded": "Base de données chargée", + "Error: Database failed to load": "Erreur: le chargement de la base de données a échoué", + "Error": "Error", + "Create new record": "Créer nouvel enregistrement", + "Save record": "Sauver enregistrement", + "Portions": "Portions", + "Unit": "Unités", + "GI": "IG", + "Edit record": "Modifier enregistrement", + "Delete record": "Effacer enregistrement", + "Move to the top": "Déplacer au sommet", + "Hidden": "Caché", + "Hide after use": "Cacher après utilisation", + "Your API secret must be at least 12 characters long": "Votre secret API doit contenir au moins 12 caractères", + "Bad API secret": "Secret API erroné", + "API secret hash stored": "Hash API secret sauvegardé", + "Status": "Statut", + "Not loaded": "Non chargé", + "Food Editor": "Editeur aliments", + "Your database": "Votre base de données", + "Filter": "Filtre", + "Save": "Sauver", + "Clear": "Effacer", + "Record": "Enregistrement", + "Quick picks": "Sélection rapide", + "Show hidden": "Montrer cachés", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Traitements", + "Time": "Heure", + "Event Type": "Type d'événement", + "Blood Glucose": "Glycémie", + "Entered By": "Entré par", + "Delete this treatment?": "Effacer ce traitement?", + "Carbs Given": "Glucides donnés", + "Inzulin Given": "Insuline donnée", + "Event Time": "Heure de l'événement", + "Please verify that the data entered is correct": "Merci de vérifier la correction des données entrées", + "BG": "Glycémie", + "Use BG correction in calculation": "Utiliser la correction de glycémie dans les calculs", + "BG from CGM (autoupdated)": "Glycémie CGM (automatique)", + "BG from meter": "Glycémie du glucomètre", + "Manual BG": "Glycémie manuelle", + "Quickpick": "Sélection rapide", + "or": "ou", + "Add from database": "Ajouter à partir de la base de données", + "Use carbs correction in calculation": "Utiliser la correction en glucides dans les calculs", + "Use COB correction in calculation": "Utiliser les COB dans les calculs", + "Use IOB in calculation": "Utiliser l'IOB dans les calculs", + "Other correction": "Autre correction", + "Rounding": "Arrondi", + "Enter insulin correction in treatment": "Entrer correction insuline dans le traitement", + "Insulin needed": "Insuline nécessaire", + "Carbs needed": "Glucides nécessaires", + "Carbs needed if Insulin total is negative value": "Glucides nécessaires si insuline totale est un valeur négative", + "Basal rate": "Taux basal", + "60 minutes earlier": "60 min plus tôt", + "45 minutes earlier": "45 min plus tôt", + "30 minutes earlier": "30 min plus tôt", + "20 minutes earlier": "20 min plus tôt", + "15 minutes earlier": "15 min plus tôt", + "Time in minutes": "Durée en minutes", + "15 minutes later": "15 min plus tard", + "20 minutes later": "20 min plus tard", + "30 minutes later": "30 min plus tard", + "45 minutes later": "45 min plus tard", + "60 minutes later": "60 min plus tard", + "Additional Notes, Comments": "Notes additionnelles, commentaires", + "RETRO MODE": "MODE RETROSPECTIF", + "Now": "Maintenant", + "Other": "Autre", + "Submit Form": "Suomettre le formulaire", + "Profile Editor": "Editeur de profil", + "Reports": "Outil de rapport", + "Add food from your database": "Ajouter aliment de votre base de données", + "Reload database": "Recharger la base de données", + "Add": "Ajouter", + "Unauthorized": "Non autorisé", + "Entering record failed": "Entrée enregistrement a échoué", + "Device authenticated": "Appareil authentifié", + "Device not authenticated": "Appareil non authentifié", + "Authentication status": "Status de l'authentification", + "Authenticate": "Authentifier", + "Remove": "Retirer", + "Your device is not authenticated yet": "Votre appareil n'est pas encore authentifié", + "Sensor": "Senseur", + "Finger": "Doigt", + "Manual": "Manuel", + "Scale": "Echelle", + "Linear": "Linéaire", + "Logarithmic": "Logarithmique", + "Logarithmic (Dynamic)": "Logarithmique (Dynamique)", + "Insulin-on-Board": "Insuline à bord", + "Carbs-on-Board": "Glucides à bord", + "Bolus Wizard Preview": "Prévue du Calculatuer de bolus", + "Value Loaded": "Valeur chargée", + "Cannula Age": "Age de la canule", + "Basal Profile": "Profil Basal", + "Silence for 30 minutes": "Silence pendant 30 minutes", + "Silence for 60 minutes": "Silence pendant 60 minutes", + "Silence for 90 minutes": "Silence pendant 90 minutes", + "Silence for 120 minutes": "Silence pendant 120 minutes", + "Settings": "Paramètres", + "Units": "Unités", + "Date format": "Format Date", + "12 hours": "12 heures", + "24 hours": "24 heures", + "Log a Treatment": "Entrer un traitement", + "BG Check": "Contrôle glycémie", + "Meal Bolus": "Bolus repas", + "Snack Bolus": "Bolus friandise", + "Correction Bolus": "Bolus de correction", + "Carb Correction": "Correction glucide", + "Note": "Note", + "Question": "Question", + "Exercise": "Exercice physique", + "Pump Site Change": "Changement de site pompe", + "CGM Sensor Start": "Démarrage senseur", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Changement senseur", + "Dexcom Sensor Start": "Démarrage senseur Dexcom", + "Dexcom Sensor Change": "Changement senseur Dexcom", + "Insulin Cartridge Change": "Changement cartouche d'insuline", + "D.A.D. Alert": "Wouf! Wouf! Chien d'alerte diabète", + "Glucose Reading": "Valeur de glycémie", + "Measurement Method": "Méthode de mesure", + "Meter": "Glucomètre", + "Insulin Given": "Insuline donnée", + "Amount in grams": "Quantité en grammes", + "Amount in units": "Quantité en unités", + "View all treatments": "Voir tous les traitements", + "Enable Alarms": "Activer les alarmes", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "Si activée, un alarme peut sonner.", + "Urgent High Alarm": "Alarme hyperglycémie urgente", + "High Alarm": "Alarme hyperglycémie", + "Low Alarm": "Alarme hypoglycémie", + "Urgent Low Alarm": "Alarme hypoglycémie urgente", + "Stale Data: Warn": "Données échues: avertissement", + "Stale Data: Urgent": "Données échues: avertissement urgent", + "mins": "mins", + "Night Mode": "Mode nocturne", + "When enabled the page will be dimmed from 10pm - 6am.": "Si activé, la page sera assombrie de 22:00 à 6:00", + "Enable": "Activer", + "Show Raw BG Data": "Montrer les données BG brutes", + "Never": "Jamais", + "Always": "Toujours", + "When there is noise": "Quand il y a du bruit", + "When enabled small white dots will be displayed for raw BG data": "Si activé, des points blancs représenteront les données brutes", + "Custom Title": "Titre personalisé", + "Theme": "Thème", + "Default": "Par défaut", + "Colors": "Couleurs", + "Colorblind-friendly colors": "Couleurs pour daltoniens", + "Reset, and use defaults": "Remettre à zéro et utiliser les valeurs par défaut", + "Calibrations": "Calibration", + "Alarm Test / Smartphone Enable": "Test alarme / Activer Smartphone", + "Bolus Wizard": "Calculateur de bolus", + "in the future": "dans le futur", + "time ago": "temps avant", + "hr ago": "hr avant", + "hrs ago": "hrs avant", + "min ago": "min avant", + "mins ago": "mins avant", + "day ago": "jour avant", + "days ago": "jours avant", + "long ago": "il y a longtemps", + "Clean": "Propre", + "Light": "Léger", + "Medium": "Moyen", + "Heavy": "Important", + "Treatment type": "Type de traitement", + "Raw BG": "Glycémie brute", + "Device": "Appareil", + "Noise": "Bruit", + "Calibration": "Calibration", + "Show Plugins": "Montrer Plugins", + "About": "À propos de", + "Value in": "Valeur en", + "Carb Time": "Moment de l'ingestion de Glucides", + "Language": "Langue", + "Add new": "Ajouter nouveau", + "g": "g", + "ml": "ml", + "pcs": "pcs", + "Drag&drop food here": "Glisser et déposer repas ici ", + "Care Portal": "Care Portal", + "Medium/Unknown": "Moyen/Inconnu", + "IN THE FUTURE": "dans le futur", + "Update": "Mise à jour", + "Order": "Mise en ordre", + "oldest on top": "Plus vieux en tête de liste", + "newest on top": "Nouveaux en tête de liste", + "All sensor events": "Tous les événement senseur", + "Remove future items from mongo database": "Effacer les éléments futurs de la base de données mongo", + "Find and remove treatments in the future": "Chercher et effacer les élément dont la date est dans le futur", + "This task find and remove treatments in the future.": "Cette tâche cherche et efface les éléments dont la date est dans le futur", + "Remove treatments in the future": "Efface les traitements ayant un date dans le futur", + "Find and remove entries in the future": "Cherche et efface les événements dans le futur", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Cet outil cherche et efface les valeurs CGM dont la date est dans le futur", + "Remove entries in the future": "Efface les événement dans le futur", + "Loading database ...": "Charge la base de données...", + "Database contains %1 future records": "La base de données contient %1 valeurs futures", + "Remove %1 selected records?": "Effacer %1 valeurs choisies?", + "Error loading database": "Erreur chargement de la base de données", + "Record %1 removed ...": "Événement %1 effacé", + "Error removing record %1": "Echec d'effacement de l'événement %1", + "Deleting records ...": "Effacement dévénements...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Nettoyage de la base de donées Mongo", + "Delete all documents from devicestatus collection": "Effacer tous les documents de la collection devicestatus", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Efface tous les documents de la collection devicestatus. Utile lorsque l'indicateur de chargement de la batterie du Smartphone n'est pas affichée correctement", + "Delete all documents": "Effacer toutes les données", + "Delete all documents from devicestatus collection?": "Effacer toutes les données de la collection devicestatus ?", + "Database contains %1 records": "La base de donées contient %1 événements", + "All records removed ...": "Toutes les valeurs ont été effacées", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Outils d'administration", + "Nightscout reporting": "Rapports Nightscout", + "Cancel": "Interrompre", + "Edit treatment": "Modifier un traitement", + "Duration": "Durée", + "Duration in minutes": "Durée en minutes", + "Temp Basal": "Débit basal temporaire", + "Temp Basal Start": "Début du débit basal temporaire", + "Temp Basal End": "Fin du débit basal temporaire", + "Percent": "Pourcent", + "Basal change in %": "Changement du débit basal en %", + "Basal value": "Valeur du débit basal", + "Absolute basal value": "Débit basal absolu", + "Announcement": "Annonce", + "Loading temp basal data": "Chargement des données de débit basal", + "Save current record before changing to new?": "Sauvegarder l'événement actuel avant d'avancer au suivant ?", + "Profile Switch": "Changement de profil", + "Profile": "Profil", + "General profile settings": "Réglages principaus du profil", + "Title": "Titre", + "Database records": "Entrées de la base de données", + "Add new record": "Ajouter une nouvelle entrée", + "Remove this record": "Supprimer cette entrée", + "Clone this record to new": "Dupliquer cette entrée", + "Record valid from": "Entrée valide à partir de", + "Stored profiles": "Profils sauvegardés", + "Timezone": "Zone horaire", + "Duration of Insulin Activity (DIA)": "Durée d'action de l'insuline", + "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.": "Représente la durée d'action typique de l'insuline. Varie individuellement et selon le type d'insuline. Typiquement 3-4 heures pour les insulines utilisées dans les pompes.", + "Insulin to carb ratio (I:C)": "Rapport Insuline-Glucides (I:C)", + "Hours:": "Heures:", + "hours": "heures", + "g/hour": "g/heure", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g de glucides par Uninté d'insuline. Le rapport représentant la quantité de glucides compensée par une unité d'insuline.", + "Insulin Sensitivity Factor (ISF)": "Facteur de sensibilité à l'insuline (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL ou mmol/l par unité d'insuline. Le rapport représentant la modification de la glycémie résultant de l'administration d'une unité d'insuline.", + "Carbs activity / absorption rate": "Activité glucidique / vitesse d'absorption", + "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).": "grammes par unité de temps. Représente l'augmentation de COB par unité de temps et la quantité de glucides agissant durant cette période. L'absorption des glucides est imprécise et est évaluée en moyenne. L'unité est grammes par heure (g/h).", + "Basal rates [unit/hour]": "Débit basal (Unités/ heure)", + "Target BG range [mg/dL,mmol/L]": "Cible d'intervalle de glycémie", + "Start of record validity": "Début de validité des données", + "Icicle": "Stalactite", + "Render Basal": "Afficher le débit basal", + "Profile used": "Profil utilisé", + "Calculation is in target range.": "La valeur calculée est dans l'intervalle cible", + "Loading profile records ...": "Chargement des profils...", + "Values loaded.": "Valeurs chargées", + "Default values used.": "Valeurs par défault utilisées", + "Error. Default values used.": "Erreur! Valeurs par défault utilisées.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Les intervalles de temps pour la cible glycémique supérieure et inférieure diffèrent. Les valeurs par défault sont restaurées.", + "Valid from:": "Valide à partir de:", + "Save current record before switching to new?": "Sauvegarder cetter entrée avant de procéder à l'entrée suivante?", + "Add new interval before": "Ajouter un intervalle de temps avant", + "Delete interval": "Effacer l'intervalle", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Bolus Duo/Combo", + "Difference": "Différence", + "New time": "Nouveau temps", + "Edit Mode": "Mode Édition", + "When enabled icon to start edit mode is visible": "Lorsqu'activé, l'icône du Mode Édition devient visible", + "Operation": "Opération", + "Move": "Déplacer", + "Delete": "Effacer", + "Move insulin": "Déplacer l'insuline", + "Move carbs": "Déplacer les glucides", + "Remove insulin": "Effacer l'insuline", + "Remove carbs": "Effacer les glucides", + "Change treatment time to %1 ?": "Modifier l'horaire du traitment? Nouveau: %1", + "Change carbs time to %1 ?": "Modifier l'horaire des glucides? Nouveau: %1", + "Change insulin time to %1 ?": "Modifier l'horaire de l'insuline? Nouveau: %1", + "Remove treatment ?": "Effacer le traitment?", + "Remove insulin from treatment ?": "Effacer l'insuline du traitement?", + "Remove carbs from treatment ?": "Effacer les glucides du traitement?", + "Rendering": "Représentation graphique", + "Loading OpenAPS data of": "Chargement des données OpenAPS de", + "Loading profile switch data": "Chargement de données de changement de profil", + "Redirecting you to the Profile Editor to create a new profile.": "Erreur de réglage de profil. \nAucun profil défini pour indiquer l'heure. \nRedirection vers la création d'un nouveau profil. ", + "Pump": "Pompe", + "Sensor Age": "Âge du senseur (SAGE)", + "Insulin Age": "Âge de l'insuline (IAGE)", + "Temporary target": "Cible temporaire", + "Reason": "Raison", + "Eating soon": "Repas sous peu", + "Top": "Haut", + "Bottom": "Bas", + "Activity": "Activité", + "Targets": "Cibles", + "Bolus insulin:": "Bolus d'Insuline", + "Base basal insulin:": "Débit basal de base", + "Positive temp basal insulin:": "Débit basal temporaire positif", + "Negative temp basal insulin:": "Débit basal temporaire négatif", + "Total basal insulin:": "Insuline basale au total:", + "Total daily insulin:": "Insuline totale journalière", + "Unable to %1 Role": "Incapable de %1 rôle", + "Unable to delete Role": "Effacement de rôle impossible", + "Database contains %1 roles": "La base de données contient %1 rôles", + "Edit Role": "Éditer le rôle", + "admin, school, family, etc": "Administrateur, école, famille, etc", + "Permissions": "Permissions", + "Are you sure you want to delete: ": "Êtes-vous sûr de vouloir effacer:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Chaque rôle aura une ou plusieurs permissions. La permission * est un joker (permission universelle), les permissions sont une hierarchie utilisant : comme séparatuer", + "Add new Role": "Ajouter un nouveau rôle", + "Roles - Groups of People, Devices, etc": "Rôles - Groupe de Personnes ou d'appareils", + "Edit this role": "Editer ce rôle", + "Admin authorized": "Administrateur autorisé", + "Subjects - People, Devices, etc": "Utilisateurs - Personnes, Appareils, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Chaque utilisateur aura un identificateur unique et un ou plusieurs rôles. Cliquez sur l'identificateur pour révéler l'utilisateur, ce lien secret peut être partagé.", + "Add new Subject": "Ajouter un nouvel Utilisateur", + "Unable to %1 Subject": "Impossible de créer l'Utilisateur %1", + "Unable to delete Subject": "Impossible d'effacer l'Utilisateur", + "Database contains %1 subjects": "La base de données contient %1 utilisateurs", + "Edit Subject": "Éditer l'Utilisateur", + "person, device, etc": "personne, appareil, etc", + "role1, role2": "rôle1, rôle2", + "Edit this subject": "Éditer cet utilisateur", + "Delete this subject": "Effacer cet utilisateur:", + "Roles": "Rôles", + "Access Token": "Identificateur unique", + "hour ago": "heure avant", + "hours ago": "heures avant", + "Silence for %1 minutes": "Silence pour %1 minutes", + "Check BG": "Vérifier la glycémie", + "BASAL": "Basale", + "Current basal": "Débit basal actuel", + "Sensitivity": "Sensibilité à l'insuline (ISF)", + "Current Carb Ratio": "Rapport Insuline-glucides actuel (I:C)", + "Basal timezone": "Fuseau horaire", + "Active profile": "Profil actif", + "Active temp basal": "Débit basal temporaire actif", + "Active temp basal start": "Début du débit basal temporaire", + "Active temp basal duration": "Durée du débit basal temporaire", + "Active temp basal remaining": "Durée restante de débit basal temporaire", + "Basal profile value": "Valeur du débit basal", + "Active combo bolus": "Bolus Duo/Combo actif", + "Active combo bolus start": "Début de Bolus Duo/Combo", + "Active combo bolus duration": "Durée du Bolus Duo/Combo", + "Active combo bolus remaining": "Activité restante du Bolus Duo/Combo", + "BG Delta": "Différence de glycémie", + "Elapsed Time": "Temps écoulé", + "Absolute Delta": "Différence absolue", + "Interpolated": "Interpolé", + "BWP": "Calculateur de bolus (BWP)", + "Urgent": "Urgent", + "Warning": "Attention", + "Info": "Information", + "Lowest": "Valeur la plus basse", + "Snoozing high alarm since there is enough IOB": "Alarme haute ignorée car suffisamment d'insuline à bord (IOB)", + "Check BG, time to bolus?": "Vérifier la glycémie, bolus nécessaire ?", + "Notice": "Notification", + "required info missing": "Information nécessaire manquante", + "Insulin on Board": "Insuline à bord (IOB)", + "Current target": "Cible actuelle", + "Expected effect": "Effect escompté", + "Expected outcome": "Résultat escompté", + "Carb Equivalent": "Equivalent glucidique", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Insuline en excès: %1U de plus que nécessaire pour atteindre la cible inférieure, sans prendre en compte les glucides", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Insuline en excès: %1U de plus que nécessaire pour atteindre la cible inférieure, ASSUREZ UN APPORT SUFFISANT DE GLUCIDES", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Réduction d'insuline active nécessaire pour atteindre la cible inférieure. Débit basal trop élevé ?", + "basal adjustment out of range, give carbs?": "ajustement de débit basal hors de limites, prenez des glucides?", + "basal adjustment out of range, give bolus?": "ajustement de débit basal hors de limites, prenez un bolus?", + "above high": "plus haut que la limite supérieure", + "below low": "plus bas que la limite inférieure", + "Projected BG %1 target": "Glycémie cible projetée %1 ", + "aiming at": "visant", + "Bolus %1 units": "Bolus %1 unités", + "or adjust basal": "ou ajuster le débit basal", + "Check BG using glucometer before correcting!": "Vérifier la glycémie avec un glucomètre avant de corriger!", + "Basal reduction to account %1 units:": "Réduction du débit basal pour obtenir l'effet d' %1 unité", + "30m temp basal": "débit basal temporaire de 30 min", + "1h temp basal": "débit basal temporaire de 1 heure", + "Cannula change overdue!": "Dépassement de date de changement de canule!", + "Time to change cannula": "Le moment est venu de changer de canule", + "Change cannula soon": "Changement de canule bientòt", + "Cannula age %1 hours": "âge de la canule %1 heures", + "Inserted": "Insérée", + "CAGE": "CAGE", + "COB": "COB", + "Last Carbs": "Derniers glucides", + "IAGE": "IAGE", + "Insulin reservoir change overdue!": "Dépassement de date de changement de réservoir d'insuline!", + "Time to change insulin reservoir": "Le moment est venu de changer de réservoir d'insuline", + "Change insulin reservoir soon": "Changement de réservoir d'insuline bientôt", + "Insulin reservoir age %1 hours": "Âge du réservoir d'insuline %1 heures", + "Changed": "Changé", + "IOB": "IOB", + "Careportal IOB": "Careportal IOB", + "Last Bolus": "Dernier Bolus", + "Basal IOB": "IOB du débit basal", + "Source": "Source", + "Stale data, check rig?": "Valeurs trop anciennes, vérifier l'uploadeur", + "Last received:": "Dernière réception:", + "%1m ago": "il y a %1 min", + "%1h ago": "%1 heures plus tôt", + "%1d ago": "%1 jours plus tôt", + "RETRO": "RETRO", + "SAGE": "SAGE", + "Sensor change/restart overdue!": "Changement/Redémarrage du senseur dépassé!", + "Time to change/restart sensor": "C'est le moment de changer/redémarrer le senseur", + "Change/restart sensor soon": "Changement/Redémarrage du senseur bientôt", + "Sensor age %1 days %2 hours": "Âge su senseur %1 jours et %2 heures", + "Sensor Insert": "Insertion du senseur", + "Sensor Start": "Démarrage du senseur", + "days": "jours", + "Insulin distribution": "Distribution de l'insuline", + "To see this report, press SHOW while in this view": "Pour voir le rapport, cliquer sur MONTRER dans cette fenêtre", + "AR2 Forecast": "Prédiction AR2", + "OpenAPS Forecasts": "Prédictions OpenAPS", + "Temporary Target": "Cible temporaire", + "Temporary Target Cancel": "Effacer la cible temporaire", + "OpenAPS Offline": "OpenAPS déconnecté", + "Profiles": "Profils", + "Time in fluctuation": "Temps passé en fluctuation", + "Time in rapid fluctuation": "Temps passé en fluctuation rapide", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Ceci est seulement une estimation grossière qui peut être très imprécise et ne remplace pas une mesure sanguine adéquate. La formule est empruntée à l'article:", + "Filter by hours": "Filtrer par heures", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Le Temps passé en fluctuation et le temps passé en fluctuation rapide mesurent la part de temps durant la période examinée, pendant laquelle la glycémie a évolué relativement ou très rapidement. Les valeurs basses sont les meilleures.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "La Variation Totale Journalière Moyenne est la somme de toute les excursions glycémiques absolues pour une période analysée, divisée par le nombre de jours. Les valeurs basses sont les meilleures.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "La Variation Horaire Moyenne est la somme de toute les excursions glycémiques absolues pour une période analysée, divisée par le nombre d'heures dans la période. Les valeures basses sont les meilleures.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">ici.", + "Mean Total Daily Change": "Variation Totale Journalière Moyenne", + "Mean Hourly Change": "Variation Horaire Moyenne", + "FortyFiveDown": "en chute lente", + "FortyFiveUp": "en montée lente", + "Flat": "stable", + "SingleUp": "en montée", + "SingleDown": "en chute", + "DoubleDown": "en chute rapide", + "DoubleUp": "en montée rapide", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Graisses [g]", + "Protein [g]": "Protéines [g]", + "Energy [kJ]": "Énergie [kJ]", + "Clock Views:": "Vue Horloge:", + "Clock": "L'horloge", + "Color": "Couleur", + "Simple": "Simple", + "TDD average": "TDD average", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Carbs average", + "Eating Soon": "Eating Soon", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "change", + "Speech": "Speech", + "Target Top": "Target Top", + "Target Bottom": "Target Bottom", + "Canceled": "Canceled", + "Meter BG": "Meter BG", + "predicted": "predicted", + "future": "future", + "ago": "ago", + "Last data received": "Last data received", + "Clock View": "Vue Horloge", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/he_IL.json b/translations/he_IL.json new file mode 100644 index 00000000000..71b42c166c5 --- /dev/null +++ b/translations/he_IL.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "מקשיב על פתחה", + "Mo": "ב", + "Tu": "ג", + "We": "ד", + "Th": "ה", + "Fr": "ו", + "Sa": "ש", + "Su": "א", + "Monday": "שני", + "Tuesday": "שלישי", + "Wednesday": "רביעי", + "Thursday": "חמישי", + "Friday": "שישי", + "Saturday": "שבת", + "Sunday": "ראשון", + "Category": "קטגוריה", + "Subcategory": "תת-קטגוריה", + "Name": "שם", + "Today": "היום", + "Last 2 days": "יומיים אחרונים", + "Last 3 days": "שלושה ימים אחרונים", + "Last week": "שבוע אחרון", + "Last 2 weeks": "שבועיים אחרונים", + "Last month": "חודש אחרון", + "Last 3 months": "שלושה חודשים אחרונים", + "between": "between", + "around": "around", + "and": "and", + "From": "מ", + "To": "עד", + "Notes": "הערות", + "Food": "אוכל", + "Insulin": "אינסולין", + "Carbs": "פחמימות", + "Notes contain": "ההערות מכילות", + "Target BG range bottom": "טווח מטרה סף תחתון", + "top": "למעלה", + "Show": "הצג", + "Display": "תצוגה", + "Loading": "טוען", + "Loading profile": "טוען פרופיל", + "Loading status": "טוען סטטוס", + "Loading food database": "טוען נתוני אוכל", + "not displayed": "לא מוצג", + "Loading CGM data of": "טוען נתוני חיישן סוכר של", + "Loading treatments data of": "טוען נתוני טיפולים של", + "Processing data of": "מעבד נתונים של", + "Portion": "מנה", + "Size": "גודל", + "(none)": "(ללא)", + "None": "ללא", + "": "<ללא>", + "Result is empty": "אין תוצאה", + "Day to day": "יום ביומו", + "Week to week": "Week to week", + "Daily Stats": "סטטיסטיקה יומית", + "Percentile Chart": "טבלת עשירונים", + "Distribution": "התפלגות", + "Hourly stats": "סטטיסטיקה שעתית", + "netIOB stats": "netIOB סטטיסטיקת", + "temp basals must be rendered to display this report": "חובה לאפשר רמה בזלית זמנית כדי לרות דוח זה", + "Weekly success": "הצלחה שבועית", + "No data available": "אין מידע זמין", + "Low": "נמוך", + "In Range": "בטווח", + "Period": "תקופה", + "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*": "משוער A1c", + "Weekly Success": "הצלחה שבועית", + "There is not sufficient data to run this report. Select more days.": "לא נמצא מספיק מידע ליצירת הדוח. בחר ימים נוספים.", + "Using stored API secret hash": "משתמש בסיסמת ממשק תכנות יישומים הסודית ", + "No API secret hash stored yet. You need to enter API secret.": "הכנס את הסיסמא הסודית של ה API", + "Database loaded": "בסיס נתונים נטען", + "Error: Database failed to load": "שגיאה: לא ניתן לטעון בסיס נתונים", + "Error": "Error", + "Create new record": "צור רשומה חדשה", + "Save record": "שמור רשומה", + "Portions": "מנות", + "Unit": "יחידות", + "GI": "GI", + "Edit record": "ערוך רשומה", + "Delete record": "מחק רשומה", + "Move to the top": "עבור למעלה", + "Hidden": "מוסתר", + "Hide after use": "הסתר לאחר שימוש", + "Your API secret must be at least 12 characters long": "הסיסמא חייבת להיות באורך 12 תווים לפחות", + "Bad API secret": "סיסמא שגויה", + "API secret hash stored": "סיסמא אוכסנה", + "Status": "מצב מערכת", + "Not loaded": "לא נטען", + "Food Editor": "עורך המזון", + "Your database": "בסיס הנתונים שלך", + "Filter": "סנן", + "Save": "שמור", + "Clear": "נקה", + "Record": "רשומה", + "Quick picks": "בחירה מהירה", + "Show hidden": "הצג נתונים מוסתרים", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "טיפולים", + "Time": "זמן", + "Event Type": "סוג אירוע", + "Blood Glucose": "סוכר בדם", + "Entered By": "הוזן על-ידי", + "Delete this treatment?": "למחוק רשומה זו?", + "Carbs Given": "פחמימות שנאכלו", + "Inzulin Given": "אינסולין שניתן", + "Event Time": "זמן האירוע", + "Please verify that the data entered is correct": "נא לוודא שהמידע שהוזן הוא נכון ומדוייק", + "BG": "סוכר בדם", + "Use BG correction in calculation": "השתמש ברמת סוכר בדם לצורך החישוב", + "BG from CGM (autoupdated)": "רמת סוכר מהחיישן , מעודכן אוטומטית", + "BG from meter": "רמת סוכר ממד הסוכר", + "Manual BG": "רמת סוכר ידנית", + "Quickpick": "בחירה מהירה", + "or": "או", + "Add from database": "הוסף מבסיס נתונים", + "Use carbs correction in calculation": "השתמש בתיקון פחמימות במהלך החישוב", + "Use COB correction in calculation": "השתמש בתיקון פחמימות בגוף במהלך החישוב", + "Use IOB in calculation": "השתמש בתיקון אינסולין בגוף במהלך החישוב", + "Other correction": "תיקון אחר", + "Rounding": "עיגול", + "Enter insulin correction in treatment": "הזן תיקון אינסולין בטיפול", + "Insulin needed": "אינסולין נדרש", + "Carbs needed": "פחמימות נדרשות", + "Carbs needed if Insulin total is negative value": "פחמימות דרושות אם סך אינסולין הוא שלילי", + "Basal rate": "קצב בזלי", + "60 minutes earlier": "שישים דקות מוקדם יותר", + "45 minutes earlier": "ארבעים דקות מוקדם יותר", + "30 minutes earlier": "שלושים דקות מוקדם יותר", + "20 minutes earlier": "עשרים דקות מוקדם יותר", + "15 minutes earlier": "חמש עשרה דקות מוקדם יותר", + "Time in minutes": "זמן בדקות", + "15 minutes later": "רבע שעה מאוחר יותר", + "20 minutes later": "עשרים דקות מאוחר יותר", + "30 minutes later": "חצי שעה מאוחר יותר", + "45 minutes later": "שלושת רבעי שעה מאוחר יותר", + "60 minutes later": "שעה מאוחר יותר", + "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": "אינסולין בגוף", + "Carbs-on-Board": "פחמימות בגוף", + "Bolus Wizard Preview": "סקירת אשף הבולוס", + "Value Loaded": "ערך נטען", + "Cannula Age": "גיל הקנולה", + "Basal Profile": "פרופיל רמה בזלית", + "Silence for 30 minutes": "השתק לשלושים דקות", + "Silence for 60 minutes": "השתק לששים דקות", + "Silence for 90 minutes": "השתק לתשעים דקות", + "Silence for 120 minutes": "השתק לשעתיים", + "Settings": "הגדרות", + "Units": "יחידות", + "Date format": "פורמט תאריך", + "12 hours": "שתים עשרה שעות", + "24 hours": "עשרים וארבע שעות", + "Log a Treatment": "הזן רשומה", + "BG Check": "בדיקת סוכר", + "Meal Bolus": "בולוס ארוחה", + "Snack Bolus": "בולוס ארוחת ביניים", + "Correction Bolus": "בולוס תיקון", + "Carb Correction": "בולוס פחמימות", + "Note": "הערה", + "Question": "שאלה", + "Exercise": "פעילות גופנית", + "Pump Site Change": "החלפת צינורית משאבה", + "CGM Sensor Start": "אתחול חיישן סוכר", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "החלפת חיישן סוכר", + "Dexcom Sensor Start": "אתחול חיישן סוכר של דקסקום", + "Dexcom Sensor Change": "החלפת חיישן סוכר של דקסקום", + "Insulin Cartridge Change": "החלפת מחסנית אינסולין", + "D.A.D. Alert": "ווף! ווף! התראת גשג", + "Glucose Reading": "מדידת סוכר", + "Measurement Method": "אמצעי מדידה", + "Meter": "מד סוכר", + "Insulin Given": "אינסולין שניתן", + "Amount in grams": "כמות בגרמים", + "Amount in units": "כמות ביחידות", + "View all treatments": "הצג את כל הטיפולים", + "Enable Alarms": "הפעל התראות", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "כשמופעל התראות יכולות להישמע.", + "Urgent High Alarm": "התראת גבוה דחופה", + "High Alarm": "התראת גבוה", + "Low Alarm": "התראת נמוך", + "Urgent Low Alarm": "התראת נמוך דחופה", + "Stale Data: Warn": "אזהרה-נתונים ישנים", + "Stale Data: Urgent": "דחוף-נתונים ישנים", + "mins": "דקות", + "Night Mode": "מצב לילה", + "When enabled the page will be dimmed from 10pm - 6am.": "במצב זה המסך יעומעם בין השעות עשר בלילה לשש בבוקר", + "Enable": "אפשר", + "Show Raw BG Data": "הראה את רמת הסוכר ללא עיבוד", + "Never": "אף פעם", + "Always": "תמיד", + "When there is noise": "בנוכחות רעש", + "When enabled small white dots will be displayed for raw BG data": "במצב זה,רמות סוכר לפני עיבוד יוצגו כנקודות לבנות קטנות", + "Custom Title": "כותרת מותאמת אישית", + "Theme": "נושא", + "Default": "בְּרִירַת מֶחדָל", + "Colors": "צבעים", + "Colorblind-friendly colors": "צבעים ידידותיים לעוורי צבעים", + "Reset, and use defaults": "איפוס ושימוש ברירות מחדל", + "Calibrations": "כיולים", + "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 BG", + "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": "בעתיד", + "Update": "עדכן", + "Order": "סֵדֶר", + "oldest on top": "העתיק ביותר למעלה", + "newest on top": "החדש ביותר למעלה", + "All sensor events": "כל האירועים חיישן", + "Remove future items from mongo database": "הסרת פריטים עתידיים ממסד הנתונים מונגו", + "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.": "משימה זו מוצאת נתונים של סנסור סוכר ומסירה אותם בעתיד, שנוצרו על ידי העלאת נתונים עם תאריך / שעה שגויים", + "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 records deleted", + "Clean Mongo status database": "נקי מסד הנתונים מצב מונגו ", + "Delete all documents from devicestatus collection": "מחק את כל המסמכים מאוסף סטטוס המכשיר ", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.", + "Delete all documents": "מחק את כל המסמכים ", + "Delete all documents from devicestatus collection?": "מחק את כל המסמכים מרשימת סטטוס ההתקנים ", + "Database contains %1 records": "מסד נתונים מכיל %1 רשומות ", + "All records removed ...": "כל הרשומות נמחקו ", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "זה לא מיספר %1", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "כלי אדמיניסטרציה ", + "Nightscout reporting": "דוחות נייססקאוט", + "Cancel": "בטל ", + "Edit treatment": "ערוך טיפול ", + "Duration": "משך ", + "Duration in minutes": "משך בדקות ", + "Temp Basal": "רמה בזלית זמנית", + "Temp Basal Start": "התחלת רמה בזלית זמנית ", + "Temp Basal End": "סיום רמה בזלית זמנית", + "Percent": "אחוז ", + "Basal change in %": "שינוי קצב בזלי באחוזים ", + "Basal value": "ערך בזלי", + "Absolute basal value": "ערך בזלי מוחלט ", + "Announcement": "הודעה", + "Loading temp basal data": "טוען ערך בזלי זמני ", + "Save current record before changing to new?": "שמור רשומה נוכחית לפני שעוברים לרשומה חדשה? ", + "Profile Switch": "החלף פרופיל ", + "Profile": "פרופיל ", + "General profile settings": "הגדרות פרופיל כלליות", + "Title": "כותרת ", + "Database records": "רשומות ", + "Add new record": "הוסף רשומה חדשה ", + "Remove this record": "מחק רשומה זו ", + "Clone this record to new": "שכפל רשומה זו לרשומה חדשה ", + "Record valid from": "רשומה תקפה מ ", + "Stored profiles": "פרופילים מאוכסנים ", + "Timezone": "אזור זמן ", + "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.": "מייצג את משך הטיפוסי שבו האינסולין נכנס לתוקף. משתנה לכל חולה וסוג האינסולין. בדרך כלל 3-4 שעות עבור רוב אינסולין שאיבה רוב המטופלים. לפעמים נקרא גם אורך חיי אינסולין. ", + "Insulin to carb ratio (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)": "גורם רגישות לאינסולין ", + "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": "פעילות פחמימות / קצב קליטה ", + "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).": "גרם ליחידת זמן. מייצג הן את השינוי בפחמימות ליחידת זמן והן את כמות הפחמימות אשר אמורות להיכנס לתוקף במהלך אותה תקופה. ספיגת הפחמימות / פעילות הם פחות מובן מאשר פעילות האינסולין, אך ניתן להתקרב באמצעות עיכוב ראשוני ואחריו שיעור קבוע של קליטה (g / hr) ", + "Basal rates [unit/hour]": "קצב בסיסי (יחידה לשעה) ", + "Target BG range [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": "בולוס קומבו ", + "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": "טוען מידע מ ", + "Loading profile switch data": "טוען מידע החלפת פרופיל ", + "Redirecting you to the Profile Editor to create a new profile.": "הגדרת פרופיל שגוי. \n פרופיל מוגדר לזמן המוצג. מפנה מחדש לעורך פרופיל כדי ליצור פרופיל חדש. ", + "Pump": "משאבה ", + "Sensor Age": "גיל סנסור סוכר ", + "Insulin Age": "גיל אינסולין ", + "Temporary target": "מטרה זמנית ", + "Reason": "סיבה ", + "Eating soon": "אוכל בקרוב", + "Top": "למעלה ", + "Bottom": "למטה ", + "Activity": "פעילות ", + "Targets": "מטרות ", + "Bolus insulin:": "אינסולין בולוס ", + "Base basal insulin:": "אינסולין בזלי בסיס ", + "Positive temp basal insulin:": "אינסולין בזלי זמני חיובי ", + "Negative temp basal insulin:": "אינסולין בזלי זמני שלילי ", + "Total basal insulin:": "סך אינסולין בזלי ", + "Total daily insulin:": "סך אינסולין ביום ", + "Unable to %1 Role": "לא יכול תפקיד %1", + "Unable to delete Role": "לא יכול לבטל תפקיד ", + "Database contains %1 roles": "בסיס הנתונים מכיל %1 תפקידים ", + "Edit Role": "ערוך תפקיד ", + "admin, school, family, etc": "מנהל, בית ספר, משפחה, וכו ", + "Permissions": "הרשאות ", + "Are you sure you want to delete: ": "אתה בטוח שאתה רוצה למחוק", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.", + "Add new Role": "הוסף תפקיד חדש ", + "Roles - Groups of People, Devices, etc": "תפקידים - קבוצות של אנשים, התקנים, וכו ", + "Edit this role": "ערוך תפקיד זה ", + "Admin authorized": "מנהל אושר ", + "Subjects - People, Devices, etc": "נושאים - אנשים, התקנים וכו ", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "לכל נושא תהיה אסימון גישה ייחודי ותפקיד אחד או יותר. לחץ על אסימון הגישה כדי לפתוח תצוגה חדשה עם הנושא הנבחר, קישור סודי זה יכול להיות משותף ", + "Add new Subject": "הוסף נושא חדש ", + "Unable to %1 Subject": "לא יכול ל %1 נושאי", + "Unable to delete Subject": "לא יכול לבטל נושא ", + "Database contains %1 subjects": "מסד נתונים מכיל %1 נושאים ", + "Edit Subject": "ערוך נושא ", + "person, device, etc": "אדם, מכשיר, וכו ", + "role1, role2": "תפקיד1, תפקיד2 ", + "Edit this subject": "ערוך נושא זה ", + "Delete this subject": "בטל נושא זה ", + "Roles": "תפקידים ", + "Access Token": "אסימון גישה ", + "hour ago": "לפני שעה ", + "hours ago": "לפני שעות ", + "Silence for %1 minutes": "שקט ל %1 דקות ", + "Check BG": "בדוק סוכר בדם ", + "BASAL": "רמה בזלית ", + "Current basal": "רמה בזלית נוכחית ", + "Sensitivity": "רגישות ", + "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": "BWP", + "Urgent": "דחוף ", + "Warning": "אזהרה ", + "Info": "לידיעה ", + "Lowest": "הנמוך ביותר ", + "Snoozing high alarm since there is enough IOB": "נודניק את ההתראה הגבוהה מפני שיש מספיק אינסולין פעיל בגוף", + "Check BG, time to bolus?": "בדוק רמת סוכר. צריך להוסיף אינסולין? ", + "Notice": "הודעה ", + "required info missing": "חסרה אינפורמציה ", + "Insulin on Board": "אינסולין פעיל בגוף ", + "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": "שלושים דקות רמה בזלית זמנית ", + "1h temp basal": "שעה רמה בזלית זמנית ", + "Cannula change overdue!": "יש צורך בהחלפת קנולה! ", + "Time to change cannula": "הגיע הזמן להחליף קנולה ", + "Change cannula soon": "החלף קנולה בקרוב ", + "Cannula age %1 hours": "כיל הקנולה %1 שעות ", + "Inserted": "הוכנס ", + "CAGE": "גיל הקנולה ", + "COB": "COB ", + "Last Carbs": "פחמימות אחרונות ", + "IAGE": "גיל אינסולין ", + "Insulin reservoir change overdue!": "החלף מאגר אינסולין! ", + "Time to change insulin reservoir": "הגיע הזמן להחליף מאגר אינסולין ", + "Change insulin reservoir soon": "החלף מאגר אינסולין בקרוב ", + "Insulin reservoir age %1 hours": "גיל מאגר אינסולין %1 שעות ", + "Changed": "הוחלף ", + "IOB": "IOB ", + "Careportal IOB": "Careportal IOB ", + "Last Bolus": "בולוס אחרון ", + "Basal IOB": "IOB בזלי ", + "Source": "מקור ", + "Stale data, check rig?": "מידע ישן, בדוק את המערכת? ", + "Last received:": "התקבל לאחרונה: ", + "%1m ago": "לפני %1 דקות ", + "%1h ago": "לפני %1 שעות ", + "%1d ago": "לפני %1 ימים ", + "RETRO": "רטרו ", + "SAGE": "גיל הסנסור ", + "Sensor change/restart overdue!": "שנה או אתחל את הסנסור! ", + "Time to change/restart sensor": "הגיע הזמן לשנות או לאתחל את הסנסור ", + "Change/restart sensor soon": "שנה או אתחל את הסנסור בקרוב ", + "Sensor age %1 days %2 hours": "גיל הסנסור %1 ימים %2 שעות ", + "Sensor Insert": "הכנס סנסור ", + "Sensor Start": "סנסור התחיל ", + "days": "ימים ", + "Insulin distribution": "התפלגות אינסולין ", + "To see this report, press SHOW while in this view": "כדי להציג דוח זה, לחץ על\"הראה\" בתצוגה זו ", + "AR2 Forecast": "AR2 תחזית ", + "OpenAPS Forecasts": "תחזית OPENAPS ", + "Temporary Target": "מטרה זמנית ", + "Temporary Target Cancel": "בטל מטרה זמנית ", + "OpenAPS Offline": "OPENAPS לא פעיל ", + "Profiles": "פרופילים ", + "Time in fluctuation": "זמן בתנודות ", + "Time in rapid fluctuation": "זמן בתנודות מהירות ", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "זוהי רק הערכה גסה שיכולה להיות מאוד לא מדויקת ואינה מחליפה את בדיקת הדם בפועל. הנוסחה המשמשת נלקחת מ: ", + "Filter by hours": "Filter by hours", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", + "Mean Total Daily Change": "שינוי יומי ממוצע ", + "Mean Hourly Change": "שינוי ממוצע לשעה ", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "[g] שמן", + "Protein [g]": "[g] חלבון", + "Energy [kJ]": "[kJ] אנרגיה", + "Clock Views:": "צגים השעון", + "Clock": "שעון", + "Color": "צבע", + "Simple": "פשוט", + "TDD average": "TDD average", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "פחמימות ממוצע", + "Eating Soon": "אוכל בקרוב", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "שינוי", + "Speech": "דיבור", + "Target Top": "ראש היעד", + "Target Bottom": "תחתית היעד", + "Canceled": "מבוטל", + "Meter BG": "סוכר הדם של מד", + "predicted": "חזה", + "future": "עתיד", + "ago": "לפני", + "Last data received": "הנתונים המקבל אחרונים", + "Clock View": "צג השעון", + "Protein": "חלבון", + "Fat": "שמן", + "Protein average": "חלבון ממוצע", + "Fat average": "שמן ממוצע", + "Total carbs": "כל פחמימות", + "Total protein": "כל חלבונים", + "Total fat": "כל שומנים", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/hr_HR.json b/translations/hr_HR.json new file mode 100644 index 00000000000..193448d6dfd --- /dev/null +++ b/translations/hr_HR.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Slušanje na portu", + "Mo": "Pon", + "Tu": "Uto", + "We": "Sri", + "Th": "Čet", + "Fr": "Pet", + "Sa": "Sub", + "Su": "Ned", + "Monday": "Ponedjeljak", + "Tuesday": "Utorak", + "Wednesday": "Srijeda", + "Thursday": "Četvrtak", + "Friday": "Petak", + "Saturday": "Subota", + "Sunday": "Nedjelja", + "Category": "Kategorija", + "Subcategory": "Podkategorija", + "Name": "Ime", + "Today": "Danas", + "Last 2 days": "Posljednja 2 dana", + "Last 3 days": "Posljednja 3 dana", + "Last week": "Protekli tjedan", + "Last 2 weeks": "Protekla 2 tjedna", + "Last month": "Protekli mjesec", + "Last 3 months": "Protekla 3 mjeseca", + "between": "between", + "around": "around", + "and": "and", + "From": "Od", + "To": "Do", + "Notes": "Bilješke", + "Food": "Hrana", + "Insulin": "Inzulin", + "Carbs": "Ugljikohidrati", + "Notes contain": "Sadržaj bilješki", + "Target BG range bottom": "Ciljna donja granica GUK-a", + "top": "Gornja", + "Show": "Prikaži", + "Display": "Prikaži", + "Loading": "Učitavanje", + "Loading profile": "Učitavanje profila", + "Loading status": "Učitavanje statusa", + "Loading food database": "Učitavanje baze podataka o hrani", + "not displayed": "Ne prikazuje se", + "Loading CGM data of": "Učitavanja podataka CGM-a", + "Loading treatments data of": "Učitavanje podataka o tretmanu", + "Processing data of": "Obrada podataka", + "Portion": "Dio", + "Size": "Veličina", + "(none)": "(Prazno)", + "None": "Prazno", + "": "", + "Result is empty": "Prazan rezultat", + "Day to day": "Svakodnevno", + "Week to week": "Tjedno", + "Daily Stats": "Dnevna statistika", + "Percentile Chart": "Percentili", + "Distribution": "Distribucija", + "Hourly stats": "Statistika po satu", + "netIOB stats": "netIOB statistika", + "temp basals must be rendered to display this report": "temp bazali moraju biti prikazani kako bi se vidio ovaj izvještaj", + "Weekly success": "Tjedni uspjeh", + "No data available": "Nema raspoloživih podataka", + "Low": "Nizak", + "In Range": "U rasponu", + "Period": "Period", + "High": "Visok", + "Average": "Prosjek", + "Low Quartile": "Donji kvartil", + "Upper Quartile": "Gornji kvartil", + "Quartile": "Kvartil", + "Date": "Datum", + "Normal": "Normalno", + "Median": "Srednje", + "Readings": "Vrijednosti", + "StDev": "Standardna devijacija", + "Daily stats report": "Izvješće o dnevnim statistikama", + "Glucose Percentile report": "Izvješće o postotku GUK-a", + "Glucose distribution": "Distribucija GUK-a", + "days total": "ukupno dana", + "Total per day": "Ukupno po danu", + "Overall": "Sveukupno", + "Range": "Raspon", + "% of Readings": "% očitanja", + "# of Readings": "broj očitanja", + "Mean": "Prosjek", + "Standard Deviation": "Standardna devijacija", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Procjena HbA1c-a", + "Weekly Success": "Tjedni uspjeh", + "There is not sufficient data to run this report. Select more days.": "Nema dovoljno podataka za izvođenje izvještaja. Odaberite još dana.", + "Using stored API secret hash": "Koristi se pohranjeni API tajni hash", + "No API secret hash stored yet. You need to enter API secret.": "Nema pohranjenog API tajnog hasha. Unesite tajni API", + "Database loaded": "Baza podataka je učitana", + "Error: Database failed to load": "Greška: Baza podataka nije učitana", + "Error": "Greška", + "Create new record": "Kreiraj novi zapis", + "Save record": "Spremi zapis", + "Portions": "Dijelovi", + "Unit": "Jedinica", + "GI": "GI", + "Edit record": "Uredi zapis", + "Delete record": "Izbriši zapis", + "Move to the top": "Premjesti na vrh", + "Hidden": "Skriveno", + "Hide after use": "Sakrij nakon korištenja", + "Your API secret must be at least 12 characters long": "Vaš tajni API mora sadržavati barem 12 znakova", + "Bad API secret": "Neispravan tajni API", + "API secret hash stored": "API tajni hash je pohranjen", + "Status": "Status", + "Not loaded": "Nije učitano", + "Food Editor": "Editor hrane", + "Your database": "Vaša baza podataka", + "Filter": "Filter", + "Save": "Spremi", + "Clear": "Očisti", + "Record": "Zapis", + "Quick picks": "Brzi izbor", + "Show hidden": "Prikaži skriveno", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Tretmani", + "Time": "Vrijeme", + "Event Type": "Vrsta događaja", + "Blood Glucose": "GUK", + "Entered By": "Unos izvršio", + "Delete this treatment?": "Izbriši ovaj tretman?", + "Carbs Given": "Količina UGH", + "Inzulin Given": "Količina inzulina", + "Event Time": "Vrijeme događaja", + "Please verify that the data entered is correct": "Molim Vas provjerite jesu li uneseni podaci ispravni", + "BG": "GUK", + "Use BG correction in calculation": "Koristi korekciju GUK-a u izračunu", + "BG from CGM (autoupdated)": "GUK sa CGM-a (ažuriran automatski)", + "BG from meter": "GUK s glukometra", + "Manual BG": "Ručno unesen GUK", + "Quickpick": "Brzi izbor", + "or": "ili", + "Add from database": "Dodaj iz baze podataka", + "Use carbs correction in calculation": "Koristi korekciju za UH u izračunu", + "Use COB correction in calculation": "Koristi aktivne UGH u izračunu", + "Use IOB in calculation": "Koristi aktivni inzulin u izračunu", + "Other correction": "Druga korekcija", + "Rounding": "Zaokruživanje", + "Enter insulin correction in treatment": "Unesi korekciju inzulinom u tretman", + "Insulin needed": "Potrebno inzulina", + "Carbs needed": "Potrebno UGH", + "Carbs needed if Insulin total is negative value": "Potrebno UGH ako je ukupna vrijednost inzulina negativna", + "Basal rate": "Bazal", + "60 minutes earlier": "Prije 60 minuta", + "45 minutes earlier": "Prije 45 minuta", + "30 minutes earlier": "Prije 30 minuta", + "20 minutes earlier": "Prije 20 minuta", + "15 minutes earlier": "Prije 15 minuta", + "Time in minutes": "Vrijeme u minutama", + "15 minutes later": "15 minuta kasnije", + "20 minutes later": "20 minuta kasnije", + "30 minutes later": "30 minuta kasnije", + "45 minutes later": "45 minuta kasnije", + "60 minutes later": "60 minuta kasnije", + "Additional Notes, Comments": "Dodatne bilješke, komentari", + "RETRO MODE": "Retrospektivni način", + "Now": "Sad", + "Other": "Drugo", + "Submit Form": "Spremi", + "Profile Editor": "Editor profila", + "Reports": "Izvještaji", + "Add food from your database": "Dodajte hranu iz svoje baze podataka", + "Reload database": "Ponovo učitajte bazu podataka", + "Add": "Dodaj", + "Unauthorized": "Neautorizirano", + "Entering record failed": "Neuspjeli unos podataka", + "Device authenticated": "Uređaj autenticiran", + "Device not authenticated": "Uređaj nije autenticiran", + "Authentication status": "Status autentikacije", + "Authenticate": "Autenticirati", + "Remove": "Ukloniti", + "Your device is not authenticated yet": "Vaš uređaj još nije autenticiran", + "Sensor": "Senzor", + "Finger": "Prst", + "Manual": "Ručno", + "Scale": "Skala", + "Linear": "Linearno", + "Logarithmic": "Logaritamski", + "Logarithmic (Dynamic)": "Logaritamski (Dinamički)", + "Insulin-on-Board": "Aktivni inzulin", + "Carbs-on-Board": "Aktivni ugljikohidrati", + "Bolus Wizard Preview": "Pregled bolus čarobnjaka", + "Value Loaded": "Vrijednost učitana", + "Cannula Age": "Starost kanile", + "Basal Profile": "Bazalni profil", + "Silence for 30 minutes": "Tišina 30 minuta", + "Silence for 60 minutes": "Tišina 60 minuta", + "Silence for 90 minutes": "Tišina 90 minuta", + "Silence for 120 minutes": "Tišina 120 minuta", + "Settings": "Postavke", + "Units": "Jedinice", + "Date format": "Format datuma", + "12 hours": "12 sati", + "24 hours": "24 sata", + "Log a Treatment": "Evidencija tretmana", + "BG Check": "Kontrola GUK-a", + "Meal Bolus": "Bolus za obrok", + "Snack Bolus": "Bolus za užinu", + "Correction Bolus": "Korekcija", + "Carb Correction": "Bolus za hranu", + "Note": "Bilješka", + "Question": "Pitanje", + "Exercise": "Aktivnost", + "Pump Site Change": "Promjena seta", + "CGM Sensor Start": "Start senzora", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Promjena senzora", + "Dexcom Sensor Start": "Start Dexcom senzora", + "Dexcom Sensor Change": "Promjena Dexcom senzora", + "Insulin Cartridge Change": "Promjena spremnika inzulina", + "D.A.D. Alert": "Obavijest dijabetičkog psa", + "Glucose Reading": "Vrijednost GUK-a", + "Measurement Method": "Metoda mjerenja", + "Meter": "Glukometar", + "Insulin Given": "Količina iznulina", + "Amount in grams": "Količina u gramima", + "Amount in units": "Količina u jedinicama", + "View all treatments": "Prikaži sve tretmane", + "Enable Alarms": "Aktiviraj alarme", + "Pump Battery Change": "Zamjena baterije pumpe", + "Pump Battery Low Alarm": "Upozorenje slabe baterije pumpe", + "Pump Battery change overdue!": "Prošao je rok za zamjenu baterije pumpe!", + "When enabled an alarm may sound.": "Kad je aktiviran, alarm se može oglasiti", + "Urgent High Alarm": "Hitni alarm za hiper", + "High Alarm": "Alarm za hiper", + "Low Alarm": "Alarm za hipo", + "Urgent Low Alarm": "Hitni alarm za hipo", + "Stale Data: Warn": "Pažnja: Stari podaci", + "Stale Data: Urgent": "Hitno: Stari podaci", + "mins": "min", + "Night Mode": "Noćni način", + "When enabled the page will be dimmed from 10pm - 6am.": "Kad je uključen, stranica će biti zatamnjena od 22-06", + "Enable": "Aktiviraj", + "Show Raw BG Data": "Prikazuj sirove podatke o GUK-u", + "Never": "Nikad", + "Always": "Uvijek", + "When there is noise": "Kad postoji šum", + "When enabled small white dots will be displayed for raw BG data": "Kad je omogućeno, male bijele točkice će prikazivati sirove podatke o GUK-u.", + "Custom Title": "Vlastiti naziv", + "Theme": "Tema", + "Default": "Default", + "Colors": "Boje", + "Colorblind-friendly colors": "Boje za daltoniste", + "Reset, and use defaults": "Resetiraj i koristi defaultne vrijednosti", + "Calibrations": "Kalibriranje", + "Alarm Test / Smartphone Enable": "Alarm test / Aktiviraj smartphone", + "Bolus Wizard": "Bolus wizard", + "in the future": "U budućnosti", + "time ago": "prije", + "hr ago": "sat unazad", + "hrs ago": "sati unazad", + "min ago": "minuta unazad", + "mins ago": "minuta unazad", + "day ago": "dan unazad", + "days ago": "dana unazad", + "long ago": "prije dosta vremena", + "Clean": "Čisto", + "Light": "Lagano", + "Medium": "Srednje", + "Heavy": "Teško", + "Treatment type": "Vrsta tretmana", + "Raw BG": "Sirovi podaci o GUK-u", + "Device": "Uređaj", + "Noise": "Šum", + "Calibration": "Kalibriranje", + "Show Plugins": "Prikaži plugine", + "About": "O aplikaciji", + "Value in": "Vrijednost u", + "Carb Time": "Vrijeme unosa UGH", + "Language": "Jezik", + "Add new": "Dodaj novi", + "g": "g", + "ml": "ml", + "pcs": "kom", + "Drag&drop food here": "Privuci hranu ovdje", + "Care Portal": "Care Portal", + "Medium/Unknown": "Srednji/Nepoznat", + "IN THE FUTURE": "U BUDUĆNOSTI", + "Update": "Osvježi", + "Order": "Sortiranje", + "oldest on top": "najstarije na vrhu", + "newest on top": "najnovije na vrhu", + "All sensor events": "Svi događaji senzora", + "Remove future items from mongo database": "Obriši buduće zapise iz baze podataka", + "Find and remove treatments in the future": "Nađi i obriši tretmane u budućnosti", + "This task find and remove treatments in the future.": "Ovo nalazi i briše tretmane u budućnosti", + "Remove treatments in the future": "Obriši tretmane u budućnosti", + "Find and remove entries in the future": "Nađi i obriši zapise u budućnosti", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Ovo nalazi i briše podatke sa senzora u budućnosti nastalih s uploaderom sa krivim datumom/vremenom", + "Remove entries in the future": "Obriši zapise u budućnosti", + "Loading database ...": "Učitavanje podataka", + "Database contains %1 future records": "Baza sadrži %1 zapisa u budućnosti", + "Remove %1 selected records?": "Obriši %1 odabrani zapis?", + "Error loading database": "Greška pri učitavanju podataka", + "Record %1 removed ...": "Zapis %1 obrisan...", + "Error removing record %1": "Greška prilikom brisanja zapisa %1", + "Deleting records ...": "Brisanje zapisa", + "%1 records deleted": "obrisano %1 zapisa", + "Clean Mongo status database": "Obriši bazu statusa", + "Delete all documents from devicestatus collection": "Obriši sve zapise o statusima", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Ovo briše sve zapise o statusima. Korisno kada se status baterije uploadera ne osvježava ispravno.", + "Delete all documents": "Obriši sve zapise", + "Delete all documents from devicestatus collection?": "Obriši sve zapise statusa?", + "Database contains %1 records": "Baza sadrži %1 zapisa", + "All records removed ...": "Svi zapisi obrisani", + "Delete all documents from devicestatus collection older than 30 days": "Obriši sve statuse starije od 30 dana", + "Number of Days to Keep:": "Broj dana za sačuvati:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Ovo uklanja sve statuse starije od 30 dana. Korisno kada se status baterije uploadera ne osvježava ispravno.", + "Delete old documents from devicestatus collection?": "Obriši stare statuse", + "Clean Mongo entries (glucose entries) database": "Obriši GUK zapise iz baze", + "Delete all documents from entries collection older than 180 days": "Obriši sve zapise starije od 180 dana", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Ovo briše sve zapise starije od 180 dana. Korisno kada se status baterije uploadera ne osvježava.", + "Delete old documents": "Obriši stare zapise", + "Delete old documents from entries collection?": "Obriši stare zapise?", + "%1 is not a valid number": "%1 nije valjan broj", + "%1 is not a valid number - must be more than 2": "%1 nije valjan broj - mora biti veći od 2", + "Clean Mongo treatments database": "Obriši tretmane iz baze", + "Delete all documents from treatments collection older than 180 days": "Obriši tretmane starije od 180 dana iz baze", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Ovo briše sve tretmane starije od 180 dana iz baze. Korisno kada se status baterije uploadera ne osvježava.", + "Delete old documents from treatments collection?": "Obriši stare tretmane?", + "Admin Tools": "Administracija", + "Nightscout reporting": "Nightscout izvješća", + "Cancel": "Odustani", + "Edit treatment": "Uredi tretman", + "Duration": "Trajanje", + "Duration in minutes": "Trajanje u minutama", + "Temp Basal": "Privremeni bazal", + "Temp Basal Start": "Početak privremenog bazala", + "Temp Basal End": "Kraj privremenog bazala", + "Percent": "Postotak", + "Basal change in %": "Promjena bazala u %", + "Basal value": "Vrijednost bazala", + "Absolute basal value": "Apsolutna vrijednost bazala", + "Announcement": "Objava", + "Loading temp basal data": "Učitavanje podataka o privremenom bazalu", + "Save current record before changing to new?": "Spremi trenutni zapis prije promjene na idući?", + "Profile Switch": "Promjena profila", + "Profile": "Profil", + "General profile settings": "Opće postavke profila", + "Title": "Naslov", + "Database records": "Zapisi u bazi", + "Add new record": "Dodaj zapis", + "Remove this record": "Obriši ovaj zapis", + "Clone this record to new": "Kloniraj zapis", + "Record valid from": "Zapis vrijedi od", + "Stored profiles": "Pohranjeni profili", + "Timezone": "Vremenska zona", + "Duration of Insulin Activity (DIA)": "Trajanje aktivnosti inzulina (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.": "Predstavlja uobičajeno trajanje djelovanje inzulina. Varira po vrstama inzulina i osobama. Tipično je to 3-4 sata za inzuline u pumpama za većinu osoba. Ponekad se naziva i vijek inzulina", + "Insulin to carb ratio (I:C)": "Omjer UGH:Inzulin (I:C)", + "Hours:": "Sati:", + "hours": "sati", + "g/hour": "g/h", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "grama UGH po jedinici inzulina. Omjer koliko grama UGH pokriva jedna jedinica inzulina.", + "Insulin Sensitivity Factor (ISF)": "Faktor inzulinske osjetljivosti (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "md/dL ili mmol/L po jedinici inzulina. Omjer koliko se GUK mijenja sa jednom jedinicom korekcije inzulina.", + "Carbs activity / absorption rate": "UGH aktivnost / omjer apsorpcije", + "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).": "grama po jedinici vremena. Predstavlja promjenu aktivnih UGH u jedinici vremena, kao i količinu UGH koja bi trebala utjecati kroz to vrijeme.", + "Basal rates [unit/hour]": "Bazali [jedinica/sat]", + "Target BG range [mg/dL,mmol/L]": "Ciljani raspon GUK [mg/dL,mmol/L]", + "Start of record validity": "Trenutak važenja zapisa", + "Icicle": "Padajuće", + "Render Basal": "Iscrtaj bazale", + "Profile used": "Korišteni profil", + "Calculation is in target range.": "Izračun je u ciljanom rasponu.", + "Loading profile records ...": "Učitavanje profila...", + "Values loaded.": "Vrijednosti učitane.", + "Default values used.": "Koriste se zadane vrijednosti.", + "Error. Default values used.": "Pogreška. Koristiti će se zadane vrijednosti.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Vremenski rasponi donje ciljane i gornje ciljane vrijednosti nisu ispravni. Vrijednosti vraćene na zadano.", + "Valid from:": "Vrijedi od:", + "Save current record before switching to new?": "Spremi trenutni zapis prije prelaska na novi?", + "Add new interval before": "Dodaj novi interval iznad", + "Delete interval": "Obriši interval", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Dual bolus", + "Difference": "Razlika", + "New time": "Novo vrijeme", + "Edit Mode": "Uređivanje", + "When enabled icon to start edit mode is visible": "Kada je omogućeno, mod uređivanje je omogućen", + "Operation": "Operacija", + "Move": "Pomakni", + "Delete": "Obriši", + "Move insulin": "Premjesti inzulin", + "Move carbs": "Premejsti UGH", + "Remove insulin": "Obriši inzulin", + "Remove carbs": "Obriši UGH", + "Change treatment time to %1 ?": "Promijeni vrijeme tretmana na %1?", + "Change carbs time to %1 ?": "Promijeni vrijeme UGH na %1?", + "Change insulin time to %1 ?": "Promijeni vrijeme inzulina na %1?", + "Remove treatment ?": "Obriši tretman?", + "Remove insulin from treatment ?": "Obriši inzulin iz tretmana?", + "Remove carbs from treatment ?": "Obriši UGH iz tretmana?", + "Rendering": "Iscrtavanje", + "Loading OpenAPS data of": "Učitavanje OpenAPS podataka od", + "Loading profile switch data": "Učitavanje podataka promjene profila", + "Redirecting you to the Profile Editor to create a new profile.": "Krive postavke profila.\nNiti jedan profil nije definiran za prikazano vrijeme.\nPreusmjeravanje u editor profila kako biste stvorili novi.", + "Pump": "Pumpa", + "Sensor Age": "Starost senzora", + "Insulin Age": "Starost inzulina", + "Temporary target": "Privremeni cilj", + "Reason": "Razlog", + "Eating soon": "Uskoro jelo", + "Top": "Vrh", + "Bottom": "Dno", + "Activity": "Aktivnost", + "Targets": "Ciljevi", + "Bolus insulin:": "Bolus:", + "Base basal insulin:": "Osnovni bazal:", + "Positive temp basal insulin:": "Pozitivni temp bazal:", + "Negative temp basal insulin:": "Negativni temp bazal:", + "Total basal insulin:": "Ukupno bazali:", + "Total daily insulin:": "Ukupno dnevni inzulin:", + "Unable to %1 Role": "Unable to %1 Role", + "Unable to delete Role": "Ne mogu obrisati ulogu", + "Database contains %1 roles": "baza sadrži %1 uloga", + "Edit Role": "Uredi ulogu", + "admin, school, family, etc": "admin, škola, obitelj, itd.", + "Permissions": "Prava", + "Are you sure you want to delete: ": "Sigurno želite obrisati?", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Svaka uloga ima 1 ili više prava. Pravo * je univerzalno, a prava su hijerarhija koja koristi znak : kao graničnik.", + "Add new Role": "Dodaj novu ulogu", + "Roles - Groups of People, Devices, etc": "Uloge - Grupe ljudi, uređaja, itd.", + "Edit this role": "Uredi ovu ulogu", + "Admin authorized": "Administrator ovlašten", + "Subjects - People, Devices, etc": "Subjekti - Ljudi, uređaji, itd.", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Svaki subjekt će dobiti jedinstveni pristupni token i jednu ili više uloga. Kliknite na pristupni token kako bi se otvorio novi pogled sa odabranim subjektom, a tada se tajni link može podijeliti.", + "Add new Subject": "Dodaj novi subjekt", + "Unable to %1 Subject": "Ne mogu %1 subjekt", + "Unable to delete Subject": "Ne mogu obrisati subjekt", + "Database contains %1 subjects": "Baza sadrži %1 subjekata", + "Edit Subject": "Uredi subjekt", + "person, device, etc": "osoba, uređaj, itd.", + "role1, role2": "uloga1, uloga2", + "Edit this subject": "Uredi ovaj subjekt", + "Delete this subject": "Obriši ovaj subjekt", + "Roles": "Uloge", + "Access Token": "Pristupni token", + "hour ago": "sat ranije", + "hours ago": "sati ranije", + "Silence for %1 minutes": "Utišaj na %1 minuta", + "Check BG": "Provjeri GUK", + "BASAL": "Bazal", + "Current basal": "Trenutni bazal", + "Sensitivity": "Osjetljivost", + "Current Carb Ratio": "Trenutni I:C", + "Basal timezone": "Vremenska zona bazala", + "Active profile": "Aktivni profil", + "Active temp basal": "Aktivni temp bazal", + "Active temp basal start": "Početak aktivnog tamp bazala", + "Active temp basal duration": "Trajanje aktivnog temp bazala", + "Active temp basal remaining": "Prestali aktivni temp bazal", + "Basal profile value": "Profilna vrijednost bazala", + "Active combo bolus": "Aktivni dual bolus", + "Active combo bolus start": "Početak aktivnog dual bolusa", + "Active combo bolus duration": "Trajanje aktivnog dual bolusa", + "Active combo bolus remaining": "Preostali aktivni dual bolus", + "BG Delta": "GUK razlika", + "Elapsed Time": "Proteklo vrijeme", + "Absolute Delta": "Apsolutna razlika", + "Interpolated": "Interpolirano", + "BWP": "Čarobnjak bolusa", + "Urgent": "Hitno", + "Warning": "Upozorenje", + "Info": "Info", + "Lowest": "Najniže", + "Snoozing high alarm since there is enough IOB": "Stišan alarm za hiper pošto ima dovoljno aktivnog inzulina", + "Check BG, time to bolus?": "Provjeri GUK, vrijeme je za bolus?", + "Notice": "Poruka", + "required info missing": "nedostaju potrebne informacije", + "Insulin on Board": "Aktivni inzulín", + "Current target": "Trenutni cilj", + "Expected effect": "Očekivani efekt", + "Expected outcome": "Očekivani ishod", + "Carb Equivalent": "Ekvivalent u UGH", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Višak inzulina je %1U više nego li je potrebno da se postigne donja ciljana granica, ne uzevši u obzir UGH", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Višak inzulina je %1U više nego li je potrebno da se postigne donja ciljana granica, OBAVEZNO POKRIJTE SA UGH", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Potrebno je smanjiti aktivni inzulin za %1U kako bi se dostigla donja ciljana granica, previše bazala? ", + "basal adjustment out of range, give carbs?": "prilagodba bazala je izvan raspona, dodati UGH?", + "basal adjustment out of range, give bolus?": "prilagodna bazala je izvan raspona, dati bolus?", + "above high": "iznad gornje granice", + "below low": "ispod donje granice", + "Projected BG %1 target": "Procjena GUK %1 cilja", + "aiming at": "ciljano", + "Bolus %1 units": "Bolus %1 jedinica", + "or adjust basal": "ili prilagodba bazala", + "Check BG using glucometer before correcting!": "Provjeri GUK glukometrom prije korekcije!", + "Basal reduction to account %1 units:": "Smanjeni bazal da uračuna %1 jedinica:", + "30m temp basal": "30m temp bazal", + "1h temp basal": "1h temp bazal", + "Cannula change overdue!": "Prošao rok za zamjenu kanile!", + "Time to change cannula": "Vrijeme za zamjenu kanile", + "Change cannula soon": "Zamijena kanile uskoro", + "Cannula age %1 hours": "Staros kanile %1 sati", + "Inserted": "Postavljanje", + "CAGE": "Starost kanile", + "COB": "Aktivni UGH", + "Last Carbs": "Posljednji UGH", + "IAGE": "Starost inzulina", + "Insulin reservoir change overdue!": "Prošao rok za zamjenu spremnika!", + "Time to change insulin reservoir": "Vrijeme za zamjenu spremnika", + "Change insulin reservoir soon": "Zamjena spremnika uskoro", + "Insulin reservoir age %1 hours": "Spremnik zamijenjen prije %1 sati", + "Changed": "Promijenjeno", + "IOB": "Aktivni inzulin", + "Careportal IOB": "Careportal IOB", + "Last Bolus": "Prethodni bolus", + "Basal IOB": "Bazalni aktivni inzulin", + "Source": "Izvor", + "Stale data, check rig?": "Nedostaju podaci, provjera opreme?", + "Last received:": "Zadnji podaci od:", + "%1m ago": "prije %1m", + "%1h ago": "prije %1 sati", + "%1d ago": "prije %1 dana", + "RETRO": "RETRO", + "SAGE": "Starost senzora", + "Sensor change/restart overdue!": "Prošao rok za zamjenu/restart senzora!", + "Time to change/restart sensor": "Vrijeme za zamjenu/restart senzora", + "Change/restart sensor soon": "Zamijena/restart senzora uskoro", + "Sensor age %1 days %2 hours": "Starost senzora %1 dana i %2 sati", + "Sensor Insert": "Postavljanje senzora", + "Sensor Start": "Pokretanje senzora", + "days": "dana", + "Insulin distribution": "Raspodjela inzulina", + "To see this report, press SHOW while in this view": "Za prikaz ovog izvješća, pritisnite PRIKAŽI na ovom prozoru", + "AR2 Forecast": "AR2 procjena", + "OpenAPS Forecasts": "OpenAPS prognoze", + "Temporary Target": "Privremeni cilj", + "Temporary Target Cancel": "Otkaz privremenog cilja", + "OpenAPS Offline": "OpenAPS odspojen", + "Profiles": "Profili", + "Time in fluctuation": "Vrijeme u fluktuaciji", + "Time in rapid fluctuation": "Vrijeme u brzoj fluktuaciji", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Ovo je samo gruba procjena koja može biti neprecizna i ne mijenja testiranje iz krvi. Formula je uzeta iz:", + "Filter by hours": "Filter po satima", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Vrijeme u fluktuaciji i vrijeme u brzoj fluktuaciji mjere % vremena u gledanom periodu, tijekom kojeg se GUK mijenja relativno brzo ili brzo. Niže vrijednosti su bolje.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Srednja ukupna dnevna promjena je suma apsolutnih vrijednosti svih pomaka u gledanom periodu, podijeljeno s brojem dana. Niže vrijednosti su bolje.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Srednja ukupna promjena po satu je suma apsolutnih vrijednosti svih pomaka u gledanom periodu, podijeljeno s brojem sati. Niže vrijednosti su bolje.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">ovdje.", + "Mean Total Daily Change": "Srednja ukupna dnevna promjena", + "Mean Hourly Change": "Srednja ukupna promjena po satu", + "FortyFiveDown": "sporo padajuće", + "FortyFiveUp": "sporo rastuće", + "Flat": "ravno", + "SingleUp": "rastuće", + "SingleDown": "padajuće", + "DoubleDown": "brzo padajuće", + "DoubleUp": "brzo rastuće", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Masnoće [g]", + "Protein [g]": "Proteini [g]", + "Energy [kJ]": "Energija [kJ]", + "Clock Views:": "Satovi:", + "Clock": "Sat", + "Color": "Boja", + "Simple": "Jednostavan", + "TDD average": "Srednji TDD", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Prosjek UGH", + "Eating Soon": "Uskoro obrok", + "Last entry {0} minutes ago": "Posljednji zapis prije {0} minuta", + "change": "promjena", + "Speech": "Govor", + "Target Top": "Gornja granica", + "Target Bottom": "Donja granica", + "Canceled": "Otkazano", + "Meter BG": "GUK iz krvi", + "predicted": "prognozirano", + "future": "budućnost", + "ago": "prije", + "Last data received": "Podaci posljednji puta primljeni", + "Clock View": "Prikaz sata", + "Protein": "Proteini", + "Fat": "Masti", + "Protein average": "Prosjek proteina", + "Fat average": "Prosjek masti", + "Total carbs": "Ukupno ugh", + "Total protein": "Ukupno proteini", + "Total fat": "Ukupno masti", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/hu_HU.json b/translations/hu_HU.json new file mode 100644 index 00000000000..36be99c1288 --- /dev/null +++ b/translations/hu_HU.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Port figyelése", + "Mo": "Hé", + "Tu": "Ke", + "We": "Sze", + "Th": "Csü", + "Fr": "Pé", + "Sa": "Szo", + "Su": "Vas", + "Monday": "Hétfő", + "Tuesday": "Kedd", + "Wednesday": "Szerda", + "Thursday": "Csütörtök", + "Friday": "Péntek", + "Saturday": "Szombat", + "Sunday": "Vasárnap", + "Category": "Kategória", + "Subcategory": "Alkategória", + "Name": "Név", + "Today": "Ma", + "Last 2 days": "Utolsó 2 nap", + "Last 3 days": "Utolsó 3 nap", + "Last week": "Előző hét", + "Last 2 weeks": "Előző 2 hét", + "Last month": "Előző hónap", + "Last 3 months": "Előző 3 hónap", + "between": "között", + "around": "körülbelül", + "and": "és", + "From": "Tól", + "To": "Ig", + "Notes": "Jegyzetek", + "Food": "Étel", + "Insulin": "Inzulin", + "Carbs": "Szénhidrát", + "Notes contain": "Jegyzet tartalmazza", + "Target BG range bottom": "Alsó cukorszint határ", + "top": "Felső", + "Show": "Mutasd", + "Display": "Ábrázol", + "Loading": "Betöltés", + "Loading profile": "Profil betöltése", + "Loading status": "Állapot betöltése", + "Loading food database": "Étel adatbázis betöltése", + "not displayed": "nincs megjelenítve", + "Loading CGM data of": "CGM adatok betöltése", + "Loading treatments data of": "Kezelés adatainak betöltése", + "Processing data of": "Adatok feldolgozása", + "Portion": "Porció", + "Size": "Méret", + "(none)": "(semmilyen)", + "None": "Semmilyen", + "": "", + "Result is empty": "Az eredmény üres", + "Day to day": "Napi", + "Week to week": "Heti", + "Daily Stats": "Napi statisztika", + "Percentile Chart": "Százalékos", + "Distribution": "Szétosztás", + "Hourly stats": "Óránkra való szétosztás", + "netIOB stats": "netIOB statisztika", + "temp basals must be rendered to display this report": "Az átmeneti bazálnak meg kell lennie jelenítve az adott jelentls megtekintéséhez", + "Weekly success": "Heti sikeresség", + "No data available": "Nincs elérhető adat", + "Low": "Alacsony", + "In Range": "Normális", + "Period": "Időszak", + "High": "Magas", + "Average": "Átlagos", + "Low Quartile": "Alacsony kvartil", + "Upper Quartile": "Magas kvartil", + "Quartile": "Kvartil", + "Date": "Dátum", + "Normal": "Normális", + "Median": "Medián", + "Readings": "Értékek", + "StDev": "Standard eltérés", + "Daily stats report": "Napi statisztikák", + "Glucose Percentile report": "Cukorszint percentil jelentés", + "Glucose distribution": "Cukorszint szétosztása", + "days total": "nap összesen", + "Total per day": "Naponta összesen", + "Overall": "Összesen", + "Range": "Tartomány", + "% of Readings": "% az értékeknek", + "# of Readings": "Olvasott értékek száma", + "Mean": "Közép", + "Standard Deviation": "Átlagos eltérés", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Megközelítőleges HbA1c", + "Weekly Success": "Heti sikeresség", + "There is not sufficient data to run this report. Select more days.": "Nincs elég adat a jelentés elkészítéséhez. Válassz több napot.", + "Using stored API secret hash": "Az elmentett API hash jelszót használom", + "No API secret hash stored yet. You need to enter API secret.": "Még nem lett a titkos API hash elmentve. Add meg a titkos API jelszót", + "Database loaded": "Adatbázis betöltve", + "Error: Database failed to load": "Hiba: Az adatbázist nem sikerült betölteni", + "Error": "Hiba", + "Create new record": "Új bejegyzés", + "Save record": "Bejegyzés mentése", + "Portions": "Porció", + "Unit": "Egység", + "GI": "GI", + "Edit record": "Bejegyzés szerkesztése", + "Delete record": "Bejegyzés törlése", + "Move to the top": "Áthelyezni az elejére", + "Hidden": "Elrejtett", + "Hide after use": "Elrejteni használat után", + "Your API secret must be at least 12 characters long": "Az API jelszó több mint 12 karakterből kell hogy álljon", + "Bad API secret": "Helytelen API jelszó", + "API secret hash stored": "API jelszó elmentve", + "Status": "Állapot", + "Not loaded": "Nincs betöltve", + "Food Editor": "Étel szerkesztése", + "Your database": "Ön adatbázisa", + "Filter": "Filter", + "Save": "Mentés", + "Clear": "Kitöröl", + "Record": "Bejegyzés", + "Quick picks": "Gyors választás", + "Show hidden": "Eltakart mutatása", + "Your API secret or token": "Az API jelszo", + "Remember this device. (Do not enable this on public computers.)": "A berendezés megjegyzése. (Csak saját berendezésen használd", + "Treatments": "Kezelések", + "Time": "Idő", + "Event Type": "Esemény típusa", + "Blood Glucose": "Vércukor szint", + "Entered By": "Beírta", + "Delete this treatment?": "Kezelés törlése?", + "Carbs Given": "Szénhidrátok", + "Inzulin Given": "Beadott inzulin", + "Event Time": "Időpont", + "Please verify that the data entered is correct": "Kérlek ellenőrizd, hogy az adatok helyesek.", + "BG": "Cukorszint", + "Use BG correction in calculation": "Használj korekciót a számításban", + "BG from CGM (autoupdated)": "Cukorszint a CGM-ből (Automatikus frissítés)", + "BG from meter": "Cukorszint a merőből", + "Manual BG": "Kézi cukorszint", + "Quickpick": "Gyors választás", + "or": "vagy", + "Add from database": "Hozzáadás adatbázisból", + "Use carbs correction in calculation": "Használj szénhidrát korekciót a számításban", + "Use COB correction in calculation": "Használj COB korrekciót a számításban", + "Use IOB in calculation": "Használj IOB kalkulációt", + "Other correction": "Egyébb korrekció", + "Rounding": "Kerekítés", + "Enter insulin correction in treatment": "Add be az inzulin korrekciót a kezeléshez", + "Insulin needed": "Inzulin szükséges", + "Carbs needed": "Szenhidrát szükséges", + "Carbs needed if Insulin total is negative value": "Szénhidrát szükséges ha az összes inzulin negatív érték", + "Basal rate": "Bazál arány", + "60 minutes earlier": "60 perccel korábban", + "45 minutes earlier": "45 perccel korábban", + "30 minutes earlier": "30 perccel korábban", + "20 minutes earlier": "20 perccel korábban", + "15 minutes earlier": "15 perccel korábban", + "Time in minutes": "Idő percekben", + "15 minutes later": "15 perccel később", + "20 minutes later": "20 perccel később", + "30 minutes later": "30 perccel kesőbb", + "45 minutes later": "45 perccel később", + "60 minutes later": "60 perccel később", + "Additional Notes, Comments": "Feljegyzések, hozzászólások", + "RETRO MODE": "RETRO mód", + "Now": "Most", + "Other": "Más", + "Submit Form": "Elküldés", + "Profile Editor": "Profil Szerkesztő", + "Reports": "Jelentések", + "Add food from your database": "Étel hozzáadása az adatbázisból", + "Reload database": "Adatbázis újratöltése", + "Add": "Hozzáadni", + "Unauthorized": "Nincs autorizávla", + "Entering record failed": "Hozzáadás nem sikerült", + "Device authenticated": "Berendezés hitelesítve", + "Device not authenticated": "Berendezés nincs hitelesítve", + "Authentication status": "Hitelesítés állapota", + "Authenticate": "Hitelesítés", + "Remove": "Eltávolítani", + "Your device is not authenticated yet": "A berendezés még nincs hitelesítve", + "Sensor": "Szenzor", + "Finger": "Új", + "Manual": "Kézi", + "Scale": "Mérték", + "Linear": "Lineáris", + "Logarithmic": "Logaritmikus", + "Logarithmic (Dynamic)": "Logaritmikus (Dinamikus)", + "Insulin-on-Board": "Aktív inzulin (IOB)", + "Carbs-on-Board": "Aktív szénhidrát (COB)", + "Bolus Wizard Preview": "Bolus Varázsló", + "Value Loaded": "Érték betöltve", + "Cannula Age": "Kanula élettartalma (CAGE)", + "Basal Profile": "Bazál profil", + "Silence for 30 minutes": "Lehalkítás 30 percre", + "Silence for 60 minutes": "Lehalkítás 60 percre", + "Silence for 90 minutes": "Lehalkítás 90 percre", + "Silence for 120 minutes": "Lehalkítás 120 percre", + "Settings": "Beállítások", + "Units": "Egységek", + "Date format": "Időformátum", + "12 hours": "12 óra", + "24 hours": "24 óra", + "Log a Treatment": "Kezelés bejegyzése", + "BG Check": "Cukorszint ellenőrzés", + "Meal Bolus": "Étel bólus", + "Snack Bolus": "Tízórai/Uzsonna bólus", + "Correction Bolus": "Korrekciós bólus", + "Carb Correction": "Szénhidrát korrekció", + "Note": "Jegyzet", + "Question": "Kérdés", + "Exercise": "Edzés", + "Pump Site Change": "Pumpa szett csere", + "CGM Sensor Start": "CGM Szenzor Indítása", + "CGM Sensor Stop": "CGM Szenzor Leállítása", + "CGM Sensor Insert": "CGM Szenzor Csere", + "Dexcom Sensor Start": "Dexcom Szenzor Indítása", + "Dexcom Sensor Change": "Dexcom Szenzor Csere", + "Insulin Cartridge Change": "Inzulin Tartály Csere", + "D.A.D. Alert": "D.A.D Figyelmeztetés", + "Glucose Reading": "Vércukorszint Érték", + "Measurement Method": "Cukorszint mérés metódusa", + "Meter": "Cukorszint mérő", + "Insulin Given": "Inzulin Beadva", + "Amount in grams": "Adag grammokban (g)", + "Amount in units": "Adag egységekben", + "View all treatments": "Összes kezelés mutatása", + "Enable Alarms": "Figyelmeztetők bekapcsolása", + "Pump Battery Change": "Pumpa elem csere", + "Pump Battery Low Alarm": "Alacsony pumpa töltöttség figyelmeztetés", + "Pump Battery change overdue!": "A pumpa eleme cserére szorul", + "When enabled an alarm may sound.": "Bekapcsoláskor hang figyelmeztetés várható", + "Urgent High Alarm": "Nagyon magas cukorszint figyelmeztetés", + "High Alarm": "Magas cukorszint fegyelmeztetés", + "Low Alarm": "Alacsony cukorszint figyelmeztetés", + "Urgent Low Alarm": "Nagyon alacsony cukorszint figyelmeztetés", + "Stale Data: Warn": "Figyelmeztetés: Az adatok öregnek tűnnek", + "Stale Data: Urgent": "Figyelmeztetés: Az adatok nagyon öregnek tűnnek", + "mins": "perc", + "Night Mode": "Éjjeli üzemmód", + "When enabled the page will be dimmed from 10pm - 6am.": "Ezt bekapcsolva a képernyő halványabb lesz 22-től 6-ig", + "Enable": "Engedélyezve", + "Show Raw BG Data": "Nyers BG adatok mutatása", + "Never": "Soha", + "Always": "Mindíg", + "When there is noise": "Ha zavar van:", + "When enabled small white dots will be displayed for raw BG data": "Bekapcsolasnál kis fehért pontok fogják jelezni a nyers BG adatokat", + "Custom Title": "Saját Cím", + "Theme": "Téma", + "Default": "Alap", + "Colors": "Színek", + "Colorblind-friendly colors": "Beállítás színvakok számára", + "Reset, and use defaults": "Visszaállítás a kiinduló állapotba", + "Calibrations": "Kalibráció", + "Alarm Test / Smartphone Enable": "Figyelmeztetés teszt / Mobiltelefon aktiválása", + "Bolus Wizard": "Bólus Varázsló", + "in the future": "a jövőben", + "time ago": "idő elött", + "hr ago": "óra elött", + "hrs ago": "órája", + "min ago": "perce", + "mins ago": "perce", + "day ago": "napja", + "days ago": "napja", + "long ago": "nagyon régen", + "Clean": "Tiszta", + "Light": "Könnyű", + "Medium": "Közepes", + "Heavy": "Nehéz", + "Treatment type": "Kezelés típusa", + "Raw BG": "Nyers BG", + "Device": "Berendezés", + "Noise": "Zavar", + "Calibration": "Kalibráció", + "Show Plugins": "Mutasd a kiegészítőket", + "About": "Az aplikációról", + "Value in": "Érték", + "Carb Time": "Étkezés ideje", + "Language": "Nyelv", + "Add new": "Új hozzáadása", + "g": "g", + "ml": "ml", + "pcs": "db", + "Drag&drop food here": "Húzd ide és ereszd el az ételt", + "Care Portal": "Care portál", + "Medium/Unknown": "Átlagos/Ismeretlen", + "IN THE FUTURE": "A JÖVŐBEN", + "Update": "Frissítés", + "Order": "Sorrend", + "oldest on top": "legöregebb a telejére", + "newest on top": "legújabb a tetejére", + "All sensor events": "Az összes szenzor esemény", + "Remove future items from mongo database": "Töröld az összes jövőben lévő adatot az adatbázisból", + "Find and remove treatments in the future": "Töröld az összes kezelést a jövőben az adatbázisból", + "This task find and remove treatments in the future.": "Ez a feladat megkeresi és eltávolítja az összes jövőben lévő kezelést", + "Remove treatments in the future": "Jövőbeli kerelések eltávolítésa", + "Find and remove entries in the future": "Jövőbeli bejegyzések eltávolítása", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Ez a feladat megkeresi és eltávolítja az összes CGM adatot amit a feltöltő rossz idővel-dátummal töltött fel", + "Remove entries in the future": "Jövőbeli bejegyzések törlése", + "Loading database ...": "Adatbázis betöltése...", + "Database contains %1 future records": "Az adatbázis %1 jövöbeli adatot tartalmaz", + "Remove %1 selected records?": "Kitöröljük a %1 kiválasztott adatot?", + "Error loading database": "Hiba az adatbázis betöltése közben", + "Record %1 removed ...": "A %1 bejegyzés törölve...", + "Error removing record %1": "Hiba lépett fel a %1 bejegyzés törlése közben", + "Deleting records ...": "Bejegyzések törlése...", + "%1 records deleted": "%1 bejegyzés törölve", + "Clean Mongo status database": "Mongo állapot (status) adatbázis tisztítása", + "Delete all documents from devicestatus collection": "Az összes \"devicestatus\" dokumentum törlése", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Ez a feladat kitörli az összes \"devicestatus\" dokumentumot. Hasznos ha a feltöltő elem állapota nem jelenik meg helyesen.", + "Delete all documents": "Az összes dokumentum törlése", + "Delete all documents from devicestatus collection?": "Az összes dokumentum törlése a \"devicestatus\" gyűjteményből?", + "Database contains %1 records": "Az adatbázis %1 bejegyzést tartalmaz", + "All records removed ...": "Az összes bejegyzés törölve...", + "Delete all documents from devicestatus collection older than 30 days": "Az összes \"devicestatus\" dokumentum törlése ami 30 napnál öregebb", + "Number of Days to Keep:": "Mentés ennyi napra:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Ez a feladat törli az összes \"devicestatus\" dokumentumot a gyűjteményből ami 30 napnál öregebb. Hasznos ha a feltöltő elem állapota nem jelenik meg rendesen. ", + "Delete old documents from devicestatus collection?": "Kitorli az öreg dokumentumokat a \"devicestatus\" gyűjteményből?", + "Clean Mongo entries (glucose entries) database": "Mongo bejegyzés adatbázis tisztítása", + "Delete all documents from entries collection older than 180 days": "Az összes bejegyzés gyűjtemény törlése ami 180 napnál öregebb", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "A feladat kitörli az összes bejegyzésekből álló dokumentumot ami 180 napnál öregebb. Hasznos ha a feltöltő elem állapota nem jelenik meg helyesen.", + "Delete old documents": "Öreg dokumentumok törlése", + "Delete old documents from entries collection?": "Az öreg dokumentumok törlése a bejegyzések gyűjteményéből?", + "%1 is not a valid number": "A %1 nem érvényes szám", + "%1 is not a valid number - must be more than 2": "A %1 nem érvényes szám - nagyobb számnak kell lennie mint a 2", + "Clean Mongo treatments database": "Mondo kezelési datbázisának törlése", + "Delete all documents from treatments collection older than 180 days": "Töröld az összes 180 napnál öregebb kezelési dokumentumot", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "A feladat eltávolítja az összes kezelési dokumentumot ami öregebb 180 napnál. Hasznos ha a feltöltő elem állapota nem jelenik meg helyesen.", + "Delete old documents from treatments collection?": "Törölni az összes doumentumot a kezelési gyűjteményből?", + "Admin Tools": "Adminisztrációs eszközök", + "Nightscout reporting": "Nightscout jelentések", + "Cancel": "Vissza", + "Edit treatment": "Kezelés szerkesztése", + "Duration": "Behelyezés óta eltelt idő", + "Duration in minutes": "Idő percekben", + "Temp Basal": "Átmeneti bazál", + "Temp Basal Start": "Átmeneti bazál Kezdete", + "Temp Basal End": "Átmeneti bazál Vége", + "Percent": "Százalék", + "Basal change in %": "Bazál változása %", + "Basal value": "Bazál értéke", + "Absolute basal value": "Abszolút bazál érték", + "Announcement": "Közlemény", + "Loading temp basal data": "Az étmeneti bazál adatainak betöltése", + "Save current record before changing to new?": "Elmentsem az aktuális adatokat mielőtt újra váltunk?", + "Profile Switch": "Profil csere", + "Profile": "Profil", + "General profile settings": "Általános profil beállítások", + "Title": "Elnevezés", + "Database records": "Adatbázis bejegyzések", + "Add new record": "Új bejegyzés hozzáadása", + "Remove this record": "Bejegyzés törlése", + "Clone this record to new": "A kiválasztott bejegyzés másolása", + "Record valid from": "Bejegyzés érvényessége", + "Stored profiles": "Tárolt profilok", + "Timezone": "Időzóna", + "Duration of Insulin Activity (DIA)": "Inzulin aktivitás időtartalma", + "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.": "Kimutatja hogy általában meddig hat az inzulin. Változó különböző pácienseknél és inzulinoknál. Általában 3-4 óra között mozog. Néha inzulin élettartalomnak is nevezik.", + "Insulin to carb ratio (I:C)": "Inzulin-szénhidrát arány", + "Hours:": "Óra:", + "hours": "óra", + "g/hour": "g/óra", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g szénhidrát per egység inzulin. Az arány, hogy hány gramm szénhidrát fed le bizonyos egységnyi inzulint", + "Insulin Sensitivity Factor (ISF)": "Inzulin Érzékenységi Faktor (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL vagy mmol/L per inzulin egység. Az aránya annak hogy mennyire változik a cukorszint bizonyos egység inzulintól", + "Carbs activity / absorption rate": "Szénhidrátok felszívódásának gyorsasága", + "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).": "gramm per idő egység. Kifejezi a COB változását es a szénhidrátok felszívódását bizonyos idő elteltével. A szénhidrát felszívódásának tengelye nehezebben értelmezhető mint az inzulin aktivitás (IOB), de hasonló lehet a kezdeti késedelemhez és a felszívódáshoz (g/óra). ", + "Basal rates [unit/hour]": "Bazál [egység/óra]", + "Target BG range [mg/dL,mmol/L]": "Cukorszint választott tartomány [mg/dL,mmol/L]", + "Start of record validity": "Bejegyzés kezdetének érvényessége", + "Icicle": "Inverzió", + "Render Basal": "Bazál megjelenítése", + "Profile used": "Használatban lévő profil", + "Calculation is in target range.": "A számítás a cél tartományban található", + "Loading profile records ...": "Profil bejegyzéseinek betöltése...", + "Values loaded.": "Értékek betöltése.", + "Default values used.": "Alap értékek használva.", + "Error. Default values used.": "Hiba: Alap értékek használva", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "A cukorszint-cél időtartománya nem egyezik. Visszaállítás az alapértékekre", + "Valid from:": "Érvényes:", + "Save current record before switching to new?": "Elmentsem az aktuális adatokat mielőtt újra válunk?", + "Add new interval before": "Új intervallum hozzáadása elötte", + "Delete interval": "Intervallum törlése", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Kombinált bólus", + "Difference": "Különbség", + "New time": "Új idő:", + "Edit Mode": "Szerkesztési mód", + "When enabled icon to start edit mode is visible": "Engedélyezés után a szerkesztési ikon látható", + "Operation": "Operáció", + "Move": "Áthelyezés", + "Delete": "Törlés", + "Move insulin": "Inzulin áthelyezése", + "Move carbs": "Szénhidrát áthelyezése", + "Remove insulin": "Inzulin törlése", + "Remove carbs": "Szénhidrát törlése", + "Change treatment time to %1 ?": "A kezelés időpontjának áthelyezése %1?", + "Change carbs time to %1 ?": "Szénhidrát időpontjának áthelyezése %1", + "Change insulin time to %1 ?": "Inzulin időpont áthelyezése %1", + "Remove treatment ?": "Kezelés törlése?", + "Remove insulin from treatment ?": "Inzulin törlése a kezelésből?", + "Remove carbs from treatment ?": "Szénhidrát törlése a kezelésből?", + "Rendering": "Kirajzolás", + "Loading OpenAPS data of": "OpenAPS adatainak betöltése innen", + "Loading profile switch data": "Profil változás adatainak betöltése", + "Redirecting you to the Profile Editor to create a new profile.": "Átirányítás a profil szerkesztőre, hogy egy új profilt készítsen", + "Pump": "Pumpa", + "Sensor Age": "Szenzor élettartalma (SAGE)", + "Insulin Age": "Inzulin élettartalma (IAGE)", + "Temporary target": "Átmeneti cél", + "Reason": "Indok", + "Eating soon": "Hamarosan eszem", + "Top": "Felső", + "Bottom": "Alsó", + "Activity": "Aktivitás", + "Targets": "Célok", + "Bolus insulin:": "Bólus inzulin", + "Base basal insulin:": "Általános bazal inzulin", + "Positive temp basal insulin:": "Pozitív átmeneti bazál inzulin", + "Negative temp basal insulin:": "Negatív átmeneti bazál inzulin", + "Total basal insulin:": "Teljes bazál inzulin", + "Total daily insulin:": "Teljes napi inzulin", + "Unable to %1 Role": "Hiba a %1 szabály hívásánál", + "Unable to delete Role": "Nem lehetett a Szerepet törölni", + "Database contains %1 roles": "Az adatbázis %1 szerepet tartalmaz", + "Edit Role": "Szerep szerkesztése", + "admin, school, family, etc": "admin, iskola, család, stb", + "Permissions": "Engedély", + "Are you sure you want to delete: ": "Biztos, hogy törölni szeretnéd: ", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Minden szerepnek egy vagy több engedélye van. A * engedély helyettesítő engedély amely a hierarchiához : használja elválasztásnak.", + "Add new Role": "Új szerep hozzáadása", + "Roles - Groups of People, Devices, etc": "Szerepek - Emberek csoportja, berendezések, stb.", + "Edit this role": "Szerep szerkesztése", + "Admin authorized": "Adminisztrátor engedélyezve", + "Subjects - People, Devices, etc": "Semélyek - Emberek csoportja, berendezések, stb.", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Mindegyik személynek egy egyedi hozzáférése lesz 1 vagy több szereppel. Kattints a tokenre, hogy egy új nézetet kapj - a kapott linket megoszthatod velük.", + "Add new Subject": "Új személy hozzáadása", + "Unable to %1 Subject": "A %1 személy hozáadása nem sikerült", + "Unable to delete Subject": "A személyt nem sikerült törölni", + "Database contains %1 subjects": "Az adatbázis %1 személyt tartalmaz", + "Edit Subject": "Személy szerkesztése", + "person, device, etc": "személy, berendezés, stb.", + "role1, role2": "szerep1, szerep2", + "Edit this subject": "A kiválasztott személy szerkesztése", + "Delete this subject": "A kiválasztott személy törlése", + "Roles": "Szerepek", + "Access Token": "Hozzáférési token", + "hour ago": "órája", + "hours ago": "órája", + "Silence for %1 minutes": "Silence for %1 minutes", + "Check BG": "Ellenőrizd a cukorszintet", + "BASAL": "BAZÁL", + "Current basal": "Aktuális bazál", + "Sensitivity": "Inzulin érzékenység", + "Current Carb Ratio": "Aktuális szénhidrát arány", + "Basal timezone": "Bazál időzóna", + "Active profile": "Aktív profil", + "Active temp basal": "Aktív átmeneti bazál", + "Active temp basal start": "Aktív átmeneti bazál kezdete", + "Active temp basal duration": "Aktív átmeneti bazál időtartalma", + "Active temp basal remaining": "Átmeneti bazál visszamaradó ideje", + "Basal profile value": "Bazál profil értéke", + "Active combo bolus": "Aktív kombinált bólus", + "Active combo bolus start": "Aktív kombinált bólus kezdete", + "Active combo bolus duration": "Aktív kombinált bólus időtartalma", + "Active combo bolus remaining": "Aktív kombinált bólus fennmaradó idő", + "BG Delta": "Cukorszint változása", + "Elapsed Time": "Eltelt idő", + "Absolute Delta": "Abszolút külonbség", + "Interpolated": "Interpolált", + "BWP": "BWP", + "Urgent": "Sűrgős", + "Warning": "Figyelmeztetés", + "Info": "Információ", + "Lowest": "Legalacsonyabb", + "Snoozing high alarm since there is enough IOB": "Magas cukor riasztás késleltetése mivel elegendő inzulin van kiadva (IOB)", + "Check BG, time to bolus?": "Ellenőrizd a cukorszintet. Ideje bóluszt adni?", + "Notice": "Megjegyzés", + "required info missing": "Szükséges információ hiányos", + "Insulin on Board": "Aktív inzulin (IOB)", + "Current target": "Jelenlegi cél", + "Expected effect": "Elvárt efektus", + "Expected outcome": "Elvárt eredmény", + "Carb Equivalent": "Szénhidrát megfelelője", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Felesleges inzulin megegyező %1U egységgel az alacsony cél eléréséhez, nem számolva a szénhidrátokkal", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Felesleges inzulin megegyező %1U egységgel az alacsony cél eléréséhez. FONTOS, HOGY A IOB LEGYEN SZÉNHIDRÁTTAL TAKARVA", + "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U egységnyi inzulin redukció szükséges az alacsony cél eléréséhez, túl magas a bazál?", + "basal adjustment out of range, give carbs?": "bazál változtatása az arányokon kívül esik, szénhidrát bevitele?", + "basal adjustment out of range, give bolus?": "bazál változtatása az arányokon kívül esik, bólusz beadása?", + "above high": "magas felett", + "below low": "alacsony alatt", + "Projected BG %1 target": "Kiszámított BG cél %1", + "aiming at": "cél", + "Bolus %1 units": "Bólus %1 egységet", + "or adjust basal": "vagy a bazál változtatása", + "Check BG using glucometer before correcting!": "Ellenőrizd a cukorszintet mérővel korrekció előtt!", + "Basal reduction to account %1 units:": "A bazál csökkentése %1 egység kiszámításához:", + "30m temp basal": "30p általános bazál", + "1h temp basal": "10 általános bazál", + "Cannula change overdue!": "Kanil cseréjének ideje elmúlt", + "Time to change cannula": "Ideje kicserélni a kanilt", + "Change cannula soon": "Hamarosan cseréld ki a kanilt", + "Cannula age %1 hours": "Kamil életkora %1 óra", + "Inserted": "Behelyezve", + "CAGE": "CAGE", + "COB": "COB", + "Last Carbs": "Utolsó szénhidrátok", + "IAGE": "IAGE", + "Insulin reservoir change overdue!": "Inzulin tartály cseréjének ideje elmúlt", + "Time to change insulin reservoir": "Itt az ideje az inzulin tartály cseréjének", + "Change insulin reservoir soon": "Hamarosan cseréld ki az inzulin tartályt", + "Insulin reservoir age %1 hours": "Az inzulin tartály %1 órája volt cserélve", + "Changed": "Cserélve", + "IOB": "IOB", + "Careportal IOB": "Careportal IOB érték", + "Last Bolus": "Utolsó bólus", + "Basal IOB": "Bazál IOB", + "Source": "Forrás", + "Stale data, check rig?": "Öreg adatok, ellenőrizd a feltöltőt", + "Last received:": "Utóljára fogadott:", + "%1m ago": "%1p ezelőtt", + "%1h ago": "%1ó ezelőtt", + "%1d ago": "%1n ezelőtt", + "RETRO": "RETRO", + "SAGE": "SAGE", + "Sensor change/restart overdue!": "Szenzor cseréjének / újraindításának ideje lejárt", + "Time to change/restart sensor": "Ideje a szenzort cserélni / újraindítani", + "Change/restart sensor soon": "Hamarosan indítsd újra vagy cseréld ki a szenzort", + "Sensor age %1 days %2 hours": "Szenzor ideje %1 nap és %2 óra", + "Sensor Insert": "Szenzor behelyezve", + "Sensor Start": "Szenzor indítása", + "days": "napok", + "Insulin distribution": "Inzulin disztribúció", + "To see this report, press SHOW while in this view": "A jelentés megtekintéséhez kattints a MUTASD gombra", + "AR2 Forecast": "AR2 előrejelzés", + "OpenAPS Forecasts": "OpenAPS előrejelzés", + "Temporary Target": "Átmeneti cél", + "Temporary Target Cancel": "Átmeneti cél törlése", + "OpenAPS Offline": "OpenAPS nem elérhető (offline)", + "Profiles": "Profilok", + "Time in fluctuation": "Kilengésben töltött idő", + "Time in rapid fluctuation": "Magas kilengésekben töltött idő", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Ez egy nagyon durva számítás ami nem pontos és nem helyettesíti a cukorszint mérését. A képlet a következő helyről lett véve:", + "Filter by hours": "Megszűrni órák alapján", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "A sima és magas kilengésnél mért idő százalékban kifelyezve, ahol a cukorszint aránylag nagyokat változott. A kisebb értékek jobbak ebben az esetben", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Az átlagos napi változás az abszolút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Az átlagos óránkénti változás az abszút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">itt találhatóak.", + "Mean Total Daily Change": "Áltagos napi változás", + "Mean Hourly Change": "Átlagos óránkénti változás", + "FortyFiveDown": "lassan csökken", + "FortyFiveUp": "lassan növekszik", + "Flat": "stabil", + "SingleUp": "emelkedik", + "SingleDown": "csökken", + "DoubleDown": "gyorsan csökken", + "DoubleUp": "gyorsan emelkedik", + "virtAsstUnknown": "Az adat ismeretlen. Kérem nézd meg a Nightscout oldalt részletekért", + "virtAsstTitleAR2Forecast": "AR2 Előrejelzés", + "virtAsstTitleCurrentBasal": "Jelenlegi Bazál", + "virtAsstTitleCurrentCOB": "Jelenlegi COB", + "virtAsstTitleCurrentIOB": "Jelenlegi IOB", + "virtAsstTitleLaunch": "Üdvözöllek a Nightscouton", + "virtAsstTitleLoopForecast": "Loop Előrejelzés", + "virtAsstTitleLastLoop": "Utolsó Loop", + "virtAsstTitleOpenAPSForecast": "OpenAPS Előrejelzés", + "virtAsstTitlePumpReservoir": "Fennmaradó inzulin", + "virtAsstTitlePumpBattery": "Pumpa töltöttsége", + "virtAsstTitleRawBG": "Jelenlegi nyers cukorszint", + "virtAsstTitleUploaderBattery": "Feltöltő töltöttsége", + "virtAsstTitleCurrentBG": "Jelenlegi Cukorszint", + "virtAsstTitleFullStatus": "Teljes Státusz", + "virtAsstTitleCGMMode": "CGM Mód", + "virtAsstTitleCGMStatus": "CGM Státusz", + "virtAsstTitleCGMSessionAge": "CGM életkora", + "virtAsstTitleCGMTxStatus": "CGM kapcsolat státusza", + "virtAsstTitleCGMTxAge": "CGM Transmitter Age", + "virtAsstTitleCGMNoise": "CGM Zaj", + "virtAsstTitleDelta": "Csukoszint delta", + "virtAsstStatus": "%1 es %2 %3-tól.", + "virtAsstBasal": "%1 a jelenlegi bazál %2 egység óránként", + "virtAsstBasalTemp": "%1 átmeneti bazál %2 egység óránként ami %3 -kor jár le", + "virtAsstIob": "és neked %1 inzulin van a testedben.", + "virtAsstIobIntent": "Neked %1 inzulin van a testedben", + "virtAsstIobUnits": "%1 egység", + "virtAsstLaunch": "Mit szeretnél ellenőrizni a Nightscout oldalon?", + "virtAsstPreamble": "A tied", + "virtAsstPreamble3person": "%1 -nak van ", + "virtAsstNoInsulin": "semmilyen", + "virtAsstUploadBattery": "A felöltőd töltöttsége %1", + "virtAsstReservoir": "%1 egység maradt hátra", + "virtAsstPumpBattery": "A pumpád töltöttsége %1 %2", + "virtAsstUploaderBattery": "A feltöltőd töltöttsége %1", + "virtAsstLastLoop": "Az utolsó sikeres loop %1-kor volt", + "virtAsstLoopNotAvailable": "A loop kiegészítés valószínűleg nincs bekapcsolva", + "virtAsstLoopForecastAround": "A loop előrejelzése alapján a követlező %2 időszakban körülbelül %1 lesz", + "virtAsstLoopForecastBetween": "A loop előrejelzése alapján a követlező %3 időszakban %1 és %2 között leszel", + "virtAsstAR2ForecastAround": "Az AR2ües előrejelzés alapján a követlező %2 időszakban körülbelül %1 lesz", + "virtAsstAR2ForecastBetween": "Az AR2 előrejelzése alapján a követlező %3 időszakban %1 és %2 között leszel", + "virtAsstForecastUnavailable": "Nem tudok előrejelzést készíteni hiányos adatokból", + "virtAsstRawBG": "A nyers cukorszinted %1", + "virtAsstOpenAPSForecast": "Az OpenAPS cukorszinted %1", + "virtAsstCob3person": "%1 -nak %2 szénhodrátja van a testében", + "virtAsstCob": "Neked %1 szénhidrát van a testedben", + "virtAsstCGMMode": "A CGM módod %1 volt %2 -kor.", + "virtAsstCGMStatus": "A CGM státuszod %1 volt %2 -kor.", + "virtAsstCGMSessAge": "A CGM kapcsolatod %1 napja és %2 órája aktív", + "virtAsstCGMSessNotStarted": "Jelenleg nincs aktív CGM kapcsolatod", + "virtAsstCGMTxStatus": "A CGM jeladód státusza %1 volt %2-kor", + "virtAsstCGMTxAge": "A CGM jeladód %1 napos.", + "virtAsstCGMNoise": "A CGM jeladó zaja %1 volt %2-kor", + "virtAsstCGMBattOne": "A CGM töltöttsége %1 VOLT volt %2-kor", + "virtAsstCGMBattTwo": "A CGM töltöttsége %1 és %2 VOLT volt %3-kor", + "virtAsstDelta": "A deltád %1 volt %2 és %3 között", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "Sajnálom, nem tudom mit szeretnél tőlem.", + "Fat [g]": "Zsír [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energia [kJ]", + "Clock Views:": "Óra:", + "Clock": "Óra:", + "Color": "Szinek", + "Simple": "Csak cukor", + "TDD average": "Átlagos napi adag (TDD)", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Szenhidrát átlag", + "Eating Soon": "Hamarosan evés", + "Last entry {0} minutes ago": "Utolsó bejegyzés {0} volt", + "change": "változás", + "Speech": "Beszéd", + "Target Top": "Felsó cél", + "Target Bottom": "Alsó cél", + "Canceled": "Megszüntetett", + "Meter BG": "Cukorszint a mérőből", + "predicted": "előrejelzés", + "future": "jövő", + "ago": "ezelött", + "Last data received": "Utólsó adatok fogadva", + "Clock View": "Idő", + "Protein": "Protein", + "Fat": "Zsír", + "Protein average": "Protein átlag", + "Fat average": "Zsír átlag", + "Total carbs": "Összes szénhidrát", + "Total protein": "Összes protein", + "Total fat": "Összes zsír", + "Database Size": "Adatbázis mérete", + "Database Size near its limits!": "Az adatbázis majdnem megtelt!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Az adatbázis mérete %1 MiB a rendelkezésre álló %2 MiB-ból. Készítsen biztonsági másolatot!", + "Database file size": "Adatbázis file mérete", + "%1 MiB of %2 MiB (%3%)": "%1 MiB %2 MiB-ból (%3%)", + "Data size": "Adatok mérete", + "virtAsstDatabaseSize": "%1 MiB ami %2% a rendelkezésre álló méretből", + "virtAsstTitleDatabaseSize": "Adatbázis file méret", + "Carbs/Food/Time": "Carbs/Food/Time" +} \ No newline at end of file diff --git a/translations/it_IT.json b/translations/it_IT.json new file mode 100644 index 00000000000..711a6c51fa2 --- /dev/null +++ b/translations/it_IT.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Porta in ascolto", + "Mo": "Lun", + "Tu": "Mar", + "We": "Mer", + "Th": "Gio", + "Fr": "Ven", + "Sa": "Sab", + "Su": "Dom", + "Monday": "Lunedì", + "Tuesday": "Martedì", + "Wednesday": "Mercoledì", + "Thursday": "Giovedì", + "Friday": "Venerdì", + "Saturday": "Sabato", + "Sunday": "Domenica", + "Category": "Categoria", + "Subcategory": "Sottocategoria", + "Name": "Nome", + "Today": "Oggi", + "Last 2 days": "Ultimi 2 giorni", + "Last 3 days": "Ultimi 3 giorni", + "Last week": "Settimana scorsa", + "Last 2 weeks": "Ultime 2 settimane", + "Last month": "Mese scorso", + "Last 3 months": "Ultimi 3 mesi", + "between": "between", + "around": "around", + "and": "and", + "From": "Da", + "To": "A", + "Notes": "Note", + "Food": "Cibo", + "Insulin": "Insulina", + "Carbs": "Carboidrati", + "Notes contain": "Contiene note", + "Target BG range bottom": "Limite inferiore della glicemia", + "top": "Superiore", + "Show": "Mostra", + "Display": "Schermo", + "Loading": "Carico", + "Loading profile": "Carico il profilo", + "Loading status": "Stato di caricamento", + "Loading food database": "Carico database alimenti", + "not displayed": "Non visualizzato", + "Loading CGM data of": "Carico dati CGM", + "Loading treatments data of": "Carico dati dei trattamenti", + "Processing data of": "Elaborazione dei dati", + "Portion": "Porzione", + "Size": "Formato", + "(none)": "(Nessuno)", + "None": "Nessuno", + "": "", + "Result is empty": "Risultato vuoto", + "Day to day": "Giorno per giorno", + "Week to week": "Week to week", + "Daily Stats": "Statistiche giornaliere", + "Percentile Chart": "Grafico percentile", + "Distribution": "Distribuzione", + "Hourly stats": "Statistiche per ore", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "Statistiche settimanali", + "No data available": "Dati non disponibili", + "Low": "Basso", + "In Range": "Nell'intervallo", + "Period": "Periodo", + "High": "Alto", + "Average": "Media", + "Low Quartile": "Quartile basso", + "Upper Quartile": "Quartile alto", + "Quartile": "Quartile", + "Date": "Data", + "Normal": "Normale", + "Median": "Mediana", + "Readings": "Valori", + "StDev": "Dev.std", + "Daily stats report": "Statistiche giornaliere", + "Glucose Percentile report": "Percentuale Glicemie", + "Glucose distribution": "Distribuzione glicemie", + "days total": "Giorni totali", + "Total per day": "Giorni totali", + "Overall": "Generale", + "Range": "Intervallo", + "% of Readings": "% dei valori", + "# of Readings": "# di valori", + "Mean": "Media", + "Standard Deviation": "Deviazione Standard", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Stima A1c", + "Weekly Success": "Risultati settimanali", + "There is not sufficient data to run this report. Select more days.": "Non ci sono dati sufficienti per eseguire questo rapporto. Selezionare più giorni.", + "Using stored API secret hash": "Stai utilizzando API hash segreta", + "No API secret hash stored yet. You need to enter API secret.": "API hash segreto non è ancora memorizzato. È necessario inserire API segreto.", + "Database loaded": "Database caricato", + "Error: Database failed to load": "Errore: database non è stato caricato", + "Error": "Error", + "Create new record": "Crea nuovo registro", + "Save record": "Salva Registro", + "Portions": "Porzioni", + "Unit": "Unità", + "GI": "IG-Ind.Glic.", + "Edit record": "Modifica registro", + "Delete record": "Cancella registro", + "Move to the top": "Spostare verso l'alto", + "Hidden": "Nascosto", + "Hide after use": "Nascondi dopo l'uso", + "Your API secret must be at least 12 characters long": "il vostro API secreto deve essere lungo almeno 12 caratteri", + "Bad API secret": "API secreto non corretto", + "API secret hash stored": "Hash API secreto memorizzato", + "Status": "Stato", + "Not loaded": "Non caricato", + "Food Editor": "NS - Database Alimenti", + "Your database": "Vostro database", + "Filter": "Filtro", + "Save": "Salva", + "Clear": "Pulisci", + "Record": "Registro", + "Quick picks": "Scelta rapida", + "Show hidden": "Mostra nascosto", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Somministrazioni", + "Time": "Tempo", + "Event Type": "Tipo di evento", + "Blood Glucose": "Glicemie", + "Entered By": "inserito da", + "Delete this treatment?": "Eliminare questa somministrazione?", + "Carbs Given": "Carboidrati", + "Inzulin Given": "Insulina", + "Event Time": "Ora Evento", + "Please verify that the data entered is correct": "Si prega di verificare che i dati inseriti siano corretti", + "BG": "Glicemie", + "Use BG correction in calculation": "Utilizzare la correzione nei calcoli delle Glicemie", + "BG from CGM (autoupdated)": "Glicemie da CGM (aggiornamento automatico)", + "BG from meter": "Glicemie da glucometro", + "Manual BG": "Inserisci Glicemia", + "Quickpick": "Scelta rapida", + "or": "o", + "Add from database": "Aggiungi dal database", + "Use carbs correction in calculation": "Utilizzare la correzione dei carboidrati nel calcolo", + "Use COB correction in calculation": "Utilizzare la correzione COB nel calcolo", + "Use IOB in calculation": "Utilizzare la correzione IOB nel calcolo", + "Other correction": "Altre correzioni", + "Rounding": "Arrotondamento", + "Enter insulin correction in treatment": "Inserisci correzione insulina nella somministrazione", + "Insulin needed": "Insulina necessaria", + "Carbs needed": "Carboidrati necessari", + "Carbs needed if Insulin total is negative value": "Carboidrati necessari se l'insulina totale è un valore negativo", + "Basal rate": "Velocità basale", + "60 minutes earlier": "60 minuti prima", + "45 minutes earlier": "45 minuti prima", + "30 minutes earlier": "30 minuti prima", + "20 minutes earlier": "20 minuti prima", + "15 minutes earlier": "15 minuti prima", + "Time in minutes": "Tempo in minuti", + "15 minutes later": "15 minuti più tardi", + "20 minutes later": "20 minuti più tardi", + "30 minutes later": "30 minuti più tardi", + "45 minutes later": "45 minuti più tardi", + "60 minutes later": "60 minuti più tardi", + "Additional Notes, Comments": "Note aggiuntive, commenti", + "RETRO MODE": "Modalità retrospettiva", + "Now": "Ora", + "Other": "Altro", + "Submit Form": "Invia il modulo", + "Profile Editor": "NS - Dati Personali", + "Reports": "NS - Statistiche", + "Add food from your database": "Aggiungere cibo al database", + "Reload database": "Ricarica database", + "Add": "Aggiungere", + "Unauthorized": "Non Autorizzato", + "Entering record failed": "Voce del Registro fallita", + "Device authenticated": "Disp. autenticato", + "Device not authenticated": "Disp. non autenticato", + "Authentication status": "Stato di autenticazione", + "Authenticate": "Autenticare", + "Remove": "Rimuovere", + "Your device is not authenticated yet": "Il tuo dispositivo non è ancora stato autenticato", + "Sensor": "Sensore", + "Finger": "Dito", + "Manual": "Manuale", + "Scale": "Scala", + "Linear": "Lineare", + "Logarithmic": "Logaritmica", + "Logarithmic (Dynamic)": "Logaritmica (Dinamica)", + "Insulin-on-Board": "IOB-Insulina a Bordo", + "Carbs-on-Board": "COB-Carboidrati a Bordo", + "Bolus Wizard Preview": "BWP-Calcolatore di bolo", + "Value Loaded": "Valori Caricati", + "Cannula Age": "CAGE-Cambio Ago", + "Basal Profile": "BASAL-Profilo Basale", + "Silence for 30 minutes": "Silenzio per 30 minuti", + "Silence for 60 minutes": "Silenzio per 60 minuti", + "Silence for 90 minutes": "Silenzio per 90 minuti", + "Silence for 120 minutes": "Silenzio per 120 minuti", + "Settings": "Impostazioni", + "Units": "Unità", + "Date format": "Formato data", + "12 hours": "12 ore", + "24 hours": "24 ore", + "Log a Treatment": "Somministrazioni", + "BG Check": "Controllo Glicemia", + "Meal Bolus": "Bolo Pasto", + "Snack Bolus": "Bolo Merenda", + "Correction Bolus": "Bolo Correttivo", + "Carb Correction": "Carboidrati Correttivi", + "Note": "Nota", + "Question": "Domanda", + "Exercise": "Esercizio Fisico", + "Pump Site Change": "CAGE-Cambio Ago", + "CGM Sensor Start": "CGM Avvio sensore", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "CGM Cambio sensore", + "Dexcom Sensor Start": "Avvio sensore Dexcom", + "Dexcom Sensor Change": "Cambio sensore Dexcom", + "Insulin Cartridge Change": "Cambio cartuccia insulina", + "D.A.D. Alert": "Allarme D.A.D.(Diabete Alert Dog)", + "Glucose Reading": "Lettura glicemie", + "Measurement Method": "Metodo di misurazione", + "Meter": "Glucometro", + "Insulin Given": "Insulina", + "Amount in grams": "Quantità in grammi", + "Amount in units": "Quantità in unità", + "View all treatments": "Visualizza tutti le somministrazioni", + "Enable Alarms": "Attiva Allarme", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "Quando si attiva un allarme acustico.", + "Urgent High Alarm": "Urgente:Glicemia Alta", + "High Alarm": "Glicemia Alta", + "Low Alarm": "Glicemia bassa", + "Urgent Low Alarm": "Urgente:Glicemia Bassa", + "Stale Data: Warn": "Notifica Dati", + "Stale Data: Urgent": "Notifica:Urgente", + "mins": "min", + "Night Mode": "Modalità Notte", + "When enabled the page will be dimmed from 10pm - 6am.": "Attivandola, la pagina sarà oscurata dalle 22:00-06:00.", + "Enable": "Permettere", + "Show Raw BG Data": "Mostra dati Raw BG", + "Never": "Mai", + "Always": "Sempre", + "When there is noise": "Quando vi è rumore", + "When enabled small white dots will be displayed for raw BG data": "Quando lo abiliti, visualizzerai piccoli puntini bianchi (raw BG data)", + "Custom Title": "Titolo personalizzato", + "Theme": "Tema", + "Default": "Predefinito", + "Colors": "Colori", + "Colorblind-friendly colors": "Colori per daltonici", + "Reset, and use defaults": "Resetta le impostazioni predefinite", + "Calibrations": "Calibrazioni", + "Alarm Test / Smartphone Enable": "Test Allarme / Abilita Smartphone", + "Bolus Wizard": "BW-Calcolatore di Bolo", + "in the future": "nel futuro", + "time ago": "tempo fa", + "hr ago": "ora fa", + "hrs ago": "ore fa", + "min ago": "minuto fa", + "mins ago": "minuti fa", + "day ago": "Giorno fa", + "days ago": "giorni fa", + "long ago": "Molto tempo fa", + "Clean": "Pulito", + "Light": "Leggero", + "Medium": "Medio", + "Heavy": "Pesante", + "Treatment type": "Somministrazione", + "Raw BG": "Raw BG", + "Device": "Dispositivo", + "Noise": "Rumore", + "Calibration": "Calibratura", + "Show Plugins": "Mostra Plugin", + "About": "Informazioni", + "Value in": "Valore in", + "Carb Time": "Tempo", + "Language": "Lingua", + "Add new": "Aggiungi nuovo", + "g": "g", + "ml": "ml", + "pcs": "pz", + "Drag&drop food here": "Trascina&rilascia cibo qui", + "Care Portal": "Somministrazioni", + "Medium/Unknown": "Media/Sconosciuto", + "IN THE FUTURE": "NEL FUTURO", + "Update": "Aggiornamento", + "Order": "Ordina", + "oldest on top": "più vecchio in alto", + "newest on top": "più recente in alto", + "All sensor events": "Tutti gli eventi del sensore", + "Remove future items from mongo database": "Rimuovere gli oggetti dal database di mongo in futuro", + "Find and remove treatments in the future": "Individuare e rimuovere le somministrazioni in futuro", + "This task find and remove treatments in the future.": "Trovare e rimuovere le somministrazioni in futuro", + "Remove treatments in the future": "Rimuovere somministrazioni in futuro", + "Find and remove entries in the future": "Trovare e rimuovere le voci in futuro", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Trovare e rimuovere i dati CGM in futuro creato da uploader/xdrip con data/ora sbagliato.", + "Remove entries in the future": "Rimuovere le voci in futuro", + "Loading database ...": "Carica Database ...", + "Database contains %1 future records": "Contiene Database %1 record futuri", + "Remove %1 selected records?": "Rimuovere %1 record selezionati?", + "Error loading database": "Errore di caricamento del database", + "Record %1 removed ...": "Record %1 rimosso ...", + "Error removing record %1": "Errore rimozione record %1", + "Deleting records ...": "Elimino dei record ...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Pulisci database di Mongo", + "Delete all documents from devicestatus collection": "Eliminare tutti i documenti dalla collezione \"devicestatus\"", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Questa attività elimina tutti i documenti dalla collezione \"devicestatus\". Utile quando lo stato della batteria uploader/xdrip non si aggiorna.", + "Delete all documents": "Eliminare tutti i documenti", + "Delete all documents from devicestatus collection?": "Eliminare tutti i documenti dalla collezione devicestatus?", + "Database contains %1 records": "Contiene Database %1 record", + "All records removed ...": "Tutti i record rimossi ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "NS - Dati Mongo", + "Nightscout reporting": "Nightscout - Statistiche", + "Cancel": "Cancellare", + "Edit treatment": "Modifica Somministrazione", + "Duration": "Tempo", + "Duration in minutes": "Tempo in minuti", + "Temp Basal": "Basale Temp", + "Temp Basal Start": "Inizio Basale Temp", + "Temp Basal End": "Fine Basale Temp", + "Percent": "Percentuale", + "Basal change in %": "Variazione basale in %", + "Basal value": "Valore Basale", + "Absolute basal value": "Valore Basale Assoluto", + "Announcement": "Annuncio", + "Loading temp basal data": "Caricamento basale temp", + "Save current record before changing to new?": "Salvare i dati correnti prima di cambiarli?", + "Profile Switch": "Cambio profilo", + "Profile": "Profilo", + "General profile settings": "Impostazioni generali profilo", + "Title": "Titolo", + "Database records": "Record del database", + "Add new record": "Aggiungi un nuovo record", + "Remove this record": "Rimuovi questo record", + "Clone this record to new": "Clona questo record in uno nuovo", + "Record valid from": "Record valido da", + "Stored profiles": "Profili salvati", + "Timezone": "Fuso orario", + "Duration of Insulin Activity (DIA)": "Durata Attività Insulinica (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.": "Rappresenta la durata tipica nel quale l'insulina ha effetto. Varia in base al paziente ed al tipo d'insulina. Tipicamente 3-4 ore per la maggior parte dei microinfusori e dei pazienti. Chiamata anche durata d'azione insulinica.", + "Insulin to carb ratio (I:C)": "Rapporto Insulina-Carboidrati (I:C)", + "Hours:": "Ore:", + "hours": "ore", + "g/hour": "g/ora", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g carbo per U di insulina. Il rapporto tra quanti grammi di carboidrati sono compensati da ogni U di insulina.", + "Insulin Sensitivity Factor (ISF)": "Fattore di Sensibilità Insulinica (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL o mmol/L per U insulina. Il rapporto di quanto la glicemia varia per ogni U di correzione insulinica.", + "Carbs activity / absorption rate": "Attività carboidrati / Velocità di assorbimento", + "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).": "grammi per unità di tempo. Rappresentano sia il cambio di COB per unità di tempo, sia la quantità di carboidrati che faranno effetto nel tempo. Assorbimento di carboidrati / curva di attività sono meno conosciute rispetto all'attività insulinica, ma possono essere approssimate usando un ritardo iniziale seguito da un rapporto costante di assorbimento (g/hr).", + "Basal rates [unit/hour]": "Basale [unità/ora]", + "Target BG range [mg/dL,mmol/L]": "Obiettivo d'intervallo glicemico [mg/dL,mmol/L]", + "Start of record validity": "Inizio di validità del dato", + "Icicle": "Inverso", + "Render Basal": "Grafico Basale", + "Profile used": "Profilo usato", + "Calculation is in target range.": "Calcolo all'interno dell'intervallo", + "Loading profile records ...": "Caricamento dati del profilo ...", + "Values loaded.": "Valori caricati.", + "Default values used.": "Valori standard usati.", + "Error. Default values used.": "Errore. Valori standard usati.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Intervalli di tempo della glicemia obiettivo inferiore e superiore non corretti. Valori ripristinati a quelli standard.", + "Valid from:": "Valido da:", + "Save current record before switching to new?": "Salvare il dato corrente prima di passare ad uno nuovo?", + "Add new interval before": "Aggiungere prima un nuovo intervallo", + "Delete interval": "Elimina intervallo", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Combo Bolo", + "Difference": "Differenza", + "New time": "Nuovo Orario", + "Edit Mode": "Modalità di Modifica", + "When enabled icon to start edit mode is visible": "Quando abilitata, l'icona della Modalità di Modifica è visibile", + "Operation": "Operazione", + "Move": "Muovi", + "Delete": "Elimina", + "Move insulin": "Muovi Insulina", + "Move carbs": "Muovi carboidrati", + "Remove insulin": "Rimuovi insulina", + "Remove carbs": "Rimuovi carboidrati", + "Change treatment time to %1 ?": "Cambiare tempo alla somministrazione a %1 ?", + "Change carbs time to %1 ?": "Cambiare durata carboidrati a %1 ?", + "Change insulin time to %1 ?": "Cambiare durata insulina a %1 ?", + "Remove treatment ?": "Rimuovere somministrazione ?", + "Remove insulin from treatment ?": "Rimuovere insulina dalla somministrazione ?", + "Remove carbs from treatment ?": "Rimuovere carboidrati dalla somministrazione ?", + "Rendering": "Traduzione", + "Loading OpenAPS data of": "Caricamento in corso dati OpenAPS", + "Loading profile switch data": "Caricamento in corso dati cambio profilo", + "Redirecting you to the Profile Editor to create a new profile.": "Impostazione errata del profilo. \nNessun profilo definito per visualizzare l'ora. \nReindirizzamento al profilo editor per creare un nuovo profilo.", + "Pump": "Pompa", + "Sensor Age": "SAGE - Durata Sensore", + "Insulin Age": "IAGE - Durata Insulina", + "Temporary target": "Obiettivo Temporaneo", + "Reason": "Ragionare", + "Eating soon": "Mangiare prossimamente", + "Top": "Superiore", + "Bottom": "Inferiore", + "Activity": "Attività", + "Targets": "Obiettivi", + "Bolus insulin:": "Insulina Bolo", + "Base basal insulin:": "Insulina Basale:", + "Positive temp basal insulin:": "Insulina basale temp positiva:", + "Negative temp basal insulin:": "Insulina basale Temp negativa:", + "Total basal insulin:": "Insulina Basale Totale:", + "Total daily insulin:": "Totale giornaliero d'insulina:", + "Unable to %1 Role": "Incapace di %1 Ruolo", + "Unable to delete Role": "Incapace di eliminare Ruolo", + "Database contains %1 roles": "Database contiene %1 ruolo", + "Edit Role": "Modifica ruolo", + "admin, school, family, etc": "amministrazione, scuola, famiglia, etc", + "Permissions": "Permessi", + "Are you sure you want to delete: ": "Sei sicuro di voler eliminare:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Ogni ruolo avrà un 1 o più autorizzazioni. Il * il permesso è un jolly, i permessi sono una gerarchia utilizzando : come separatore.", + "Add new Role": "Aggiungere un nuovo ruolo", + "Roles - Groups of People, Devices, etc": "Ruoli - gruppi di persone, dispositivi, etc", + "Edit this role": "Modifica questo ruolo", + "Admin authorized": "Amministrativo autorizzato", + "Subjects - People, Devices, etc": "Soggetti - persone, dispositivi, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Ogni soggetto avrà un gettone d'accesso unico e 1 o più ruoli. Fare clic sul gettone d'accesso per aprire una nuova vista con il soggetto selezionato, questo legame segreto può quindi essere condiviso.", + "Add new Subject": "Aggiungere un nuovo Soggetto", + "Unable to %1 Subject": "Incapace di %1 sottoporre", + "Unable to delete Subject": "Impossibile eliminare Soggetto", + "Database contains %1 subjects": "Database contiene %1 soggetti", + "Edit Subject": "Modifica Oggetto", + "person, device, etc": "persona, dispositivo, ecc", + "role1, role2": "ruolo1, ruolo2", + "Edit this subject": "Modifica questo argomento", + "Delete this subject": "Eliminare questo argomento", + "Roles": "Ruoli", + "Access Token": "Gettone d'accesso", + "hour ago": "ora fa", + "hours ago": "ore fa", + "Silence for %1 minutes": "Silenzio per %1 minuti", + "Check BG": "Controllare BG", + "BASAL": "BASALE", + "Current basal": "Basale corrente", + "Sensitivity": "ISF - sensibilità", + "Current Carb Ratio": "Attuale rapporto I:C", + "Basal timezone": "fuso orario basale", + "Active profile": "Attiva profilo", + "Active temp basal": "Attiva Basale Temp", + "Active temp basal start": "Attiva Inizio Basale temp", + "Active temp basal duration": "Attiva durata basale temp", + "Active temp basal remaining": "Attiva residuo basale temp", + "Basal profile value": "Valore profilo basale", + "Active combo bolus": "Attiva Combo bolo", + "Active combo bolus start": "Attivo inizio Combo bolo", + "Active combo bolus duration": "Attivo durata Combo bolo", + "Active combo bolus remaining": "Attivo residuo Combo bolo", + "BG Delta": "BG Delta", + "Elapsed Time": "Tempo Trascorso", + "Absolute Delta": "Delta Assoluto", + "Interpolated": "Interpolata", + "BWP": "BWP", + "Urgent": "Urgente", + "Warning": "Avviso", + "Info": "Info", + "Lowest": "Minore", + "Snoozing high alarm since there is enough IOB": "Addormenta allarme alto poiché non vi è sufficiente IOB", + "Check BG, time to bolus?": "Controllare BG, il tempo del bolo?", + "Notice": "Preavviso", + "required info missing": "richiesta informazioni mancanti", + "Insulin on Board": "IOB - Insulina Attiva", + "Current target": "Obiettivo attuale", + "Expected effect": "Effetto Previsto", + "Expected outcome": "Risultato previsto", + "Carb Equivalent": "Carb equivalenti", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "L'eccesso d'insulina equivalente %1U più che necessari per raggiungere l'obiettivo basso, non rappresentano i carboidrati.", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "L'eccesso d'insulina equivalente %1U più che necessario per raggiungere l'obiettivo basso, ASSICURARSI IOB SIA COPERTO DA CARBOIDRATI", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Riduzione 1U% necessaria d'insulina attiva per raggiungere l'obiettivo basso, troppa basale?", + "basal adjustment out of range, give carbs?": "regolazione basale fuori campo, dare carboidrati?", + "basal adjustment out of range, give bolus?": "regolazione basale fuori campo, dare bolo?", + "above high": "sopra alto", + "below low": "sotto bassa", + "Projected BG %1 target": "Proiezione BG %1 obiettivo", + "aiming at": "puntare a", + "Bolus %1 units": "Bolo %1 unità", + "or adjust basal": "o regolare basale", + "Check BG using glucometer before correcting!": "Controllare BG utilizzando glucometro prima di correggere!", + "Basal reduction to account %1 units:": "Riduzione basale per conto %1 unità:", + "30m temp basal": "30m basale temp", + "1h temp basal": "1h basale temp", + "Cannula change overdue!": "Cambio Cannula in ritardo!", + "Time to change cannula": "Tempo di cambiare la cannula", + "Change cannula soon": "Cambio cannula prossimamente", + "Cannula age %1 hours": "Durata Cannula %1 ore", + "Inserted": "Inserito", + "CAGE": "CAGE", + "COB": "COB", + "Last Carbs": "Ultimi carboidrati", + "IAGE": "IAGE", + "Insulin reservoir change overdue!": "Cambio serbatoio d'insulina in ritardo!", + "Time to change insulin reservoir": "Momento di cambiare serbatoio d'insulina", + "Change insulin reservoir soon": "Cambiare serbatoio d'insulina prossimamente", + "Insulin reservoir age %1 hours": "IAGE - Durata Serbatoio d'insulina %1 ore", + "Changed": "Cambiato", + "IOB": "IOB", + "Careportal IOB": "IOB Somministrazioni", + "Last Bolus": "Ultimo bolo", + "Basal IOB": "Basale IOB", + "Source": "Fonte", + "Stale data, check rig?": "dati non aggiornati, controllare il telefono?", + "Last received:": "Ultime ricevute:", + "%1m ago": "%1m fa", + "%1h ago": "%1h fa", + "%1d ago": "%1d fa", + "RETRO": "RETRO", + "SAGE": "SAGE", + "Sensor change/restart overdue!": "Cambio/riavvio del sensore in ritardo!", + "Time to change/restart sensor": "Tempo di cambiare/riavvio sensore", + "Change/restart sensor soon": "Modifica/riavvio sensore prossimamente", + "Sensor age %1 days %2 hours": "Durata Sensore %1 giorni %2 ore", + "Sensor Insert": "SAGE - inserimento sensore", + "Sensor Start": "SAGE - partenza sensore", + "days": "giorni", + "Insulin distribution": "Distribuzione di insulina", + "To see this report, press SHOW while in this view": "Per guardare questo report, premere SHOW all'interno della finestra", + "AR2 Forecast": "Previsione AR2", + "OpenAPS Forecasts": "Previsione OpenAPS", + "Temporary Target": "Obbiettivo temporaneo", + "Temporary Target Cancel": "Obbiettivo temporaneo cancellato", + "OpenAPS Offline": "OpenAPS disconnesso", + "Profiles": "Profili", + "Time in fluctuation": "Tempo in fluttuazione", + "Time in rapid fluctuation": "Tempo in rapida fluttuazione", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Questa è solo un'approssimazione che può essere molto inaccurata e che non sostituisce la misurazione capillare. La formula usata è presa da:", + "Filter by hours": "Filtra per ore", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tempo in fluttuazione e Tempo in rapida fluttuazione misurano la % di tempo durante il periodo esaminato, durante il quale la glicemia stà variando velocemente o rapidamente. Bassi valori sono migliori.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Media Totale Giornaliera Variazioni è la somma dei valori assoluti di tutte le escursioni glicemiche per il periodo esaminato, diviso per il numero di giorni. Bassi valori sono migliori.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Media Oraria Variazioni è la somma del valore assoluto di tutte le escursioni glicemiche per il periodo esaminato, diviso per il numero di ore. Bassi valori sono migliori.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">qui.", + "Mean Total Daily Change": "Media Totale Giornaliera Variazioni", + "Mean Hourly Change": "Media Oraria Variazioni", + "FortyFiveDown": "leggera diminuzione", + "FortyFiveUp": "leggero aumento", + "Flat": "stabile", + "SingleUp": "aumento", + "SingleDown": "diminuzione", + "DoubleDown": "rapida diminuzione", + "DoubleUp": "rapido aumento", + "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 e %2 come %3.", + "virtAsstBasal": "%1 basale attuale è %2 unità per ora", + "virtAsstBasalTemp": "%1 basale temporanea di %2 unità per ora finirà %3", + "virtAsstIob": "e tu hai %1 insulina attiva.", + "virtAsstIobIntent": "Tu hai %1 insulina attiva", + "virtAsstIobUnits": "%1 unità di", + "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstPreamble": "Tuo", + "virtAsstPreamble3person": "%1 ha un ", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Grassi [g]", + "Protein [g]": "Proteine [g]", + "Energy [kJ]": "Energia [kJ]", + "Clock Views:": "Vista orologio:", + "Clock": "Orologio", + "Color": "Colore", + "Simple": "Semplice", + "TDD average": "Totale Dose Giornaliera media (TDD)", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Media carboidrati", + "Eating Soon": "Mangiare presto", + "Last entry {0} minutes ago": "Ultimo inserimento {0} minuti fa", + "change": "cambio", + "Speech": "Voce", + "Target Top": "Limite superiore", + "Target Bottom": "Limite inferiore", + "Canceled": "Cancellato", + "Meter BG": "Glicemia Capillare", + "predicted": "predetto", + "future": "futuro", + "ago": "ago", + "Last data received": "Ultimo dato ricevuto", + "Clock View": "Vista orologio", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/ja_JP.json b/translations/ja_JP.json new file mode 100644 index 00000000000..f98deca1650 --- /dev/null +++ b/translations/ja_JP.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "接続可能", + "Mo": "月", + "Tu": "火", + "We": "水", + "Th": "木", + "Fr": "金", + "Sa": "土", + "Su": "日", + "Monday": "月曜日", + "Tuesday": "火曜日", + "Wednesday": "水曜日", + "Thursday": "木曜日", + "Friday": "金曜日", + "Saturday": "土曜日", + "Sunday": "日曜日", + "Category": "カテゴリー", + "Subcategory": "サブカテゴリー", + "Name": "名前", + "Today": "今日", + "Last 2 days": "直近の2日間", + "Last 3 days": "直近の3日間", + "Last week": "直近の1週間", + "Last 2 weeks": "直近の2週間", + "Last month": "直近の1ヶ月", + "Last 3 months": "直近の3ヶ月", + "between": "between", + "around": "around", + "and": "and", + "From": "開始日", + "To": "終了日", + "Notes": "メモ", + "Food": "食事", + "Insulin": "インスリン", + "Carbs": "炭水化物", + "Notes contain": "メモ内容", + "Target BG range bottom": "目標血糖値 下限", + "top": "上限", + "Show": "作成", + "Display": "表示", + "Loading": "ロード中", + "Loading profile": "プロフィールロード中", + "Loading status": "ステータスロード中", + "Loading food database": "食事データベースロード中", + "not displayed": "表示できません", + "Loading CGM data of": "CGMデータロード中", + "Loading treatments data of": "治療データロード中", + "Processing data of": "データ処理中の日付:", + "Portion": "一食分", + "Size": "量", + "(none)": "(データなし)", + "None": "データなし", + "": "<データなし>", + "Result is empty": "結果がありません", + "Day to day": "日差", + "Week to week": "Week to week", + "Daily Stats": "1日統計", + "Percentile Chart": "パーセント図", + "Distribution": "配分", + "Hourly stats": "1時間統計", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "1週間統計", + "No data available": "利用できるデータがありません", + "Low": "目標血糖値低値", + "In Range": "目標血糖値範囲内", + "Period": "期間", + "High": "目標血糖値高値", + "Average": "平均値", + "Low Quartile": "下四分位値", + "Upper Quartile": "高四分位値", + "Quartile": "四分位値", + "Date": "日付", + "Normal": "通常", + "Median": "中央値", + "Readings": "読み込み", + "StDev": "標準偏差", + "Daily stats report": "1日ごとの統計のレポート", + "Glucose Percentile report": "グルコース(%)レポート", + "Glucose distribution": "血糖値の分布", + "days total": "合計日数", + "Total per day": "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 secret hashを使用する", + "No API secret hash stored yet. You need to enter API secret.": "API secret hashがまだ保存されていません。API secretの入力が必要です。", + "Database loaded": "データベースロード完了", + "Error: Database failed to load": "エラー:データベースを読み込めません", + "Error": "Error", + "Create new record": "新しい記録を作る", + "Save record": "保存", + "Portions": "一食分", + "Unit": "単位", + "GI": "GI", + "Edit record": "記録編集", + "Delete record": "記録削除", + "Move to the top": "トップ画面へ", + "Hidden": "隠す", + "Hide after use": "使用後に隠す", + "Your API secret must be at least 12 characters long": "APIシークレットは12文字以上の長さが必要です", + "Bad API secret": "APIシークレットは正しくありません", + "API secret hash stored": "APIシークレットを保存出来ました", + "Status": "統計", + "Not loaded": "読み込めません", + "Food Editor": "食事編集", + "Your database": "あなたのデータベース", + "Filter": "フィルター", + "Save": "保存", + "Clear": "クリア", + "Record": "記録", + "Quick picks": "クイック選択", + "Show hidden": "表示する", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "治療", + "Time": "時間", + "Event Type": "イベント", + "Blood Glucose": "血糖値", + "Entered By": "入力者", + "Delete this treatment?": "この治療データを削除しますか?", + "Carbs Given": "摂取糖質量", + "Inzulin Given": "インスリン投与量", + "Event Time": "イベント時間", + "Please verify that the data entered is correct": "入力したデータが正しいか確認をお願いします。", + "BG": "BG", + "Use BG correction in calculation": "ボーラス計算機能使用", + "BG from CGM (autoupdated)": "CGMグルコース値", + "BG from meter": "血糖測定器使用グルコース値", + "Manual BG": "手動入力グルコース値", + "Quickpick": "クイック選択", + "or": "または", + "Add from database": "データベースから追加", + "Use carbs correction in calculation": "糖質量計算機能を使用", + "Use COB correction in calculation": "COB補正計算を使用", + "Use IOB in calculation": "IOB計算を使用", + "Other correction": "その他の補正", + "Rounding": "端数処理", + "Enter insulin correction in treatment": "治療にインスリン補正を入力する。", + "Insulin needed": "必要インスリン単位", + "Carbs needed": "必要糖質量", + "Carbs needed if Insulin total is negative value": "インスリン合計値がマイナスであればカーボ値入力が必要です。", + "Basal rate": "基礎インスリン割合", + "60 minutes earlier": "60分前", + "45 minutes earlier": "45分前", + "30 minutes earlier": "30分前", + "20 minutes earlier": "20分前", + "15 minutes earlier": "15分前", + "Time in minutes": "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": "BWP・ボーラスウィザード参照", + "Value Loaded": "数値読み込み完了", + "Cannula Age": "CAGE・カニューレ使用日数", + "Basal Profile": "ベーサルプロフィール", + "Silence for 30 minutes": "30分静かにする", + "Silence for 60 minutes": "60分静かにする", + "Silence for 90 minutes": "90分静かにする", + "Silence for 120 minutes": "120分静かにする", + "Settings": "設定", + "Units": "Units", + "Date format": "日数初期化", + "12 hours": "12時間制", + "24 hours": "24時間制", + "Log a Treatment": "治療を記録", + "BG Check": "BG測定", + "Meal Bolus": "食事ボーラス", + "Snack Bolus": "間食ボーラス", + "Correction Bolus": "補正ボーラス", + "Carb Correction": "カーボ治療", + "Note": "メモ", + "Question": "質問", + "Exercise": "運動", + "Pump Site Change": "CAGE・ポンプ注入場所変更", + "CGM Sensor Start": "CGMセンサー開始", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "CGMセンサー挿入", + "Dexcom Sensor Start": "Dexcomセンサー開始", + "Dexcom Sensor Change": "Dexcomセンサー挿入", + "Insulin Cartridge Change": "インスリンリザーバー交換", + "D.A.D. Alert": "メディカルアラート犬(DAD)の知らせ", + "Glucose Reading": "Glucose Reading", + "Measurement Method": "測定方法", + "Meter": "血糖測定器", + "Insulin Given": "投与されたインスリン", + "Amount in grams": "グラム換算", + "Amount in units": "単位換算", + "View all treatments": "全治療内容を参照", + "Enable Alarms": "アラームを有効にする", + "Pump Battery Change": "ポンプバッテリー交換", + "Pump Battery Low Alarm": "ポンプバッテリーが低下", + "Pump Battery change overdue!": "ポンプバッテリー交換期限切れてます!", + "When enabled an alarm may sound.": "有効にすればアラームが鳴動します。", + "Urgent High Alarm": "緊急高血糖アラーム", + "High Alarm": "高血糖アラーム", + "Low Alarm": "低血糖アラーム", + "Urgent Low Alarm": "緊急低血糖アラーム", + "Stale Data: Warn": "注意:古いデータ", + "Stale Data: Urgent": "緊急:古いデータ", + "mins": "分", + "Night Mode": "夜間モード", + "When enabled the page will be dimmed from 10pm - 6am.": "有効にすると、ページは 夜22時から 朝6時まで単色表示になります。", + "Enable": "有効", + "Show Raw BG Data": "素のBGデータを表示する", + "Never": "決して", + "Always": "いつも", + "When there is noise": "測定不良があった時", + "When enabled small white dots will be displayed for raw BG data": "有効にすると、小さい白ドットが素のBGデータ用に表示されます", + "Custom Title": "カスタムタイトル", + "Theme": "テーマ", + "Default": "デフォルト", + "Colors": "色付き", + "Colorblind-friendly colors": "色覚異常の方向けの色", + "Reset, and use defaults": "リセットしてデフォルト設定を使用", + "Calibrations": "較生", + "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 BG", + "Device": "機器", + "Noise": "測定不良", + "Calibration": "較正", + "Show Plugins": "プラグイン表示", + "About": "約", + "Value in": "数値", + "Carb Time": "カーボ時間", + "Language": "言語", + "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", + "Update": "Update", + "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", + "Deleting records ...": "Deleting records ...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Clean Mongo status database", + "Delete all documents from devicestatus collection": "Delete all documents from devicestatus collection", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.", + "Delete all documents": "Delete all documents", + "Delete all documents from devicestatus collection?": "Delete all documents from devicestatus collection?", + "Database contains %1 records": "Database contains %1 records", + "All records removed ...": "All records removed ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Admin Tools", + "Nightscout reporting": "Nightscout reporting", + "Cancel": "中止", + "Edit treatment": "Edit treatment", + "Duration": "Duration", + "Duration in minutes": "Duration in minutes", + "Temp Basal": "Temp Basal", + "Temp Basal Start": "Temp Basal Start", + "Temp Basal End": "Temp Basal End", + "Percent": "Percent", + "Basal change in %": "Basal change in %", + "Basal value": "Basal value", + "Absolute basal value": "Absolute basal value", + "Announcement": "Announcement", + "Loading temp basal data": "Loading temp basal data", + "Save current record before changing to new?": "Save current record before changing to new?", + "Profile Switch": "Profile Switch", + "Profile": "Profile", + "General profile settings": "General profile settings", + "Title": "Title", + "Database records": "Database records", + "Add new record": "新しい記録を加える", + "Remove this record": "この記録を除く", + "Clone this record to new": "Clone this record to new", + "Record valid from": "Record valid from", + "Stored profiles": "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", + "ISF": "ISF", + "Combo Bolus": "Combo Bolus", + "Difference": "Difference", + "New time": "New time", + "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": "削除", + "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", + "Loading profile switch data": "Loading profile switch data", + "Redirecting you to the Profile Editor to create a new profile.": "Redirecting you to the Profile Editor to create a new profile.", + "Pump": "Pump", + "Sensor Age": "Sensor Age", + "Insulin Age": "Insulin Age", + "Temporary target": "Temporary target", + "Reason": "Reason", + "Eating soon": "Eating soon", + "Top": "Top", + "Bottom": "Bottom", + "Activity": "Activity", + "Targets": "Targets", + "Bolus insulin:": "Bolus insulin:", + "Base basal insulin:": "Base basal insulin:", + "Positive temp basal insulin:": "Positive temp basal insulin:", + "Negative temp basal insulin:": "Negative temp basal insulin:", + "Total basal insulin:": "Total basal insulin:", + "Total daily insulin:": "Total daily insulin:", + "Unable to %1 Role": "Unable to %1 Role", + "Unable to delete Role": "Unable to delete Role", + "Database contains %1 roles": "Database contains %1 roles", + "Edit Role": "Edit Role", + "admin, school, family, etc": "admin, school, family, etc", + "Permissions": "Permissions", + "Are you sure you want to delete: ": "Are you sure you want to delete: ", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.", + "Add new Role": "Add new Role", + "Roles - Groups of People, Devices, etc": "Roles - Groups of People, Devices, etc", + "Edit this role": "Edit this role", + "Admin authorized": "Admin authorized", + "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", + "Add new Subject": "Add new Subject", + "Unable to %1 Subject": "לא יכול ל %1 נושאי", + "Unable to delete Subject": "Unable to delete Subject", + "Database contains %1 subjects": "Database contains %1 subjects", + "Edit Subject": "Edit Subject", + "person, device, etc": "person, device, etc", + "role1, role2": "role1, role2", + "Edit this subject": "Edit this subject", + "Delete this subject": "Delete this subject", + "Roles": "Roles", + "Access Token": "Access Token", + "hour ago": "hour ago", + "hours ago": "hours ago", + "Silence for %1 minutes": "Silence for %1 minutes", + "Check BG": "Check BG", + "BASAL": "BASAL", + "Current basal": "Current basal", + "Sensitivity": "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": "緊急", + "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", + "CAGE": "CAGE", + "COB": "COB", + "Last Carbs": "Last Carbs", + "IAGE": "IAGE", + "Insulin reservoir change overdue!": "Insulin reservoir change overdue!", + "Time to change insulin reservoir": "Time to change insulin reservoir", + "Change insulin reservoir soon": "Change insulin reservoir soon", + "Insulin reservoir age %1 hours": "Insulin reservoir age %1 hours", + "Changed": "Changed", + "IOB": "IOB", + "Careportal IOB": "Careportal IOB", + "Last Bolus": "Last Bolus", + "Basal IOB": "Basal IOB", + "Source": "Source", + "Stale data, check rig?": "Stale data, check rig?", + "Last received:": "Last received:", + "%1m ago": "%1m ago", + "%1h ago": "%1h ago", + "%1d ago": "%1d ago", + "RETRO": "RETRO", + "SAGE": "SAGE", + "Sensor change/restart overdue!": "Sensor change/restart overdue!", + "Time to change/restart sensor": "Time to change/restart sensor", + "Change/restart sensor soon": "Change/restart sensor soon", + "Sensor age %1 days %2 hours": "Sensor age %1 days %2 hours", + "Sensor Insert": "Sensor Insert", + "Sensor Start": "Sensor Start", + "days": "days", + "Insulin distribution": "Insulin distribution", + "To see this report, press SHOW while in this view": "To see this report, press SHOW while in this view", + "AR2 Forecast": "AR2 Forecast", + "OpenAPS Forecasts": "OpenAPS Forecasts", + "Temporary Target": "Temporary Target", + "Temporary Target Cancel": "Temporary Target Cancel", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "Profiles", + "Time in fluctuation": "Time in fluctuation", + "Time in rapid fluctuation": "Time in rapid fluctuation", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:", + "Filter by hours": "Filter by hours", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">can be found here.", + "Mean Total Daily Change": "Mean Total Daily Change", + "Mean Hourly Change": "Mean Hourly Change", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Fat [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energy [kJ]", + "Clock Views:": "Clock Views:", + "Clock": "Clock", + "Color": "Color", + "Simple": "Simple", + "TDD average": "TDD average", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Carbs average", + "Eating Soon": "Eating Soon", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "change", + "Speech": "Speech", + "Target Top": "Target Top", + "Target Bottom": "Target Bottom", + "Canceled": "Canceled", + "Meter BG": "Meter BG", + "predicted": "predicted", + "future": "future", + "ago": "ago", + "Last data received": "Last data received", + "Clock View": "Clock View", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/ko_KR.json b/translations/ko_KR.json new file mode 100644 index 00000000000..9650dc2f928 --- /dev/null +++ b/translations/ko_KR.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "포트에서 수신", + "Mo": "월", + "Tu": "화", + "We": "수", + "Th": "목", + "Fr": "금", + "Sa": "토", + "Su": "일", + "Monday": "월요일", + "Tuesday": "화요일", + "Wednesday": "수요일", + "Thursday": "목요일", + "Friday": "금요일", + "Saturday": "토요일", + "Sunday": "일요일", + "Category": "분류", + "Subcategory": "세부 분류", + "Name": "프로파일 명", + "Today": "오늘", + "Last 2 days": "지난 2일", + "Last 3 days": "지난 3일", + "Last week": "지난주", + "Last 2 weeks": "지난 2주", + "Last month": "지난달", + "Last 3 months": "지난 3달", + "between": "between", + "around": "around", + "and": "and", + "From": "시작일", + "To": "종료일", + "Notes": "메모", + "Food": "음식", + "Insulin": "인슐린", + "Carbs": "탄수화물", + "Notes contain": "메모 포함", + "Target BG range bottom": "최저 목표 혈당 범위", + "top": "최고치", + "Show": "확인", + "Display": "출력", + "Loading": "로딩", + "Loading profile": "프로파일 로딩", + "Loading status": "상태 로딩", + "Loading food database": "음식 데이터 베이스 로딩", + "not displayed": "출력되지 않음", + "Loading CGM data of": "CGM 데이터 로딩", + "Loading treatments data of": "처리 데이터 로딩", + "Processing data of": "데이터 처리 중", + "Portion": "부분", + "Size": "크기", + "(none)": "(없음)", + "None": "없음", + "": "<없음>", + "Result is empty": "결과 없음", + "Day to day": "일별 그래프", + "Week to week": "주별 그래프", + "Daily Stats": "일간 통계", + "Percentile Chart": "백분위 그래프", + "Distribution": "분포", + "Hourly stats": "시간대별 통계", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "주간 통계", + "No data available": "활용할 수 있는 데이터 없음", + "Low": "낮음", + "In Range": "범위 안 ", + "Period": "기간 ", + "High": "높음", + "Average": "평균", + "Low Quartile": "낮은 4분위", + "Upper Quartile": "높은 4분위", + "Quartile": "4분위", + "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*": "예상 당화혈 색소", + "Weekly Success": "주간 통계", + "There is not sufficient data to run this report. Select more days.": "이 보고서를 실행하기 위한 데이터가 충분하지 않습니다. 더 많은 날들을 선택해 주세요.", + "Using stored API secret hash": "저장된 API secret hash를 사용 중", + "No API secret hash stored yet. You need to enter API secret.": "API secret hash가 아직 저장되지 않았습니다. API secret를 입력해 주세요.", + "Database loaded": "데이터베이스 로드", + "Error: Database failed to load": "에러: 데이터베이스 로드 실패", + "Error": "Error", + "Create new record": "새입력", + "Save record": "저장", + "Portions": "부분", + "Unit": "단위", + "GI": "혈당 지수", + "Edit record": "편집기록", + "Delete record": "삭제기록", + "Move to the top": "맨처음으로 이동", + "Hidden": "숨김", + "Hide after use": "사용 후 숨김", + "Your API secret must be at least 12 characters long": "API secret는 최소 12자 이상이여야 합니다.", + "Bad API secret": "잘못된 API secret", + "API secret hash stored": "API secret hash가 저장 되었습니다.", + "Status": "상태", + "Not loaded": "로드되지 않음", + "Food Editor": "음식 편집", + "Your database": "당신의 데이터베이스", + "Filter": "필터", + "Save": "저장", + "Clear": "취소", + "Record": "기록", + "Quick picks": "빠른 선택", + "Show hidden": "숨김 보기", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "관리", + "Time": "시간", + "Event Type": "입력 유형", + "Blood Glucose": "혈당", + "Entered By": "입력 내용", + "Delete this treatment?": "이 대처를 지울까요?", + "Carbs Given": "탄수화물 요구량", + "Inzulin Given": "인슐린 요구량", + "Event Time": "입력 시간", + "Please verify that the data entered is correct": "입력한 데이터가 정확한지 확인해 주세요.", + "BG": "혈당", + "Use BG correction in calculation": "계산에 보정된 혈당을 사용하세요.", + "BG from CGM (autoupdated)": "CGM 혈당(자동 업데이트)", + "BG from meter": "혈당 측정기에서의 혈당", + "Manual BG": "수동 입력 혈당", + "Quickpick": "빠른 선택", + "or": "또는", + "Add from database": "데이터베이스로 부터 추가", + "Use carbs correction in calculation": "계산에 보정된 탄수화물을 사용하세요.", + "Use COB correction in calculation": "계산에 보정된 COB를 사용하세요.", + "Use IOB in calculation": "계산에 IOB를 사용하세요.", + "Other correction": "다른 보정", + "Rounding": "라운딩", + "Enter insulin correction in treatment": "대처를 위해 보정된 인슐린을 입력하세요.", + "Insulin needed": "인슐린 필요", + "Carbs needed": "탄수화물 필요", + "Carbs needed if Insulin total is negative value": "인슐린 전체가 마이너스 값이면 탄수화물이 필요합니다.", + "Basal rate": "Basal 단위", + "60 minutes earlier": "60분 더 일찍", + "45 minutes earlier": "45분 더 일찍", + "30 minutes earlier": "30분 더 일찍", + "20 minutes earlier": "20분 더 일찍", + "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": "PETRO 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": "Linear", + "Logarithmic": "Logarithmic", + "Logarithmic (Dynamic)": "다수(동적인)", + "Insulin-on-Board": "IOB", + "Carbs-on-Board": "COB", + "Bolus Wizard Preview": "Bolus 마법사 미리보기", + "Value Loaded": "데이터가 로드됨", + "Cannula Age": "캐뉼라 사용기간", + "Basal Profile": "Basal 프로파일", + "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": "Treatment 로그", + "BG Check": "혈당 체크", + "Meal Bolus": "식사 인슐린", + "Snack Bolus": "스넥 인슐린", + "Correction Bolus": "수정 인슐린", + "Carb Correction": "탄수화물 수정", + "Note": "메모", + "Question": "질문", + "Exercise": "운동", + "Pump Site Change": "펌프 위치 변경", + "CGM Sensor Start": "CGM 센서 시작", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "CGM 센서 삽입", + "Dexcom Sensor Start": "Dexcom 센서 시작", + "Dexcom Sensor Change": "Dexcom 센서 교체", + "Insulin Cartridge Change": "인슐린 카트리지 교체", + "D.A.D. Alert": "D.A.D(Diabetes Alert Dog) 알림", + "Glucose Reading": "혈당 읽기", + "Measurement Method": "측정 방법", + "Meter": "혈당 측정기", + "Insulin Given": "인슐린 요구량", + "Amount in grams": "합계(grams)", + "Amount in units": "합계(units)", + "View all treatments": "모든 treatments 보기", + "Enable Alarms": "알람 켜기", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "알림을 활성화 하면 알람이 울립니다.", + "Urgent High Alarm": "긴급 고혈당 알람", + "High Alarm": "고혈당 알람", + "Low Alarm": "저혈당 알람", + "Urgent Low Alarm": "긴급 저혈당 알람", + "Stale Data: Warn": "손실 데이터 : 경고", + "Stale Data: Urgent": "손실 데이터 : 긴급", + "mins": "분", + "Night Mode": "나이트 모드", + "When enabled the page will be dimmed from 10pm - 6am.": "페이지를 켜면 오후 10시 부터 오전 6시까지 비활성화 될 것이다.", + "Enable": "활성화", + "Show Raw BG Data": "Raw 혈당 데이터 보기", + "Never": "보지 않기", + "Always": "항상", + "When there is noise": "노이즈가 있을 때", + "When enabled small white dots will be displayed for raw BG data": "활성화 하면 작은 흰점들이 raw 혈당 데이터를 표시하게 될 것이다.", + "Custom Title": "사용자 정의 제목", + "Theme": "테마", + "Default": "초기설정", + "Colors": "색상", + "Colorblind-friendly colors": "색맹 친화적인 색상", + "Reset, and use defaults": "초기화 그리고 초기설정으로 사용", + "Calibrations": "보정", + "Alarm Test / Smartphone Enable": "알람 테스트 / 스마트폰 활성화", + "Bolus Wizard": "Bolus 마법사", + "in the future": "미래", + "time ago": "시간 전", + "hr ago": "시간 전", + "hrs ago": "시간 전", + "min ago": "분 전", + "mins ago": "분 전", + "day ago": "일 전", + "days ago": "일 전", + "long ago": "기간 전", + "Clean": "Clean", + "Light": "Light", + "Medium": "보통", + "Heavy": "심한", + "Treatment type": "Treatment 타입", + "Raw BG": "Raw 혈당", + "Device": "기기", + "Noise": "노이즈", + "Calibration": "보정", + "Show Plugins": "플러그인 보기", + "About": "정보", + "Value in": "값", + "Carb Time": "탄수화물 시간", + "Language": "언어", + "Add new": "새입력", + "g": "g", + "ml": "ml", + "pcs": "조각 바로 가기(pieces shortcut)", + "Drag&drop food here": "음식을 여기에 드래그&드랍 해주세요.", + "Care Portal": "Care Portal", + "Medium/Unknown": "보통/알려지지 않은", + "IN THE FUTURE": "미래", + "Update": "업데이트", + "Order": "순서", + "oldest on top": "오래된 것 부터", + "newest on top": "새로운 것 부터", + "All sensor events": "모든 센서 이벤트", + "Remove future items from mongo database": "mongo DB에서 미래 항목들을 지우세요.", + "Find and remove treatments in the future": "미래에 treatments를 검색하고 지우세요.", + "This task find and remove treatments in the future.": "이 작업은 미래에 treatments를 검색하고 지우는 것입니다.", + "Remove treatments in the future": "미래 treatments 지우기", + "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 records deleted", + "Clean Mongo status database": "Mongo 상태 데이터베이스를 지우세요.", + "Delete all documents from devicestatus collection": "devicestatus 수집에서 모든 문서들을 지우세요", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "이 작업은 모든 문서를 devicestatus 수집에서 지웁니다. 업로더 배터리 상태가 적절하게 업데이트 되지 않을 때 유용합니다.", + "Delete all documents": "모든 문서들을 지우세요", + "Delete all documents from devicestatus collection?": "devicestatus 수집의 모든 문서들을 지우세요.", + "Database contains %1 records": "데이터베이스는 %1 기록을 포함합니다.", + "All records removed ...": "모든 기록들이 지워졌습니다.", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "관리 도구", + "Nightscout reporting": "Nightscout 보고서", + "Cancel": "취소", + "Edit treatment": "Treatments 편집", + "Duration": "기간", + "Duration in minutes": "분당 지속 기간", + "Temp Basal": "임시 basal", + "Temp Basal Start": "임시 basal 시작", + "Temp Basal End": "임시 basal 종료", + "Percent": "퍼센트", + "Basal change in %": "% 이내의 basal 변경", + "Basal value": "Basal", + "Absolute basal value": "절대적인 basal", + "Announcement": "공지", + "Loading temp basal data": "임시 basal 로딩", + "Save current record before changing to new?": "새 데이터로 변경하기 전에 현재의 기록을 저장하시겠습니까?", + "Profile Switch": "프로파일 변경", + "Profile": "프로파일", + "General profile settings": "일반 프로파일 설정", + "Title": "제목", + "Database records": "데이터베이스 기록", + "Add new record": "새 기록 추가", + "Remove this record": "이 기록 삭", + "Clone this record to new": "이 기록을 새기록으로 복제하기", + "Record valid from": "기록을 시작한 날짜", + "Stored profiles": "저장된 프로파일", + "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 lifetime)이라고 불리기도 합니다.", + "Insulin to carb ratio (I:C)": "인슐린에 대한 탄수화물 비율(I:C)", + "Hours:": "시간:", + "hours": "시간", + "g/hour": "g/시간", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "인슐린 단위 당 탄수화물 g. 인슐린 단위에 대한 탄수화물의 양의 비율을 나타냅니다.", + "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. 인슐린 단위당 얼마나 많은 혈당 변화가 있는지의 비율을 나타냅니다.", + "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의 변화를 나타냅니다. 탄수화물 흡수율/활성도 곡선은 인슐린 활성도보다 이해가 잘 되지는 않지만 지속적인 흡수율(g/hr)에 따른 초기 지연을 사용하여 근사치를 구할 수 있습니다.", + "Basal rates [unit/hour]": "Basal 비율[unit/hour]", + "Target BG range [mg/dL,mmol/L]": "목표 혈당 범위 [mg/dL,mmol/L]", + "Start of record validity": "기록 유효기간의 시작일", + "Icicle": "고드름 방향", + "Render Basal": "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": "I:C", + "ISF": "ISF", + "Combo Bolus": "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 treatment을 변경하세요.", + "Change carbs time to %1 ?": "%1로 탄수화물 시간을 변경하세요.", + "Change insulin time to %1 ?": "%1로 인슐린 시간을 변경하세요.", + "Remove treatment ?": "Treatment를 지우세요.", + "Remove insulin from treatment ?": "Treatment에서 인슐린을 지우세요.", + "Remove carbs from treatment ?": "Treatment에서 탄수화물을 지우세요.", + "Rendering": "랜더링", + "Loading OpenAPS data of": "OpenAPS 데이터 로딩", + "Loading profile switch data": "프로파일 변환 데이터 로딩", + "Redirecting you to the Profile Editor to create a new profile.": "잘못된 프로파일 설정. \n프로파일이 없어서 표시된 시간으로 정의됩니다. 새 프로파일을 생성하기 위해 프로파일 편집기로 리다이렉팅", + "Pump": "펌프", + "Sensor Age": "센서 사용 기간", + "Insulin Age": "인슐린 사용 기간", + "Temporary target": "임시 목표", + "Reason": "근거", + "Eating soon": "편집 중", + "Top": "최고", + "Bottom": "최저", + "Activity": "활성도", + "Targets": "목표", + "Bolus insulin:": "Bolus 인슐린", + "Base basal insulin:": "기본 basal 인슐린", + "Positive temp basal insulin:": "초과된 임시 basal 인슐린", + "Negative temp basal insulin:": "남은 임시 basal 인슐린", + "Total basal insulin:": "전체 basal 인슐린", + "Total daily insulin:": "하루 인슐린 총량", + "Unable to %1 Role": "%1로 비활성", + "Unable to delete Role": "삭제로 비활성", + "Database contains %1 roles": "데이터베이스가 %1 포함", + "Edit Role": "편집 모드", + "admin, school, family, etc": "관리자, 학교, 가족 등", + "Permissions": "허가", + "Are you sure you want to delete: ": "정말로 삭제하시겠습니까: ", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "각각은 1 또는 그 이상의 허가를 가지고 있습니다. 허가는 예측이 안되고 구분자로 : 사용한 계층이 있습니다", + "Add new Role": "새 역할 추가", + "Roles - Groups of People, Devices, etc": "역할 - 그룹, 기기, 등", + "Edit this role": "이 역할 편집", + "Admin authorized": "인증된 관리자", + "Subjects - People, Devices, etc": "주제 - 사람, 기기 등", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "각 주제는 유일한 access token을 가지고 1 또는 그 이상의 역할을 가질 것이다. 선택된 주제와 새로운 뷰를 열기 위해 access token을 클릭하세요. 이 비밀 링크는 공유되어질 수 있다.", + "Add new Subject": "새 주제 추가", + "Unable to %1 Subject": "%1 주제 비활성화", + "Unable to delete Subject": "주제를 지우기 위해 비활성화", + "Database contains %1 subjects": "데이터베이스는 %1 주제를 포함", + "Edit Subject": "주제 편집", + "person, device, etc": "사람, 기기 등", + "role1, role2": "역할1, 역할2", + "Edit this subject": "이 주제 편집", + "Delete this subject": "이 주제 삭제", + "Roles": "역할", + "Access Token": "Access Token", + "hour ago": "시간 후", + "hours ago": "시간 후", + "Silence for %1 minutes": "%1 분 동안 무음", + "Check BG": "혈당 체크", + "BASAL": "BASAL", + "Current basal": "현재 basal", + "Sensitivity": "인슐린 민감도(ISF)", + "Current Carb Ratio": "현재 탄수화물 비율(ICR)", + "Basal timezone": "Basal 타임존", + "Active profile": "활성 프로파일", + "Active temp basal": "활성 임시 basal", + "Active temp basal start": "활성 임시 basal 시작", + "Active temp basal duration": "활성 임시 basal 시간", + "Active temp basal remaining": "남아 있는 활성 임시 basal", + "Basal profile value": "Basal 프로파일 값", + "Active combo bolus": "활성 콤보 bolus", + "Active combo bolus start": "활성 콤보 bolus 시작", + "Active combo bolus duration": "활성 콤보 bolus 기간", + "Active combo bolus remaining": "남아 있는 활성 콤보 bolus", + "BG Delta": "혈당 차이", + "Elapsed Time": "경과 시간", + "Absolute Delta": "절대적인 차이", + "Interpolated": "삽입됨", + "BWP": "BWP", + "Urgent": "긴급", + "Warning": "경고", + "Info": "정보", + "Lowest": "가장 낮은", + "Snoozing high alarm since there is enough IOB": "충분한 IOB가 남아 있기 때문에 고혈당 알람을 스누즈", + "Check BG, time to bolus?": "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": "낮은 혈당 목표에 도달하기 위해 필요한 인슐린양보다 %1U의 인슐린 양이 초과 되었고 탄수화물 양이 초과되지 않았습니다.", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "낮은 혈당 목표에 도달하기 위해 필요한 인슐린양보다 %1U의 인슐린 양이 초과 되었습니다. 탄수화물로 IOB를 커버하세요.", + "%1U reduction needed in active insulin to reach low target, too much basal?": "낮은 혈당 목표에 도달하기 위해 활성 인슐린 양을 %1U 줄일 필요가 있습니다. basal양이 너무 많습니까?", + "basal adjustment out of range, give carbs?": "적정 basal 양의 범위를 초과했습니다. 탄수화물 보충 하시겠습니까?", + "basal adjustment out of range, give bolus?": "적정 basal 양의 범위를 초과했습니다. bolus를 추가하시겠습니까?", + "above high": "고혈당 초과", + "below low": "저혈당 미만", + "Projected BG %1 target": "목표된 혈당 %1", + "aiming at": "목표", + "Bolus %1 units": "Bolus %1 단위", + "or adjust basal": "또는 조절 basal", + "Check BG using glucometer before correcting!": "수정하기 전에 혈당체크기를 사용하여 혈당을 체크하세요!", + "Basal reduction to account %1 units:": "%1 단위로 계산하기 위해 Basal 감소", + "30m temp basal": "30분 임시 basal", + "1h temp basal": "1시간 임시 basal", + "Cannula change overdue!": "주입세트(cannula) 기한이 지났습니다. 변경하세요!", + "Time to change cannula": "주입세트(cannula)를 변경할 시간", + "Change cannula soon": "주입세트(cannula)를 곧 변경하세요.", + "Cannula age %1 hours": "주입세트(cannula) %1시간 사용", + "Inserted": "삽입된", + "CAGE": "주입세트사용기간", + "COB": "COB", + "Last Carbs": "마지막 탄수화물", + "IAGE": "인슐린사용기간", + "Insulin reservoir change overdue!": "레저보(펌프 주사기)의 사용기한이 지났습니다. 변경하세요!", + "Time to change insulin reservoir": "레저보(펌프 주사기)를 변경할 시간", + "Change insulin reservoir soon": "레저보(펌프 주사기)안의 인슐린을 곧 변경하세요.", + "Insulin reservoir age %1 hours": "레저보(펌프 주사기) %1시간 사용", + "Changed": "변경됨", + "IOB": "IOB", + "Careportal IOB": "케어포털 IOB", + "Last Bolus": "마지막 Bolus", + "Basal IOB": "Basal IOB", + "Source": "출처", + "Stale data, check rig?": "오래된 데이터입니다. 확인해 보시겠습니까?", + "Last received:": "마지막 수신", + "%1m ago": "%1분 전", + "%1h ago": "%1시간 전", + "%1d ago": "%1일 전", + "RETRO": "RETRO", + "SAGE": "센서사용기간", + "Sensor change/restart overdue!": "센서 사용기한이 지났습니다. 센서를 교체/재시작 하세요!", + "Time to change/restart sensor": "센서 교체/재시작 시간", + "Change/restart sensor soon": "센서를 곧 교체/재시작 하세요", + "Sensor age %1 days %2 hours": "센서사용기간 %1일 %2시간", + "Sensor Insert": "센서삽입", + "Sensor Start": "센서시작", + "days": "일", + "Insulin distribution": "인슐린주입", + "To see this report, press SHOW while in this view": "이 보고서를 보려면 \"확인\"을 누르세요", + "AR2 Forecast": "AR2 예측", + "OpenAPS Forecasts": "OpenAPS 예측", + "Temporary Target": "임시목표", + "Temporary Target Cancel": "임시목표취소", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "프로파일", + "Time in fluctuation": "변동시간", + "Time in rapid fluctuation": "빠른변동시간", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "이것은 대충 예측한 것이기 때문에 부정확할 수 있고 실제 혈당으로 대체되지 않습니다. 사용된 공식:", + "Filter by hours": "시간으로 정렬", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "변동시간과 빠른 변동시간은 조사된 기간 동안 %의 시간으로 측정되었습니다.혈당은 비교적 빠르게 변화되었습니다. 낮을수록 좋습니다.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "전체 일일 변동 평균은 조사된 기간동안 전체 혈당 절대값의 합을 전체 일수로 나눈 값입니다. 낮을수록 좋습니다.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "시간당 변동 평균은 조사된 기간 동안 전체 혈당 절대값의 합을 기간의 시간으로 나눈 값입니다.낮을수록 좋습니다.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", + "Mean Total Daily Change": "전체 일일 변동 평균", + "Mean Hourly Change": "시간당 변동 평균", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Fat [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energy [kJ]", + "Clock Views:": "시계 보기", + "Clock": "시계모드", + "Color": "색상모드", + "Simple": "간편 모드", + "TDD average": "TDD average", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Carbs average", + "Eating Soon": "Eating Soon", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "change", + "Speech": "Speech", + "Target Top": "Target Top", + "Target Bottom": "Target Bottom", + "Canceled": "Canceled", + "Meter BG": "Meter BG", + "predicted": "predicted", + "future": "future", + "ago": "ago", + "Last data received": "Last data received", + "Clock View": "Clock View", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/nb_NO.json b/translations/nb_NO.json new file mode 100644 index 00000000000..38a46a41e12 --- /dev/null +++ b/translations/nb_NO.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Lytter på port", + "Mo": "Man", + "Tu": "Tir", + "We": "Ons", + "Th": "Tor", + "Fr": "Fre", + "Sa": "Lør", + "Su": "Søn", + "Monday": "Mandag", + "Tuesday": "Tirsdag", + "Wednesday": "Onsdag", + "Thursday": "Torsdag", + "Friday": "Fredag", + "Saturday": "Lørdag", + "Sunday": "Søndag", + "Category": "Kategori", + "Subcategory": "Underkategori", + "Name": "Navn", + "Today": "I dag", + "Last 2 days": "Siste 2 dager", + "Last 3 days": "Siste 3 dager", + "Last week": "Siste uke", + "Last 2 weeks": "Siste 2 uker", + "Last month": "Siste måned", + "Last 3 months": "Siste 3 måneder", + "between": "mellom", + "around": "rundt", + "and": "og", + "From": "Fra", + "To": "Til", + "Notes": "Notater", + "Food": "Mat", + "Insulin": "Insulin", + "Carbs": "Karbohydrater", + "Notes contain": "Notater inneholder", + "Target BG range bottom": "Nedre grense for blodsukkerverdier", + "top": "Topp", + "Show": "Vis", + "Display": "Vis", + "Loading": "Laster", + "Loading profile": "Leser profil", + "Loading status": "Leser status", + "Loading food database": "Leser matdatabase", + "not displayed": "Vises ikke", + "Loading CGM data of": "Leser CGM-data for", + "Loading treatments data of": "Leser behandlingsdata for", + "Processing data of": "Behandler data for", + "Portion": "Porsjon", + "Size": "Størrelse", + "(none)": "(ingen)", + "None": "Ingen", + "": "", + "Result is empty": "Tomt resultat", + "Day to day": "Dag til dag", + "Week to week": "Uke for uke", + "Daily Stats": "Daglig statistikk", + "Percentile Chart": "Persentildiagram", + "Distribution": "Distribusjon", + "Hourly stats": "Timestatistikk", + "netIOB stats": "netIOB statistikk", + "temp basals must be rendered to display this report": "midlertidig basal må være synlig for å vise denne rapporten", + "Weekly success": "Ukeresultat", + "No data available": "Mangler data", + "Low": "Lav", + "In Range": "Innenfor intervallet", + "Period": "Periode", + "High": "Høy", + "Average": "Gjennomsnitt", + "Low Quartile": "Nedre kvartil", + "Upper Quartile": "Øvre kvartil", + "Quartile": "Kvartil", + "Date": "Dato", + "Normal": "Normal", + "Median": "Median", + "Readings": "Avlesning", + "StDev": "Standardavvik", + "Daily stats report": "Daglig statistikkrapport", + "Glucose Percentile report": "Persentildiagram for blodsukker", + "Glucose distribution": "Glukosefordeling", + "days total": "dager", + "Total per day": "Totalt per dag", + "Overall": "Totalt", + "Range": "Intervall", + "% of Readings": "% av avlesningene", + "# of Readings": "Antall avlesninger", + "Mean": "Gjennomsnitt", + "Standard Deviation": "Standardavvik", + "Max": "Maks", + "Min": "Min", + "A1c estimation*": "Beregnet HbA1c", + "Weekly Success": "Ukeresultat", + "There is not sufficient data to run this report. Select more days.": "Der er ikke nok data til å lage rapporten. Velg flere dager.", + "Using stored API secret hash": "Bruker lagret API-nøkkel", + "No API secret hash stored yet. You need to enter API secret.": "Mangler API-nøkkel. Du må skrive inn API-hemmelighet.", + "Database loaded": "Database lest", + "Error: Database failed to load": "Feil: Database kunne ikke leses", + "Error": "Feil", + "Create new record": "Opprette ny registrering", + "Save record": "Lagre registrering", + "Portions": "Porsjoner", + "Unit": "Enhet", + "GI": "GI", + "Edit record": "Editere registrering", + "Delete record": "Slette registrering", + "Move to the top": "Gå til toppen", + "Hidden": "Skjult", + "Hide after use": "Skjul etter bruk", + "Your API secret must be at least 12 characters long": "Din API-nøkkel må være minst 12 tegn lang", + "Bad API secret": "Ugyldig API-nøkkel", + "API secret hash stored": "API-nøkkel lagret", + "Status": "Status", + "Not loaded": "Ikke lest", + "Food Editor": "Mat-editor", + "Your database": "Din database", + "Filter": "Filter", + "Save": "Lagre", + "Clear": "Tøm", + "Record": "Registrering", + "Quick picks": "Hurtigvalg", + "Show hidden": "Vis skjulte", + "Your API secret or token": "Din API-nøkkel eller passord", + "Remember this device. (Do not enable this on public computers.)": "Husk denne enheten (Ikke velg dette på offentlige eller delte datamaskiner)", + "Treatments": "Behandlinger", + "Time": "Tid", + "Event Type": "Hendelsestype", + "Blood Glucose": "Blodsukker", + "Entered By": "Lagt inn av", + "Delete this treatment?": "Slett denne hendelsen?", + "Carbs Given": "Karbohydrat", + "Inzulin Given": "Insulin", + "Event Time": "Tidspunkt", + "Please verify that the data entered is correct": "Vennligst verifiser at inntastet data er korrekt", + "BG": "BS", + "Use BG correction in calculation": "Bruk blodsukkerkorrigering i beregningen", + "BG from CGM (autoupdated)": "BS fra CGM (automatisk)", + "BG from meter": "BS fra blodsukkerapparat", + "Manual BG": "Manuelt BS", + "Quickpick": "Hurtigvalg", + "or": "eller", + "Add from database": "Legg til fra database", + "Use carbs correction in calculation": "Bruk karbohydratkorrigering i beregningen", + "Use COB correction in calculation": "Bruk aktive karbohydrater i beregningen", + "Use IOB in calculation": "Bruk aktivt insulin i beregningen", + "Other correction": "Annen korrigering", + "Rounding": "Avrunding", + "Enter insulin correction in treatment": "Angi insulinkorrigering", + "Insulin needed": "Insulin nødvendig", + "Carbs needed": "Karbohydrater nødvendig", + "Carbs needed if Insulin total is negative value": "Karbohydrater er nødvendige når total insulinmengde er negativ", + "Basal rate": "Basal", + "60 minutes earlier": "60 min tidligere", + "45 minutes earlier": "45 min tidligere", + "30 minutes earlier": "30 min tidigere", + "20 minutes earlier": "20 min tidligere", + "15 minutes earlier": "15 min tidligere", + "Time in minutes": "Tid i minutter", + "15 minutes later": "15 min senere", + "20 minutes later": "20 min senere", + "30 minutes later": "30 min senere", + "45 minutes later": "45 min senere", + "60 minutes later": "60 min senere", + "Additional Notes, Comments": "Notater", + "RETRO MODE": "Retro-modus", + "Now": "Nå", + "Other": "Annet", + "Submit Form": "Lagre", + "Profile Editor": "Profileditor", + "Reports": "Rapporter", + "Add food from your database": "Legg til mat fra din database", + "Reload database": "Last inn databasen på nytt", + "Add": "Legg til", + "Unauthorized": "Uautorisert", + "Entering record failed": "Lagring feilet", + "Device authenticated": "Enhet godkjent", + "Device not authenticated": "Enhet ikke godkjent", + "Authentication status": "Autentiseringsstatus", + "Authenticate": "Autentiser", + "Remove": "Slett", + "Your device is not authenticated yet": "Din enhet er ikke godkjent enda", + "Sensor": "Sensor", + "Finger": "Finger", + "Manual": "Manuell", + "Scale": "Skala", + "Linear": "Lineær", + "Logarithmic": "Logaritmisk", + "Logarithmic (Dynamic)": "Logaritmisk (Dynamisk)", + "Insulin-on-Board": "AI", + "Carbs-on-Board": "AK", + "Bolus Wizard Preview": "Boluskalkulator (BWP)", + "Value Loaded": "Verdi lastet", + "Cannula Age": "Nålalder", + "Basal Profile": "Basalprofil", + "Silence for 30 minutes": "Stille i 30 min", + "Silence for 60 minutes": "Stille i 60 min", + "Silence for 90 minutes": "Stille i 90 min", + "Silence for 120 minutes": "Stile i 120 min", + "Settings": "Innstillinger", + "Units": "Enheter", + "Date format": "Datoformat", + "12 hours": "12 timer", + "24 hours": "24 timer", + "Log a Treatment": "Logg en hendelse", + "BG Check": "Blodsukkerkontroll", + "Meal Bolus": "Måltidsbolus", + "Snack Bolus": "Mellommåltidsbolus", + "Correction Bolus": "Korreksjonsbolus", + "Carb Correction": "Karbohydratkorrigering", + "Note": "Notat", + "Question": "Spørsmål", + "Exercise": "Trening", + "Pump Site Change": "Pumpebytte", + "CGM Sensor Start": "Sensorstart", + "CGM Sensor Stop": "CGM Sensor Stopp", + "CGM Sensor Insert": "Sensorbytte", + "Dexcom Sensor Start": "Dexcom sensor start", + "Dexcom Sensor Change": "Dexcom sensor bytte", + "Insulin Cartridge Change": "Skifte insulin beholder", + "D.A.D. Alert": "Diabeteshundalarm", + "Glucose Reading": "Blodsukkermåling", + "Measurement Method": "Målemetode", + "Meter": "Måleapparat", + "Insulin Given": "Insulin", + "Amount in grams": "Antall gram", + "Amount in units": "Antall enheter", + "View all treatments": "Vis behandlinger", + "Enable Alarms": "Aktiver alarmer", + "Pump Battery Change": "Bytte av pumpebatteri", + "Pump Battery Low Alarm": "Pumpebatteri Lav alarm", + "Pump Battery change overdue!": "Pumpebatteriet må byttes!", + "When enabled an alarm may sound.": "Når aktivert er alarmer aktive", + "Urgent High Alarm": "Kritisk høy alarm", + "High Alarm": "Høy alarm", + "Low Alarm": "Lav alarm", + "Urgent Low Alarm": "Kritisk lav alarm", + "Stale Data: Warn": "Advarsel: Gamle data", + "Stale Data: Urgent": "Advarsel: Veldig gamle data", + "mins": "min", + "Night Mode": "Nattmodus", + "When enabled the page will be dimmed from 10pm - 6am.": "Når aktivert vil denne siden nedtones fra 22:00-06:00", + "Enable": "Aktiver", + "Show Raw BG Data": "Vis rådata", + "Never": "Aldri", + "Always": "Alltid", + "When there is noise": "Når det er støy", + "When enabled small white dots will be displayed for raw BG data": "Ved aktivering vil små hvite prikker bli vist for ubehandlede BG-data", + "Custom Title": "Egen tittel", + "Theme": "Tema", + "Default": "Standard", + "Colors": "Farger", + "Colorblind-friendly colors": "Fargeblindvennlige farger", + "Reset, and use defaults": "Gjenopprett standardinnstillinger", + "Calibrations": "Kalibreringer", + "Alarm Test / Smartphone Enable": "Alarmtest / Smartphone aktivering", + "Bolus Wizard": "Boluskalkulator", + "in the future": "fremtiden", + "time ago": "tid siden", + "hr ago": "t siden", + "hrs ago": "t siden", + "min ago": "min siden", + "mins ago": "min siden", + "day ago": "dag siden", + "days ago": "dager siden", + "long ago": "lenge siden", + "Clean": "Rent", + "Light": "Lite", + "Medium": "Middels", + "Heavy": "Mye", + "Treatment type": "Behandlingstype", + "Raw BG": "RAW-BS", + "Device": "Enhet", + "Noise": "Støy", + "Calibration": "Kalibrering", + "Show Plugins": "Vis plugins", + "About": "Om", + "Value in": "Verdi i", + "Carb Time": "Karbohydrattid", + "Language": "Språk", + "Add new": "Legg til ny", + "g": "g", + "ml": "mL", + "pcs": "stk", + "Drag&drop food here": "Dra og slipp mat her", + "Care Portal": "Omsorgsportal", + "Medium/Unknown": "Medium/ukjent", + "IN THE FUTURE": "I fremtiden", + "Update": "Oppdater", + "Order": "Sortering", + "oldest on top": "Eldste først", + "newest on top": "Nyeste først", + "All sensor events": "Alle sensorhendelser", + "Remove future items from mongo database": "Fjern fremtidige elementer fra mongo database", + "Find and remove treatments in the future": "Finn og fjern fremtidige behandlinger", + "This task find and remove treatments in the future.": "Finn og fjern fremtidige behandlinger", + "Remove treatments in the future": "Fjern fremtidige behandlinger", + "Find and remove entries in the future": "Finn og fjern fremtidige hendelser", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Finn og fjern fremtidige cgm data som er lastet opp med feil dato/tid", + "Remove entries in the future": "Fjern fremtidige hendelser", + "Loading database ...": "Leser database ...", + "Database contains %1 future records": "Databasen inneholder %1 fremtidige hendelser", + "Remove %1 selected records?": "Fjern %1 valgte elementer?", + "Error loading database": "Feil under lasting av database", + "Record %1 removed ...": "Element %1 fjernet", + "Error removing record %1": "Feil under fjerning av element %1", + "Deleting records ...": "Fjerner elementer...", + "%1 records deleted": "%1 registreringer slettet", + "Clean Mongo status database": "Slett Mongo status database", + "Delete all documents from devicestatus collection": "Fjern alle dokumenter fra device status tabell", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra device status tabellen. Nyttig når status for opplaster batteri ikke blir opppdatert", + "Delete all documents": "Fjern alle dokumenter", + "Delete all documents from devicestatus collection?": "Fjern alle dokumenter fra device status tabellen?", + "Database contains %1 records": "Databasen inneholder %1 elementer", + "All records removed ...": "Alle elementer fjernet ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Administrasjonsverktøy", + "Nightscout reporting": "Rapporter", + "Cancel": "Avbryt", + "Edit treatment": "Editer behandling", + "Duration": "Varighet", + "Duration in minutes": "Varighet i minutter", + "Temp Basal": "Midlertidig basal", + "Temp Basal Start": "Midlertidig basal start", + "Temp Basal End": "Midlertidig basal stopp", + "Percent": "Prosent", + "Basal change in %": "Basal-endring i %", + "Basal value": "Basalverdi", + "Absolute basal value": "Absolutt basalverdi", + "Announcement": "Kunngjøring", + "Loading temp basal data": "Laster verdier for midlertidig basal", + "Save current record before changing to new?": "Lagre før bytte til ny?", + "Profile Switch": "Bytt profil", + "Profile": "Profil", + "General profile settings": "Profilinstillinger", + "Title": "Tittel", + "Database records": "Databaseverdier", + "Add new record": "Legg til ny rad", + "Remove this record": "Fjern denne raden", + "Clone this record to new": "Kopier til ny rad", + "Record valid from": "Oppføring gyldig fra", + "Stored profiles": "Lagrede profiler", + "Timezone": "Tidssone", + "Duration of Insulin Activity (DIA)": "Insulin-varighet (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.": "Representerer typisk insulinvarighet. Varierer per pasient og per insulintype. Vanligvis 3-4 timer for de fleste typer insulin og de fleste pasientene. Noen ganger også kalt insulin-levetid eller Duration of Insulin Activity, DIA.", + "Insulin to carb ratio (I:C)": "IKH forhold", + "Hours:": "Timer:", + "hours": "timer", + "g/hour": "g/time", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g karbohydrater per enhet insulin. Beskriver hvor mange gram karbohydrater som hånderes av en enhet insulin.", + "Insulin Sensitivity Factor (ISF)": "Insulinfølsomhetsfaktor (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dl eller mmol/L per enhet insulin. Beskriver hvor mye blodsukkeret senkes per enhet insulin.", + "Carbs activity / absorption rate": "Karbohydrattid", + "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).": "gram per tidsenhet. Representerer både endringen i COB per tidsenhet, såvel som mengden av karbohydrater som blir tatt opp i løpet av den tiden. Carb absorpsjon / virkningskurver er mindre forstått enn insulinaktivitet, men kan tilnærmes ved hjelp av en forsinkelse fulgt av en konstant hastighet av absorpsjon ( g / time ) .", + "Basal rates [unit/hour]": "Basal [enhet/time]", + "Target BG range [mg/dL,mmol/L]": "Ønsket blodsukkerintervall [mg/dl, mmmol/L]", + "Start of record validity": "Starttidspunkt for gyldighet", + "Icicle": "Istapp", + "Render Basal": "Basalgraf", + "Profile used": "Brukt profil", + "Calculation is in target range.": "Innenfor målområde", + "Loading profile records ...": "Leser profiler", + "Values loaded.": "Verdier lastet", + "Default values used.": "Standardverdier brukt", + "Error. Default values used.": "Feil. Standardverdier brukt.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Tidsintervall for målområde lav og høy stemmer ikke. Standardverdier er brukt.", + "Valid from:": "Gyldig fra:", + "Save current record before switching to new?": "Lagre før bytte til ny?", + "Add new interval before": "Legg til nytt intervall før", + "Delete interval": "Slett intervall", + "I:C": "IK", + "ISF": "ISF", + "Combo Bolus": "Kombinasjonsbolus", + "Difference": "Forskjell", + "New time": "Ny tid", + "Edit Mode": "Editeringsmodus", + "When enabled icon to start edit mode is visible": "Ikon vises når editeringsmodus er aktivert", + "Operation": "Operasjon", + "Move": "Flytt", + "Delete": "Slett", + "Move insulin": "Flytt insulin", + "Move carbs": "Flytt karbohydrater", + "Remove insulin": "Fjern insulin", + "Remove carbs": "Fjern karbohydrater", + "Change treatment time to %1 ?": "Endre behandlingstid til %1 ?", + "Change carbs time to %1 ?": "Endre karbohydrattid til %1 ?", + "Change insulin time to %1 ?": "Endre insulintid til %1 ?", + "Remove treatment ?": "Fjern behandling ?", + "Remove insulin from treatment ?": "Fjern insulin fra behandling ?", + "Remove carbs from treatment ?": "Fjern karbohydrater fra behandling ?", + "Rendering": "Tegner grafikk", + "Loading OpenAPS data of": "Laster OpenAPS data for", + "Loading profile switch data": "Laster nye profildata", + "Redirecting you to the Profile Editor to create a new profile.": "Feil profilinstilling.\nIngen profil valgt for valgt tid.\nVideresender for å lage ny profil.", + "Pump": "Pumpe", + "Sensor Age": "Sensoralder (SAGE)", + "Insulin Age": "Insulinalder (IAGE)", + "Temporary target": "Mildertidig mål", + "Reason": "Årsak", + "Eating soon": "Snart tid for mat", + "Top": "Øverst", + "Bottom": "Nederst", + "Activity": "Aktivitet", + "Targets": "Mål", + "Bolus insulin:": "Bolusinsulin:", + "Base basal insulin:": "Basalinsulin:", + "Positive temp basal insulin:": "Positiv midlertidig basalinsulin:", + "Negative temp basal insulin:": "Negativ midlertidig basalinsulin:", + "Total basal insulin:": "Total daglig basalinsulin:", + "Total daily insulin:": "Total daglig insulin", + "Unable to %1 Role": "Kan ikke %1 rolle", + "Unable to delete Role": "Kan ikke ta bort rolle", + "Database contains %1 roles": "Databasen inneholder %1 roller", + "Edit Role": "Editer rolle", + "admin, school, family, etc": "Administrator, skole, familie osv", + "Permissions": "Rettigheter", + "Are you sure you want to delete: ": "Er du sikker på at du vil slette:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Hver enkelt rolle vil ha en eller flere rettigheter. *-rettigheten er wildcard. Rettigheter settes hierarkisk med : som separator.", + "Add new Role": "Legg til ny rolle", + "Roles - Groups of People, Devices, etc": "Roller - Grupper av brukere, enheter osv", + "Edit this role": "Editer denne rollen", + "Admin authorized": "Administratorgodkjent", + "Subjects - People, Devices, etc": "Ressurser - Brukere, enheter osv", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Hver enkelt ressurs får en unik sikkerhetsnøkkel og en eller flere roller. Klikk på sikkerhetsnøkkelen for å åpne valgte ressurs, den hemmelige lenken kan så deles.", + "Add new Subject": "Legg til ny ressurs", + "Unable to %1 Subject": "Kan ikke %1 ressurs", + "Unable to delete Subject": "Kan ikke slette ressurs", + "Database contains %1 subjects": "Databasen inneholder %1 ressurser", + "Edit Subject": "Editer ressurs", + "person, device, etc": "person, enhet osv", + "role1, role2": "rolle1, rolle2", + "Edit this subject": "Editer ressurs", + "Delete this subject": "Slett ressurs", + "Roles": "Roller", + "Access Token": "Tilgangsnøkkel", + "hour ago": "time siden", + "hours ago": "timer siden", + "Silence for %1 minutes": "Stille i %1 minutter", + "Check BG": "Sjekk blodsukker", + "BASAL": "BASAL", + "Current basal": "Gjeldende basal", + "Sensitivity": "Insulinsensitivitet (ISF)", + "Current Carb Ratio": "Gjeldende karbohydratforhold", + "Basal timezone": "Basal tidssone", + "Active profile": "Aktiv profil", + "Active temp basal": "Aktiv midlertidig basal", + "Active temp basal start": "Aktiv midlertidig basal start", + "Active temp basal duration": "Aktiv midlertidig basal varighet", + "Active temp basal remaining": "Gjenstående tid for midlertidig basal", + "Basal profile value": "Basalprofil verdi", + "Active combo bolus": "Kombinasjonsbolus", + "Active combo bolus start": "Kombinasjonsbolus start", + "Active combo bolus duration": "Kombinasjonsbolus varighet", + "Active combo bolus remaining": "Gjenstående kombinasjonsbolus", + "BG Delta": "BS deltaverdi", + "Elapsed Time": "Forløpt tid", + "Absolute Delta": "Absolutt forskjell", + "Interpolated": "Interpolert", + "BWP": "Boluskalkulator", + "Urgent": "Akutt", + "Warning": "Advarsel", + "Info": "Informasjon", + "Lowest": "Laveste", + "Snoozing high alarm since there is enough IOB": "Utsetter høy-alarm siden det er nok aktivt insulin", + "Check BG, time to bolus?": "Sjekk blodsukker, på tide med bolus?", + "Notice": "NB", + "required info missing": "Nødvendig informasjon mangler", + "Insulin on Board": "Aktivt insulin (IOB)", + "Current target": "Gjeldende mål", + "Expected effect": "Forventet effekt", + "Expected outcome": "Forventet resultat", + "Carb Equivalent": "Karbohydratekvivalent", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Insulin tilsvarende %1U mer enn det trengs for å nå lavt mål, karbohydrater ikke medregnet", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Insulin tilsvarende %1U mer enn det trengs for å nå lavt mål, PASS PÅ AT AKTIVT INSULIN ER DEKKET OPP MED KARBOHYDRATER", + "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U reduksjon trengs i aktivt insulin for å nå lavt mål, for høy basal?", + "basal adjustment out of range, give carbs?": "basaljustering utenfor tillatt område, gi karbohydrater?", + "basal adjustment out of range, give bolus?": "basaljustering utenfor tillatt område, gi bolus?", + "above high": "over høy grense", + "below low": "under lav grense", + "Projected BG %1 target": "Predikert BS %1 mål", + "aiming at": "sikter på", + "Bolus %1 units": "Bolus %1 enheter", + "or adjust basal": "eller justere basal", + "Check BG using glucometer before correcting!": "Sjekk blodsukker før korrigering!", + "Basal reduction to account %1 units:": "Basalredusering for å nå %1 enheter", + "30m temp basal": "30 minutters midlertidig basal", + "1h temp basal": "60 minutters midlertidig basal", + "Cannula change overdue!": "Byttetid for infusjonssett overskredet", + "Time to change cannula": "På tide å bytte infusjonssett", + "Change cannula soon": "Bytt infusjonssett snart", + "Cannula age %1 hours": "infusjonssett alder %1 timer", + "Inserted": "Satt inn", + "CAGE": "Nålalder", + "COB": "Aktive karbohydrater", + "Last Carbs": "Siste karbohydrater", + "IAGE": "Insulinalder", + "Insulin reservoir change overdue!": "Insulinbyttetid overskrevet", + "Time to change insulin reservoir": "På tide å bytte insulinreservoar", + "Change insulin reservoir soon": "Bytt insulinreservoar snart", + "Insulin reservoir age %1 hours": "Insulinreservoaralder %1 timer", + "Changed": "Byttet", + "IOB": "Aktivt insulin", + "Careportal IOB": "Aktivt insulin i Careportal", + "Last Bolus": "Siste Bolus", + "Basal IOB": "Basal Aktivt Insulin", + "Source": "Kilde", + "Stale data, check rig?": "Gamle data, sjekk rigg?", + "Last received:": "Sist mottatt:", + "%1m ago": "%1m siden", + "%1h ago": "%1t siden", + "%1d ago": "%1d siden", + "RETRO": "GAMMELT", + "SAGE": "Sensoralder", + "Sensor change/restart overdue!": "Sensor bytte/omstart overskredet!", + "Time to change/restart sensor": "På tide å bytte/restarte sensoren", + "Change/restart sensor soon": "Bytt/restart sensoren snart", + "Sensor age %1 days %2 hours": "Sensoralder %1 dager %2 timer", + "Sensor Insert": "Sensor satt inn", + "Sensor Start": "Sensorstart", + "days": "dager", + "Insulin distribution": "Insulinfordeling", + "To see this report, press SHOW while in this view": "Klikk på \"VIS\" for å se denne rapporten", + "AR2 Forecast": "AR2-prediksjon", + "OpenAPS Forecasts": "OpenAPS-prediksjon", + "Temporary Target": "Midlertidig mål", + "Temporary Target Cancel": "Avslutt midlertidig mål", + "OpenAPS Offline": "OpenAPS offline", + "Profiles": "Profiler", + "Time in fluctuation": "Tid i fluktuasjon", + "Time in rapid fluctuation": "Tid i hurtig fluktuasjon", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Dette er kun et grovt estimat som kan være misvisende. Det erstatter ikke en blodprøve. Formelen er hentet fra:", + "Filter by hours": "Filtrer per time", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tid i fluktuasjon og tid i hurtig fluktuasjon måler % av tiden i den aktuelle periodn der blodsukkeret har endret seg relativt raskt. Lave verdier er best.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Gjennomsnitt total daglig endring er summen av absolutverdier av alle glukoseendringer i den aktuelle perioden, divideret med antall dager. Lave verdier er best.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Gjennomsnitt endring per time er summen av absoluttverdier av alle glukoseendringer i den aktuelle perioden divideret med antall timer. Lave verdier er best.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS er beregnet ved å ta kvadratet av avstanden utenfor målområdet for alle blodsukkerverdier i den aktuelle perioden, summere dem, dele på antallet, og ta kvadratroten av resultatet. Dette målet er lignende som prodentvis tid i målområdet, men vekter målinger som ligger langt utenfor målområdet høyere. Lave verdier er best.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">her.", + "Mean Total Daily Change": "Gjennomsnitt total daglig endring", + "Mean Hourly Change": "Gjennomsnitt endring per time", + "FortyFiveDown": "svakt fallende", + "FortyFiveUp": "svakt stigende", + "Flat": "stabilt", + "SingleUp": "stigende", + "SingleDown": "fallende", + "DoubleDown": "hurtig fallende", + "DoubleUp": "hurtig stigende", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Fett [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energi [kJ]", + "Clock Views:": "Klokkevisning:", + "Clock": "Klokke", + "Color": "Farge", + "Simple": "Enkel", + "TDD average": "Gjennomsnitt TDD", + "Bolus average": "Gjennomsnitt bolus", + "Basal average": "Gjennomsnitt basal", + "Base basal average:": "Programmert gj.snitt basal", + "Carbs average": "Gjennomsnitt totale karbohydrater", + "Eating Soon": "Spiser snart", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "change", + "Speech": "Tale", + "Target Top": "Høyt mål", + "Target Bottom": "Lavt mål", + "Canceled": "Canceled", + "Meter BG": "Blodsukkermåler BS", + "predicted": "predikert", + "future": "Fremtid", + "ago": "Siden", + "Last data received": "Siste data mottatt", + "Clock View": "Klokkevisning", + "Protein": "Protein", + "Fat": "Fett", + "Protein average": "Gjennomsnitt protein", + "Fat average": "Gjennomsnitt fett", + "Total carbs": "Totale karbohydrater", + "Total protein": "Totalt protein", + "Total fat": "Totalt fett", + "Database Size": "Databasestørrelse", + "Database Size near its limits!": "Databasestørrelsen nærmer seg grensene", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Databasestørrelsen er %1 MiB av %2 MiB. Vennligst ta backup og rydd i databasen!", + "Database file size": "Database filstørrelse", + "%1 MiB of %2 MiB (%3%)": "%1 MiB av %2 MiB (%3%)", + "Data size": "Datastørrelse", + "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", + "virtAsstTitleDatabaseSize": "Database file size", + "Carbs/Food/Time": "Karbo/Mat/Abs.tid" +} \ No newline at end of file diff --git a/translations/nl_NL.json b/translations/nl_NL.json new file mode 100644 index 00000000000..452d3cd6259 --- /dev/null +++ b/translations/nl_NL.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Luistert op poort", + "Mo": "Ma", + "Tu": "Di", + "We": "Wo", + "Th": "Do", + "Fr": "Vr", + "Sa": "Za", + "Su": "Zo", + "Monday": "Maandag", + "Tuesday": "Dinsdag", + "Wednesday": "Woensdag", + "Thursday": "Donderdag", + "Friday": "Vrijdag", + "Saturday": "Zaterdag", + "Sunday": "Zondag", + "Category": "Categorie", + "Subcategory": "Subcategorie", + "Name": "Naam", + "Today": "Vandaag", + "Last 2 days": "Afgelopen 2 dagen", + "Last 3 days": "Afgelopen 3 dagen", + "Last week": "Afgelopen week", + "Last 2 weeks": "Afgelopen 2 weken", + "Last month": "Afgelopen maand", + "Last 3 months": "Afgelopen 3 maanden", + "between": "tussen", + "around": "rond", + "and": "en", + "From": "Van", + "To": "Tot", + "Notes": "Notities", + "Food": "Voeding", + "Insulin": "Insuline", + "Carbs": "Koolhydraten", + "Notes contain": "Inhoud aantekening", + "Target BG range bottom": "Ondergrens doelbereik glucose", + "top": "Top", + "Show": "Laat zien", + "Display": "Weergeven", + "Loading": "Laden", + "Loading profile": "Profiel laden", + "Loading status": "Laadstatus", + "Loading food database": "Voeding database laden", + "not displayed": "Niet weergegeven", + "Loading CGM data of": "CGM data laden van", + "Loading treatments data of": "Behandel gegevens laden van", + "Processing data of": "Gegevens verwerken van", + "Portion": "Portie", + "Size": "Grootte", + "(none)": "(geen)", + "None": "geen", + "": "", + "Result is empty": "Geen resultaat", + "Day to day": "Dag tot Dag", + "Week to week": "Week to week", + "Daily Stats": "Dagelijkse statistiek", + "Percentile Chart": "Procentuele grafiek", + "Distribution": "Verdeling", + "Hourly stats": "Statistieken per uur", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "tijdelijk basaal moet zichtbaar zijn voor dit rapport", + "Weekly success": "Wekelijkse successen", + "No data available": "Geen gegevens beschikbaar", + "Low": "Laag", + "In Range": "Binnen bereik", + "Period": "Periode", + "High": "Hoog", + "Average": "Gemiddeld", + "Low Quartile": "Eerste kwartiel", + "Upper Quartile": "Derde kwartiel", + "Quartile": "Kwartiel", + "Date": "Datum", + "Normal": "Normaal", + "Median": "Mediaan", + "Readings": "Metingen", + "StDev": "Std. deviatie", + "Daily stats report": "Dagelijkse statistieken", + "Glucose Percentile report": "Glucose percentiel rapport", + "Glucose distribution": "Glucose verdeling", + "days total": "Totaal dagen", + "Total per day": "Totaal dagen", + "Overall": "Totaal", + "Range": "Bereik", + "% of Readings": "% metingen", + "# of Readings": "Aantal metingen", + "Mean": "Gemiddeld", + "Standard Deviation": "Standaard deviatie", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Geschatte HbA1C", + "Weekly Success": "Wekelijks succes", + "There is not sufficient data to run this report. Select more days.": "Er zijn niet genoeg gegevens voor dit rapport, selecteer meer dagen.", + "Using stored API secret hash": "Gebruik opgeslagen geheime API Hash", + "No API secret hash stored yet. You need to enter API secret.": "Er is nog geen geheime API Hash opgeslagen. U moet eerst een geheime API code invoeren.", + "Database loaded": "Database geladen", + "Error: Database failed to load": "FOUT: Database niet geladen", + "Error": "Error", + "Create new record": "Opslaan", + "Save record": "Sla op", + "Portions": "Porties", + "Unit": "Eenheid", + "GI": "Glycemische index ", + "Edit record": "Bewerk invoer", + "Delete record": "Verwijder invoer", + "Move to the top": "Ga naar boven", + "Hidden": "Verborgen", + "Hide after use": "Verberg na gebruik", + "Your API secret must be at least 12 characters long": "Uw API wachtwoord dient tenminste 12 karakters lang te zijn", + "Bad API secret": "Onjuist API wachtwoord", + "API secret hash stored": "API wachtwoord opgeslagen", + "Status": "Status", + "Not loaded": "Niet geladen", + "Food Editor": "Voeding beheer", + "Your database": "Uw database", + "Filter": "Filter", + "Save": "Opslaan", + "Clear": "Leeg maken", + "Record": "Toevoegen", + "Quick picks": "Snelkeuze", + "Show hidden": "Laat verborgen zien", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Behandelingen", + "Time": "Tijd", + "Event Type": "Soort", + "Blood Glucose": "Bloed glucose", + "Entered By": "Ingevoerd door", + "Delete this treatment?": "Verwijder", + "Carbs Given": "Aantal koolhydraten", + "Inzulin Given": "Insuline", + "Event Time": "Tijdstip", + "Please verify that the data entered is correct": "Controleer uw invoer", + "BG": "BG", + "Use BG correction in calculation": "Gebruik BG in berekeningen", + "BG from CGM (autoupdated)": "BG van CGM (automatische invoer)", + "BG from meter": "BG van meter", + "Manual BG": "Handmatige BG", + "Quickpick": "Snelkeuze", + "or": "of", + "Add from database": "Toevoegen uit database", + "Use carbs correction in calculation": "Gebruik KH correctie in berekening", + "Use COB correction in calculation": "Gebruik ingenomen KH in berekening", + "Use IOB in calculation": "Gebruik IOB in berekening", + "Other correction": "Andere correctie", + "Rounding": "Afgerond", + "Enter insulin correction in treatment": "Voer insuline correctie toe aan behandeling", + "Insulin needed": "Benodigde insuline", + "Carbs needed": "Benodigde koolhydraten", + "Carbs needed if Insulin total is negative value": "Benodigde KH als insuline een negatieve waarde geeft", + "Basal rate": "Basaal snelheid", + "60 minutes earlier": "60 minuten eerder", + "45 minutes earlier": "45 minuten eerder", + "30 minutes earlier": "30 minuten eerder", + "20 minutes earlier": "20 minuten eerder", + "15 minutes earlier": "15 minuten eerder", + "Time in minutes": "Tijd in minuten", + "15 minutes later": "15 minuten later", + "20 minutes later": "20 minuten later", + "30 minutes later": "30 minuten later", + "45 minutes later": "45 minuten later", + "60 minutes later": "60 minuten later", + "Additional Notes, Comments": "Extra aantekeningen", + "RETRO MODE": "Retro mode", + "Now": "Nu", + "Other": "Andere", + "Submit Form": "Formulier opslaan", + "Profile Editor": "Profiel beheer", + "Reports": "Rapporten", + "Add food from your database": "Voeg voeding toe uit uw database", + "Reload database": "Database opnieuw laden", + "Add": "Toevoegen", + "Unauthorized": "Ongeauthoriseerd", + "Entering record failed": "Toevoegen mislukt", + "Device authenticated": "Apparaat geauthenticeerd", + "Device not authenticated": "Apparaat niet geauthenticeerd", + "Authentication status": "Authenticatie status", + "Authenticate": "Authenticatie", + "Remove": "Verwijder", + "Your device is not authenticated yet": "Uw apparaat is nog niet geauthenticeerd", + "Sensor": "Sensor", + "Finger": "Vinger", + "Manual": "Handmatig", + "Scale": "Schaal", + "Linear": "Lineair", + "Logarithmic": "Logaritmisch", + "Logarithmic (Dynamic)": "Logaritmisch (Dynamisch)", + "Insulin-on-Board": "Actieve insuline (IOB)", + "Carbs-on-Board": "Actieve koolhydraten (COB)", + "Bolus Wizard Preview": "Bolus Wizard Preview (BWP)", + "Value Loaded": "Waarde geladen", + "Cannula Age": "Canule leeftijd (CAGE)", + "Basal Profile": "Basaal profiel", + "Silence for 30 minutes": "Sluimer 30 minuten", + "Silence for 60 minutes": "Sluimer 60 minuten", + "Silence for 90 minutes": "Sluimer 90 minuten", + "Silence for 120 minutes": "Sluimer 2 uur", + "Settings": "Instellingen", + "Units": "Eenheden", + "Date format": "Datum formaat", + "12 hours": "12 uur", + "24 hours": "24 uur", + "Log a Treatment": "Registreer een behandeling", + "BG Check": "Bloedglucose check", + "Meal Bolus": "Maaltijd bolus", + "Snack Bolus": "Snack bolus", + "Correction Bolus": "Correctie bolus", + "Carb Correction": "Koolhydraat correctie", + "Note": "Notitie", + "Question": "Vraag", + "Exercise": "Beweging / sport", + "Pump Site Change": "Nieuwe pomp infuus", + "CGM Sensor Start": "CGM Sensor start", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "CGM sensor wissel", + "Dexcom Sensor Start": "Dexcom sensor start", + "Dexcom Sensor Change": "Dexcom sensor wissel", + "Insulin Cartridge Change": "Insuline cartridge wissel", + "D.A.D. Alert": "Hulphond waarschuwing", + "Glucose Reading": "Glucose meting", + "Measurement Method": "Meetmethode", + "Meter": "Glucosemeter", + "Insulin Given": "Toegediende insuline", + "Amount in grams": "Hoeveelheid in gram", + "Amount in units": "Aantal in eenheden", + "View all treatments": "Bekijk alle behandelingen", + "Enable Alarms": "Alarmen aan!", + "Pump Battery Change": "Pompbatterij vervangen", + "Pump Battery Low Alarm": "Pompbatterij bijna leeg Alarm", + "Pump Battery change overdue!": "Pompbatterij moet vervangen worden!", + "When enabled an alarm may sound.": "Als ingeschakeld kan alarm klinken", + "Urgent High Alarm": "Urgent Alarm Hoge BG", + "High Alarm": "Alarm hoge BG", + "Low Alarm": "Alarm lage BG", + "Urgent Low Alarm": "Urgent Alarm lage BG", + "Stale Data: Warn": "Waarschuwing Oude gegevens na", + "Stale Data: Urgent": "Urgente Waarschuwing Oude gegevens na", + "mins": "minuten", + "Night Mode": "Nachtstand", + "When enabled the page will be dimmed from 10pm - 6am.": "Scherm dimmen tussen 22:00 en 06:00", + "Enable": "Activeren", + "Show Raw BG Data": "Laat ruwe data zien", + "Never": "Nooit", + "Always": "Altijd", + "When there is noise": "Bij ruis", + "When enabled small white dots will be displayed for raw BG data": "Indien geactiveerd is ruwe data zichtbaar als witte punten", + "Custom Title": "Eigen titel", + "Theme": "Thema", + "Default": "Standaard", + "Colors": "Kleuren", + "Colorblind-friendly colors": "Kleurenblind vriendelijke kleuren", + "Reset, and use defaults": "Herstel standaard waardes", + "Calibrations": "Kalibraties", + "Alarm Test / Smartphone Enable": "Alarm test / activeer Smartphone", + "Bolus Wizard": "Bolus calculator", + "in the future": "In de toekomst", + "time ago": "tijd geleden", + "hr ago": "uur geleden", + "hrs ago": "uren geleden", + "min ago": "minuut geleden", + "mins ago": "minuten geleden", + "day ago": "dag geleden", + "days ago": "dagen geleden", + "long ago": "lang geleden", + "Clean": "Schoon", + "Light": "Licht", + "Medium": "Gemiddeld", + "Heavy": "Zwaar", + "Treatment type": "Type behandeling", + "Raw BG": "Ruwe BG data", + "Device": "Apparaat", + "Noise": "Ruis", + "Calibration": "Kalibratie", + "Show Plugins": "Laat Plug-Ins zien", + "About": "Over", + "Value in": "Waarde in", + "Carb Time": "Koolhydraten tijd", + "Language": "Taal", + "Add new": "Voeg toe", + "g": "g", + "ml": "ml", + "pcs": "stk", + "Drag&drop food here": "Maaltijd naar hier verplaatsen", + "Care Portal": "Zorgportaal", + "Medium/Unknown": "Medium/Onbekend", + "IN THE FUTURE": "IN DE TOEKOMST", + "Update": "Update", + "Order": "Sortering", + "oldest on top": "Oudste boven", + "newest on top": "Nieuwste boven", + "All sensor events": "Alle sensor gegevens", + "Remove future items from mongo database": "Verwijder items die in de toekomst liggen uit database", + "Find and remove treatments in the future": "Zoek en verwijder behandelingen met datum in de toekomst", + "This task find and remove treatments in the future.": "Dit commando zoekt en verwijdert behandelingen met datum in de toekomst", + "Remove treatments in the future": "Verwijder behandelingen met datum in de toekomst", + "Find and remove entries in the future": "Zoek en verwijder behandelingen met datum in de toekomst", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Dit commando zoekt en verwijdert behandelingen met datum in de toekomst", + "Remove entries in the future": "Verwijder invoer met datum in de toekomst", + "Loading database ...": "Database laden ....", + "Database contains %1 future records": "Database bevat %1 toekomstige data", + "Remove %1 selected records?": "Verwijder %1 geselecteerde data?", + "Error loading database": "Fout bij het laden van database", + "Record %1 removed ...": "Data %1 verwijderd ", + "Error removing record %1": "Fout bij het verwijderen van %1 data", + "Deleting records ...": "Verwijderen van data .....", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Ruim Mongo database status op", + "Delete all documents from devicestatus collection": "Verwijder alle documenten uit \"devicestatus\" database", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Dit commando verwijdert alle documenten uit \"devicestatus\" database. Handig wanneer de batterij status niet correct wordt geupload.", + "Delete all documents": "Verwijder alle documenten", + "Delete all documents from devicestatus collection?": "Wil je alle data van \"devicestatus\" database verwijderen?", + "Database contains %1 records": "Database bevat %1 gegevens", + "All records removed ...": "Alle gegevens verwijderd", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Admin tools", + "Nightscout reporting": "Nightscout rapportages", + "Cancel": "Annuleer", + "Edit treatment": "Bewerkt behandeling", + "Duration": "Duur", + "Duration in minutes": "Duur in minuten", + "Temp Basal": "Tijdelijke basaal", + "Temp Basal Start": "Start tijdelijke basaal", + "Temp Basal End": "Einde tijdelijke basaal", + "Percent": "Procent", + "Basal change in %": "Basaal aanpassing in %", + "Basal value": "Basaal snelheid", + "Absolute basal value": "Absolute basaal waarde", + "Announcement": "Mededeling", + "Loading temp basal data": "Laden tijdelijke basaal gegevens", + "Save current record before changing to new?": "Opslaan voor verder te gaan?", + "Profile Switch": "Profiel wissel", + "Profile": "Profiel", + "General profile settings": "Profiel instellingen", + "Title": "Titel", + "Database records": "Database gegevens", + "Add new record": "Toevoegen", + "Remove this record": "Verwijder", + "Clone this record to new": "Kopieer deze invoer naar nieuwe", + "Record valid from": "Geldig van", + "Stored profiles": "Opgeslagen profielen", + "Timezone": "Tijdzone", + "Duration of Insulin Activity (DIA)": "Werkingsduur insuline (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.": "Geeft de werkingsduur van de insuline in het lichaam aan. Dit verschilt van patient tot patient er per soort insuline, algemeen gemiddelde is 3 tot 4 uur. ", + "Insulin to carb ratio (I:C)": "Insuline - Koolhydraat ratio (I:C)", + "Hours:": "Uren:", + "hours": "Uren", + "g/hour": "g/uur", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "G KH per Eh insuline. De verhouding tussen hoeveel grammen koohlhydraten er verwerkt kunnen worden per eenheid insuline.", + "Insulin Sensitivity Factor (ISF)": "Insuline gevoeligheid (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL of mmol/L per E insuline. Ratio daling BG waarde per eenheid correctie", + "Carbs activity / absorption rate": "Koolhydraat opname snelheid", + "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).": "grammen per tijdseenheid. Geeft de wijzigingen in COB per tijdseenheid alsookde hoeveelheid KH dat impact zou moeten hebben over deze tijdspanne. KH absorbtie / activiteits curveszijn minder eenvoudig uitzetbaar, maar kunnen geschat worden door gebruik te maken van een startvertreging en daarna een constante curve van absorbtie (g/u).", + "Basal rates [unit/hour]": "Basaal snelheid [eenheden/uur]", + "Target BG range [mg/dL,mmol/L]": "Doel BG waarde in [mg/dl,mmol/L", + "Start of record validity": "Start geldigheid", + "Icicle": "Ijspegel", + "Render Basal": "Toon basaal", + "Profile used": "Gebruikt profiel", + "Calculation is in target range.": "Berekening valt binnen doelwaards", + "Loading profile records ...": "Laden profiel gegevens", + "Values loaded.": "Gegevens geladen", + "Default values used.": "Standaard waardes gebruikt", + "Error. Default values used.": "FOUT: Standaard waardes gebruikt", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Tijdspanne van laag en hoog doel zijn niet correct. Standaard waarden worden gebruikt", + "Valid from:": "Geldig van:", + "Save current record before switching to new?": "Opslaan voor verder te gaan?", + "Add new interval before": "Voeg interval toe voor", + "Delete interval": "Verwijder interval", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Pizza Bolus", + "Difference": "Verschil", + "New time": "Nieuwe tijd", + "Edit Mode": "Wijzigen uitvoeren", + "When enabled icon to start edit mode is visible": "Als geactiveerd is Wijzigen modus beschikbaar", + "Operation": "Operatie", + "Move": "Verplaats", + "Delete": "Verwijder", + "Move insulin": "Verplaats insuline", + "Move carbs": "Verplaats KH", + "Remove insulin": "Verwijder insuline", + "Remove carbs": "Verwijder KH", + "Change treatment time to %1 ?": "Wijzig behandel tijdstip naar %1", + "Change carbs time to %1 ?": "Wijzig KH tijdstip naar %1", + "Change insulin time to %1 ?": "Wijzig insuline tijdstip naar %1", + "Remove treatment ?": "Verwijder behandeling", + "Remove insulin from treatment ?": "Verwijder insuline van behandeling", + "Remove carbs from treatment ?": "Verwijder KH van behandeling", + "Rendering": "Renderen", + "Loading OpenAPS data of": "OpenAPS gegevens opladen van", + "Loading profile switch data": "Ophalen van data om profiel te wisselen", + "Redirecting you to the Profile Editor to create a new profile.": "Verkeerde profiel instellingen.\ngeen profiel beschibaar voor getoonde tijd.\nVerder naar profiel editor om een profiel te maken.", + "Pump": "Pomp", + "Sensor Age": "Sensor leeftijd", + "Insulin Age": "Insuline ouderdom (IAGE)", + "Temporary target": "Tijdelijk doel", + "Reason": "Reden", + "Eating soon": "Binnenkort eten", + "Top": "Boven", + "Bottom": "Beneden", + "Activity": "Activiteit", + "Targets": "Doelen", + "Bolus insulin:": "Bolus insuline", + "Base basal insulin:": "Basis basaal insuline", + "Positive temp basal insulin:": "Extra tijdelijke basaal insuline", + "Negative temp basal insulin:": "Negatieve tijdelijke basaal insuline", + "Total basal insulin:": "Totaal basaal insuline", + "Total daily insulin:": "Totaal dagelijkse insuline", + "Unable to %1 Role": "Kan %1 rol niet verwijderen", + "Unable to delete Role": "Niet mogelijk rol te verwijderen", + "Database contains %1 roles": "Database bevat %1 rollen", + "Edit Role": "Pas rol aan", + "admin, school, family, etc": "admin, school, familie, etc", + "Permissions": "Rechten", + "Are you sure you want to delete: ": "Weet u het zeker dat u wilt verwijderen?", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Elke rol heeft mintens 1 machtiging. De * machtiging is een wildcard, machtigingen hebben een hyrarchie door gebruik te maken van : als scheidingsteken.", + "Add new Role": "Voeg rol toe", + "Roles - Groups of People, Devices, etc": "Rollen - Groepen mensen apparaten etc", + "Edit this role": "Pas deze rol aan", + "Admin authorized": "Admin geauthoriseerd", + "Subjects - People, Devices, etc": "Onderwerpen - Mensen, apparaten etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Elk onderwerp heeft een unieke toegangscode en 1 of meer rollen. Klik op de toegangscode om een nieu venster te openen om het onderwerp te bekijken, deze verborgen link kan gedeeld worden.", + "Add new Subject": "Voeg onderwerp toe", + "Unable to %1 Subject": "Niet in staat %1 Onderwerp", + "Unable to delete Subject": "Kan onderwerp niet verwijderen", + "Database contains %1 subjects": "Database bevat %1 onderwerpen", + "Edit Subject": "Pas onderwerp aan", + "person, device, etc": "persoon, apparaat etc", + "role1, role2": "rol1, rol2", + "Edit this subject": "pas dit onderwerp aan", + "Delete this subject": "verwijder dit onderwerp", + "Roles": "Rollen", + "Access Token": "toegangscode", + "hour ago": "uur geleden", + "hours ago": "uren geleden", + "Silence for %1 minutes": "Sluimer %1 minuten", + "Check BG": "Controleer BG", + "BASAL": "Basaal", + "Current basal": "Huidige basaal", + "Sensitivity": "Gevoeligheid", + "Current Carb Ratio": "Huidige KH ratio", + "Basal timezone": "Basaal tijdzone", + "Active profile": "Actief profiel", + "Active temp basal": "Actieve tijdelijke basaal", + "Active temp basal start": "Actieve tijdelijke basaal start", + "Active temp basal duration": "Actieve tijdelijk basaal duur", + "Active temp basal remaining": "Actieve tijdelijke basaal resteert", + "Basal profile value": "Basaal profiel waarde", + "Active combo bolus": "Actieve combo bolus", + "Active combo bolus start": "Actieve combo bolus start", + "Active combo bolus duration": "Actieve combo bolus duur", + "Active combo bolus remaining": "Actieve combo bolus resteert", + "BG Delta": "BG Delta", + "Elapsed Time": "Verstreken tijd", + "Absolute Delta": "Abslute delta", + "Interpolated": "Geinterpoleerd", + "BWP": "BWP", + "Urgent": "Urgent", + "Warning": "Waarschuwing", + "Info": "Info", + "Lowest": "Laagste", + "Snoozing high alarm since there is enough IOB": "Snooze hoog alarm, er is genoeg IOB", + "Check BG, time to bolus?": "Controleer BG, tijd om te bolussen?", + "Notice": "Notitie", + "required info missing": "vereiste gegevens ontbreken", + "Insulin on Board": "IOB - Inuline on board", + "Current target": "huidig doel", + "Expected effect": "verwacht effect", + "Expected outcome": "Veracht resultaat", + "Carb Equivalent": "Koolhydraat equivalent", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Insulineoverschot van %1U om laag doel te behalen (excl. koolhydraten)", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Insulineoverschot van %1U om laag doel te behalen, ZORG VOOR VOLDOENDE KOOLHYDRATEN VOOR DE ACTIEVE INSULINE", + "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U reductie vereist in actieve insuline om laag doel te bereiken, teveel basaal?", + "basal adjustment out of range, give carbs?": "basaal aanpassing buiten bereik, geef KH?", + "basal adjustment out of range, give bolus?": "basaal aanpassing buiten bereik, bolus?", + "above high": "boven hoog", + "below low": "onder laag", + "Projected BG %1 target": "Verwachte BG %1 doel", + "aiming at": "doel is", + "Bolus %1 units": "Bolus %1 eenheden", + "or adjust basal": "of pas basaal aan", + "Check BG using glucometer before correcting!": "Controleer BG met bloeddruppel voor correctie!", + "Basal reduction to account %1 units:": "Basaal verlaagd voor %1 eenheden", + "30m temp basal": "30 minuten tijdelijke basaal", + "1h temp basal": "1 uur tijdelijke basaal", + "Cannula change overdue!": "Cannule te oud!", + "Time to change cannula": "Verwissel canule", + "Change cannula soon": "Verwissel canule binnenkort", + "Cannula age %1 hours": "Canule leeftijd %1 uren", + "Inserted": "Ingezet", + "CAGE": "CAGE", + "COB": "COB", + "Last Carbs": "Laatse KH", + "IAGE": "IAGE", + "Insulin reservoir change overdue!": "Verwissel insulinereservoir nu!", + "Time to change insulin reservoir": "Verwissel insuline reservoir", + "Change insulin reservoir soon": "Verwissel insuline reservoir binnenkort", + "Insulin reservoir age %1 hours": "Insuline reservoir leeftijd %1 uren", + "Changed": "veranderd", + "IOB": "IOB", + "Careportal IOB": "Careportal IOB", + "Last Bolus": "Laatste bolus", + "Basal IOB": "Basaal IOB", + "Source": "bron", + "Stale data, check rig?": "Geen data, controleer uploader", + "Last received:": "laatste ontvangen", + "%1m ago": "%1m geleden", + "%1h ago": "%1u geleden", + "%1d ago": "%1d geleden", + "RETRO": "RETRO", + "SAGE": "SAGE", + "Sensor change/restart overdue!": "Sensor vevang/hertstart tijd gepasseerd", + "Time to change/restart sensor": "Sensor vervangen of herstarten", + "Change/restart sensor soon": "Herstart of vervang sensor binnenkort", + "Sensor age %1 days %2 hours": "Sensor leeftijd %1 dag(en) en %2 uur", + "Sensor Insert": "Sensor ingebracht", + "Sensor Start": "Sensor start", + "days": "dagen", + "Insulin distribution": "Insuline verdeling", + "To see this report, press SHOW while in this view": "Om dit rapport te zien, druk op \"Laat zien\"", + "AR2 Forecast": "AR2 Voorspelling", + "OpenAPS Forecasts": "OpenAPS Voorspelling", + "Temporary Target": "Tijdelijk doel", + "Temporary Target Cancel": "Annuleer tijdelijk doel", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "Profielen", + "Time in fluctuation": "Tijd met fluctuaties", + "Time in rapid fluctuation": "Tijd met grote fluctuaties", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Dit is enkel een grove schatting die onjuist kan zijn welke geen bloedtest vervangt. De gebruikte formule is afkomstig van:", + "Filter by hours": "Filter op uren", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tijd met fluctuaties of grote fluctuaties in % van de geevalueerde periode, waarbij de bloed glucose relatief snel wijzigde.Lagere waarden zijn beter.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Gemiddelde veranderingen per dag is een som van alle waardes die uitschieten over de bekeken periode, gedeeld door het aantal dagen in deze periode. Lager is beter.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Gemiddelde veranderingen per uur is een som van alle waardes die uitschieten over de bekeken periode, gedeeld door het aantal uur in deze periode. Lager is beter.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">is hier te vinden.", + "Mean Total Daily Change": "Gemiddelde veranderingen per dag", + "Mean Hourly Change": "Gemiddelde veranderingen per uur", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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": "Jouw", + "virtAsstPreamble3person": "%1 heeft een ", + "virtAsstNoInsulin": "geen", + "virtAsstUploadBattery": "De batterij van je mobiel is bij %l", + "virtAsstReservoir": "Je hebt nog %l eenheden in je reservoir", + "virtAsstPumpBattery": "Je pomp batterij is bij %1 %2", + "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstLastLoop": "De meest recente goede loop was %1", + "virtAsstLoopNotAvailable": "De Loop plugin is niet geactiveerd", + "virtAsstLoopForecastAround": "Volgens de Loop voorspelling is je waarde around %1 over de volgnede %2", + "virtAsstLoopForecastBetween": "Volgens de Loop voorspelling is je waarde between %1 and %2 over de volgnede %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": "Niet mogelijk om een voorspelling te doen met de data die beschikbaar is", + "virtAsstRawBG": "Je raw bloedwaarde is %1", + "virtAsstOpenAPSForecast": "OpenAPS uiteindelijke bloedglucose van %1", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Vet [g]", + "Protein [g]": "Proteine [g]", + "Energy [kJ]": "Energie [kJ]", + "Clock Views:": "Klokweergave:", + "Clock": "Klok", + "Color": "Kleur", + "Simple": "Simpel", + "TDD average": "Gemiddelde dagelijkse insuline (TDD)", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Gemiddelde koolhydraten per dag", + "Eating Soon": "Pre-maaltijd modus", + "Last entry {0} minutes ago": "Laatste waarde {0} minuten geleden", + "change": "wijziging", + "Speech": "Spraak", + "Target Top": "Hoog tijdelijk doel", + "Target Bottom": "Laag tijdelijk doel", + "Canceled": "Geannuleerd", + "Meter BG": "Bloedglucosemeter waarde", + "predicted": "verwachting", + "future": "toekomstig", + "ago": "geleden", + "Last data received": "Laatste gegevens ontvangen", + "Clock View": "Klokweergave", + "Protein": "Eiwit", + "Fat": "Vet", + "Protein average": "eiwitgemiddelde", + "Fat average": "Vetgemiddelde", + "Total carbs": "Totaal koolhydraten", + "Total protein": "Totaal eiwitten", + "Total fat": "Totaal vetten", + "Database Size": "Grootte database", + "Database Size near its limits!": "Database grootte nadert limiet!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database grootte is %1 MiB van de %2 MiB. Maak een backup en verwijder oude data", + "Database file size": "Database bestandsgrootte", + "%1 MiB of %2 MiB (%3%)": "%1 MiB van de %2 MiB (%3%)", + "Data size": "Datagrootte", + "virtAsstDatabaseSize": "%1 MiB dat is %2% van de beschikbaare database ruimte", + "virtAsstTitleDatabaseSize": "Database bestandsgrootte", + "Carbs/Food/Time": "Carbs/Food/Time" +} \ No newline at end of file diff --git a/translations/pl_PL.json b/translations/pl_PL.json new file mode 100644 index 00000000000..4a569345962 --- /dev/null +++ b/translations/pl_PL.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Słucham na porcie", + "Mo": "Pn", + "Tu": "Wt", + "We": "Śr", + "Th": "Cz", + "Fr": "Pt", + "Sa": "So", + "Su": "Nd", + "Monday": "Poniedziałek", + "Tuesday": "Wtorek", + "Wednesday": "Środa", + "Thursday": "Czwartek", + "Friday": "Piątek", + "Saturday": "Sobota", + "Sunday": "Niedziela", + "Category": "Kategoria", + "Subcategory": "Podkategoria", + "Name": "Imie", + "Today": "Dziś", + "Last 2 days": "Ostatnie 2 dni", + "Last 3 days": "Ostatnie 3 dni", + "Last week": "Ostatni tydzień", + "Last 2 weeks": "Ostatnie 2 tygodnie", + "Last month": "Ostatni miesiąc", + "Last 3 months": "Ostatnie 3 miesiące", + "between": "between", + "around": "around", + "and": "and", + "From": "Od", + "To": "Do", + "Notes": "Uwagi", + "Food": "Jedzenie", + "Insulin": "Insulina", + "Carbs": "Węglowodany", + "Notes contain": "Zawierają uwagi", + "Target BG range bottom": "Docelowy zakres glikemii, dolny", + "top": "górny", + "Show": "Pokaż", + "Display": "Wyświetl", + "Loading": "Ładowanie", + "Loading profile": "Ładowanie profilu", + "Loading status": "Status załadowania", + "Loading food database": "Ładowanie bazy posiłków", + "not displayed": "Nie jest wyświetlany", + "Loading CGM data of": "Ładowanie danych z CGM", + "Loading treatments data of": "Ładowanie danych leczenia", + "Processing data of": "Przetwarzanie danych", + "Portion": "Część", + "Size": "Rozmiar", + "(none)": "(brak)", + "None": "brak", + "": "", + "Result is empty": "Brak wyniku", + "Day to day": "Dzień po dniu", + "Week to week": "Tydzień po tygodniu", + "Daily Stats": "Statystyki dzienne", + "Percentile Chart": "Wykres percentyl", + "Distribution": "Dystrybucja", + "Hourly stats": "Statystyki godzinowe", + "netIOB stats": "Statystyki netIOP", + "temp basals must be rendered to display this report": "Tymczasowa dawka podstawowa jest wymagana aby wyświetlić ten raport", + "Weekly success": "Wyniki tygodniowe", + "No data available": "Brak danych", + "Low": "Niski", + "In Range": "W zakresie", + "Period": "Okres", + "High": "Wysoki", + "Average": "Średnia", + "Low Quartile": "Dolny kwartyl", + "Upper Quartile": "Górny kwartyl", + "Quartile": "Kwartyl", + "Date": "Data", + "Normal": "Normalny", + "Median": "Mediana", + "Readings": "Odczyty", + "StDev": "Stand. odchylenie", + "Daily stats report": "Dzienne statystyki", + "Glucose Percentile report": "Tabela centylowa glikemii", + "Glucose distribution": "Rozkład glikemii", + "days total": "dni łącznie", + "Total per day": "dni łącznie", + "Overall": "Ogółem", + "Range": "Zakres", + "% of Readings": "% Odczytów", + "# of Readings": "Ilość Odczytów", + "Mean": "Wartość średnia", + "Standard Deviation": "Standardowe odchylenie", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "HbA1c przewidywany", + "Weekly Success": "Wyniki tygodniowe", + "There is not sufficient data to run this report. Select more days.": "Nie ma wystarczających danych dla tego raportu. Wybierz więcej dni.", + "Using stored API secret hash": "Korzystając z zapisanego poufnego hasha API", + "No API secret hash stored yet. You need to enter API secret.": "Nie ma żadnego poufnego hasha API zapisanego. Należy wprowadzić poufny hash API.", + "Database loaded": "Baza danych załadowana", + "Error: Database failed to load": "Błąd, baza danych nie może być załadowana", + "Error": "Error", + "Create new record": "Tworzenie nowego wpisu", + "Save record": "Zapisz wpis", + "Portions": "Porcja", + "Unit": "Jednostka", + "GI": "IG", + "Edit record": "Edycja wpisu", + "Delete record": "Usuń wpis", + "Move to the top": "Przejdź do góry", + "Hidden": "Ukryte", + "Hide after use": "Ukryj po użyciu", + "Your API secret must be at least 12 characters long": "Twój poufny klucz API musi zawierać co majmniej 12 znaków", + "Bad API secret": "Błędny klucz API", + "API secret hash stored": "Poufne klucz API zapisane", + "Status": "Status", + "Not loaded": "Nie załadowany", + "Food Editor": "Edytor posiłków", + "Your database": "Twoja baza danych", + "Filter": "Filtr", + "Save": "Zapisz", + "Clear": "Wyczyść", + "Record": "Wpis", + "Quick picks": "Szybki wybór", + "Show hidden": "Pokaż ukryte", + "Your API secret or token": "Twój hash API lub token", + "Remember this device. (Do not enable this on public computers.)": "Zapamiętaj to urządzenie (Nie używaj tej opcji korzystając z publicznych komputerów.)", + "Treatments": "Leczenie", + "Time": "Czas", + "Event Type": "Typ zdarzenia", + "Blood Glucose": "Glikemia z krwi", + "Entered By": "Wprowadzono przez", + "Delete this treatment?": "Usunąć te leczenie?", + "Carbs Given": "Węglowodany spożyte", + "Inzulin Given": "Insulina podana", + "Event Time": "Czas zdarzenia", + "Please verify that the data entered is correct": "Proszę sprawdzić, czy wprowadzone dane są prawidłowe", + "BG": "BG", + "Use BG correction in calculation": "Użyj BG w obliczeniach korekty", + "BG from CGM (autoupdated)": "Wartość BG z CGM (automatycznie)", + "BG from meter": "Wartość BG z glukometru", + "Manual BG": "Ręczne wprowadzenie BG", + "Quickpick": "Szybki wybór", + "or": "lub", + "Add from database": "Dodaj z bazy danych", + "Use carbs correction in calculation": "Użyj wartość węglowodanów w obliczeniach korekty", + "Use COB correction in calculation": "Użyj COB do obliczenia korekty", + "Use IOB in calculation": "Użyj IOB w obliczeniach", + "Other correction": "Inna korekta", + "Rounding": "Zaokrąglanie", + "Enter insulin correction in treatment": "Wprowadź wartość korekty w leczeniu", + "Insulin needed": "Wymagana insulina", + "Carbs needed": "Wymagane węglowodany", + "Carbs needed if Insulin total is negative value": "Wymagane węglowodany, jeśli łączna wartość Insuliny jest ujemna", + "Basal rate": "Dawka bazowa", + "60 minutes earlier": "60 minut wcześniej", + "45 minutes earlier": "45 minut wcześniej", + "30 minutes earlier": "30 minut wcześniej", + "20 minutes earlier": "20 minut wcześniej", + "15 minutes earlier": "15 minut wcześniej", + "Time in minutes": "Czas w minutach", + "15 minutes later": "15 minut później", + "20 minutes later": "20 minut później", + "30 minutes later": "30 minut później", + "45 minutes later": "45 minut później", + "60 minutes later": "60 minut później", + "Additional Notes, Comments": "Uwagi dodatkowe", + "RETRO MODE": "Tryb RETRO", + "Now": "Teraz", + "Other": "Inny", + "Submit Form": "Zatwierdź", + "Profile Editor": "Edytor profilu", + "Reports": "Raporty", + "Add food from your database": "Dodaj posiłek z twojej bazy danych", + "Reload database": "Odśwież bazę danych", + "Add": "Dodaj", + "Unauthorized": "Nieuwierzytelniono", + "Entering record failed": "Wprowadzenie wpisu nie powiodło się", + "Device authenticated": "Urządzenie uwierzytelnione", + "Device not authenticated": "Urządzenie nieuwierzytelnione", + "Authentication status": "Status uwierzytelnienia", + "Authenticate": "Uwierzytelnienie", + "Remove": "Usuń", + "Your device is not authenticated yet": "Twoje urządzenie nie jest jeszcze uwierzytelnione", + "Sensor": "Sensor", + "Finger": "Glukometr", + "Manual": "Ręcznie", + "Scale": "Skala", + "Linear": "Liniowa", + "Logarithmic": "Logarytmiczna", + "Logarithmic (Dynamic)": "Logarytmiczna (Dynamiczna)", + "Insulin-on-Board": "Aktywna insulina (IOB)", + "Carbs-on-Board": "Aktywne wglowodany (COB)", + "Bolus Wizard Preview": "Kalkulator Bolusa (BWP)", + "Value Loaded": "Wartości wczytane", + "Cannula Age": "Czas wkłucia (CAGE)", + "Basal Profile": "Profil dawki bazowej", + "Silence for 30 minutes": "Wycisz na 30 minut", + "Silence for 60 minutes": "Wycisz na 60 minut", + "Silence for 90 minutes": "Wycisz na 90 minut", + "Silence for 120 minutes": "Wycisz na 120 minut", + "Settings": "Ustawienia", + "Units": "Jednostki", + "Date format": "Format daty", + "12 hours": "12 godzinny", + "24 hours": "24 godzinny", + "Log a Treatment": "Wprowadź leczenie", + "BG Check": "Pomiar glikemii", + "Meal Bolus": "Bolus do posiłku", + "Snack Bolus": "Bolus przekąskowy", + "Correction Bolus": "Bolus korekcyjny", + "Carb Correction": "Węglowodany korekcyjne", + "Note": "Uwagi", + "Question": "Pytanie", + "Exercise": "Wysiłek", + "Pump Site Change": "Zmiana miejsca wkłucia pompy", + "CGM Sensor Start": "Start nowego sensora", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Zmiana sensora", + "Dexcom Sensor Start": "Start sensora DEXCOM", + "Dexcom Sensor Change": "Zmiana sensora DEXCOM", + "Insulin Cartridge Change": "Zmiana zbiornika z insuliną", + "D.A.D. Alert": "Psi Alarm cukrzycowy", + "Glucose Reading": "Odczyt glikemii", + "Measurement Method": "Sposób pomiaru", + "Meter": "Glukometr", + "Insulin Given": "Podana insulina", + "Amount in grams": "Wartość w gramach", + "Amount in units": "Wartość w jednostkach", + "View all treatments": "Pokaż całość leczenia", + "Enable Alarms": "Włącz alarmy", + "Pump Battery Change": "Zmiana baterii w pompie", + "Pump Battery Low Alarm": "Alarm! Niski poziom baterii w pompie", + "Pump Battery change overdue!": "Bateria pompy musi być wymieniona!", + "When enabled an alarm may sound.": "Sygnalizacja dzwiękowa przy włączonym alarmie", + "Urgent High Alarm": "Uwaga: Alarm hiperglikemii", + "High Alarm": "Alarm hiperglikemii", + "Low Alarm": "Alarm hipoglikemii", + "Urgent Low Alarm": "Uwaga: Alarm hipoglikemii", + "Stale Data: Warn": "Ostrzeżenie: brak odczytów", + "Stale Data: Urgent": "Uwaga: brak odczytów", + "mins": "min", + "Night Mode": "Tryb nocny", + "When enabled the page will be dimmed from 10pm - 6am.": "Po włączeniu strona będzie przyciemniona od 22 wieczorem do 6 nad ranem.", + "Enable": "Włącz", + "Show Raw BG Data": "Wyświetl surowe dane BG", + "Never": "Nigdy", + "Always": "Zawsze", + "When there is noise": "Gdy sygnał jest zakłócony", + "When enabled small white dots will be displayed for raw BG data": "Gdy funkcja jest włączona, małe białe kropki pojawią się na surowych danych BG", + "Custom Title": "Własny tytuł strony", + "Theme": "Wygląd", + "Default": "Domyślny", + "Colors": "Kolorowy", + "Colorblind-friendly colors": "Kolory dla niedowidzących", + "Reset, and use defaults": "Reset i powrót do domyślnych ustawień", + "Calibrations": "Kalibracja", + "Alarm Test / Smartphone Enable": "Test alarmu / Smartphone aktywny", + "Bolus Wizard": "Kalkulator bolusa", + "in the future": "w przyszłości", + "time ago": "czas temu", + "hr ago": "godzina temu", + "hrs ago": "godzin temu", + "min ago": "minuta temu", + "mins ago": "minut temu", + "day ago": "dzień temu", + "days ago": "dni temu", + "long ago": "dawno", + "Clean": "Czysty", + "Light": "Niski", + "Medium": "Średni", + "Heavy": "Wysoki", + "Treatment type": "Rodzaj leczenia", + "Raw BG": "Raw BG", + "Device": "Urządzenie", + "Noise": "Szum", + "Calibration": "Kalibracja", + "Show Plugins": "Pokaż rozszerzenia", + "About": "O aplikacji", + "Value in": "Wartości w", + "Carb Time": "Czas posiłku", + "Language": "Język", + "Add new": "Dodaj nowy", + "g": "g", + "ml": "ml", + "pcs": "cz.", + "Drag&drop food here": "Tutaj przesuń/upuść jedzenie", + "Care Portal": "Care Portal", + "Medium/Unknown": "Średni/nieznany", + "IN THE FUTURE": "W PRZYSZŁOŚCI", + "Update": "Aktualizacja", + "Order": "Kolejność", + "oldest on top": "Najstarszy na górze", + "newest on top": "Najnowszy na górze", + "All sensor events": "Wszystkie zdarzenia sensora", + "Remove future items from mongo database": "Usuń przyszłe/błędne wpisy z bazy mongo", + "Find and remove treatments in the future": "Znajdź i usuń przyszłe/błędne zabiegi", + "This task find and remove treatments in the future.": "To narzędzie znajduje i usuwa przyszłe/błędne zabiegi", + "Remove treatments in the future": "Usuń zabiegi w przyszłości", + "Find and remove entries in the future": "Znajdź i usuń wpisy z przyszłości", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "To narzędzie odnajduje i usuwa dane CGM utworzone przez uploader w przyszłości - ze złą datą/czasem.", + "Remove entries in the future": "Usuń wpisy w przyszłości", + "Loading database ...": "Wczytuje baze danych", + "Database contains %1 future records": "Baza danych zawiera %1 przyszłych rekordów", + "Remove %1 selected records?": "Usunąć %1 wybranych rekordów?", + "Error loading database": "Błąd wczytywania bazy danych", + "Record %1 removed ...": "%1 rekordów usunięto ...", + "Error removing record %1": "Błąd przy usuwaniu rekordu %1", + "Deleting records ...": "Usuwanie rekordów ...", + "%1 records deleted": "%1 rekordów zostało usuniętych", + "Clean Mongo status database": "Oczyść status bazy danych Mongo", + "Delete all documents from devicestatus collection": "Usuń wszystkie dokumenty z kolekcji devicestatus", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "To narzędzie usuwa wszystkie dokumenty z kolekcji devicestatus. Przydatne, gdy status baterii uploadera nie jest aktualizowany.", + "Delete all documents": "Usuń wszystkie dokumenty", + "Delete all documents from devicestatus collection?": "Czy na pewno usunąć wszystkie dokumenty z kolekcji devicestatus?", + "Database contains %1 records": "Baza danych zawiera %1 rekordów", + "All records removed ...": "Wszystkie rekordy usunięto", + "Delete all documents from devicestatus collection older than 30 days": "Usuń wszystkie dokumenty z kolekcji devicestatus starsze niż 30 dni", + "Number of Days to Keep:": "Ilość dni do zachowania:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "To narzędzie usuwa wszystkie dokumenty z kolekcji devicestatus starsze niż 30 dni. Przydatne, gdy status baterii uploadera nie jest aktualizowany.", + "Delete old documents from devicestatus collection?": "Czy na pewno chcesz usunąć stare dokumenty z kolekcji devicestatus?", + "Clean Mongo entries (glucose entries) database": "Wyczyść bazę wpisów (wpisy glukozy) Mongo", + "Delete all documents from entries collection older than 180 days": "Usuń wszystkie dokumenty z kolekcji wpisów starsze niż 180 dni", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "To narzędzie usuwa wszystkie dokumenty z kolekcji wpisów starsze niż 180 dni. Przydatne, gdy status baterii uploadera nie jest aktualizowany.", + "Delete old documents": "Usuń stare dokumenty", + "Delete old documents from entries collection?": "Czy na pewno chcesz usunąć stare dokumenty z kolekcji wpisów?", + "%1 is not a valid number": "%1 nie jest poprawną liczbą", + "%1 is not a valid number - must be more than 2": "%1 nie jest poprawną liczbą - musi być większe od 2", + "Clean Mongo treatments database": "Wyczyść bazę leczenia Mongo", + "Delete all documents from treatments collection older than 180 days": "Usuń wszystkie dokumenty z kolekcji leczenia starsze niż 180 dni", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "To narzędzie usuwa wszystkie dokumenty z kolekcji leczenia starsze niż 180 dni. Przydatne, gdy status baterii uploadera nie jest aktualizowany.", + "Delete old documents from treatments collection?": "Czy na pewno chcesz usunąć stare dokumenty z kolekcji leczenia?", + "Admin Tools": "Narzędzia administratora", + "Nightscout reporting": "Nightscout - raporty", + "Cancel": "Anuluj", + "Edit treatment": "Edytuj zabieg", + "Duration": "Czas trwania", + "Duration in minutes": "Czas trwania w minutach", + "Temp Basal": "Tymczasowa dawka podstawowa", + "Temp Basal Start": "Początek tymczasowej dawki podstawowej", + "Temp Basal End": "Koniec tymczasowej dawki podstawowej", + "Percent": "Procent", + "Basal change in %": "Zmiana dawki podstawowej w %", + "Basal value": "Dawka podstawowa", + "Absolute basal value": "Bezwględna wartość dawki podstawowej", + "Announcement": "Powiadomienie", + "Loading temp basal data": "Wczytuje dane tymczasowej dawki podstawowej", + "Save current record before changing to new?": "Zapisać bieżący rekord przed zamianą na nowy?", + "Profile Switch": "Przełączenie profilu", + "Profile": "Profil", + "General profile settings": "Ogólne ustawienia profilu", + "Title": "Nazwa", + "Database records": "Rekordy bazy danych", + "Add new record": "Dodaj nowy rekord", + "Remove this record": "Usuń ten rekord", + "Clone this record to new": "Powiel ten rekord na nowy", + "Record valid from": "Rekord ważny od", + "Stored profiles": "Zachowane profile", + "Timezone": "Strefa czasowa", + "Duration of Insulin Activity (DIA)": "Czas trwania aktywnej insuliny (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.": "Odzwierciedla czas działania insuliny. Może różnić się w zależności od chorego i rodzaju insuliny. Zwykle są to 3-4 godziny dla insuliny podawanej pompą u większości chorych. Inna nazwa to czas trwania insuliny.", + "Insulin to carb ratio (I:C)": "Współczynnik insulina/węglowodany (I:C)", + "Hours:": "Godziny:", + "hours": "godziny", + "g/hour": "g/godzine", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g węglowodanów na 1j insuliny. Współczynnik ilości gram weglowodanów równoważonych przez 1j insuliny.", + "Insulin Sensitivity Factor (ISF)": "Współczynnik wrażliwosci na insulinę (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dl lub mmol/L na 1j insuliny. Współczynnik obniżenia poziomu glukozy przez 1j insuliny", + "Carbs activity / absorption rate": "Aktywność węglowodanów / współczynnik absorpcji", + "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).": "g na jednostkę czasu. Odzwierciedla zmianę COB na jednostkę czasu oraz ilość węglowodanów mających przynieść efekt w czasie. Krzywe absorpcji / aktywnosci węglowodanów są mniej poznane niż aktywności insuliny ale mogą być oszacowane przez ocenę opóźnienia wchłaniania przy stałym współczynniku absorpcji (g/h).", + "Basal rates [unit/hour]": "Dawka podstawowa [j/h]", + "Target BG range [mg/dL,mmol/L]": "Docelowy przedział glikemii [mg/dl, mmol/L])", + "Start of record validity": "Początek ważnych rekordów", + "Icicle": "Odwrotność", + "Render Basal": "Zmiana dawki bazowej", + "Profile used": "Profil wykorzystywany", + "Calculation is in target range.": "Obliczenie mieści się w zakresie docelowym", + "Loading profile records ...": "Wczytywanie rekordów profilu", + "Values loaded.": "Wartości wczytane.", + "Default values used.": "Używane domyślne wartości.", + "Error. Default values used.": "Błąd. Używane domyślne wartości.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Zakres czasu w docelowo niskim i wysokim przedziale nie są dopasowane. Przywrócono wartości domyślne", + "Valid from:": "Ważne od:", + "Save current record before switching to new?": "Nagrać bieżący rekord przed przełączeniem na nowy?", + "Add new interval before": "Dodaj nowy przedział przed", + "Delete interval": "Usuń przedział", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Bolus złożony", + "Difference": "Różnica", + "New time": "Nowy czas", + "Edit Mode": "Tryb edycji", + "When enabled icon to start edit mode is visible": "Po aktywacji, widoczne ikony, aby uruchomić tryb edycji", + "Operation": "Operacja", + "Move": "Przesuń", + "Delete": "Skasuj", + "Move insulin": "Przesuń insulinę", + "Move carbs": "Przesuń węglowodany", + "Remove insulin": "Usuń insulinę", + "Remove carbs": "Usuń węglowodany", + "Change treatment time to %1 ?": "Zmień czas zdarzenia na %1 ?", + "Change carbs time to %1 ?": "Zmień czas węglowodanów na %1 ?", + "Change insulin time to %1 ?": "Zmień czas insuliny na %1 ?", + "Remove treatment ?": "Usunąć wydarzenie?", + "Remove insulin from treatment ?": "Usunąć insulinę z wydarzenia?", + "Remove carbs from treatment ?": "Usunąć węglowodany z wydarzenia?", + "Rendering": "Rysuję", + "Loading OpenAPS data of": "Ładuję dane OpenAPS z", + "Loading profile switch data": "Ładuję dane zmienionego profilu", + "Redirecting you to the Profile Editor to create a new profile.": "Złe ustawienia profilu.\nDla podanego czasu nie zdefiniowano profilu.\nPrzekierowuję do edytora profili aby utworzyć nowy.", + "Pump": "Pompa", + "Sensor Age": "Wiek sensora", + "Insulin Age": "Wiek insuliny", + "Temporary target": "Tymczasowy cel", + "Reason": "Powód", + "Eating soon": "Zjedz wkrótce", + "Top": "Góra", + "Bottom": "Dół", + "Activity": "Aktywność", + "Targets": "Cele", + "Bolus insulin:": "Bolus insuliny", + "Base basal insulin:": "Bazowa dawka insuliny", + "Positive temp basal insulin:": "Zwiększona bazowa dawka insuliny", + "Negative temp basal insulin:": "Zmniejszona bazowa dawka insuliny", + "Total basal insulin:": "Całkowita ilość bazowej dawki insuliny", + "Total daily insulin:": "Całkowita dzienna ilość insuliny", + "Unable to %1 Role": "Nie można %1 roli", + "Unable to delete Role": "Nie można usunąć roli", + "Database contains %1 roles": "Baza danych zawiera %1 ról", + "Edit Role": "Edycja roli", + "admin, school, family, etc": "administrator, szkoła, rodzina, itp", + "Permissions": "Uprawnienia", + "Are you sure you want to delete: ": "Jesteś pewien, że chcesz usunąć:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Każda rola będzie mieć 1 lub więcej uprawnień. Symbol * uprawnia do wszystkiego. Uprawnienia są hierarchiczne, używając : jako separatora.", + "Add new Role": "Dodaj nową rolę", + "Roles - Groups of People, Devices, etc": "Role - Grupy ludzi, urządzeń, itp", + "Edit this role": "Edytuj rolę", + "Admin authorized": "Administrator autoryzowany", + "Subjects - People, Devices, etc": "Obiekty - ludzie, urządzenia itp", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Każdy obiekt będzie miał unikalny token dostępu i jedną lub więcej ról. Kliknij token dostępu, aby otworzyć nowy widok z wybranym obiektem, ten tajny link może być następnie udostępniony", + "Add new Subject": "Dodaj obiekt", + "Unable to %1 Subject": "Nie można %1 obiektu", + "Unable to delete Subject": "Nie można usunąć obiektu", + "Database contains %1 subjects": "Baza danych zawiera %1 obiektów", + "Edit Subject": "Edytuj obiekt", + "person, device, etc": "osoba, urządzenie, itp", + "role1, role2": "rola1, rola2", + "Edit this subject": "Edytuj ten obiekt", + "Delete this subject": "Usuń ten obiekt", + "Roles": "Role", + "Access Token": "Token dostępu", + "hour ago": "Godzię temu", + "hours ago": "Godzin temu", + "Silence for %1 minutes": "Wycisz na %1 minut", + "Check BG": "Sprawdź glukozę z krwi", + "BASAL": "BAZA", + "Current basal": "Dawka podstawowa", + "Sensitivity": "Wrażliwość", + "Current Carb Ratio": "Obecny przelicznik węglowodanowy", + "Basal timezone": "Strefa czasowa dawki podstawowej", + "Active profile": "Profil aktywny", + "Active temp basal": "Aktywa tymczasowa dawka podstawowa", + "Active temp basal start": "Start aktywnej tymczasowej dawki podstawowej", + "Active temp basal duration": "Czas trwania aktywnej tymczasowej dawki podstawowej", + "Active temp basal remaining": "Pozostała aktywna tymczasowa dawka podstawowa", + "Basal profile value": "Wartość profilu podstawowego", + "Active combo bolus": "Aktywny bolus złożony", + "Active combo bolus start": "Start aktywnego bolusa złożonego", + "Active combo bolus duration": "Czas trwania aktywnego bolusa złożonego", + "Active combo bolus remaining": "Pozostały aktywny bolus złożony", + "BG Delta": "Zmiana glikemii", + "Elapsed Time": "Upłynął czas", + "Absolute Delta": "różnica absolutna", + "Interpolated": "Interpolowany", + "BWP": "Kalkulator bolusa", + "Urgent": "Pilny", + "Warning": "Ostrzeżenie", + "Info": "Informacja", + "Lowest": "Niski", + "Snoozing high alarm since there is enough IOB": "Wycisz alarm wysokiej glikemi, jest wystarczająco dużo aktywnej insuliny", + "Check BG, time to bolus?": "Sprawdź glikemię, czas na bolusa ?", + "Notice": "Uwaga", + "required info missing": "brak wymaganych informacji", + "Insulin on Board": "Aktywna insulina", + "Current target": "Aktualny cel", + "Expected effect": "Oczekiwany efekt", + "Expected outcome": "Oczekowany resultat", + "Carb Equivalent": "Odpowiednik w węglowodanach", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Nadmiar insuliny, %1J więcej niż potrzeba, aby osiągnąć cel dolnej granicy, nie biorąc pod uwagę węglowodanów", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Nadmiar insuliny: o %1J więcej niż potrzeba, aby osiągnąć cel dolnej granicy. UPEWNIJ SIĘ, ŻE AKTYWNA INSULINA JEST POKRYTA WĘGLOWODANAMI", + "%1U reduction needed in active insulin to reach low target, too much basal?": "%1J potrzebnej redukcji w aktywnej insulinie, aby osiągnąć niski cel dolnej granicy, Za duża dawka podstawowa ?", + "basal adjustment out of range, give carbs?": "dawka podstawowa poza zakresem, podać węglowodany?", + "basal adjustment out of range, give bolus?": "dawka podstawowa poza zakresem, podać insulinę?", + "above high": "powyżej wysokiego", + "below low": "poniżej niskiego", + "Projected BG %1 target": "Oczekiwany poziom glikemii %1", + "aiming at": "pożądany wynik", + "Bolus %1 units": "Bolus %1 jednostek", + "or adjust basal": "lub dostosuj dawkę bazową", + "Check BG using glucometer before correcting!": "Sprawdź glikemię z krwi przed podaniem korekty!", + "Basal reduction to account %1 units:": "Dawka bazowa zredukowana do 1% J", + "30m temp basal": "30 minut tymczasowej dawki bazowej", + "1h temp basal": "1 godzina tymczasowej dawki bazowej", + "Cannula change overdue!": "Przekroczono czas wymiany wkłucia!", + "Time to change cannula": "Czas do wymiany wkłucia", + "Change cannula soon": "Wkrótce wymiana wkłucia", + "Cannula age %1 hours": "Czas od wymiany wkłucia %1 godzin", + "Inserted": "Zamontowano", + "CAGE": "Wiek wkłucia", + "COB": "Aktywne węglowodany", + "Last Carbs": "Ostatnie węglowodany", + "IAGE": "Wiek insuliny", + "Insulin reservoir change overdue!": "Przekroczono czas wymiany zbiornika na insulinę!", + "Time to change insulin reservoir": "Czas do zmiany zbiornika na insulinę!", + "Change insulin reservoir soon": "Wkrótce wymiana zbiornika na insulinę!", + "Insulin reservoir age %1 hours": "Wiek zbiornika na insulinę %1 godzin", + "Changed": "Wymieniono", + "IOB": "Aktywna insulina", + "Careportal IOB": "Aktywna insulina z portalu", + "Last Bolus": "Ostatni bolus", + "Basal IOB": "Aktywna insulina z dawki bazowej", + "Source": "Źródło", + "Stale data, check rig?": "Dane są nieaktualne, sprawdź urządzenie transmisyjne.", + "Last received:": "Ostatnio odebrane:", + "%1m ago": "%1 minut temu", + "%1h ago": "%1 godzin temu", + "%1d ago": "%1 dni temu", + "RETRO": "RETRO", + "SAGE": "Wiek sensora", + "Sensor change/restart overdue!": "Przekroczono czas wymiany/restartu sensora!", + "Time to change/restart sensor": "Czas do wymiany/restartu sensora", + "Change/restart sensor soon": "Wkrótce czas wymiany/restartu sensora", + "Sensor age %1 days %2 hours": "Wiek sensora: %1 dni %2 godzin", + "Sensor Insert": "Zamontuj sensor", + "Sensor Start": "Uruchomienie sensora", + "days": "dni", + "Insulin distribution": "podawanie insuliny", + "To see this report, press SHOW while in this view": "Aby wyświetlić ten raport, naciśnij przycisk POKAŻ w tym widoku", + "AR2 Forecast": "Prognoza AR2", + "OpenAPS Forecasts": "Prognoza OpenAPS", + "Temporary Target": "Cel tymczasowy", + "Temporary Target Cancel": "Zel tymczasowy anulowany", + "OpenAPS Offline": "OpenAPS nieaktywny", + "Profiles": "Profile", + "Time in fluctuation": "Czas fluaktacji (odchyleń)", + "Time in rapid fluctuation": "Czas szybkich fluaktacji (odchyleń)", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "To tylko przybliżona ocena, która może być bardzo niedokładna i nie może zastąpić faktycznego poziomu cukru we krwi. Zastosowano formułę:", + "Filter by hours": "Filtruj po godzinach", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Czas fluktuacji i szybki czas fluktuacji mierzą % czasu w badanym okresie, w którym poziom glukozy we krwi zmieniał się szybko lub bardzo szybko. Preferowane są wolniejsze zmiany", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Sednia całkowita dziennych zmian jest sumą wszystkich zmian glikemii w badanym okresie, podzielonym przez liczbę dni. Mniejsze są lepsze", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Sednia całkowita godzinnych zmian jest sumą wszystkich zmian glikemii w badanym okresie, podzielonym przez liczbę godzin. Mniejsze są lepsze", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">tutaj.", + "Mean Total Daily Change": "Średnia całkowita dziennych zmian", + "Mean Hourly Change": "Średnia całkowita godzinnych zmian", + "FortyFiveDown": "niewielki spadek", + "FortyFiveUp": "niewielki wzrost", + "Flat": "stabilny", + "SingleUp": "wzrost", + "SingleDown": "spada", + "DoubleDown": "szybko spada", + "DoubleUp": "szybko rośnie", + "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 i %2 rozpoczęte od %3.", + "virtAsstBasal": "%1 obecna dawka bazalna %2 J na godzinę", + "virtAsstBasalTemp": "%1 tymczasowa dawka bazalna %2 J na godzinę zakoczy się o %3", + "virtAsstIob": "i masz %1 aktywnej insuliny.", + "virtAsstIobIntent": "Masz %1 aktywnej insuliny", + "virtAsstIobUnits": "%1 jednostek", + "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstPreamble": "twój", + "virtAsstPreamble3person": "%1 ma ", + "virtAsstNoInsulin": "nie", + "virtAsstUploadBattery": "Twoja bateria ma %1", + "virtAsstReservoir": "W zbiorniku pozostało %1 jednostek", + "virtAsstPumpBattery": "Bateria pompy jest w %1 %2", + "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstLastLoop": "Ostatnia pomyślna pętla była %1", + "virtAsstLoopNotAvailable": "Plugin Loop prawdopodobnie nie jest włączona", + "virtAsstLoopForecastAround": "Zgodnie z prognozą pętli, glikemia around %1 będzie podczas następnego %2", + "virtAsstLoopForecastBetween": "Zgodnie z prognozą pętli, glikemia between %1 and %2 będzie podczas następnego %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": "Prognoza pętli nie jest możliwa, z dostępnymi danymi.", + "virtAsstRawBG": "Glikemia RAW wynosi %1", + "virtAsstOpenAPSForecast": "Glikemia prognozowana przez OpenAPS wynosi %1", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Tłuszcz [g]", + "Protein [g]": "Białko [g]", + "Energy [kJ]": "Energia [kJ}", + "Clock Views:": "Widoki zegarów", + "Clock": "Zegar", + "Color": "Kolor", + "Simple": "Prosty", + "TDD average": "Średnia dawka dzienna", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Średnia ilość węglowodanów", + "Eating Soon": "Przed jedzeniem", + "Last entry {0} minutes ago": "Ostatni wpis przed {0} minutami", + "change": "zmiana", + "Speech": "Głos", + "Target Top": "Górny limit", + "Target Bottom": "Dolny limit", + "Canceled": "Anulowane", + "Meter BG": "Glikemia z krwi", + "predicted": "prognoza", + "future": "przyszłość", + "ago": "temu", + "Last data received": "Ostatnie otrzymane dane", + "Clock View": "Widok zegara", + "Protein": "Białko", + "Fat": "Tłuszcz", + "Protein average": "Średnia białka", + "Fat average": "Średnia tłuszczu", + "Total carbs": "Węglowodany ogółem", + "Total protein": "Białko ogółem", + "Total fat": "Tłuszcz ogółem", + "Database Size": "Rozmiar Bazy Danych", + "Database Size near its limits!": "Rozmiar bazy danych zbliża się do limitu!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Baza danych zajmuje %1 MiB z dozwolonych %2 MiB. Proszę zrób kopię zapasową i oczyść bazę danych!", + "Database file size": "Rozmiar pliku bazy danych", + "%1 MiB of %2 MiB (%3%)": "%1 MiB z %2 MiB (%3%)", + "Data size": "Rozmiar danych", + "virtAsstDatabaseSize": "%1 MiB co stanowi %2% przestrzeni dostępnej dla bazy danych", + "virtAsstTitleDatabaseSize": "Rozmiar pliku bazy danych", + "Carbs/Food/Time": "Carbs/Food/Time" +} \ No newline at end of file diff --git a/translations/pt_BR.json b/translations/pt_BR.json new file mode 100644 index 00000000000..43238f7e185 --- /dev/null +++ b/translations/pt_BR.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Escutando porta", + "Mo": "Seg", + "Tu": "Ter", + "We": "Qua", + "Th": "Qui", + "Fr": "Sex", + "Sa": "Sab", + "Su": "Dom", + "Monday": "Segunda", + "Tuesday": "Terça", + "Wednesday": "Quarta", + "Thursday": "Quinta", + "Friday": "Sexta", + "Saturday": "Sábado", + "Sunday": "Domingo", + "Category": "Categoria", + "Subcategory": "Subcategoria", + "Name": "Nome", + "Today": "Hoje", + "Last 2 days": "Últimos 2 dias", + "Last 3 days": "Últimos 3 dias", + "Last week": "Semana passada", + "Last 2 weeks": "Últimas 2 semanas", + "Last month": "Mês passado", + "Last 3 months": "Últimos 3 meses", + "between": "between", + "around": "around", + "and": "and", + "From": "De", + "To": "a", + "Notes": "Notas", + "Food": "Comida", + "Insulin": "Insulina", + "Carbs": "Carboidrato", + "Notes contain": "Notas contém", + "Target BG range bottom": "Limite inferior de glicemia", + "top": "Superior", + "Show": "Mostrar", + "Display": "Visualizar", + "Loading": "Carregando", + "Loading profile": "Carregando perfil", + "Loading status": "Carregando status", + "Loading food database": "Carregando dados de alimentos", + "not displayed": "não mostrado", + "Loading CGM data of": "Carregando dados de CGM de", + "Loading treatments data of": "Carregando dados de tratamento de", + "Processing data of": "Processando dados de", + "Portion": "Porção", + "Size": "Tamanho", + "(none)": "(nenhum)", + "None": "nenhum", + "": "", + "Result is empty": "Resultado vazio", + "Day to day": "Dia a dia", + "Week to week": "Week to week", + "Daily Stats": "Estatísticas diárias", + "Percentile Chart": "Percentis", + "Distribution": "Distribuição", + "Hourly stats": "Estatísticas por hora", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "Resultados semanais", + "No data available": "Não há dados", + "Low": "Baixo", + "In Range": "Na meta", + "Period": "Período", + "High": "Alto", + "Average": "Média", + "Low Quartile": "Quartil inferior", + "Upper Quartile": "Quartil superior", + "Quartile": "Quartil", + "Date": "Data", + "Normal": "Normal", + "Median": "Mediana", + "Readings": "Valores", + "StDev": "DesvPadr", + "Daily stats report": "Relatório diário", + "Glucose Percentile report": "Relatório de Percentis de Glicemia", + "Glucose distribution": "Distribuição de glicemias", + "days total": "dias no total", + "Total per day": "dias no total", + "Overall": "Geral", + "Range": "intervalo", + "% of Readings": "% de valores", + "# of Readings": "N° de valores", + "Mean": "Média", + "Standard Deviation": "Desvio padrão", + "Max": "Máx", + "Min": "Mín", + "A1c estimation*": "HbA1c estimada*", + "Weekly Success": "Resultados semanais", + "There is not sufficient data to run this report. Select more days.": "Não há dados suficientes. Selecione mais dias", + "Using stored API secret hash": "Usando o hash de API existente", + "No API secret hash stored yet. You need to enter API secret.": "Hash de segredo de API inexistente. Insira um segredo de API.", + "Database loaded": "Banco de dados carregado", + "Error: Database failed to load": "Erro: Banco de dados não carregado", + "Error": "Error", + "Create new record": "Criar novo registro", + "Save record": "Salvar registro", + "Portions": "Porções", + "Unit": "Unidade", + "GI": "IG", + "Edit record": "Editar registro", + "Delete record": "Apagar registro", + "Move to the top": "Mover para o topo", + "Hidden": "Oculto", + "Hide after use": "Ocultar após uso", + "Your API secret must be at least 12 characters long": "Seu segredo de API deve conter no mínimo 12 caracteres", + "Bad API secret": "Segredo de API incorreto", + "API secret hash stored": "Segredo de API guardado", + "Status": "Status", + "Not loaded": "Não carregado", + "Food Editor": "Editor de alimentos", + "Your database": "Seu banco de dados", + "Filter": "Filtro", + "Save": "Salvar", + "Clear": "Apagar", + "Record": "Gravar", + "Quick picks": "Seleção rápida", + "Show hidden": "Mostrar ocultos", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Procedimentos", + "Time": "Hora", + "Event Type": "Tipo de evento", + "Blood Glucose": "Glicemia", + "Entered By": "Inserido por", + "Delete this treatment?": "Apagar este procedimento?", + "Carbs Given": "Carboidratos", + "Inzulin Given": "Insulina", + "Event Time": "Hora do evento", + "Please verify that the data entered is correct": "Favor verificar se os dados estão corretos", + "BG": "Glicemia", + "Use BG correction in calculation": "Usar correção de glicemia nos cálculos", + "BG from CGM (autoupdated)": "Glicemia do sensor (Automático)", + "BG from meter": "Glicemia do glicosímetro", + "Manual BG": "Glicemia Manual", + "Quickpick": "Seleção rápida", + "or": "ou", + "Add from database": "Adicionar do banco de dados", + "Use carbs correction in calculation": "Usar correção com carboidratos no cálculo", + "Use COB correction in calculation": "Usar correção de COB no cálculo", + "Use IOB in calculation": "Usar IOB no cálculo", + "Other correction": "Outra correção", + "Rounding": "Arredondamento", + "Enter insulin correction in treatment": "Inserir correção com insulina no tratamento", + "Insulin needed": "Insulina necessária", + "Carbs needed": "Carboidratos necessários", + "Carbs needed if Insulin total is negative value": "Carboidratos necessários se Insulina total for negativa", + "Basal rate": "Taxa basal", + "60 minutes earlier": "60 min antes", + "45 minutes earlier": "45 min antes", + "30 minutes earlier": "30 min antes", + "20 minutes earlier": "20 min antes", + "15 minutes earlier": "15 min antes", + "Time in minutes": "Tempo em minutos", + "15 minutes later": "15 min depois", + "20 minutes later": "20 min depois", + "30 minutes later": "30 min depois", + "45 minutes later": "45 min depois", + "60 minutes later": "60 min depois", + "Additional Notes, Comments": "Notas adicionais e comentários", + "RETRO MODE": "Modo Retrospectivo", + "Now": "Agora", + "Other": "Outro", + "Submit Form": "Enviar formulário", + "Profile Editor": "Editor de perfil", + "Reports": "Relatórios", + "Add food from your database": "Incluir alimento do seu banco de dados", + "Reload database": "Recarregar banco de dados", + "Add": "Adicionar", + "Unauthorized": "Não autorizado", + "Entering record failed": "Entrada de registro falhou", + "Device authenticated": "Dispositivo autenticado", + "Device not authenticated": "Dispositivo não autenticado", + "Authentication status": "Status de autenticação", + "Authenticate": "Autenticar", + "Remove": "Remover", + "Your device is not authenticated yet": "Seu dispositivo ainda não foi autenticado", + "Sensor": "Sensor", + "Finger": "Ponta de dedo", + "Manual": "Manual", + "Scale": "Escala", + "Linear": "Linear", + "Logarithmic": "Logarítmica", + "Logarithmic (Dynamic)": "Logarítmica (Dinâmica)", + "Insulin-on-Board": "Insulina ativa", + "Carbs-on-Board": "Carboidratos ativos", + "Bolus Wizard Preview": "Ajuda de bolus", + "Value Loaded": "Valores carregados", + "Cannula Age": "Idade da Cânula (ICAT)", + "Basal Profile": "Perfil de Basal", + "Silence for 30 minutes": "Silenciar por 30 minutos", + "Silence for 60 minutes": "Silenciar por 60 minutos", + "Silence for 90 minutes": "Silenciar por 90 minutos", + "Silence for 120 minutes": "Silenciar por 120 minutos", + "Settings": "Ajustes", + "Units": "Unidades", + "Date format": "Formato de data", + "12 hours": "12 horas", + "24 hours": "24 horas", + "Log a Treatment": "Registre um tratamento", + "BG Check": "Medida de glicemia", + "Meal Bolus": "Bolus de refeição", + "Snack Bolus": "Bolus de lanche", + "Correction Bolus": "Bolus de correção", + "Carb Correction": "Correção com carboidrato", + "Note": "Nota", + "Question": "Pergunta", + "Exercise": "Exercício", + "Pump Site Change": "Troca de catéter", + "CGM Sensor Start": "Início de sensor", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Troca de sensor", + "Dexcom Sensor Start": "Início de sensor", + "Dexcom Sensor Change": "Troca de sensor", + "Insulin Cartridge Change": "Troca de reservatório de insulina", + "D.A.D. Alert": "Alerta de cão sentinela de diabetes", + "Glucose Reading": "Valor de glicemia", + "Measurement Method": "Método de medida", + "Meter": "Glicosímetro", + "Insulin Given": "Insulina", + "Amount in grams": "Quantidade em gramas", + "Amount in units": "Quantidade em unidades", + "View all treatments": "Visualizar todos os procedimentos", + "Enable Alarms": "Ativar alarmes", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "Quando ativado, um alarme poderá soar", + "Urgent High Alarm": "URGENTE: Alarme de glicemia alta", + "High Alarm": "Alarme de glicemia alta", + "Low Alarm": "Alarme de glicemia baixa", + "Urgent Low Alarm": "URGENTE: Alarme de glicemia baixa", + "Stale Data: Warn": "Dados antigos: alerta", + "Stale Data: Urgent": "Dados antigos: Urgente", + "mins": "min", + "Night Mode": "Modo noturno", + "When enabled the page will be dimmed from 10pm - 6am.": "Se ativado, a página será escurecida entre 22h e 6h", + "Enable": "Ativar", + "Show Raw BG Data": "Mostrar dados de glicemia não processados", + "Never": "Nunca", + "Always": "Sempre", + "When there is noise": "Quando houver ruído", + "When enabled small white dots will be displayed for raw BG data": "Se ativado, pontos brancos representarão os dados de glicemia não processados", + "Custom Title": "Customizar Título", + "Theme": "tema", + "Default": "Padrão", + "Colors": "Colorido", + "Colorblind-friendly colors": "Cores para daltônicos", + "Reset, and use defaults": "Zerar e usar padrões", + "Calibrations": "Calibraçôes", + "Alarm Test / Smartphone Enable": "Testar Alarme / Ativar Smartphone", + "Bolus Wizard": "Ajuda de bolus", + "in the future": "no futuro", + "time ago": "tempo atrás", + "hr ago": "h atrás", + "hrs ago": "h atrás", + "min ago": "min atrás", + "mins ago": "min atrás", + "day ago": "dia atrás", + "days ago": "dias atrás", + "long ago": "muito tempo atrás", + "Clean": "Limpo", + "Light": "Leve", + "Medium": "Médio", + "Heavy": "Pesado", + "Treatment type": "Tipo de tratamento", + "Raw BG": "Glicemia sem processamento", + "Device": "Dispositivo", + "Noise": "Ruído", + "Calibration": "Calibração", + "Show Plugins": "Mostrar les Plugins", + "About": "Sobre", + "Value in": "Valor em", + "Carb Time": "Hora do carboidrato", + "Language": "Língua", + "Add new": "Adicionar novo", + "g": "g", + "ml": "mL", + "pcs": "pcs", + "Drag&drop food here": "Arraste e coloque alimentos aqui", + "Care Portal": "Care Portal", + "Medium/Unknown": "Médio/Desconhecido", + "IN THE FUTURE": "NO FUTURO", + "Update": "Atualizar", + "Order": "Ordenar", + "oldest on top": "mais antigos no topo", + "newest on top": "Mais recentes no topo", + "All sensor events": "Todos os eventos de sensor", + "Remove future items from mongo database": "Remover itens futuro da base de dados mongo", + "Find and remove treatments in the future": "Encontrar e remover tratamentos futuros", + "This task find and remove treatments in the future.": "Este comando encontra e remove tratamentos futuros", + "Remove treatments in the future": "Remover tratamentos futuros", + "Find and remove entries in the future": "Encontrar e remover entradas futuras", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Este comando procura e remove dados de sensor futuros criados por um uploader com data ou horário errados.", + "Remove entries in the future": "Remover entradas futuras", + "Loading database ...": "Carregando banco de dados ...", + "Database contains %1 future records": "O banco de dados contém %1 registros futuros", + "Remove %1 selected records?": "Remover os %1 registros selecionados?", + "Error loading database": "Erro ao carregar danco de dados", + "Record %1 removed ...": "Registro %1 removido ...", + "Error removing record %1": "Erro ao remover registro %1", + "Deleting records ...": "Apagando registros ...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Limpar banco de dados de status no Mongo", + "Delete all documents from devicestatus collection": "Apagar todos os documentos da coleção devicestatus", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Este comando remove todos os documentos da coleção devicestatus. Útil quando o status da bateria do uploader não é atualizado corretamente.", + "Delete all documents": "Apagar todos os documentos", + "Delete all documents from devicestatus collection?": "Apagar todos os documentos da coleção devicestatus?", + "Database contains %1 records": "O banco de dados contém %1 registros", + "All records removed ...": "Todos os registros foram removidos ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Ferramentas de administração", + "Nightscout reporting": "Relatórios do Nightscout", + "Cancel": "Cancelar", + "Edit treatment": "Editar tratamento", + "Duration": "Duração", + "Duration in minutes": "Duração em minutos", + "Temp Basal": "Basal Temporária", + "Temp Basal Start": "Início da Basal Temporária", + "Temp Basal End": "Fim de Basal Temporária", + "Percent": "Porcento", + "Basal change in %": "Mudança de basal em %", + "Basal value": "Valor da basal", + "Absolute basal value": "Valor absoluto da basal", + "Announcement": "Aviso", + "Loading temp basal data": "Carregando os dados de basal temporária", + "Save current record before changing to new?": "Salvar o registro atual antes de mudar para um novo?", + "Profile Switch": "Troca de perfil", + "Profile": "Perfil", + "General profile settings": "Configurações de perfil gerais", + "Title": "Título", + "Database records": "Registros do banco de dados", + "Add new record": "Adicionar novo registro", + "Remove this record": "Remover este registro", + "Clone this record to new": "Duplicar este registro como novo", + "Record valid from": "Registro válido desde", + "Stored profiles": "Perfis guardados", + "Timezone": "Fuso horário", + "Duration of Insulin Activity (DIA)": "Duração da Atividade da Insulina (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.": "Representa a tempo típico durante o qual a insulina tem efeito. Varia de acordo com o paciente e tipo de insulina. Tipicamente 3-4 horas para a maioria das insulinas usadas em bombas e dos pacientes. Algumas vezes chamada de tempo de vida da insulina", + "Insulin to carb ratio (I:C)": "Relação Insulina-Carboidrato (I:C)", + "Hours:": "Horas:", + "hours": "horas", + "g/hour": "g/hora", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g de carboidrato por unidade de insulina. A razão de quantos gramas de carboidrato são processados por cada unidade de insulina.", + "Insulin Sensitivity Factor (ISF)": "Fator de Sensibilidade da Insulina (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL ou mmol/L por unidade de insulina. A razão entre queda glicêmica e cada unidade de insulina de correção administrada.", + "Carbs activity / absorption rate": "Atividade dos carboidratos / taxa de absorção", + "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).": "Gramas por unidade de tempo. Representa a mudança em COB por unidade de tempo, bem como a quantidade de carboidratos que deve ter efeito durante esse período de tempo. Absorção de carboidrato / curvas de atividade são menos conhecidas que atividade de insulina, mas podem ser aproximadas usando um atraso inicial seguido de uma taxa de absorção constante (g/h). ", + "Basal rates [unit/hour]": "Taxas de basal [unidades/hora]", + "Target BG range [mg/dL,mmol/L]": "Meta de glicemia [mg/dL, mmol/L]", + "Start of record validity": "Início da validade dos dados", + "Icicle": "Inverso", + "Render Basal": "Renderizar basal", + "Profile used": "Perfil utilizado", + "Calculation is in target range.": "O cálculo está dentro da meta", + "Loading profile records ...": "Carregando dados do perfil ...", + "Values loaded.": "Valores carregados.", + "Default values used.": "Valores padrão em uso.", + "Error. Default values used.": "Erro. Valores padrão em uso.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Os intervalos de tempo da meta inferior e da meta superior não conferem. Os valores padrão serão restaurados.", + "Valid from:": "Válido desde:", + "Save current record before switching to new?": "Salvar os dados atuais antes de mudar para um novo?", + "Add new interval before": "Adicionar novo intervalo antes de", + "Delete interval": "Apagar intervalo", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Bolus duplo", + "Difference": "Diferença", + "New time": "Novo horário", + "Edit Mode": "Modo de edição", + "When enabled icon to start edit mode is visible": "Quando ativado, o ícone iniciar modo de edição estará visível", + "Operation": "Operação", + "Move": "Mover", + "Delete": "Apagar", + "Move insulin": "Mover insulina", + "Move carbs": "Mover carboidratos", + "Remove insulin": "Remover insulina", + "Remove carbs": "Remover carboidratos", + "Change treatment time to %1 ?": "Alterar horário do tratamento para %1 ?", + "Change carbs time to %1 ?": "Alterar horário do carboidrato para %1 ?", + "Change insulin time to %1 ?": "Alterar horário da insulina para %1 ?", + "Remove treatment ?": "Remover tratamento?", + "Remove insulin from treatment ?": "Remover insulina do tratamento?", + "Remove carbs from treatment ?": "Remover carboidratos do tratamento?", + "Rendering": "Renderizando", + "Loading OpenAPS data of": "Carregando dados de OpenAPS de", + "Loading profile switch data": "Carregando dados de troca de perfil", + "Redirecting you to the Profile Editor to create a new profile.": "Configuração de perfil incorreta. \nNão há perfil definido para mostrar o horário. \nRedirecionando para o editor de perfil para criar um perfil novo.", + "Pump": "Bomba", + "Sensor Age": "Idade do sensor", + "Insulin Age": "Idade da insulina", + "Temporary target": "Meta temporária", + "Reason": "Razão", + "Eating soon": "Refeição em breve", + "Top": "Superior", + "Bottom": "Inferior", + "Activity": "Atividade", + "Targets": "Metas", + "Bolus insulin:": "Insulina de bolus", + "Base basal insulin:": "Insulina basal programada:", + "Positive temp basal insulin:": "Insulina basal temporária positiva:", + "Negative temp basal insulin:": "Insulina basal temporária negativa:", + "Total basal insulin:": "Insulina basal total:", + "Total daily insulin:": "Insulina diária total:", + "Unable to %1 Role": "Função %1 não foi possível", + "Unable to delete Role": "Não foi possível apagar a Função", + "Database contains %1 roles": "Banco de dados contém %1 Funções", + "Edit Role": "Editar Função", + "admin, school, family, etc": "Administrador, escola, família, etc", + "Permissions": "Permissões", + "Are you sure you want to delete: ": "Tem certeza de que deseja apagar:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Cada função terá uma ou mais permissões. A permissão * é um wildcard, permissões são uma hierarquia utilizando * como um separador.", + "Add new Role": "Adicionar novo Papel", + "Roles - Groups of People, Devices, etc": "Funções - grupos de pessoas, dispositivos, etc", + "Edit this role": "Editar esta Função", + "Admin authorized": "Administrador autorizado", + "Subjects - People, Devices, etc": "Assunto - Pessoas, dispositivos, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Cada assunto terá um único token de acesso e uma ou mais Funções. Clique no token de acesso para abrir uma nova visualização com o assunto selecionado. Este link secreto poderá então ser compartilhado", + "Add new Subject": "Adicionar novo assunto", + "Unable to %1 Subject": "Impossível postar %1 assunto", + "Unable to delete Subject": "Impossível apagar assunto", + "Database contains %1 subjects": "Banco de dados contém %1 assuntos", + "Edit Subject": "Editar assunto", + "person, device, etc": "Pessoa, dispositivo, etc", + "role1, role2": "papel1, papel2", + "Edit this subject": "Editar esse assunto", + "Delete this subject": "Apagar esse assunto", + "Roles": "Papéis", + "Access Token": "Token de acesso", + "hour ago": "hora atrás", + "hours ago": "horas atrás", + "Silence for %1 minutes": "Silencir por %1 minutos", + "Check BG": "Verifique a glicemia", + "BASAL": "BASAL", + "Current basal": "Basal atual", + "Sensitivity": "Fator de sensibilidade", + "Current Carb Ratio": "Relação insulina:carboidrato atual", + "Basal timezone": "Fuso horário da basal", + "Active profile": "Perfil ativo", + "Active temp basal": "Basal temporária ativa", + "Active temp basal start": "Início da basal temporária ativa", + "Active temp basal duration": "Duração de basal temporária ativa", + "Active temp basal remaining": "Basal temporária ativa restante", + "Basal profile value": "Valor do perfil basal", + "Active combo bolus": "Bolus duplo em atividade", + "Active combo bolus start": "Início do bolus duplo em atividade", + "Active combo bolus duration": "Duração de bolus duplo em atividade", + "Active combo bolus remaining": "Restante de bolus duplo em atividade", + "BG Delta": "Diferença de glicemia", + "Elapsed Time": "Tempo transcorrido", + "Absolute Delta": "Diferença absoluta", + "Interpolated": "Interpolado", + "BWP": "Ajuda de bolus", + "Urgent": "Urgente", + "Warning": "Aviso", + "Info": "Informações", + "Lowest": "Mais baixo", + "Snoozing high alarm since there is enough IOB": "Ignorar alarme de hiper em função de IOB suficiente", + "Check BG, time to bolus?": "Meça a glicemia, hora de bolus de correção?", + "Notice": "Nota", + "required info missing": "Informação essencial faltando", + "Insulin on Board": "Insulina ativa", + "Current target": "Meta atual", + "Expected effect": "Efeito esperado", + "Expected outcome": "Resultado esperado", + "Carb Equivalent": "Equivalente em carboidratos", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Excesso de insulina equivalente a %1U além do necessário para atingir a meta inferior, sem levar em conta carboidratos", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Excesso de insulina equivalente a %1U além do necessário para atingir a meta inferior. ASSEGURE-SE DE QUE A IOB ESTEJA COBERTA POR CARBOIDRATOS", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Necessária redução de %1U na insulina ativa para atingir a meta inferior, excesso de basal?", + "basal adjustment out of range, give carbs?": "ajuste de basal fora da meta, dar carboidrato?", + "basal adjustment out of range, give bolus?": "ajuste de basal fora da meta, dar bolus de correção?", + "above high": "acima do limite superior", + "below low": "abaixo do limite inferior", + "Projected BG %1 target": "Meta de glicemia estimada %1", + "aiming at": "meta", + "Bolus %1 units": "Bolus %1 unidades", + "or adjust basal": "ou ajuste basal", + "Check BG using glucometer before correcting!": "Verifique glicemia de ponta de dedo antes de corrigir!", + "Basal reduction to account %1 units:": "Redução de basal para compensar %1 unidades:", + "30m temp basal": "Basal temp 30m", + "1h temp basal": "Basal temp 1h", + "Cannula change overdue!": "Substituição de catéter vencida!", + "Time to change cannula": "Hora de subistituir catéter", + "Change cannula soon": "Substituir catéter em breve", + "Cannula age %1 hours": "Idade do catéter %1 horas", + "Inserted": "Inserido", + "CAGE": "ICAT", + "COB": "COB", + "Last Carbs": "Último carboidrato", + "IAGE": "IddI", + "Insulin reservoir change overdue!": "Substituição de reservatório vencida!", + "Time to change insulin reservoir": "Hora de substituir reservatório", + "Change insulin reservoir soon": "Substituir reservatório em brave", + "Insulin reservoir age %1 hours": "Idade do reservatório %1 horas", + "Changed": "Substituído", + "IOB": "IOB", + "Careportal IOB": "IOB do Careportal", + "Last Bolus": "Último bolus", + "Basal IOB": "IOB basal", + "Source": "Fonte", + "Stale data, check rig?": "Dados antigos, verificar uploader?", + "Last received:": "Último recebido:", + "%1m ago": "%1m atrás", + "%1h ago": "%1h atrás", + "%1d ago": "%1d atrás", + "RETRO": "RETRO", + "SAGE": "IddS", + "Sensor change/restart overdue!": "Substituição/reinício de sensor vencido", + "Time to change/restart sensor": "Hora de substituir/reiniciar sensor", + "Change/restart sensor soon": "Mudar/reiniciar sensor em breve", + "Sensor age %1 days %2 hours": "Idade do sensor %1 dias %2 horas", + "Sensor Insert": "Inserção de sensor", + "Sensor Start": "Início de sensor", + "days": "dias", + "Insulin distribution": "Insulin distribution", + "To see this report, press SHOW while in this view": "To see this report, press SHOW while in this view", + "AR2 Forecast": "AR2 Forecast", + "OpenAPS Forecasts": "OpenAPS Forecasts", + "Temporary Target": "Temporary Target", + "Temporary Target Cancel": "Temporary Target Cancel", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "Profiles", + "Time in fluctuation": "Time in fluctuation", + "Time in rapid fluctuation": "Time in rapid fluctuation", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:", + "Filter by hours": "Filter by hours", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">can be found here.", + "Mean Total Daily Change": "Mean Total Daily Change", + "Mean Hourly Change": "Mean Hourly Change", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Fat [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energy [kJ]", + "Clock Views:": "Clock Views:", + "Clock": "Clock", + "Color": "Color", + "Simple": "Simple", + "TDD average": "TDD average", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Carbs average", + "Eating Soon": "Eating Soon", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "change", + "Speech": "Speech", + "Target Top": "Target Top", + "Target Bottom": "Target Bottom", + "Canceled": "Canceled", + "Meter BG": "Meter BG", + "predicted": "predicted", + "future": "future", + "ago": "ago", + "Last data received": "Last data received", + "Clock View": "Clock View", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/ro_RO.json b/translations/ro_RO.json new file mode 100644 index 00000000000..c67d9ce9f91 --- /dev/null +++ b/translations/ro_RO.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Activ pe portul", + "Mo": "Lu", + "Tu": "Ma", + "We": "Mie", + "Th": "Jo", + "Fr": "Vi", + "Sa": "Sa", + "Su": "Du", + "Monday": "Luni", + "Tuesday": "Marți", + "Wednesday": "Miercuri", + "Thursday": "Joi", + "Friday": "Vineri", + "Saturday": "Sâmbătă", + "Sunday": "Duminică", + "Category": "Categorie", + "Subcategory": "Subcategorie", + "Name": "Nume", + "Today": "Astăzi", + "Last 2 days": "Ultimele 2 zile", + "Last 3 days": "Ultimele 3 zile", + "Last week": "Săptămâna trecută", + "Last 2 weeks": "Ultimele 2 săptămâni", + "Last month": "Ultima lună", + "Last 3 months": "Ultimele 3 luni", + "between": "between", + "around": "around", + "and": "and", + "From": "De la", + "To": "La", + "Notes": "Note", + "Food": "Mâncare", + "Insulin": "Insulină", + "Carbs": "Carbohidrați", + "Notes contain": "Conținut note", + "Target BG range bottom": "Limită de jos a glicemiei", + "top": "Sus", + "Show": "Arată", + "Display": "Afișează", + "Loading": "Se încarcă", + "Loading profile": "Încarc profilul", + "Loading status": "Încarc statusul", + "Loading food database": "Încarc baza de date de alimente", + "not displayed": "neafișat", + "Loading CGM data of": "Încarc datele CGM ale lui", + "Loading treatments data of": "Încarc datele despre tratament pentru", + "Processing data of": "Procesez datele pentru", + "Portion": "Porție", + "Size": "Mărime", + "(none)": "(fără)", + "None": "fără", + "": "", + "Result is empty": "Fără rezultat", + "Day to day": "Zi cu zi", + "Week to week": "Week to week", + "Daily Stats": "Statistici zilnice", + "Percentile Chart": "Grafic percentile", + "Distribution": "Distribuție", + "Hourly stats": "Statistici orare", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "Rezultate săptămânale", + "No data available": "Fără date", + "Low": "Prea jos", + "In Range": "În interval", + "Period": "Perioada", + "High": "Prea sus", + "Average": "Media", + "Low Quartile": "Pătrime inferioară", + "Upper Quartile": "Pătrime superioară", + "Quartile": "Pătrime", + "Date": "Data", + "Normal": "Normal", + "Median": "Mediană", + "Readings": "Valori", + "StDev": "Standarddeviation", + "Daily stats report": "Raport statistică zilnică", + "Glucose Percentile report": "Raport percentile glicemii", + "Glucose distribution": "Distribuție glicemie", + "days total": "total zile", + "Total per day": "total zile", + "Overall": "General", + "Range": "Interval", + "% of Readings": "% de valori", + "# of Readings": "nr. de valori", + "Mean": "Medie", + "Standard Deviation": "Deviație standard", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "HbA1C estimată", + "Weekly Success": "Rezultate săptămânale", + "There is not sufficient data to run this report. Select more days.": "Nu sunt sufieciente date pentru acest raport. Selectați mai multe zile.", + "Using stored API secret hash": "Utilizez cheie API secretă", + "No API secret hash stored yet. You need to enter API secret.": "Încă nu există cheie API secretă. Aceasta trebuie introdusă.", + "Database loaded": "Baza de date încărcată", + "Error: Database failed to load": "Eroare: Nu s-a încărcat baza de date", + "Error": "Error", + "Create new record": "Crează înregistrare nouă", + "Save record": "Salvează înregistrarea", + "Portions": "Porții", + "Unit": "Unități", + "GI": "CI", + "Edit record": "Editează înregistrarea", + "Delete record": "Șterge înregistrarea", + "Move to the top": "Mergi la început", + "Hidden": "Ascuns", + "Hide after use": "Ascunde după folosireaa", + "Your API secret must be at least 12 characters long": "Cheia API trebuie să aibă mai mult de 12 caractere", + "Bad API secret": "Cheie API greșită", + "API secret hash stored": "Cheie API înregistrată", + "Status": "Status", + "Not loaded": "Neîncărcat", + "Food Editor": "Editor alimente", + "Your database": "Baza de date", + "Filter": "Filtru", + "Save": "Salvează", + "Clear": "Inițializare", + "Record": "Înregistrare", + "Quick picks": "Selecție rapidă", + "Show hidden": "Arată înregistrările ascunse", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Tratamente", + "Time": "Ora", + "Event Type": "Tip eveniment", + "Blood Glucose": "Glicemie", + "Entered By": "Introdus de", + "Delete this treatment?": "Șterge acest eveniment?", + "Carbs Given": "Carbohidrați", + "Inzulin Given": "Insulină administrată", + "Event Time": "Ora evenimentului", + "Please verify that the data entered is correct": "Verificați conexiunea datelor introduse", + "BG": "Glicemie", + "Use BG correction in calculation": "Folosește corecția de glicemie în calcule", + "BG from CGM (autoupdated)": "Glicemie în senzor (automat)", + "BG from meter": "Glicemie în glucometru", + "Manual BG": "Glicemie manuală", + "Quickpick": "Selecție rapidă", + "or": "sau", + "Add from database": "Adaugă din baza de date", + "Use carbs correction in calculation": "Folosește corecția de carbohidrați în calcule", + "Use COB correction in calculation": "Folosește COB în calcule", + "Use IOB in calculation": "Folosește IOB în calcule", + "Other correction": "Alte corecții", + "Rounding": "Rotunjire", + "Enter insulin correction in treatment": "Introdu corecția de insulină în tratament", + "Insulin needed": "Necesar insulină", + "Carbs needed": "Necesar carbohidrați", + "Carbs needed if Insulin total is negative value": "Carbohidrați când necesarul de insulină este negativ", + "Basal rate": "Rata bazală", + "60 minutes earlier": "acum 60 min", + "45 minutes earlier": "acum 45 min", + "30 minutes earlier": "acum 30 min", + "20 minutes earlier": "acum 20 min", + "15 minutes earlier": "acum 15 min", + "Time in minutes": "Timp în minute", + "15 minutes later": "după 15 min", + "20 minutes later": "după 20 min", + "30 minutes later": "după 30 min", + "45 minutes later": "după 45 min", + "60 minutes later": "după 60 min", + "Additional Notes, Comments": "Note adiționale, comentarii", + "RETRO MODE": "MOD RETROSPECTIV", + "Now": "Acum", + "Other": "Altul", + "Submit Form": "Trimite formularul", + "Profile Editor": "Editare profil", + "Reports": "Instrumente raportare", + "Add food from your database": "Adaugă alimente din baza de date", + "Reload database": "Reîncarcă baza de date", + "Add": "Adaugă", + "Unauthorized": "Neautorizat", + "Entering record failed": "Înregistrare eșuată", + "Device authenticated": "Dispozitiv autentificat", + "Device not authenticated": "Dispozitiv neautentificat", + "Authentication status": "Starea autentificării", + "Authenticate": "Autentificare", + "Remove": "Șterge", + "Your device is not authenticated yet": "Dispozitivul nu este autentificat încă", + "Sensor": "Senzor", + "Finger": "Deget", + "Manual": "Manual", + "Scale": "Scală", + "Linear": "Liniar", + "Logarithmic": "Logaritmic", + "Logarithmic (Dynamic)": "Logaritmic (Dinamic)", + "Insulin-on-Board": "IOB-Insulină activă", + "Carbs-on-Board": "COB-Carbohidrați activi", + "Bolus Wizard Preview": "BWP-Sugestie de bolusare", + "Value Loaded": "Valoare încărcată", + "Cannula Age": "CAGE-Vechime canulă", + "Basal Profile": "Profil bazală", + "Silence for 30 minutes": "Ignoră pentru 30 minute", + "Silence for 60 minutes": "Ignoră pentru 60 minute", + "Silence for 90 minutes": "Ignoră pentru 90 minure", + "Silence for 120 minutes": "Ignoră pentru 120 minute", + "Settings": "Setări", + "Units": "Unități", + "Date format": "Formatul datei", + "12 hours": "12 ore", + "24 hours": "24 ore", + "Log a Treatment": "Înregistrează un eveniment", + "BG Check": "Verificare glicemie", + "Meal Bolus": "Bolus masă", + "Snack Bolus": "Bolus gustare", + "Correction Bolus": "Bolus corecție", + "Carb Correction": "Corecție de carbohidrați", + "Note": "Notă", + "Question": "Întrebare", + "Exercise": "Activitate fizică", + "Pump Site Change": "Schimbare loc pompă", + "CGM Sensor Start": "Start senzor", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Schimbare senzor", + "Dexcom Sensor Start": "Pornire senzor Dexcom", + "Dexcom Sensor Change": "Schimbare senzor Dexcom", + "Insulin Cartridge Change": "Schimbare cartuș insulină", + "D.A.D. Alert": "Alertă câine de serviciu", + "Glucose Reading": "Valoare glicemie", + "Measurement Method": "Metodă măsurare", + "Meter": "Glucometru", + "Insulin Given": "Insulină administrată", + "Amount in grams": "Cantitate în grame", + "Amount in units": "Cantitate în unități", + "View all treatments": "Vezi toate evenimentele", + "Enable Alarms": "Activează alarmele", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "Când este activ, poate suna o alarmă.", + "Urgent High Alarm": "Alarmă urgentă hiper", + "High Alarm": "Alarmă hiper", + "Low Alarm": "Alarmă hipo", + "Urgent Low Alarm": "Alarmă urgentă hipo", + "Stale Data: Warn": "Date învechite: alertă", + "Stale Data: Urgent": "Date învechite: urgent", + "mins": "min", + "Night Mode": "Mod nocturn", + "When enabled the page will be dimmed from 10pm - 6am.": "La activare va scădea iluminarea între 22 și 6", + "Enable": "Activează", + "Show Raw BG Data": "Afișează date primare glicemie", + "Never": "Niciodată", + "Always": "Întotdeauna", + "When there is noise": "Atunci când este diferență", + "When enabled small white dots will be displayed for raw BG data": "La activare vor apărea puncte albe reprezentând citirea brută a glicemiei", + "Custom Title": "Titlu particularizat", + "Theme": "Temă", + "Default": "Implicită", + "Colors": "Colorată", + "Colorblind-friendly colors": "Culori pentru cei cu deficiențe de vedere", + "Reset, and use defaults": "Resetează și folosește setările implicite", + "Calibrations": "Calibrări", + "Alarm Test / Smartphone Enable": "Teste alarme / Activează pe smartphone", + "Bolus Wizard": "Calculator sugestie bolus", + "in the future": "în viitor", + "time ago": "în trecut", + "hr ago": "oră în trecut", + "hrs ago": "h în trecut", + "min ago": "minut în trecut", + "mins ago": "minute în trecut", + "day ago": "zi în trecut", + "days ago": "zile în trecut", + "long ago": "timp în trecut", + "Clean": "Curat", + "Light": "Ușor", + "Medium": "Mediu", + "Heavy": "Puternic", + "Treatment type": "Tip tratament", + "Raw BG": "Citire brută a glicemiei", + "Device": "Dispozitiv", + "Noise": "Zgomot", + "Calibration": "Calibrare", + "Show Plugins": "Arată plugin-urile", + "About": "Despre", + "Value in": "Valoare în", + "Carb Time": "Ora carbohidrați", + "Language": "Limba", + "Add new": "Adaugă nou", + "g": "g", + "ml": "ml", + "pcs": "buc", + "Drag&drop food here": "Drag&drop aliment aici", + "Care Portal": "Care Portal", + "Medium/Unknown": "Mediu/Necunoscut", + "IN THE FUTURE": "ÎN VIITOR", + "Update": "Actualizare", + "Order": "Sortare", + "oldest on top": "mai vechi primele", + "newest on top": "mai noi primele", + "All sensor events": "Evenimente legate de senzor", + "Remove future items from mongo database": "Șterge date din viitor din baza de date mongo", + "Find and remove treatments in the future": "Caută și elimină tratamente din viitor", + "This task find and remove treatments in the future.": "Acest instrument curăță tratamentele din viitor.", + "Remove treatments in the future": "Șterge tratamentele din viitor", + "Find and remove entries in the future": "Caută și elimină valorile din viitor", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Instrument de căutare și eliminare a datelor din viitor, create de uploader cu ora setată greșit", + "Remove entries in the future": "Elimină înregistrările din viitor", + "Loading database ...": "Încarc baza de date", + "Database contains %1 future records": "Baza de date conține %1 înregistrări din viitor", + "Remove %1 selected records?": "Șterg %1 înregistrări selectate?", + "Error loading database": "Eroare la încărcarea bazei de date", + "Record %1 removed ...": "Înregistrarea %1 a fost ștearsă...", + "Error removing record %1": "Eroare la ștergerea înregistrării %1", + "Deleting records ...": "Se șterg înregistrările...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Curăță tabela despre status din Mongo", + "Delete all documents from devicestatus collection": "Șterge toate documentele din colecția de status dispozitiv", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele din colecția devicestatus. Se folosește când încărcarea bateriei nu se afișează corect.", + "Delete all documents": "Șterge toate documentele", + "Delete all documents from devicestatus collection?": "Șterg toate documentele din colecția devicestatus?", + "Database contains %1 records": "Baza de date conține %1 înregistrări", + "All records removed ...": "Toate înregistrările au fost șterse.", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Instrumente de administrare", + "Nightscout reporting": "Rapoarte Nightscout", + "Cancel": "Renunță", + "Edit treatment": "Modifică înregistrarea", + "Duration": "Durata", + "Duration in minutes": "Durata în minute", + "Temp Basal": "Bazală temporară", + "Temp Basal Start": "Start bazală temporară", + "Temp Basal End": "Sfârșit bazală temporară", + "Percent": "Procent", + "Basal change in %": "Bazală schimbată în %", + "Basal value": "Valoare bazală", + "Absolute basal value": "Valoare absolută bazală", + "Announcement": "Anunț", + "Loading temp basal data": "Se încarcă date bazală temporară", + "Save current record before changing to new?": "Salvez înregistrarea curentă înainte de a trece mai departe?", + "Profile Switch": "Schimbă profilul", + "Profile": "Profil", + "General profile settings": "Setări generale profil", + "Title": "Titlu", + "Database records": "Înregistrări", + "Add new record": "Adaugă înregistrare nouă", + "Remove this record": "Șterge această înregistrare", + "Clone this record to new": "Duplică această înregistrare", + "Record valid from": "Înregistare validă de la", + "Stored profiles": "Profile salvate", + "Timezone": "Fus orar", + "Duration of Insulin Activity (DIA)": "Durata de acțiune a insulinei", + "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.": "Reprezintă durata tipică pentru care insulina are efect. Este diferită la fiecare pacient și pentru fiecare tip de insulină", + "Insulin to carb ratio (I:C)": "Rată insulină la carbohidrați (ICR)", + "Hours:": "Ore:", + "hours": "ore", + "g/hour": "g/oră", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g carbohidrați pentru o unitate de insulină. Câte grame de carbohidrați sunt acoperite de 1U insulină.", + "Insulin Sensitivity Factor (ISF)": "Factor de sensilibtate la insulină (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL sau mmol/L pentru 1U insulină. Cât de mult influențează glicemia o corecție de o unitate de insulină.", + "Carbs activity / absorption rate": "Rata de absorbție", + "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).": "grame pe unitatea de timp. Reprezintă atât schimbarea COB pe unitatea de timp, cât și cantitatea de carbohidrați care ar influența în perioada de timp. Graficele ratei de absorbție sunt mai puțin înțelese decât senzitivitatea la insulină, dar se poate aproxima folosind o întârziere implicită și apoi o rată constantă de aborbție (g/h).", + "Basal rates [unit/hour]": "Rata bazală [unitate/oră]", + "Target BG range [mg/dL,mmol/L]": "Intervalul țintă al glicemiei [mg/dL, mmol/L]", + "Start of record validity": "De când este valabilă înregistrarea", + "Icicle": "Țurțure", + "Render Basal": "Afișează bazala", + "Profile used": "Profil folosit", + "Calculation is in target range.": "Calculul dă o valoare în intervalul țintă.", + "Loading profile records ...": "Se încarcă datele profilului...", + "Values loaded.": "Valorile au fost încărcate.", + "Default values used.": "Se folosesc valorile implicite.", + "Error. Default values used.": "Eroare. Se folosesc valorile implicite.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Intervalele temporale pentru țintă_inferioară și țintă_superioară nu se potrivesc. Se folosesc valorile implicite.", + "Valid from:": "Valid de la:", + "Save current record before switching to new?": "Salvez valoarea curentă înainte de a trece la una nouă?", + "Add new interval before": "Adaugă un nou interval înainte", + "Delete interval": "Șterge interval", + "I:C": "ICR", + "ISF": "ISF", + "Combo Bolus": "Bolus extins", + "Difference": "Diferență", + "New time": "Oră nouă", + "Edit Mode": "Mod editare", + "When enabled icon to start edit mode is visible": "La activare, butonul de editare este vizibil", + "Operation": "Operațiune", + "Move": "Mutați", + "Delete": "Ștergeți", + "Move insulin": "Mutați insulina", + "Move carbs": "Mutați carbohidrații", + "Remove insulin": "Ștergeți insulina", + "Remove carbs": "Ștergeți carbohidrații", + "Change treatment time to %1 ?": "Schimbați ora acțiunii cu %1 ?", + "Change carbs time to %1 ?": "Schimbați ora carbohidraților cu %1 ?", + "Change insulin time to %1 ?": "Schimbați ora insulinei cu %1 ?", + "Remove treatment ?": "Ștergeți acțiunea?", + "Remove insulin from treatment ?": "Ștergeți insulina din acțiune?", + "Remove carbs from treatment ?": "Ștergeți carbohidrații din acțiune?", + "Rendering": "Se desenează", + "Loading OpenAPS data of": "Se încarcă datele OpenAPS pentru", + "Loading profile switch data": "Se încarcă datele de schimbare profil", + "Redirecting you to the Profile Editor to create a new profile.": "Setare de profil eronată.\nNu este definit niciun profil pentru perioada afișată.\nMergeți la editorul de profiluri pentru a defini unul nou.", + "Pump": "Pompă", + "Sensor Age": "Vechimea senzorului", + "Insulin Age": "Vechimea insulinei", + "Temporary target": "Țintă temporară", + "Reason": "Motiv", + "Eating soon": "Mâncare în curând", + "Top": "Deasupra", + "Bottom": "Sub", + "Activity": "Activitate", + "Targets": "Ținte", + "Bolus insulin:": "Insulină bolusată:", + "Base basal insulin:": "Bazala obișnuită:", + "Positive temp basal insulin:": "Bazala temporară marită:", + "Negative temp basal insulin:": "Bazala temporară micșorată:", + "Total basal insulin:": "Bazala totală:", + "Total daily insulin:": "Insulina totală zilnică:", + "Unable to %1 Role": "Imposibil de %1 Rolul", + "Unable to delete Role": "Imposibil de șters Rolul", + "Database contains %1 roles": "Baza de date conține %1 rol(uri)", + "Edit Role": "Editează Rolul", + "admin, school, family, etc": "administrator, școală, familie, etc", + "Permissions": "Permisiuni", + "Are you sure you want to delete: ": "Confirmați ștergerea: ", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Fiecare rol va avea cel puțin o permisiune. Permisiunea * este totală, permisiunile sunt ierarhice utilizând : pe post de separator.", + "Add new Role": "Adaugă un Rol nou", + "Roles - Groups of People, Devices, etc": "Roluri - Grupuri de persoane, dispozitive, etc", + "Edit this role": "Editează acest rol", + "Admin authorized": "Autorizat de admin", + "Subjects - People, Devices, etc": "Subiecte - Persoane, dispozitive, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Fiecare subiect va avea o cheie unică de acces și unul sau mai multe roluri. Apăsați pe cheia de acces pentru a vizualiza subiectul selectat, acest link poate fi distribuit.", + "Add new Subject": "Adaugă un Subiect nou", + "Unable to %1 Subject": "Imposibil de %1 Subiectul", + "Unable to delete Subject": "Imposibil de șters Subiectul", + "Database contains %1 subjects": "Baza de date are %1 subiecți", + "Edit Subject": "Editează Subiectul", + "person, device, etc": "persoană, dispozitiv, etc", + "role1, role2": "Rol1, Rol2", + "Edit this subject": "Editează acest subiect", + "Delete this subject": "Șterge acest subiect", + "Roles": "Roluri", + "Access Token": "Cheie de acces", + "hour ago": "oră în trecut", + "hours ago": "ore în trecut", + "Silence for %1 minutes": "Liniște pentru %1 minute", + "Check BG": "Verificați glicemia", + "BASAL": "Bazală", + "Current basal": "Bazala curentă", + "Sensitivity": "Sensibilitate la insulină (ISF)", + "Current Carb Ratio": "Raport Insulină:Carbohidrați (ICR)", + "Basal timezone": "Fus orar pentru bazală", + "Active profile": "Profilul activ", + "Active temp basal": "Bazală temporară activă", + "Active temp basal start": "Start bazală temporară activă", + "Active temp basal duration": "Durata bazalei temporare active", + "Active temp basal remaining": "Rest de bazală temporară activă", + "Basal profile value": "Valoarea profilului bazalei", + "Active combo bolus": "Bolus combinat activ", + "Active combo bolus start": "Start bolus combinat activ", + "Active combo bolus duration": "Durată bolus combinat activ", + "Active combo bolus remaining": "Rest de bolus combinat activ", + "BG Delta": "Diferență glicemie", + "Elapsed Time": "Timp scurs", + "Absolute Delta": "Diferență absolută", + "Interpolated": "Interpolat", + "BWP": "Ajutor bolusare (BWP)", + "Urgent": "Urgent", + "Warning": "Atenție", + "Info": "Informație", + "Lowest": "Cea mai mică", + "Snoozing high alarm since there is enough IOB": "Ignoră alarma de hiper deoarece este suficientă insulină activă IOB", + "Check BG, time to bolus?": "Verifică glicemia, poate este necesar un bolus?", + "Notice": "Notificare", + "required info missing": "Informații importante lipsă", + "Insulin on Board": "Insulină activă (IOB)", + "Current target": "Țintă curentă", + "Expected effect": "Efect presupus", + "Expected outcome": "Rezultat așteptat", + "Carb Equivalent": "Echivalență în carbohidrați", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Insulină în exces: %1U mai mult decât este necesar pentru a atinge ținta inferioară, fără a ține cont de carbohidrați", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Insulină în exces: %1U mai mult decât este necesar pentru a atinge ținta inferioară, ASIGURAȚI-VĂ CĂ INSULINA ESTE ACOPERITĂ DE CARBOHIDRAȚI", + "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U sunt în plus ca insulină activă pentru a atinge ținta inferioară, bazala este prea mare?", + "basal adjustment out of range, give carbs?": "ajustarea bazalei duce în afara intervalului țintă. Suplimentați carbohirații?", + "basal adjustment out of range, give bolus?": "ajustarea bazalei duce în afara intervalului țintă. Suplimentați insulina?", + "above high": "peste ținta superioară", + "below low": "sub ținta inferioară", + "Projected BG %1 target": "Glicemie estimată %1 în țintă", + "aiming at": "ținta este", + "Bolus %1 units": "Bolus de %1 unități", + "or adjust basal": "sau ajustează bazala", + "Check BG using glucometer before correcting!": "Verifică glicemia cu glucometrul înainte de a face o corecție!", + "Basal reduction to account %1 units:": "Reducere bazală pentru a compensa %1 unități:", + "30m temp basal": "bazală temporară de 30 minute", + "1h temp basal": "bazală temporară de 1 oră", + "Cannula change overdue!": "Depășire termen schimbare canulă!", + "Time to change cannula": "Este vremea să schimbați canula", + "Change cannula soon": "Schimbați canula în curând", + "Cannula age %1 hours": "Vechimea canulei în ore: %1", + "Inserted": "Inserat", + "CAGE": "VC", + "COB": "COB", + "Last Carbs": "Ultimii carbohidrați", + "IAGE": "VI", + "Insulin reservoir change overdue!": "Termenul de schimbare a rezervorului de insulină a fost depășit", + "Time to change insulin reservoir": "Este timpul pentru schimbarea rezervorului de insulină", + "Change insulin reservoir soon": "Rezervorul de insulină trebuie schimbat în curând", + "Insulin reservoir age %1 hours": "Vârsta reservorului de insulină %1 ore", + "Changed": "Schimbat", + "IOB": "IOB", + "Careportal IOB": "IOB în Careportal", + "Last Bolus": "Ultimul bolus", + "Basal IOB": "IOB bazală", + "Source": "Sursă", + "Stale data, check rig?": "Date învechite, verificați uploaderul!", + "Last received:": "Ultimile date:", + "%1m ago": "acum %1 minute", + "%1h ago": "acum %1 ore", + "%1d ago": "acum %1 zile", + "RETRO": "VECHI", + "SAGE": "VS", + "Sensor change/restart overdue!": "Depășire termen schimbare/restart senzor!", + "Time to change/restart sensor": "Este timpul pentru schimbarea senzorului", + "Change/restart sensor soon": "Schimbați/restartați senzorul în curând", + "Sensor age %1 days %2 hours": "Senzori vechi de %1 zile și %2 ore", + "Sensor Insert": "Inserția senzorului", + "Sensor Start": "Pornirea senzorului", + "days": "zile", + "Insulin distribution": "Distribuția de insulină", + "To see this report, press SHOW while in this view": "Pentru a vedea acest raport, apăsați butonul SHOW", + "AR2 Forecast": "Predicție AR2", + "OpenAPS Forecasts": "Predicții OpenAPS", + "Temporary Target": "Țintă temporară", + "Temporary Target Cancel": "Renunțare la ținta temporară", + "OpenAPS Offline": "OpenAPS deconectat", + "Profiles": "Profile", + "Time in fluctuation": "Timp în fluctuație", + "Time in rapid fluctuation": "Timp în fluctuație rapidă", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Aceasta este doar o aproximare brută, care poate fi foarte imprecisă și nu ține loc de testare capilară. Formula matematică folosită este luată din:", + "Filter by hours": "Filtrare pe ore", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Timpul în fluctuație și timpul în fluctuație rapidă măsoară procentul de timp, din perioada examinată, în care glicemia din sânge a avut o variație relativ rapidă sau rapidă. Valorile mici sunt de preferat.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Schimbarea medie totală zilnică este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de zile. Valorile mici sunt de preferat.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Variația media orară este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de ore din aceeași perioadă. Valorile mici sunt de preferat.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">aici.", + "Mean Total Daily Change": "Variația medie totală zilnică", + "Mean Hourly Change": "Variația medie orară", + "FortyFiveDown": "scădere ușoară", + "FortyFiveUp": "creștere ușoară", + "Flat": "stabil", + "SingleUp": "creștere", + "SingleDown": "scădere", + "DoubleDown": "scădere bruscă", + "DoubleUp": "creștere rapidă", + "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 și %2 din %3.", + "virtAsstBasal": "%1 bazala curentă este %2 unități pe oră", + "virtAsstBasalTemp": "%1 bazala temporară de %2 unități pe oră se va termina la %3", + "virtAsstIob": "și mai aveți %1 insulină activă.", + "virtAsstIobIntent": "Aveți %1 insulină activă", + "virtAsstIobUnits": "%1 unități", + "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstPreamble": "Your", + "virtAsstPreamble3person": "%1 are ", + "virtAsstNoInsulin": "fără", + "virtAsstUploadBattery": "Bateria uploaderului este la %1", + "virtAsstReservoir": "Mai aveți %1 unități rămase", + "virtAsstPumpBattery": "Bateria pompei este la %1 %2", + "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstLastLoop": "Ultima decizie loop implementată cu succes a fost %1", + "virtAsstLoopNotAvailable": "Extensia loop pare a fi dezactivată", + "virtAsstLoopForecastAround": "Potrivit previziunii date de loop se estiemază around %1 pentru următoarele %2", + "virtAsstLoopForecastBetween": "Potrivit previziunii date de loop se estiemază between %1 and %2 pentru următoarele %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": "Estimarea este imposibilă pe baza datelor disponibile", + "virtAsstRawBG": "Glicemia brută este %1", + "virtAsstOpenAPSForecast": "Glicemia estimată de OpenAPS este %1", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Grăsimi [g]", + "Protein [g]": "Proteine [g]", + "Energy [kJ]": "Energie [g]", + "Clock Views:": "Vedere tip ceas:", + "Clock": "Ceas", + "Color": "Culoare", + "Simple": "Simplu", + "TDD average": "Media Dozei Zilnice Totale de insulină (TDD)", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Media carbohidraților", + "Eating Soon": "Mâncare în curând", + "Last entry {0} minutes ago": "Ultima înregistrare acum {0} minute", + "change": "schimbare", + "Speech": "Vorbă", + "Target Top": "Țintă superioară", + "Target Bottom": "Țintă inferioară", + "Canceled": "Anulat", + "Meter BG": "Glicemie din glucometru", + "predicted": "estimat", + "future": "viitor", + "ago": "în trecut", + "Last data received": "Ultimele date primite", + "Clock View": "Vedere tip ceas", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/ru_RU.json b/translations/ru_RU.json new file mode 100644 index 00000000000..f09ce63573d --- /dev/null +++ b/translations/ru_RU.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Прослушивание порта", + "Mo": "Пон", + "Tu": "Вт", + "We": "Ср", + "Th": "Чт", + "Fr": "Пт", + "Sa": "Сб", + "Su": "Вс", + "Monday": "Понедельник", + "Tuesday": "Вторник", + "Wednesday": "Среда", + "Thursday": "Четверг", + "Friday": "Пятница", + "Saturday": "Суббота", + "Sunday": "Воскресенье", + "Category": "Категория", + "Subcategory": "Подкатегория", + "Name": "Имя", + "Today": "Сегодня", + "Last 2 days": "Прошедшие 2 дня", + "Last 3 days": "Прошедшие 3 дня", + "Last week": "Прошедшая неделя", + "Last 2 weeks": "Прошедшие 2 недели", + "Last month": "Прошедший месяц", + "Last 3 months": "Прошедшие 3 месяца", + "between": "между", + "around": "около", + "and": "и", + "From": "С", + "To": "По", + "Notes": "Примечания", + "Food": "Еда", + "Insulin": "Инсулин", + "Carbs": "Углеводы", + "Notes contain": "Примечания содержат", + "Target BG range bottom": "Нижний порог целевых значений СК", + "top": "Верхний", + "Show": "Показать", + "Display": "Визуально", + "Loading": "Загрузка", + "Loading profile": "Загрузка профиля", + "Loading status": "Загрузка состояния", + "Loading food database": "Загрузка БД продуктов", + "not displayed": "Не показано", + "Loading CGM data of": "Загрузка данных мониторинга", + "Loading treatments data of": "Загрузка данных лечения", + "Processing data of": "Обработка данных от", + "Portion": "Порция", + "Size": "Объем", + "(none)": "(нет)", + "None": "Нет", + "": "<нет>", + "Result is empty": "Результата нет ", + "Day to day": "По дням", + "Week to week": "По неделям", + "Daily Stats": "Ежедневная статистика", + "Percentile Chart": "Процентильная диаграмма", + "Distribution": "Распределение", + "Hourly stats": "Почасовая статистика", + "netIOB stats": "статистика нетто активн инс netIOB", + "temp basals must be rendered to display this report": "для этого отчета требуется прорисовка врем базалов", + "Weekly success": "Результаты недели", + "No data available": "Нет данных", + "Low": "Низкая ГК", + "In Range": "В диапазоне", + "Period": "Период", + "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": "гл индекс ГИ", + "Edit record": "Редактировать запись", + "Delete record": "Стереть запись", + "Move to the top": "Переместить наверх", + "Hidden": "Скрыт", + "Hide after use": "Скрыть после использования", + "Your API secret must be at least 12 characters long": "Ваш пароль API должен иметь не менее 12 знаков", + "Bad API secret": "Плохой пароль API", + "API secret hash stored": "Хэш пароля API сохранен", + "Status": "Статус", + "Not loaded": "Не загружено", + "Food Editor": "Редактор продуктов", + "Your database": "Ваша база данных ", + "Filter": "Фильтр", + "Save": "Сохранить", + "Clear": "Очистить", + "Record": "Запись", + "Quick picks": "Быстрый отбор", + "Show hidden": "Показать скрытые", + "Your API secret or token": "Ваш пароль API или код доступа ", + "Remember this device. (Do not enable this on public computers.)": "Запомнить это устройство (Не применяйте в общем доступе)", + "Treatments": "Лечение", + "Time": "Время", + "Event Type": "Тип события", + "Blood Glucose": "Гликемия", + "Entered By": "Внесено через", + "Delete this treatment?": "Удалить это событие?", + "Carbs Given": "Дано углеводов", + "Inzulin Given": "Дано инсулина", + "Event Time": "Время события", + "Please verify that the data entered is correct": "Проверьте правильность вводимых данных", + "BG": "ГК", + "Use BG correction in calculation": "При расчете учитывать коррекцию ГК", + "BG from CGM (autoupdated)": "ГК с сенсора (автообновление)", + "BG from meter": "ГК по глюкометру", + "Manual BG": "ручной ввод ГК", + "Quickpick": "Быстрый отбор", + "or": "или", + "Add from database": "Добавить из базы данных", + "Use carbs correction in calculation": "Пользоваться коррекцией на углеводы при расчете", + "Use COB correction in calculation": "Учитывать активные углеводы COB при расчете", + "Use IOB in calculation": "Учитывать активный инсулин IOB при расчете", + "Other correction": "Иная коррекция", + "Rounding": "Округление", + "Enter insulin correction in treatment": "Внести коррекцию инсулина в лечение", + "Insulin needed": "Требуется инсулин", + "Carbs needed": "Требуются углеводы", + "Carbs needed if Insulin total is negative value": "Требуются углеводы если суммарный инсулин отрицательная величина", + "Basal rate": "Скорость базала", + "60 minutes earlier": "на 60 минут ранее", + "45 minutes earlier": "на 45 минут ранее", + "30 minutes earlier": "на 30 минут ранее", + "20 minutes earlier": "на 20 минут ранее", + "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": "Углеводы на коррекцию", + "Note": "Примечания", + "Question": "Вопрос", + "Exercise": "Нагрузка", + "Pump Site Change": "Смена катетера помпы", + "CGM Sensor Start": "Старт сенсора", + "CGM Sensor Stop": "Стоп сенсор", + "CGM Sensor Insert": "Установка сенсора", + "Dexcom Sensor Start": "Старт сенсора", + "Dexcom Sensor Change": "Замена сенсора Декском", + "Insulin Cartridge Change": "Замена картриджа инсулина", + "D.A.D. Alert": "Сигнал служебной собаки", + "Glucose Reading": "Значение ГК", + "Measurement Method": "Способ замера", + "Meter": "Глюкометр", + "Insulin Given": "Введен инсулин", + "Amount in grams": "Количество в граммах", + "Amount in units": "Количество в ед.", + "View all treatments": "Показать все события", + "Enable Alarms": "Активировать сигналы", + "Pump Battery Change": "замена батареи помпы", + "Pump Battery Low Alarm": "Внимание! низкий заряд батареи помпы", + "Pump Battery change overdue!": "пропущен срок замены батареи!", + "When enabled an alarm may sound.": "При активации может звучать сигнал", + "Urgent High Alarm": "Внимание: высокая гликемия ", + "High Alarm": "Высокая гликемия", + "Low Alarm": "Низкая гликемия", + "Urgent Low Alarm": "Внимание: низкая гликемия", + "Stale Data: Warn": "Предупреждение: старые данные", + "Stale Data: Urgent": "Внимание: старые данные", + "mins": "мин", + "Night Mode": "Режим: ночь", + "When enabled the page will be dimmed from 10pm - 6am.": "При активации страница затемнена с 22.00 до 06.00", + "Enable": "Активировать", + "Show Raw BG Data": "Показывать необработанные данные RAW", + "Never": "Никогда", + "Always": "Всегда", + "When there is noise": "Когда есть шумовой фон", + "When enabled small white dots will be displayed for raw BG data": "При активации данные RAW будут видны как мелкие белые точки", + "Custom Title": "Произвольное название", + "Theme": "Тема", + "Default": "По умолчанию", + "Colors": "Цветная", + "Colorblind-friendly colors": "Цветовая гамма для людей с нарушениями восприятия цвета", + "Reset, and use defaults": "Сбросить и использовать настройки по умолчанию", + "Calibrations": "Калибровки", + "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": "необработанные данные ГК", + "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": "В БУДУЩЕМ", + "Update": "Обновить", + "Order": "Сортировать", + "oldest on top": "Старые наверху", + "newest on top": "Новые наверху", + "All sensor events": "Все события сенсора", + "Remove future items from mongo database": "Удалить будущие данные из базы Монго", + "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.": "Эта опция найдет и удалит данные сенсора созданные загрузчиком с неверными датой/временем", + "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": "% записей удалено", + "Clean Mongo status database": "Очистить статус базы данных Mongo", + "Delete all documents from devicestatus collection": "Стереть все документы из коллекции статус устройства", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Эта опция удаляет все документы из коллекции статус устройства. Полезно когда состояние батвреи загрузчика не обновляется", + "Delete all documents": "Удалить все документы", + "Delete all documents from devicestatus collection?": "Удалить все документы коллекции статус устройства?", + "Database contains %1 records": "База данных содержит %1 записей", + "All records removed ...": "Все записи удалены", + "Delete all documents from devicestatus collection older than 30 days": "Удалить все записи коллекции devicestatus старше 30 дней", + "Number of Days to Keep:": "Оставить дней", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Это удалит все документы коллекции devicestatus которым более 30 дней. Полезно, когда статус батареи не обновляется или обновляется неверно.", + "Delete old documents from devicestatus collection?": "Удалить старыые документы коллекции devicestatus", + "Clean Mongo entries (glucose entries) database": "Очистить записи данных в базе Mongo", + "Delete all documents from entries collection older than 180 days": "Удалить все документы коллекции entries старше 180 дней ", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Это удалит все документы коллекции entries старше 180 дней. Полезно, когда статус батареи загрузчика должным образом не обновляется", + "Delete old documents": "Удалить старые документы", + "Delete old documents from entries collection?": "Удалить старые документы коллекции entries?", + "%1 is not a valid number": "% не является допустимым значением", + "%1 is not a valid number - must be more than 2": "% не является допустимым значением - должно быть больше 2", + "Clean Mongo treatments database": "Очистить базу лечения Mongo", + "Delete all documents from treatments collection older than 180 days": "Удалить все документы коллекции treatments старше 180 дней", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Это удалит все документы коллекции treatments старше 180 дней. Полезно, когда статус батареи загрузчика не обновляется должным образом", + "Delete old documents from treatments collection?": "Удалить старые документы из коллекции treatments?", + "Admin Tools": "Инструменты администратора", + "Nightscout reporting": "Статистика Nightscout", + "Cancel": "Отмена", + "Edit treatment": "Редактировать событие", + "Duration": "Продолжительность", + "Duration in minutes": "Продолжительность в мин", + "Temp Basal": "Временный базал", + "Temp Basal Start": "Начало временного базала", + "Temp Basal End": "Окончание временного базала", + "Percent": "Процент", + "Basal change in %": "Изменение базала в %", + "Basal value": "величина временного базала", + "Absolute basal value": "Абсолютная величина базала", + "Announcement": "Оповещение", + "Loading temp basal data": "Загрузка данных временного базала", + "Save current record before changing to new?": "Сохранить текущие данные перед переходом к новым?", + "Profile Switch": "Изменить профиль", + "Profile": "Профиль", + "General profile settings": "Общие настройки профиля", + "Title": "Название", + "Database records": "Записи в базе данных", + "Add new record": "Добавить новую запись", + "Remove this record": "Удалить эту запись", + "Clone this record to new": "Клонировать эту запись в новый", + "Record valid from": "Запись действительна от", + "Stored profiles": "Сохраненные профили", + "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.": "мг/дл или ммол/л на единицу инсулина. Насколько меняется СК с каждой единицей коррегирующего инсулина", + "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)за единицу времени a также количество активных углеводов", + "Basal rates [unit/hour]": "Базал [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": "Комбинир болюс", + "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 ?": "Изменить время приема углеводов на % ?", + "Change insulin time to %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": "Помпа", + "Sensor Age": "Сенсор работает", + "Insulin Age": "Инсулин работает", + "Temporary target": "Временная цель", + "Reason": "Причина", + "Eating soon": "Ожидаемый прием пищи", + "Top": "Верх", + "Bottom": "Низ", + "Activity": "Активность", + "Targets": "Цели", + "Bolus insulin:": "Болюсный инсулин", + "Base basal insulin:": "Профильный базальный инсулин", + "Positive temp basal insulin:": "Положит знач временн базал инс ", + "Negative temp basal insulin:": "Отриц знач временн базал инс", + "Total basal insulin:": "Всего базал инсулина", + "Total daily insulin:": "Всего суточн базал инсулина", + "Unable to %1 Role": "Невозможно назначить %1 Роль", + "Unable to delete Role": "Невозможно удалить Роль", + "Database contains %1 roles": "База данных содержит %1 Ролей", + "Edit Role": "Редактировать Роль", + "admin, school, family, etc": "админ, школа, семья и т д", + "Permissions": "Разрешения", + "Are you sure you want to delete: ": "Подтвердите удаление", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Каждая роль имеет 1 или более разрешений. Разрешение * это подстановочный символ, разрешения это иерархия, использующая : как разделитель.", + "Add new Role": "Добавить новую Роль", + "Roles - Groups of People, Devices, etc": "Роли- группы людей, устройств и т п", + "Edit this role": "Редактировать эту роль", + "Admin authorized": "Разрешено администратором", + "Subjects - People, Devices, etc": "Субъекты - Люди, устройства и т п", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Каждый субъект получает уникальный код доступа и 1 или более ролей. Нажмите на иконку кода доступа чтобы открыть новое окно с выбранным субъектом, эту секретную ссылку можно переслать.", + "Add new Subject": "Добавить нового субъекта", + "Unable to %1 Subject": "Невозможно создать %1 субъект", + "Unable to delete Subject": "Невозможно удалить Субъект ", + "Database contains %1 subjects": "База данных содержит %1 субъекта/ов", + "Edit Subject": "Редактировать Субъект", + "person, device, etc": "лицо, устройство и т п", + "role1, role2": "Роль1, Роль2", + "Edit this subject": "Редактировать этот субъект", + "Delete this subject": "Удалить этот субъект", + "Roles": "Роли", + "Access Token": "Код доступа", + "hour ago": "час назад", + "hours ago": "часов назад", + "Silence for %1 minutes": "Молчание %1 минут", + "Check BG": "Проверьте гликемию", + "BASAL": "Базал", + "Current basal": "Актуальный базал", + "Sensitivity": "Чуствительность к инсулину ISF", + "Current Carb Ratio": "Актуальное соотношение инсулин:углеводы I:C", + "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": "Отключение предупреждение о высоком СК ввиду достаточности инсулина в организме", + "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": "Избыток инсулина равного %1U, необходимого для достижения нижнего целевого значения, углеводы не приняты в расчет", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Избыток инсулина, равного %1U, необходимого для достижения нижнего целевого значения, ПОКРОЙТЕ АКТИВН IOB ИНСУЛИН УГЛЕВОДАМИ", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Для достижения нижнего целевого значения необходимо понизить величину активного инсулина на %1U, велика база?", + "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": "КатПомп", + "COB": "АктУгл COB", + "Last Carbs": "Прошлые углеводы", + "IAGE": "ИнсСрок", + "Insulin reservoir change overdue!": "Срок замены резервуара инсулина истек", + "Time to change insulin reservoir": "Наступил срок замены резервуара инсулина", + "Change insulin reservoir soon": "Наступает срок замены резервуара инсулина", + "Insulin reservoir age %1 hours": "Картридж инсулина отработал %1часов", + "Changed": "Замена произведена", + "IOB": "АктИнс IOB", + "Careportal IOB": "АктИнс на портале лечения", + "Last Bolus": "Прошлый болюс", + "Basal IOB": "АктуальнБазал IOB", + "Source": "Источник", + "Stale data, check rig?": "Старые данные, проверьте загрузчик", + "Last received:": "Получено:", + "%1m ago": "% мин назад", + "%1h ago": "% час назад", + "%1d ago": "% дн назад", + "RETRO": "ПРОШЛОЕ", + "SAGE": "Сенсор работает", + "Sensor change/restart overdue!": "Рестарт сенсора пропущен", + "Time to change/restart sensor": "Время замены/рестарта сенсора", + "Change/restart sensor soon": "Приближается срок замены/рестарта сенсора", + "Sensor age %1 days %2 hours": "Сенсор работает %1 дн %2 час", + "Sensor Insert": "Сенсор установлен", + "Sensor Start": "Старт сенсора", + "days": "дн", + "Insulin distribution": "распределение инсулина", + "To see this report, press SHOW while in this view": "чтобы увидеть отчет, нажмите show/показать", + "AR2 Forecast": "прогноз AR2", + "OpenAPS Forecasts": "прогнозы OpenAPS", + "Temporary Target": "Временная цель", + "Temporary Target Cancel": "Отмена временной цели", + "OpenAPS Offline": "OpenAPS вне сети", + "Profiles": "Профили", + "Time in fluctuation": "Время флуктуаций", + "Time in rapid fluctuation": "Время быстрых флуктуаций", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Это приблизительная оценка не заменяющая фактический анализ крови. Используемая формула взята из:", + "Filter by hours": "Почасовая фильтрация", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Время флуктуаций и время быстрых флуктуаций означает % времени в рассматриваемый период в течение которого ГК менялась относительно быстро или просто быстро. Более низкие значения предпочтительней", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Усредненное ежедневное изменение это сумма абсолютных величин всех отклонений ГК в рассматриваемый период, деленная на количество дней. Меньшая величина предпочтительней", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Усредненное часовое изменение это сумма абсолютных величин всех отклонений ГК в рассматриваемый период, деленная на количество часов в этот период. Более низкое предпочтительней", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">здесь.", + "Mean Total Daily Change": "Усредненное изменение за день", + "Mean Hourly Change": "Усредненное изменение за час", + "FortyFiveDown": "незначительное падение", + "FortyFiveUp": "незначительный подъем", + "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 Mode", + "virtAsstTitleCGMStatus": "CGM Status", + "virtAsstTitleCGMSessionAge": "CGM Session Age", + "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", + "virtAsstTitleCGMTxAge": "CGM Transmitter Age", + "virtAsstTitleCGMNoise": "CGM Noise", + "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": "Расширение ЗЦ Loop не активировано", + "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": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Дельта была %1 между %2 и %3.", + "virtAsstUnknownIntentTitle": "Неизвестное намерение", + "virtAsstUnknownIntentText": "Ваш запрос непонятен", + "Fat [g]": "жиры [g]", + "Protein [g]": "белки [g]", + "Energy [kJ]": "энергия [kJ]", + "Clock Views:": "цифры крупно:", + "Clock": "часы", + "Color": "цвет", + "Simple": "простой", + "TDD average": "средняя суточная доза инсулина", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "среднее кол-во углеводов за сутки", + "Eating Soon": "Ожидаемый прием пищи", + "Last entry {0} minutes ago": "предыдущая запись {0} минут назад", + "change": "замена", + "Speech": "речь", + "Target Top": "верхняя граница цели", + "Target Bottom": "нижняя граница цели", + "Canceled": "отменено", + "Meter BG": "ГК по глюкометру", + "predicted": "прогноз", + "future": "будущее", + "ago": "в прошлом", + "Last data received": "прошлые данные получены", + "Clock View": "вид циферблата", + "Protein": "Белки", + "Fat": "Жиры", + "Protein average": "Средний белок", + "Fat average": "Средний жир", + "Total carbs": "Всего углеводов", + "Total protein": "Всего белков", + "Total fat": "Всего жиров", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/sl_SI.json b/translations/sl_SI.json new file mode 100644 index 00000000000..ddb380f7eca --- /dev/null +++ b/translations/sl_SI.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Načúvam na porte", + "Mo": "Po", + "Tu": "Ut", + "We": "St", + "Th": "Št", + "Fr": "Pi", + "Sa": "So", + "Su": "Ne", + "Monday": "Pondelok", + "Tuesday": "Utorok", + "Wednesday": "Streda", + "Thursday": "Štvrtok", + "Friday": "Piatok", + "Saturday": "Sobota", + "Sunday": "Nedeľa", + "Category": "Kategória", + "Subcategory": "Podkategória", + "Name": "Meno", + "Today": "Dnes", + "Last 2 days": "Posledné 2 dni", + "Last 3 days": "Posledné 3 dni", + "Last week": "Posledný týždeň", + "Last 2 weeks": "Posledné 2 týždne", + "Last month": "Posledný mesiac", + "Last 3 months": "Posledné 3 mesiace", + "between": "between", + "around": "around", + "and": "and", + "From": "Od", + "To": "Do", + "Notes": "Poznámky", + "Food": "Jedlo", + "Insulin": "Inzulín", + "Carbs": "Sacharidy", + "Notes contain": "Poznámky obsahujú", + "Target BG range bottom": "Cieľová glykémia spodná", + "top": "horná", + "Show": "Ukáž", + "Display": "Zobraz", + "Loading": "Nahrávam", + "Loading profile": "Nahrávam profil", + "Loading status": "Nahrávam status", + "Loading food database": "Nahrávam databázu jedál", + "not displayed": "Nie je zobrazené", + "Loading CGM data of": "Nahrávam CGM dáta", + "Loading treatments data of": "Nahrávam dáta ošetrenia", + "Processing data of": "Spracovávam dáta", + "Portion": "Porcia", + "Size": "Veľkosť", + "(none)": "(žiadny)", + "None": "Žiadny", + "": "<žiadny>", + "Result is empty": "Prázdny výsledok", + "Day to day": "Deň po dni", + "Week to week": "Week to week", + "Daily Stats": "Denné štatistiky", + "Percentile Chart": "Percentil", + "Distribution": "Distribúcia", + "Hourly stats": "Hodinové štatistiky", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "Týždenná úspešnosť", + "No data available": "Žiadne dostupné dáta", + "Low": "Nízka", + "In Range": "V rozsahu", + "Period": "Obdobie", + "High": "Vysoká", + "Average": "Priemer", + "Low Quartile": "Nizky kvartil", + "Upper Quartile": "Vysoký kvartil", + "Quartile": "Kvartil", + "Date": "Dátum", + "Normal": "Normálny", + "Median": "Medián", + "Readings": "Záznamy", + "StDev": "Štand. odch.", + "Daily stats report": "Denné štatistiky", + "Glucose Percentile report": "Report percentilu glykémií", + "Glucose distribution": "Rozloženie glykémie", + "days total": "dní celkom", + "Total per day": "dní celkom", + "Overall": "Súhrn", + "Range": "Rozsah", + "% of Readings": "% záznamov", + "# of Readings": "Počet záznamov", + "Mean": "Stred", + "Standard Deviation": "Štandardná odchylka", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Odhadované HbA1C*", + "Weekly Success": "Týždenná úspešnosť", + "There is not sufficient data to run this report. Select more days.": "Nedostatok dát. Vyberte dlhšie časové obdobie.", + "Using stored API secret hash": "Používam uložený API hash heslo", + "No API secret hash stored yet. You need to enter API secret.": "Nieje uložené žiadne API hash heslo. Musíte zadať API heslo.", + "Database loaded": "Databáza načítaná", + "Error: Database failed to load": "Chyba pri načítaní databázy", + "Error": "Error", + "Create new record": "Vytovriť nový záznam", + "Save record": "Uložiť záznam", + "Portions": "Porcií", + "Unit": "Jednot.", + "GI": "GI", + "Edit record": "Upraviť záznam", + "Delete record": "Zmazať záznam", + "Move to the top": "Presunúť na začiatok", + "Hidden": "Skrytý", + "Hide after use": "Skryť po použití", + "Your API secret must be at least 12 characters long": "Vaše API heslo musí mať najmenej 12 znakov", + "Bad API secret": "Nesprávne API heslo", + "API secret hash stored": "Hash API hesla uložený", + "Status": "Status", + "Not loaded": "Nenačítaný", + "Food Editor": "Editor jedál", + "Your database": "Vaša databáza", + "Filter": "Filter", + "Save": "Uložiť", + "Clear": "Vymazať", + "Record": "Záznam", + "Quick picks": "Rýchly výber", + "Show hidden": "Zobraziť skryté", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Ošetrenie", + "Time": "Čas", + "Event Type": "Typ udalosti", + "Blood Glucose": "Glykémia", + "Entered By": "Zadal", + "Delete this treatment?": "Vymazať toto ošetrenie?", + "Carbs Given": "Sacharidov", + "Inzulin Given": "Inzulínu", + "Event Time": "Čas udalosti", + "Please verify that the data entered is correct": "Prosím, skontrolujte správnosť zadaných údajov", + "BG": "Glykémia", + "Use BG correction in calculation": "Použite korekciu na glykémiu", + "BG from CGM (autoupdated)": "Glykémia z CGM (automatická aktualizácia) ", + "BG from meter": "Glykémia z glukomeru", + "Manual BG": "Ručne zadaná glykémia", + "Quickpick": "Rýchly výber", + "or": "alebo", + "Add from database": "Pridať z databázy", + "Use carbs correction in calculation": "Použite korekciu na sacharidy", + "Use COB correction in calculation": "Použite korekciu na COB", + "Use IOB in calculation": "Použite IOB vo výpočte", + "Other correction": "Iná korekcia", + "Rounding": "Zaokrúhlenie", + "Enter insulin correction in treatment": "Zadajte korekciu inzulínu do ošetrenia", + "Insulin needed": "Potrebný inzulín", + "Carbs needed": "Potrebné sacharidy", + "Carbs needed if Insulin total is negative value": "Potrebné sacharidy, ak je celkový inzulín záporná hodnota", + "Basal rate": "Bazál", + "60 minutes earlier": "60 min. pred", + "45 minutes earlier": "45 min. pred", + "30 minutes earlier": "30 min. pred", + "20 minutes earlier": "20 min. pred", + "15 minutes earlier": "15 min. pred", + "Time in minutes": "Čas v minútach", + "15 minutes later": "15 min. po", + "20 minutes later": "20 min. po", + "30 minutes later": "30 min. po", + "45 minutes later": "45 min. po", + "60 minutes later": "60 min. po", + "Additional Notes, Comments": "Ďalšie poznámky, komentáre", + "RETRO MODE": "V MINULOSTI", + "Now": "Teraz", + "Other": "Iný", + "Submit Form": "Odoslať formulár", + "Profile Editor": "Editor profilu", + "Reports": "Správy", + "Add food from your database": "Pridať jedlo z Vašej databázy", + "Reload database": "Obnoviť databázu", + "Add": "Pridať", + "Unauthorized": "Neautorizované", + "Entering record failed": "Zadanie záznamu zlyhalo", + "Device authenticated": "Zariadenie overené", + "Device not authenticated": "Zariadenie nieje overené", + "Authentication status": "Stav overenia", + "Authenticate": "Overiť", + "Remove": "Odstrániť", + "Your device is not authenticated yet": "Toto zariadenie zatiaľ nebolo overené", + "Sensor": "Senzor", + "Finger": "Glukomer", + "Manual": "Ručne", + "Scale": "Mierka", + "Linear": "Lineárne", + "Logarithmic": "Logaritmické", + "Logarithmic (Dynamic)": "Logaritmické (Dynamické)", + "Insulin-on-Board": "Aktívny inzulín (IOB)", + "Carbs-on-Board": "Aktívne sacharidy (COB)", + "Bolus Wizard Preview": "Bolus Wizard", + "Value Loaded": "Hodnoty načítané", + "Cannula Age": "Zavedenie kanyly (CAGE)", + "Basal Profile": "Bazál", + "Silence for 30 minutes": "Stíšiť na 30 minút", + "Silence for 60 minutes": "Stíšiť na 60 minút", + "Silence for 90 minutes": "Stíšiť na 90 minút", + "Silence for 120 minutes": "Stíšiť na 120 minút", + "Settings": "Nastavenia", + "Units": "Jednotky", + "Date format": "Formát času", + "12 hours": "12 hodín", + "24 hours": "24 hodín", + "Log a Treatment": "Záznam ošetrenia", + "BG Check": "Kontrola glykémie", + "Meal Bolus": "Bolus na jedlo", + "Snack Bolus": "Bolus na desiatu/olovrant", + "Correction Bolus": "Korekčný bolus", + "Carb Correction": "Prídavok sacharidov", + "Note": "Poznámka", + "Question": "Otázka", + "Exercise": "Cvičenie", + "Pump Site Change": "Výmena setu", + "CGM Sensor Start": "Spustenie senzoru", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Výmena senzoru", + "Dexcom Sensor Start": "Spustenie senzoru DEXCOM", + "Dexcom Sensor Change": "Výmena senzoru DEXCOM", + "Insulin Cartridge Change": "Výmena inzulínu", + "D.A.D. Alert": "Upozornenie signálneho psa", + "Glucose Reading": "Hodnota glykémie", + "Measurement Method": "Metóda merania", + "Meter": "Glukomer", + "Insulin Given": "Podaný inzulín", + "Amount in grams": "Množstvo v gramoch", + "Amount in units": "Množstvo v jednotkách", + "View all treatments": "Zobraziť všetky ošetrenia", + "Enable Alarms": "Aktivovať alarmy", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "Pri aktivovanom alarme znie zvuk ", + "Urgent High Alarm": "Naliehavý alarm vysokej glykémie", + "High Alarm": "Alarm vysokej glykémie", + "Low Alarm": "Alarm nízkej glykémie", + "Urgent Low Alarm": "Naliehavý alarm nízkej glykémie", + "Stale Data: Warn": "Varovanie: Zastaralé dáta", + "Stale Data: Urgent": "Naliehavé: Zastaralé dáta", + "mins": "min.", + "Night Mode": "Nočný mód", + "When enabled the page will be dimmed from 10pm - 6am.": "Keď je povolený, obrazovka bude stlmená od 22:00 do 6:00.", + "Enable": "Povoliť", + "Show Raw BG Data": "Zobraziť RAW dáta", + "Never": "Nikdy", + "Always": "Vždy", + "When there is noise": "Pri šume", + "When enabled small white dots will be displayed for raw BG data": "Keď je povolené, malé bodky budú zobrazovať RAW dáta.", + "Custom Title": "Vlastný názov stránky", + "Theme": "Vzhľad", + "Default": "Predvolený", + "Colors": "Farebný", + "Colorblind-friendly colors": "Farby vhodné pre farboslepých", + "Reset, and use defaults": "Resetovať do pôvodného nastavenia", + "Calibrations": "Kalibrácie", + "Alarm Test / Smartphone Enable": "Test alarmu", + "Bolus Wizard": "Bolusový kalkulátor", + "in the future": "v budúcnosti", + "time ago": "čas pred", + "hr ago": "hod. pred", + "hrs ago": "hod. pred", + "min ago": "min. pred", + "mins ago": "min. pred", + "day ago": "deň pred", + "days ago": "dni pred", + "long ago": "veľmi dávno", + "Clean": "Čistý", + "Light": "Nízky", + "Medium": "Stredný", + "Heavy": "Veľký", + "Treatment type": "Typ ošetrenia", + "Raw BG": "RAW dáta glykémie", + "Device": "Zariadenie", + "Noise": "Šum", + "Calibration": "Kalibrácia", + "Show Plugins": "Zobraziť pluginy", + "About": "O aplikácii", + "Value in": "Hodnota v", + "Carb Time": "Čas jedla", + "Language": "Jazyk", + "Add new": "Pridať nový", + "g": "g", + "ml": "ml", + "pcs": "ks", + "Drag&drop food here": "Potiahni a pusti jedlo sem", + "Care Portal": "Portál starostlivosti", + "Medium/Unknown": "Stredný/Neznámi", + "IN THE FUTURE": "V BUDÚCNOSTI", + "Update": "Aktualizovať", + "Order": "Usporiadať", + "oldest on top": "najstaršie hore", + "newest on top": "najnovšie hore", + "All sensor events": "Všetky udalosti senzoru", + "Remove future items from mongo database": "Odobrať budúce položky z Mongo databázy", + "Find and remove treatments in the future": "Nájsť a odstrániť záznamy ošetrenia v budúcnosti", + "This task find and remove treatments in the future.": "Táto úloha nájde a odstáni záznamy ošetrenia v budúcnosti.", + "Remove treatments in the future": "Odstrániť záznamy ošetrenia v budúcnosti", + "Find and remove entries in the future": "Nájsť a odstrániť CGM dáta v budúcnosti", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Táto úloha nájde a odstráni CGM dáta v budúcnosti vzniknuté zle nastaveným časom uploaderu.", + "Remove entries in the future": "Odstrániť CGM dáta v budúcnosti", + "Loading database ...": "Nahrávam databázu...", + "Database contains %1 future records": "Databáza obsahuje %1 záznamov v budúcnosti", + "Remove %1 selected records?": "Odstrániť %1 vybraných záznamov", + "Error loading database": "Chyba pri nahrávanií databázy", + "Record %1 removed ...": "%1 záznamov bolo odstránených...", + "Error removing record %1": "Chyba pri odstraňovaní záznamu %1", + "Deleting records ...": "Odstraňovanie záznamov...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Vyčistiť Mongo databázu statusov", + "Delete all documents from devicestatus collection": "Odstránenie všetkých záznamov z kolekcie \"devicestatus\"", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Táto úloha vymaže všetky záznamy z kolekcie \"devicestatus\". Je to vhodné keď sa stav batérie nezobrazuje správne.", + "Delete all documents": "Zmazať všetky záznamy", + "Delete all documents from devicestatus collection?": "Zmazať všetky záznamy z kolekcie \"devicestatus\"?", + "Database contains %1 records": "Databáza obsahuje %1 záznamov", + "All records removed ...": "Všetky záznamy boli zmazané...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Nástroje pre správu", + "Nightscout reporting": "Nightscout výkazy", + "Cancel": "Zrušiť", + "Edit treatment": "Upraviť ošetrenie", + "Duration": "Trvanie", + "Duration in minutes": "Trvanie v minútach", + "Temp Basal": "Dočasný bazál", + "Temp Basal Start": "Začiatok dočasného bazálu", + "Temp Basal End": "Koniec dočasného bazálu", + "Percent": "Percent", + "Basal change in %": "Zmena bazálu v %", + "Basal value": "Hodnota bazálu", + "Absolute basal value": "Absolútna hodnota bazálu", + "Announcement": "Oznámenia", + "Loading temp basal data": "Nahrávam dáta dočasného bazálu", + "Save current record before changing to new?": "Uložiť súčastny záznam pred zmenou na nový?", + "Profile Switch": "Zmena profilu", + "Profile": "Profil", + "General profile settings": "Obecné nastavenia profilu", + "Title": "Názov", + "Database records": "Záznamy databázi", + "Add new record": "Pridať nový záznam", + "Remove this record": "Zmazať záznam", + "Clone this record to new": "Skopírovať záznam do nového", + "Record valid from": "Záznam platný od", + "Stored profiles": "Uložené profily", + "Timezone": "Časové pásmo", + "Duration of Insulin Activity (DIA)": "Doba pôsobenia inzulínu (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.": "Predstavuje typickú dobu počas ktorej inzulín pôsobí. Býva rôzna od pacienta a od typu inzulínu. Zvyčajne sa pohybuje medzi 3-4 hodinami u pacienta s pumpou.", + "Insulin to carb ratio (I:C)": "Inzulín-sacharidový pomer (I:C)", + "Hours:": "Hodiny:", + "hours": "hodiny", + "g/hour": "g/hod", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "gramy sacharidov na jednotku inzulínu. Pomer udáva aké množstvo sacharidov pokryje jednotka inzulínu.", + "Insulin Sensitivity Factor (ISF)": "Citlivosť na inzulín (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL alebo mmol/L na jednotku inzulínu. Pomer udáva o koľko sa zmení hodnota glykémie po podaní jednotky inzulínu.", + "Carbs activity / absorption rate": "Rýchlosť vstrebávania sacharidov", + "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).": "gramy za jednotku času. Reprezentuje súčasne zmenu COB za jednotku času, ako aj množstvo sacharidov ktoré sa za tú dobu prejavili. Krivka vstrebávania sacharidov je omnoho menej pochopiteľná ako pôsobenie inzulínu (IOB), ale môže byť približne s použitím počiatočného oneskorenia a následne s konštantným vstrebávaním (g/hod). ", + "Basal rates [unit/hour]": "Bazál [U/hod]", + "Target BG range [mg/dL,mmol/L]": "Rozsah cieľovej glykémie [mg/dL,mmol/L]", + "Start of record validity": "Začiatok platnosti záznamu", + "Icicle": "Inverzne", + "Render Basal": "Zobrazenie bazálu", + "Profile used": "Použitý profil", + "Calculation is in target range.": "Výpočet je v cieľovom rozsahu.", + "Loading profile records ...": "Nahrávam záznamy profilov", + "Values loaded.": "Hodnoty načítané.", + "Default values used.": "Použité východzie hodnoty.", + "Error. Default values used.": "CHYBA! Použité východzie hodnoty.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Časové rozsahy pre cieľové glykémie sa nezhodujú. Hodnoty nastavené na východzie.", + "Valid from:": "Platné od:", + "Save current record before switching to new?": "Uložiť súčastný záznam pred prepnutím na nový?", + "Add new interval before": "Pridať nový interval pred", + "Delete interval": "Zmazať interval", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Kombinovaný bolus", + "Difference": "Rozdiel", + "New time": "Nový čas", + "Edit Mode": "Editačný mód", + "When enabled icon to start edit mode is visible": "Keď je povolený, je zobrazená ikona editačného módu", + "Operation": "Operácia", + "Move": "Presunúť", + "Delete": "Zmazať", + "Move insulin": "Presunúť inzulín", + "Move carbs": "Presunúť sacharidy", + "Remove insulin": "Odstrániť inzulín", + "Remove carbs": "Odstrániť sacharidy", + "Change treatment time to %1 ?": "Zmeniť čas ošetrenia na %1 ?", + "Change carbs time to %1 ?": "Zmeniť čas sacharidov na %1 ?", + "Change insulin time to %1 ?": "Zmeniť čas inzulínu na %1 ?", + "Remove treatment ?": "Odstrániť ošetrenie?", + "Remove insulin from treatment ?": "Odstrániť inzulín z ošetrenia?", + "Remove carbs from treatment ?": "Odstrániť sacharidy z ošetrenia?", + "Rendering": "Vykresľujem", + "Loading OpenAPS data of": "Nahrávam OpenAPS dáta z", + "Loading profile switch data": "Nahrávam dáta prepnutia profilu", + "Redirecting you to the Profile Editor to create a new profile.": "Zle nastavený profil.\nK zobrazenému času nieje definovaný žiadny profil.\nPresmerovávam na vytvorenie profilu.", + "Pump": "Pumpa", + "Sensor Age": "Zavedenie senzoru (SAGE)", + "Insulin Age": "Výmena inzulínu (IAGE)", + "Temporary target": "Dočasný cieľ", + "Reason": "Dôvod", + "Eating soon": "Jesť čoskoro", + "Top": "Vrchná", + "Bottom": "Spodná", + "Activity": "Aktivita", + "Targets": "Ciele", + "Bolus insulin:": "Bolusový inzulín:", + "Base basal insulin:": "Základný bazálny inzulín:", + "Positive temp basal insulin:": "Pozitívny dočasný bazálny inzulín:", + "Negative temp basal insulin:": "Negatívny dočasný bazálny inzulín:", + "Total basal insulin:": "Celkový bazálny inzulín:", + "Total daily insulin:": "Celkový denný inzulín:", + "Unable to %1 Role": "Chyba volania %1 Role", + "Unable to delete Role": "Rola sa nedá zmazať", + "Database contains %1 roles": "Databáza obsahuje %1 rolí", + "Edit Role": "Editovať rolu", + "admin, school, family, etc": "administrátor, škola, rodina atď...", + "Permissions": "Oprávnenia", + "Are you sure you want to delete: ": "Naozaj zmazať:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Každá rola má 1 alebo viac oprávnení. Oprávnenie * je zástupný znak, oprávnenia sú hierarchie používajúce : ako oddelovač.", + "Add new Role": "Pridať novú rolu", + "Roles - Groups of People, Devices, etc": "Role - skupiny ľudí, zariadení atď...", + "Edit this role": "Editovať túto rolu", + "Admin authorized": "Admin autorizovaný", + "Subjects - People, Devices, etc": "Subjekty - ľudia, zariadenia atď...", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Každý objekt má svoj unikátny prístupový token a 1 alebo viac rolí. Klikni na prístupový token pre otvorenie nového okna pre tento subjekt. Tento link je možné zdielať.", + "Add new Subject": "Pridať nový subjekt", + "Unable to %1 Subject": "Chyba volania %1 subjektu", + "Unable to delete Subject": "Subjekt sa nedá odstrániť", + "Database contains %1 subjects": "Databáza obsahuje %1 subjektov", + "Edit Subject": "Editovať subjekt", + "person, device, etc": "osoba, zariadenie atď...", + "role1, role2": "rola1, rola2", + "Edit this subject": "Editovať tento subjekt", + "Delete this subject": "Zmazať tento subjekt", + "Roles": "Rola", + "Access Token": "Prístupový Token", + "hour ago": "pred hodinou", + "hours ago": "hodín pred", + "Silence for %1 minutes": "Stíšiť na %1 minút", + "Check BG": "Skontrolovať glykémiu", + "BASAL": "BAZÁL", + "Current basal": "Aktuálny bazál", + "Sensitivity": "Citlivosť (ISF)", + "Current Carb Ratio": "Aktuálny sacharidový pomer (I\"C)", + "Basal timezone": "Časová zóna pre bazál", + "Active profile": "Aktívny profil", + "Active temp basal": "Aktívny dočasný bazál", + "Active temp basal start": "Štart dočasného bazálu", + "Active temp basal duration": "Trvanie dočasného bazálu", + "Active temp basal remaining": "Zostatok dočasného bazálu", + "Basal profile value": "Základná hodnota bazálu", + "Active combo bolus": "Aktívny kombinovaný bolus", + "Active combo bolus start": "Štart kombinovaného bolusu", + "Active combo bolus duration": "Trvanie kombinovaného bolusu", + "Active combo bolus remaining": "Zostávajúci kombinovaný bolus", + "BG Delta": "Zmena glykémie", + "Elapsed Time": "Uplynutý čas", + "Absolute Delta": "Absolútny rozdiel", + "Interpolated": "Interpolované", + "BWP": "BK", + "Urgent": "Urgentné", + "Warning": "Varovanie", + "Info": "Info", + "Lowest": "Najnižsie", + "Snoozing high alarm since there is enough IOB": "Odloženie alarmu vysokej glykémie, pretože je dostatok IOB", + "Check BG, time to bolus?": "Skontrolovať glykémiu, čas na bolus?", + "Notice": "Poznámka", + "required info missing": "chýbajúca informácia", + "Insulin on Board": "Aktívny inzulín (IOB)", + "Current target": "Aktuálny cieľ", + "Expected effect": "Očakávaný efekt", + "Expected outcome": "Očakávaný výsledok", + "Carb Equivalent": "Sacharidový ekvivalent", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Nadbytok inzulínu o %1U viac ako je potrebné na dosiahnutie spodnej cieľovej hranice. Neráta sa so sacharidmi.", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Nadbytok inzulínu o %1U viac ako je potrebné na dosiahnutie spodnej cieľovej hranice. UISTITE SA, ŽE JE TO POKRYTÉ SACHARIDMI", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Nutné zníženie aktívneho inzulínu o %1U pre dosiahnutie spodnej cieľovej hranice. Príliš veľa bazálu?", + "basal adjustment out of range, give carbs?": "úprava pomocou zmeny bazálu nie je možná. Podať sacharidy?", + "basal adjustment out of range, give bolus?": "úprava pomocou zmeny bazálu nie je možná. Podať bolus?", + "above high": "nad horným", + "below low": "pod spodným", + "Projected BG %1 target": "Predpokladaná glykémia %1 cieľ", + "aiming at": "cieľom", + "Bolus %1 units": "Bolus %1 jednotiek", + "or adjust basal": "alebo úprava bazálu", + "Check BG using glucometer before correcting!": "Pred korekciou skontrolujte glykémiu glukometrom!", + "Basal reduction to account %1 units:": "Úprava bazálu pre výpočet %1 jednotiek:", + "30m temp basal": "30 minutový dočasný bazál", + "1h temp basal": "hodinový dočasný bazál", + "Cannula change overdue!": "Výmena kanyli po lehote!", + "Time to change cannula": "Čas na výmenu kanyli", + "Change cannula soon": "Čoskoro bude potrebné vymeniť kanylu", + "Cannula age %1 hours": "Vek kanyli %1 hodín", + "Inserted": "Zavedený", + "CAGE": "SET", + "COB": "SACH", + "Last Carbs": "Posledné sacharidy", + "IAGE": "INZ", + "Insulin reservoir change overdue!": "Čas na výmenu inzulínu po lehote!", + "Time to change insulin reservoir": "Čas na výmenu inzulínu", + "Change insulin reservoir soon": "Čoskoro bude potrebné vymeniť inzulín", + "Insulin reservoir age %1 hours": "Vek inzulínu %1 hodín", + "Changed": "Vymenený", + "IOB": "IOB", + "Careportal IOB": "IOB z portálu starostlivosti", + "Last Bolus": "Posledný bolus", + "Basal IOB": "Bazálny IOB", + "Source": "Zdroj", + "Stale data, check rig?": "Zastaralé dáta, skontrolujte uploader", + "Last received:": "Naposledy prijaté:", + "%1m ago": "pred %1m", + "%1h ago": "pred %1h", + "%1d ago": "pred %1d", + "RETRO": "RETRO", + "SAGE": "SENZ", + "Sensor change/restart overdue!": "Čas na výmenu/reštart sensoru uplynul!", + "Time to change/restart sensor": "Čas na výmenu/reštart senzoru", + "Change/restart sensor soon": "Čoskoro bude potrebné vymeniť/reštartovať senzor", + "Sensor age %1 days %2 hours": "Vek senzoru %1 dní %2 hodín", + "Sensor Insert": "Výmena senzoru", + "Sensor Start": "Štart senzoru", + "days": "dní", + "Insulin distribution": "Insulin distribution", + "To see this report, press SHOW while in this view": "To see this report, press SHOW while in this view", + "AR2 Forecast": "AR2 Forecast", + "OpenAPS Forecasts": "OpenAPS Forecasts", + "Temporary Target": "Temporary Target", + "Temporary Target Cancel": "Temporary Target Cancel", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "Profiles", + "Time in fluctuation": "Time in fluctuation", + "Time in rapid fluctuation": "Time in rapid fluctuation", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:", + "Filter by hours": "Filter by hours", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">can be found here.", + "Mean Total Daily Change": "Mean Total Daily Change", + "Mean Hourly Change": "Mean Hourly Change", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Fat [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energy [kJ]", + "Clock Views:": "Clock Views:", + "Clock": "Clock", + "Color": "Color", + "Simple": "Simple", + "TDD average": "TDD average", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Carbs average", + "Eating Soon": "Eating Soon", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "change", + "Speech": "Speech", + "Target Top": "Target Top", + "Target Bottom": "Target Bottom", + "Canceled": "Canceled", + "Meter BG": "Meter BG", + "predicted": "predicted", + "future": "future", + "ago": "ago", + "Last data received": "Last data received", + "Clock View": "Clock View", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/sv_SE.json b/translations/sv_SE.json new file mode 100644 index 00000000000..741f2cbbe63 --- /dev/null +++ b/translations/sv_SE.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Lyssnar på port", + "Mo": "Mån", + "Tu": "Tis", + "We": "Ons", + "Th": "Tor", + "Fr": "Fre", + "Sa": "Lör", + "Su": "Sön", + "Monday": "Måndag", + "Tuesday": "Tisdag", + "Wednesday": "Onsdag", + "Thursday": "Torsdag", + "Friday": "Fredag", + "Saturday": "Lördag", + "Sunday": "Söndag", + "Category": "Kategori", + "Subcategory": "Underkategori", + "Name": "Namn", + "Today": "Idag", + "Last 2 days": "Senaste 2 dagarna", + "Last 3 days": "Senaste 3 dagarna", + "Last week": "Senaste veckan", + "Last 2 weeks": "Senaste 2 veckorna", + "Last month": "Senaste månaden", + "Last 3 months": "Senaste 3 månaderna", + "between": "between", + "around": "around", + "and": "and", + "From": "Från", + "To": "Till", + "Notes": "Notering", + "Food": "Föda", + "Insulin": "Insulin", + "Carbs": "Kolhydrater", + "Notes contain": "Notering innehåller", + "Target BG range bottom": "Gräns för nedre blodsockervärde", + "top": "Toppen", + "Show": "Visa", + "Display": "Visa", + "Loading": "Laddar", + "Loading profile": "Laddar profil", + "Loading status": "Laddar status", + "Loading food database": "Laddar födoämnesdatabas", + "not displayed": "Visas ej", + "Loading CGM data of": "Laddar CGM-data för", + "Loading treatments data of": "Laddar behandlingsdata för", + "Processing data of": "Behandlar data för", + "Portion": "Portion", + "Size": "Storlek", + "(none)": "(tom)", + "None": "tom", + "": "", + "Result is empty": "Resultat saknas", + "Day to day": "Dag för dag", + "Week to week": "Week to week", + "Daily Stats": "Dygnsstatistik", + "Percentile Chart": "Procentgraf", + "Distribution": "Distribution", + "Hourly stats": "Timmstatistik", + "netIOB stats": "netIOB statistik", + "temp basals must be rendered to display this report": "temp basal måste vara synlig för denna rapport", + "Weekly success": "Veckoresultat", + "No data available": "Data saknas", + "Low": "Låg", + "In Range": "Inom intervallet", + "Period": "Period", + "High": "Hög", + "Average": "Genomsnittligt", + "Low Quartile": "Nedre kvadranten", + "Upper Quartile": "Övre kvadranten", + "Quartile": "Kvadrant", + "Date": "Datum", + "Normal": "Normal", + "Median": "Median", + "Readings": "Avläsningar", + "StDev": "StdDev", + "Daily stats report": "Dygnsstatistik", + "Glucose Percentile report": "Glukosrapport i procent", + "Glucose distribution": "Glukosdistribution", + "days total": "antal dagar", + "Total per day": "antal dagar", + "Overall": "Genomsnitt", + "Range": "Intervall", + "% of Readings": "% av avläsningar", + "# of Readings": "# av avläsningar", + "Mean": "Genomsnitt", + "Standard Deviation": "Standardavvikelse", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Beräknat A1c-värde ", + "Weekly Success": "Veckoresultat", + "There is not sufficient data to run this report. Select more days.": "Data saknas för att köra rapport. Välj fler dagar.", + "Using stored API secret hash": "Använd hemlig API-nyckel", + "No API secret hash stored yet. You need to enter API secret.": "Hemlig api-nyckel saknas. Du måste ange API hemlighet", + "Database loaded": "Databas laddad", + "Error: Database failed to load": "Error: Databas kan ej laddas", + "Error": "Error", + "Create new record": "Skapa ny post", + "Save record": "Spara post", + "Portions": "Portion", + "Unit": "Enhet", + "GI": "GI", + "Edit record": "Editera post", + "Delete record": "Radera post", + "Move to the top": "Gå till toppen", + "Hidden": "Dold", + "Hide after use": "Dölj efter användning", + "Your API secret must be at least 12 characters long": "Hemlig API-nyckel måsta innehålla 12 tecken", + "Bad API secret": "Felaktig API-nyckel", + "API secret hash stored": "Lagrad hemlig API-hash", + "Status": "Status", + "Not loaded": "Ej laddad", + "Food Editor": "Födoämneseditor", + "Your database": "Din databas", + "Filter": "Filter", + "Save": "Spara", + "Clear": "Rensa", + "Record": "Post", + "Quick picks": "Snabbval", + "Show hidden": "Visa dolda", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Behandling", + "Time": "Tid", + "Event Type": "Händelsetyp", + "Blood Glucose": "Glukosvärde", + "Entered By": "Inlagt av", + "Delete this treatment?": "Ta bort händelse?", + "Carbs Given": "Antal kolhydrater", + "Inzulin Given": "Insulin", + "Event Time": "Klockslag", + "Please verify that the data entered is correct": "Vänligen verifiera att inlagd data är korrekt", + "BG": "BS", + "Use BG correction in calculation": "Använd BS-korrektion för beräkning", + "BG from CGM (autoupdated)": "BS från CGM (automatiskt)", + "BG from meter": "BS från blodsockermätare", + "Manual BG": "Manuellt BS", + "Quickpick": "Snabbval", + "or": "Eller", + "Add from database": "Lägg till från databas", + "Use carbs correction in calculation": "Använd kolhydratkorrektion för beräkning", + "Use COB correction in calculation": "Använd aktiva kolhydrater för beräkning", + "Use IOB in calculation": "Använd aktivt insulin för beräkning", + "Other correction": "Övrig korrektion", + "Rounding": "Avrundning", + "Enter insulin correction in treatment": "Ange insulinkorrektion för händelse", + "Insulin needed": "Beräknad insulinmängd", + "Carbs needed": "Beräknad kolhydratmängd", + "Carbs needed if Insulin total is negative value": "Nödvändig kolhydratmängd för angiven insulinmängd", + "Basal rate": "Basaldos", + "60 minutes earlier": "60 min tidigare", + "45 minutes earlier": "45 min tidigare", + "30 minutes earlier": "30 min tidigare", + "20 minutes earlier": "20 min tidigare", + "15 minutes earlier": "15 min tidigare", + "Time in minutes": "Tid i minuter", + "15 minutes later": "15 min senare", + "20 minutes later": "20 min senare", + "30 minutes later": "30 min senare", + "45 minutes later": "45 min senare", + "60 minutes later": "60 min senare", + "Additional Notes, Comments": "Notering, övrigt", + "RETRO MODE": "Retroläge", + "Now": "Nu", + "Other": "Övrigt", + "Submit Form": "Överför händelse", + "Profile Editor": "Editera profil", + "Reports": "Rapportverktyg", + "Add food from your database": "Lägg till livsmedel från databas", + "Reload database": "Ladda om databas", + "Add": "Lägg till", + "Unauthorized": "Ej behörig", + "Entering record failed": "Lägga till post nekas", + "Device authenticated": "Enhet autentiserad", + "Device not authenticated": "Enhet EJ autentiserad", + "Authentication status": "Autentiseringsstatus", + "Authenticate": "Autentisera", + "Remove": "Ta bort", + "Your device is not authenticated yet": "Din enhet är ej autentiserad", + "Sensor": "Sensor", + "Finger": "Finger", + "Manual": "Manuell", + "Scale": "Skala", + "Linear": "Linjär", + "Logarithmic": "Logaritmisk", + "Logarithmic (Dynamic)": "Logaritmisk (Dynamisk)", + "Insulin-on-Board": "Aktivt insulin (IOB)", + "Carbs-on-Board": "Aktiva kolhydrater (COB)", + "Bolus Wizard Preview": "Boluskalkylator (BWP)", + "Value Loaded": "Laddat värde", + "Cannula Age": "Kanylålder (CAGE)", + "Basal Profile": "Basalprofil", + "Silence for 30 minutes": "Tyst i 30 min", + "Silence for 60 minutes": "Tyst i 60 min", + "Silence for 90 minutes": "Tyst i 90 min", + "Silence for 120 minutes": "Tyst i 120 min", + "Settings": "Inställningar", + "Units": "Enheter", + "Date format": "Datumformat", + "12 hours": "12-timmars", + "24 hours": "24-timmars", + "Log a Treatment": "Ange händelse", + "BG Check": "Blodsockerkontroll", + "Meal Bolus": "Måltidsbolus", + "Snack Bolus": "Mellanmålsbolus", + "Correction Bolus": "Korrektionsbolus", + "Carb Correction": "Kolhydratskorrektion", + "Note": "Notering", + "Question": "Fråga", + "Exercise": "Aktivitet", + "Pump Site Change": "Pump/nålbyte", + "CGM Sensor Start": "Sensorstart", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "Sensorbyte", + "Dexcom Sensor Start": "Dexcom sensorstart", + "Dexcom Sensor Change": "Dexcom sensorbyte", + "Insulin Cartridge Change": "Insulinreservoarbyte", + "D.A.D. Alert": "Diabeteshundlarm (Duktig vovve!)", + "Glucose Reading": "Glukosvärde", + "Measurement Method": "Mätmetod", + "Meter": "Mätare", + "Insulin Given": "Insulindos", + "Amount in grams": "Antal gram", + "Amount in units": "Antal enheter", + "View all treatments": "Visa behandlingar", + "Enable Alarms": "Aktivera larm", + "Pump Battery Change": "Byte av pumpbatteri", + "Pump Battery Low Alarm": "Pumpbatteri lågt Alarm", + "Pump Battery change overdue!": "Pumpbatteriet måste bytas!", + "When enabled an alarm may sound.": "När markerad är ljudlarm aktivt", + "Urgent High Alarm": "Brådskande högt larmvärde", + "High Alarm": "Högt larmvärde", + "Low Alarm": "Lågt larmvärde", + "Urgent Low Alarm": "Brådskande lågt larmvärde", + "Stale Data: Warn": "Förfluten data: Varning!", + "Stale Data: Urgent": "Brådskande varning, inaktuell data", + "mins": "min", + "Night Mode": "Nattläge", + "When enabled the page will be dimmed from 10pm - 6am.": "När aktiverad dimmas sidan mellan 22:00 - 06:00", + "Enable": "Aktivera", + "Show Raw BG Data": "Visa RAW-data", + "Never": "Aldrig", + "Always": "Alltid", + "When there is noise": "Endast vid brus", + "When enabled small white dots will be displayed for raw BG data": "När aktiverad visar de vita punkterna RAW-blodglukosevärden", + "Custom Title": "Egen titel", + "Theme": "Tema", + "Default": "Standard", + "Colors": "Färg", + "Colorblind-friendly colors": "Högkontrastfärger", + "Reset, and use defaults": "Återställ standardvärden", + "Calibrations": "Kalibreringar", + "Alarm Test / Smartphone Enable": "Testa alarm / Aktivera Smatphone", + "Bolus Wizard": "Boluskalkylator", + "in the future": "framtida", + "time ago": "förfluten tid", + "hr ago": "timmar sedan", + "hrs ago": "Timmar sedan", + "min ago": "minut sedan", + "mins ago": "minuter sedan", + "day ago": "dag sedan", + "days ago": "dagar sedan", + "long ago": "länge sedan", + "Clean": "Rent", + "Light": "Lätt", + "Medium": "Måttligt", + "Heavy": "Rikligt", + "Treatment type": "Behandlingstyp", + "Raw BG": "RAW-BS", + "Device": "Enhet", + "Noise": "Brus", + "Calibration": "Kalibrering", + "Show Plugins": "Visa tillägg", + "About": "Om", + "Value in": "Värde om", + "Carb Time": "Kolhydratstid", + "Language": "Språk", + "Add new": "Lägg till ny", + "g": "g", + "ml": "ml", + "pcs": "st", + "Drag&drop food here": "Dra&Släpp mat här", + "Care Portal": "Care Portal", + "Medium/Unknown": "Medium/Okänt", + "IN THE FUTURE": "Framtida", + "Update": "Uppdatera", + "Order": "Sortering", + "oldest on top": "Äldst först", + "newest on top": "Nyast först", + "All sensor events": "Alla sensorhändelser", + "Remove future items from mongo database": "Ta bort framtida händelser från mongodatabasen", + "Find and remove treatments in the future": "Hitta och ta bort framtida behandlingar", + "This task find and remove treatments in the future.": "Denna uppgift hittar och rensar framtida händelser", + "Remove treatments in the future": "Ta bort framtida händelser", + "Find and remove entries in the future": "Hitta och ta bort framtida händelser", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Denna uppgift hittar och tar bort framtida CGM-data skapad vid felaktig tidsinställning", + "Remove entries in the future": "Ta bort framtida händelser", + "Loading database ...": "Laddar databas ...", + "Database contains %1 future records": "Databas innehåller %1 framtida händelser", + "Remove %1 selected records?": "Ta bort %1 valda händelser", + "Error loading database": "Fel vid laddning av databas", + "Record %1 removed ...": "Händelse %1 borttagen ...", + "Error removing record %1": "Fel vid borttagning av %1", + "Deleting records ...": "Tar bort händelser ...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Rensa Mongo status databas", + "Delete all documents from devicestatus collection": "Ta bort alla dokument i devicestatus collektionen", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Denna uppgift tar bort alla dokument från devicestatuskollektionen. Användbart när batteristatus ej uppdateras", + "Delete all documents": "Ta bort alla dokument", + "Delete all documents from devicestatus collection?": "Ta bort alla dokument från devicestatuscollektionen", + "Database contains %1 records": "Databasen innehåller %1 händelser", + "All records removed ...": "Alla händelser raderade ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Adminverktyg", + "Nightscout reporting": "Nightscout - Statistik", + "Cancel": "Avbryt", + "Edit treatment": "Redigera behandling", + "Duration": "Varaktighet", + "Duration in minutes": "Varaktighet i minuter", + "Temp Basal": "Temporär basal", + "Temp Basal Start": "Temporär basalstart", + "Temp Basal End": "Temporär basalavslut", + "Percent": "Procent", + "Basal change in %": "Basaländring i %", + "Basal value": "Basalvärde", + "Absolute basal value": "Absolut basalvärde", + "Announcement": "Avisering", + "Loading temp basal data": "Laddar temporär basaldata", + "Save current record before changing to new?": "Spara aktuell data innan skifte till ny?", + "Profile Switch": "Ny profil", + "Profile": "Profil", + "General profile settings": "Allmän profilinställning", + "Title": "Titel", + "Database records": "Databashändelser", + "Add new record": "Lägg till ny händelse", + "Remove this record": "Ta bort denna händelse", + "Clone this record to new": "Kopiera denna händelse till ny", + "Record valid from": "Händelse giltig från", + "Stored profiles": "Lagrad profil", + "Timezone": "Tidszon", + "Duration of Insulin Activity (DIA)": "Verkningstid för insulin (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.": "Beskriver under hur lång tid insulinet verkar. Varierar mellan patienter. Typisk varaktighet 3-4 timmar.", + "Insulin to carb ratio (I:C)": "Insulin-Kolhydratskvot", + "Hours:": "Timmar:", + "hours": "timmar", + "g/hour": "g/timme", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "gram kolhydrater per enhet insulin. Antal gram kolhydrater varje enhet insulin sänker", + "Insulin Sensitivity Factor (ISF)": "Insulinkänslighetsfaktor (ISF)", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dl eller mmol per enhet insulin. Hur varje enhet insulin sänker blodsockret", + "Carbs activity / absorption rate": "Kolhydratstid", + "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).": "gram per tidsenhet. Representerar både ändring i aktiva kolhydrater per tidsenhet som mängden kolhydrater som tas upp under denna tid. Kolhydratsupptag / aktivitetskurvor är svårare att förutspå än aktivt insulin men kan beräknas genom att använda en startfördröjning följd av en konstant absorbtionsgrad (g/timme) ", + "Basal rates [unit/hour]": "Basal [enhet/t]", + "Target BG range [mg/dL,mmol/L]": "Önskvärt blodsockerintervall [mg/dl,mmol]", + "Start of record validity": "Starttid för händelse", + "Icicle": "Istapp", + "Render Basal": "Generera Basal", + "Profile used": "Vald profil", + "Calculation is in target range.": "Inom intervallområde", + "Loading profile records ...": "Laddar profildata ...", + "Values loaded.": "Värden laddas", + "Default values used.": "Standardvärden valda", + "Error. Default values used.": "Error. Standardvärden valda.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Tidsintervall för målområde låg och hög stämmer ej", + "Valid from:": "Giltig från:", + "Save current record before switching to new?": "Spara före byte till nytt?", + "Add new interval before": "Lägg till nytt intervall före", + "Delete interval": "Ta bort intervall", + "I:C": "I:C", + "ISF": "ISF", + "Combo Bolus": "Combo-bolus", + "Difference": "Skillnad", + "New time": "Ny tid", + "Edit Mode": "Editeringsläge", + "When enabled icon to start edit mode is visible": "Ikon visas när editeringsläge är aktivt", + "Operation": "Operation", + "Move": "Flytta", + "Delete": "Ta bort", + "Move insulin": "Flytta insulin", + "Move carbs": "Flytta kolhydrater", + "Remove insulin": "Ta bort insulin", + "Remove carbs": "Ta bort kolhydrater", + "Change treatment time to %1 ?": "Ändra behandlingstid till %1 ?", + "Change carbs time to %1 ?": "Ändra kolhydratstid till %1 ?", + "Change insulin time to %1 ?": "Ändra insulintid till %1 ?", + "Remove treatment ?": "Ta bort behandling ?", + "Remove insulin from treatment ?": "Ta bort insulin från behandling ?", + "Remove carbs from treatment ?": "Ta bort kolhydrater från behandling ?", + "Rendering": "Rendering", + "Loading OpenAPS data of": "Laddar OpenAPS data för", + "Loading profile switch data": "Laddar ny profildata", + "Redirecting you to the Profile Editor to create a new profile.": "Fel profilinställning.\nIngen profil vald för vald tid.\nOmdirigerar för att skapa ny profil.", + "Pump": "Pump", + "Sensor Age": "Sensorålder (SAGE)", + "Insulin Age": "Insulinålder (IAGE)", + "Temporary target": "Tillfälligt mål", + "Reason": "Orsak", + "Eating soon": "Snart matdags", + "Top": "Toppen", + "Bottom": "Botten", + "Activity": "Aktivitet", + "Targets": "Mål", + "Bolus insulin:": "Bolusinsulin:", + "Base basal insulin:": "Basalinsulin:", + "Positive temp basal insulin:": "Positiv tempbasal insulin:", + "Negative temp basal insulin:": "Negativ tempbasal för insulin:", + "Total basal insulin:": "Total dagsdos basalinsulin:", + "Total daily insulin:": "Total dagsdos insulin", + "Unable to %1 Role": "Kan inte ta bort roll %1", + "Unable to delete Role": "Kan ej ta bort roll", + "Database contains %1 roles": "Databasen innehåller %1 roller", + "Edit Role": "Editera roll", + "admin, school, family, etc": "Administratör, skola, familj, etc", + "Permissions": "Rättigheter", + "Are you sure you want to delete: ": "Är du säker att du vill ta bort:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Varje roll kommer få en eller flera rättigheter. * är en wildcard, rättigheter sätts hirarkiskt med : som avgränsare.", + "Add new Role": "Lägg till roll", + "Roles - Groups of People, Devices, etc": "Roller - Grupp av användare, Enheter, etc", + "Edit this role": "Editera denna roll", + "Admin authorized": "Administratorgodkänt", + "Subjects - People, Devices, etc": "Ämnen - Användare, Enheter, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Varje ämne får en unik säkerhetsnyckel och en eller flera roller. Klicka på accessnyckeln för att öppna en ny vy med det valda ämnet, denna hemliga länk kan sedan delas.", + "Add new Subject": "Lägg till nytt ämne", + "Unable to %1 Subject": "Kan ej %1 ämne", + "Unable to delete Subject": "Kan ej ta bort ämne", + "Database contains %1 subjects": "Databasen innehåller %1 ämnen", + "Edit Subject": "Editera ämne", + "person, device, etc": "person,enhet,etc", + "role1, role2": "Roll1, Roll2", + "Edit this subject": "Editera ämnet", + "Delete this subject": "Ta bort ämnet", + "Roles": "Roller", + "Access Token": "Åtkomstnyckel", + "hour ago": "timme sedan", + "hours ago": "timmar sedan", + "Silence for %1 minutes": "Tyst i %1 minuter", + "Check BG": "Kontrollera blodglukos", + "BASAL": "BASAL", + "Current basal": "Nuvarande basal", + "Sensitivity": "Insulinkönslighet (ISF)", + "Current Carb Ratio": "Gällande kolhydratkvot", + "Basal timezone": "Basal tidszon", + "Active profile": "Aktiv profil", + "Active temp basal": "Aktiv tempbasal", + "Active temp basal start": "Aktiv tempbasal start", + "Active temp basal duration": "Aktiv tempbasal varaktighetstid", + "Active temp basal remaining": "Återstående tempbasaltid", + "Basal profile value": "Basalprofil värde", + "Active combo bolus": "Aktiv kombobolus", + "Active combo bolus start": "Aktiv kombobolus start", + "Active combo bolus duration": "Aktiv kombibolus varaktighet", + "Active combo bolus remaining": "Återstående aktiv kombibolus", + "BG Delta": "BS deltavärde", + "Elapsed Time": "Förfluten tid", + "Absolute Delta": "Absolut deltavärde", + "Interpolated": "Interpolerad", + "BWP": "Boluskalkylator", + "Urgent": "Akut", + "Warning": "Varning", + "Info": "Information", + "Lowest": "Lägsta", + "Snoozing high alarm since there is enough IOB": "Snoozar höglarm då aktivt insulin är tillräckligt", + "Check BG, time to bolus?": "Kontrollera BS, dags att ge bolus?", + "Notice": "Notering", + "required info missing": "Nödvändig information saknas", + "Insulin on Board": "Aktivt insulin (IOB)", + "Current target": "Aktuellt mål", + "Expected effect": "Förväntad effekt", + "Expected outcome": "Förväntat resultat", + "Carb Equivalent": "Kolhydratsinnehåll", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Överskott av insulin motsvarande %1U mer än nödvändigt för att nå lågt målvärde, kolhydrater ej medräknade", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Överskott av insulin motsvarande %1U mer än nödvändigt för att nå lågt målvärde, SÄKERSTÄLL ATT IOB TÄCKS AV KOLHYDRATER", + "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U minskning nödvändig i aktivt insulin för att nå lågt målvärde, för hög basal?", + "basal adjustment out of range, give carbs?": "basaländring utanför gräns, ge kolhydrater?", + "basal adjustment out of range, give bolus?": "basaländring utanför gräns, ge bolus?", + "above high": "över hög nivå", + "below low": "under låg nivå", + "Projected BG %1 target": "Önskat BS %1 mål", + "aiming at": "önskad utgång", + "Bolus %1 units": "Bolus %1 enheter", + "or adjust basal": "eller justera basal", + "Check BG using glucometer before correcting!": "Kontrollera blodglukos med fingerstick före korrigering!", + "Basal reduction to account %1 units:": "Basalsänkning för att nå %1 enheter", + "30m temp basal": "30 minuters temporär basal", + "1h temp basal": "60 minuters temporär basal", + "Cannula change overdue!": "Infusionsset, bytestid överskriden", + "Time to change cannula": "Dags att byta infusionsset", + "Change cannula soon": "Byt infusionsset snart", + "Cannula age %1 hours": "Infusionsset tid %1 timmar", + "Inserted": "Applicerad", + "CAGE": "Nål", + "COB": "COB", + "Last Carbs": "Senaste kolhydrater", + "IAGE": "Insulinålder", + "Insulin reservoir change overdue!": "Insulinbytestid överskriden", + "Time to change insulin reservoir": "Dags att byta insulinreservoar", + "Change insulin reservoir soon": "Byt insulinreservoar snart", + "Insulin reservoir age %1 hours": "Insulinreservoarsålder %1 timmar", + "Changed": "Bytt", + "IOB": "IOB", + "Careportal IOB": "IOB i Careportal", + "Last Bolus": "Senaste Bolus", + "Basal IOB": "Basal IOB", + "Source": "Källa", + "Stale data, check rig?": "Gammal data, kontrollera rigg?", + "Last received:": "Senast mottagen:", + "%1m ago": "%1m sedan", + "%1h ago": "%1h sedan", + "%1d ago": "%1d sedan", + "RETRO": "RETRO", + "SAGE": "Sensor", + "Sensor change/restart overdue!": "Sensor byte/omstart överskriden!", + "Time to change/restart sensor": "Dags att byta/starta om sensorn", + "Change/restart sensor soon": "Byt/starta om sensorn snart", + "Sensor age %1 days %2 hours": "Sensorålder %1 dagar %2 timmar", + "Sensor Insert": "Sensor insättning", + "Sensor Start": "Sensorstart", + "days": "dagar", + "Insulin distribution": "Insulindistribution", + "To see this report, press SHOW while in this view": "För att se denna rapport, klicka på \"Visa\"", + "AR2 Forecast": "AR2 Förutsägelse", + "OpenAPS Forecasts": "OpenAPS Förutsägelse", + "Temporary Target": "Tillfälligt mål", + "Temporary Target Cancel": "Avsluta tillfälligt mål", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "Profiler", + "Time in fluctuation": "Tid i fluktation", + "Time in rapid fluctuation": "Tid i snabb fluktation", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Detta är en grov uppskattning som kan vara missvisande. Det ersätter inte blodprov. Formeln är hämtad från:", + "Filter by hours": "Filtrera per timme", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tid i fluktuation och tid i snabb fluktuation mäter% av tiden under den undersökta perioden, under vilken blodsockret har förändrats relativt snabbt eller snabbt. Lägre värden är bättre", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Medel Total Daglig Förändring är summan av absolutvärdet av alla glukosförändringar under den undersökta perioden, dividerat med antalet dagar. Lägre är bättre.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Medelvärde per timme är summan av absolutvärdet av alla glukosförändringar under den undersökta perioden dividerat med antalet timmar under perioden. Lägre är bättre.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">här.", + "Mean Total Daily Change": "Medel Total Daglig Förändring", + "Mean Hourly Change": "Medelvärde per timme", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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": "Din uppladdares batteri är %1", + "virtAsstReservoir": "Du har %1 enheter kvar", + "virtAsstPumpBattery": "Din pumps batteri är %1 %2", + "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstLastLoop": "Senaste lyckade loop var %1", + "virtAsstLoopNotAvailable": "Loop plugin verkar inte vara aktiverad", + "virtAsstLoopForecastAround": "Enligt Loops förutsägelse förväntas du bli around %1 inom %2", + "virtAsstLoopForecastBetween": "Enligt Loops förutsägelse förväntas du bli between %1 and %2 inom %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": "Förutsägelse ej möjlig med tillgänlig data", + "virtAsstRawBG": "Ditt raw blodsocker är %1", + "virtAsstOpenAPSForecast": "OpenAPS slutgiltigt blodsocker är %1", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Fett [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energi [kJ]", + "Clock Views:": "Visa klocka:", + "Clock": "Klocka", + "Color": "Färg", + "Simple": "Simpel", + "TDD average": "Genomsnittlig daglig mängd insulin", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Genomsnittlig mängd kolhydrater per dag", + "Eating Soon": "Äter snart", + "Last entry {0} minutes ago": "Senaste värde {0} minuter sedan", + "change": "byta", + "Speech": "Tal", + "Target Top": "Högt målvärde", + "Target Bottom": "Lågt målvärde", + "Canceled": "Avbruten", + "Meter BG": "Blodsockermätare BG", + "predicted": "prognos", + "future": "framtida", + "ago": "förfluten", + "Last data received": "Data senast mottagen", + "Clock View": "Visa klocka", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/tr_TR.json b/translations/tr_TR.json new file mode 100644 index 00000000000..18507ce44b9 --- /dev/null +++ b/translations/tr_TR.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Port dinleniyor", + "Mo": "Pzt", + "Tu": "Sal", + "We": "Çar", + "Th": "Per", + "Fr": "Cum", + "Sa": "Cmt", + "Su": "Paz", + "Monday": "Pazartesi", + "Tuesday": "Salı", + "Wednesday": "Çarşamba", + "Thursday": "Perşembe", + "Friday": "Cuma", + "Saturday": "Cumartesi", + "Sunday": "Pazar", + "Category": "Kategori", + "Subcategory": "Altkategori", + "Name": "İsim", + "Today": "Bugün", + "Last 2 days": "Son 2 gün", + "Last 3 days": "Son 3 gün", + "Last week": "Geçen Hafta", + "Last 2 weeks": "Son 2 hafta", + "Last month": "Geçen Ay", + "Last 3 months": "Son 3 ay", + "between": "between", + "around": "around", + "and": "and", + "From": "Başlangıç", + "To": "Bitiş", + "Notes": "Not", + "Food": "Gıda", + "Insulin": "İnsülin", + "Carbs": "Karbonhidrat", + "Notes contain": "Notlar içerir", + "Target BG range bottom": "Hedef KŞ aralığı düşük", + "top": "Üstü", + "Show": "Göster", + "Display": "Görüntüle", + "Loading": "Yükleniyor", + "Loading profile": "Profil yükleniyor", + "Loading status": "Durum Yükleniyor", + "Loading food database": "Gıda veritabanı yükleniyor", + "not displayed": "görüntülenmedi", + "Loading CGM data of": "den CGM veriler yükleniyor", + "Loading treatments data of": "dan Tedavi verilerini yükle", + "Processing data of": "dan Veri işleme", + "Portion": "Porsiyon", + "Size": "Boyut", + "(none)": "(hiç)", + "None": "Hiç", + "": "", + "Result is empty": "Sonuç boş", + "Day to day": "Günden Güne", + "Week to week": "Week to week", + "Daily Stats": "Günlük İstatistikler", + "Percentile Chart": "Yüzdelik Grafiği", + "Distribution": "Dağılım", + "Hourly stats": "Saatlik istatistikler", + "netIOB stats": "netIOB istatistikleri", + "temp basals must be rendered to display this report": "Bu raporu görüntülemek için geçici bazal oluşturulmalıdır", + "Weekly success": "Haftalık başarı", + "No data available": "Veri yok", + "Low": "Düşük", + "In Range": "Hedef alanında", + "Period": "Periyot", + "High": "Yüksek", + "Average": "Ortalama", + "Low Quartile": "Alt Çeyrek", + "Upper Quartile": "Üst Çeyrek", + "Quartile": "Çeyrek", + "Date": "Tarih", + "Normal": "Normal", + "Median": "Orta Değer", + "Readings": "Ölçüm", + "StDev": "Standart Sapma", + "Daily stats report": "Günlük istatistikler raporu", + "Glucose Percentile report": "Glikoz Yüzdelik raporu", + "Glucose distribution": "Glikoz dağılımı", + "days total": "toplam gün", + "Total per day": "Günlük toplam", + "Overall": "Tüm", + "Range": "Alan", + "% of Readings": "% Okumaların", + "# of Readings": "# Okumaların", + "Mean": "ortalama", + "Standard Deviation": "Standart Sapma", + "Max": "Max", + "Min": "Min", + "A1c estimation*": "Tahmini A1c *", + "Weekly Success": "Haftalık Başarı", + "There is not sufficient data to run this report. Select more days.": "Bu raporu çalıştırmak için yeterli veri yok. Daha fazla gün seçin.", + "Using stored API secret hash": "Kaydedilmiş API secret hash kullan", + "No API secret hash stored yet. You need to enter API secret.": "Henüz bir API secret hash saklanmadı. API parolasını girmeniz gerekiyor.", + "Database loaded": "Veritabanı yüklendi", + "Error: Database failed to load": "Hata: Veritabanı yüklenemedi", + "Error": "Error", + "Create new record": "Yeni kayıt oluştur", + "Save record": "Kayıtları kaydet", + "Portions": "Porsiyonlar", + "Unit": "Birim", + "GI": "GI-Glisemik İndeks", + "Edit record": "Kaydı düzenle", + "Delete record": "Kaydı sil", + "Move to the top": "En üste taşı", + "Hidden": "Gizli", + "Hide after use": "Kullandıktan sonra gizle", + "Your API secret must be at least 12 characters long": "PI parolanız en az 12 karakter uzunluğunda olmalıdır", + "Bad API secret": "Hatalı API parolası", + "API secret hash stored": "API secret hash parolası saklandı", + "Status": "Durum", + "Not loaded": "Yüklü değil", + "Food Editor": "Gıda Editörü", + "Your database": "Sizin Veritabanınız", + "Filter": "Filtre", + "Save": "Kaydet", + "Clear": "Temizle", + "Record": "Kayıt", + "Quick picks": "Hızlı seçim", + "Show hidden": "Gizli göster", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Tedaviler", + "Time": "Zaman", + "Event Type": "Etkinlik tipi", + "Blood Glucose": "Kan Şekeri", + "Entered By": "Tarafından girildi", + "Delete this treatment?": "Bu tedaviyi sil?", + "Carbs Given": "Karbonhidrat Verilen", + "Inzulin Given": "İnsülin Verilen", + "Event Time": "Etkinliğin zamanı", + "Please verify that the data entered is correct": "Lütfen girilen verilerin doğru olduğunu kontrol edin.", + "BG": "KŞ", + "Use BG correction in calculation": "Hesaplamada KŞ düzeltmesini kullan", + "BG from CGM (autoupdated)": "CGM den KŞ (otomatik güncelleme)", + "BG from meter": "Glikometre KŞ", + "Manual BG": "Manuel KŞ", + "Quickpick": "Hızlı seçim", + "or": "veya", + "Add from database": "Veritabanından ekle", + "Use carbs correction in calculation": "Hesaplamada karbonhidrat düzeltmesini kullan", + "Use COB correction in calculation": "Hesaplamada COB aktif karbonhidrat düzeltmesini kullan", + "Use IOB in calculation": "Hesaplamada IOB aktif insülin düzeltmesini kullan", + "Other correction": "Diğer düzeltme", + "Rounding": "yuvarlama", + "Enter insulin correction in treatment": "Tedavide insülin düzeltmesini girin", + "Insulin needed": "İnsülin gerekli", + "Carbs needed": "Karbonhidrat gerekli", + "Carbs needed if Insulin total is negative value": "Toplam insülin negatif değer olduğunda karbonhidrat gereklidir", + "Basal rate": "Basal oranı", + "60 minutes earlier": "60 dak. önce", + "45 minutes earlier": "45 dak. önce", + "30 minutes earlier": "30 dak. önce", + "20 minutes earlier": "20 dak. önce", + "15 minutes earlier": "15 dak. önce", + "Time in minutes": "Dakika cinsinden süre", + "15 minutes later": "15 dak. sonra", + "20 minutes later": "20 dak. sonra", + "30 minutes later": "30 dak. sonra", + "45 minutes later": "45 dak. sonra", + "60 minutes later": "60 dak. sonra", + "Additional Notes, Comments": "Ek Notlar, Yorumlar", + "RETRO MODE": "RETRO MODE", + "Now": "Şimdi", + "Other": "Diğer", + "Submit Form": "Formu gönder", + "Profile Editor": "Profil Düzenleyicisi", + "Reports": "Raporlar", + "Add food from your database": "Veritabanınızdan yemek ekleyin", + "Reload database": "Veritabanını yeniden yükle", + "Add": "Ekle", + "Unauthorized": "Yetkisiz", + "Entering record failed": "Kayıt girişi başarısız oldu", + "Device authenticated": "Cihaz kimliği doğrulandı", + "Device not authenticated": "Cihaz kimliği doğrulanmamış", + "Authentication status": "Kimlik doğrulama durumu", + "Authenticate": "Kimlik doğrulaması", + "Remove": "Kaldır", + "Your device is not authenticated yet": "Cihazınız henüz doğrulanmamış", + "Sensor": "Sensor", + "Finger": "Parmak", + "Manual": "Elle", + "Scale": "Ölçek", + "Linear": "Doğrusal", + "Logarithmic": "Logaritmik", + "Logarithmic (Dynamic)": "Logaritmik (Dinamik)", + "Insulin-on-Board": "Aktif İnsülin (IOB)", + "Carbs-on-Board": "Aktif Karbonhidrat (COB)", + "Bolus Wizard Preview": "Bolus hesaplama Sihirbazı Önizlemesi (BWP)", + "Value Loaded": "Yüklenen Değer", + "Cannula Age": "Kanül yaşı", + "Basal Profile": "Bazal Profil", + "Silence for 30 minutes": "30 dakika sessizlik", + "Silence for 60 minutes": "60 dakika sessizlik", + "Silence for 90 minutes": "90 dakika sessizlik", + "Silence for 120 minutes": "120 dakika sessizlik", + "Settings": "Ayarlar", + "Units": "Birim", + "Date format": "Veri formatı", + "12 hours": "12 saat", + "24 hours": "24 saat", + "Log a Treatment": "Tedaviyi günlüğe kaydet", + "BG Check": "KŞ Kontol", + "Meal Bolus": "Yemek bolus", + "Snack Bolus": "Aperatif (Snack) Bolus", + "Correction Bolus": "Düzeltme Bolusu", + "Carb Correction": "Karbonhidrat Düzeltme", + "Note": "Not", + "Question": "Soru", + "Exercise": "Egzersiz", + "Pump Site Change": "Pompa Kanül değişimi", + "CGM Sensor Start": "CGM Sensörü Başlat", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "CGM Sensor yerleştir", + "Dexcom Sensor Start": "Dexcom Sensör Başlat", + "Dexcom Sensor Change": "Dexcom Sensör değiştir", + "Insulin Cartridge Change": "İnsülin rezervuar değişimi", + "D.A.D. Alert": "D.A.D(Diabetes Alert Dog)", + "Glucose Reading": "Glikoz Değeri", + "Measurement Method": "Ölçüm Metodu", + "Meter": "Glikometre", + "Insulin Given": "Verilen İnsülin", + "Amount in grams": "Gram cinsinden miktar", + "Amount in units": "Birim miktarı", + "View all treatments": "Tüm tedavileri görüntüle", + "Enable Alarms": "Alarmları Etkinleştir", + "Pump Battery Change": "Pompa pil değişimi", + "Pump Battery Low Alarm": "Pompa Düşük pil alarmı", + "Pump Battery change overdue!": "Pompa pil değişimi gecikti!", + "When enabled an alarm may sound.": "Etkinleştirilirse, alarm çalar.", + "Urgent High Alarm": "Acil Yüksek Alarm", + "High Alarm": "Yüksek Alarmı", + "Low Alarm": "Düşük Alarmı", + "Urgent Low Alarm": "Acil Düşük Alarmı", + "Stale Data: Warn": "Eski Veri: Uyarı", + "Stale Data: Urgent": "Eski Veri: Acil", + "mins": "dk.", + "Night Mode": "Gece Modu", + "When enabled the page will be dimmed from 10pm - 6am.": "Etkinleştirildiğinde, ekran akşam 22'den sabah 6'ya kadar kararır.", + "Enable": "Etkinleştir", + "Show Raw BG Data": "Ham KŞ verilerini göster", + "Never": "Hiçbir zaman", + "Always": "Her zaman", + "When there is noise": "Gürültü olduğunda", + "When enabled small white dots will be displayed for raw BG data": "Etkinleştirildiğinde, ham KŞ verileri için küçük beyaz noktalar görüntülenecektir.", + "Custom Title": "Özel Başlık", + "Theme": "Tema", + "Default": "Varsayılan", + "Colors": "Renkler", + "Colorblind-friendly colors": "Renk körü dostu görünüm", + "Reset, and use defaults": "Sıfırla ve varsayılanları kullan", + "Calibrations": "Kalibrasyon", + "Alarm Test / Smartphone Enable": "Alarm Testi / Akıllı Telefon için Etkin", + "Bolus Wizard": "Bolus Hesaplayıcısı", + "in the future": "gelecekte", + "time ago": "süre önce", + "hr ago": "saat önce", + "hrs ago": "saat önce", + "min ago": "dk. önce", + "mins ago": "dakika önce", + "day ago": "gün önce", + "days ago": "günler önce", + "long ago": "uzun zaman önce", + "Clean": "Temiz", + "Light": "Kolay", + "Medium": "Orta", + "Heavy": "Ağır", + "Treatment type": "Tedavi tipi", + "Raw BG": "Ham KŞ", + "Device": "Cihaz", + "Noise": "parazit", + "Calibration": "Kalibrasyon", + "Show Plugins": "Eklentileri Göster", + "About": "Hakkında", + "Value in": "Değer cinsinden", + "Carb Time": "Karbonhidratların alım zamanı", + "Language": "Dil", + "Add new": "Yeni ekle", + "g": "g", + "ml": "ml", + "pcs": "parça", + "Drag&drop food here": "Yiyecekleri buraya sürükle bırak", + "Care Portal": "Care Portal", + "Medium/Unknown": "Orta/Bilinmeyen", + "IN THE FUTURE": "GELECEKTE", + "Update": "Güncelleştirme", + "Order": "Sıra", + "oldest on top": "en eski üste", + "newest on top": "en yeni üste", + "All sensor events": "Tüm sensör olayları", + "Remove future items from mongo database": "Gelecekteki öğeleri mongo veritabanından kaldır", + "Find and remove treatments in the future": "Gelecekte tedavileri bulun ve kaldır", + "This task find and remove treatments in the future.": "Bu görev gelecekte tedavileri bul ve kaldır.", + "Remove treatments in the future": "Gelecekte tedavileri kaldır", + "Find and remove entries in the future": "Gelecekteki girdileri bul ve kaldır", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Yükleyicinin oluşturduğu gelecekteki CGM verilerinin yanlış tarih/saat olanlarını bul ve kaldır.", + "Remove entries in the future": "Gelecekteki girdileri kaldır", + "Loading database ...": "Veritabanı yükleniyor ...", + "Database contains %1 future records": "Veritabanı %1 gelecekteki girdileri içeriyor", + "Remove %1 selected records?": "Seçilen %1 kayıtlar kaldırılsın? ", + "Error loading database": "Veritabanını yüklerken hata oluştu", + "Record %1 removed ...": "%1 kaydı silindi ...", + "Error removing record %1": "%1 kayıt kaldırılırken hata oluştu", + "Deleting records ...": "Kayıtlar siliniyor ...", + "%1 records deleted": "%1 records deleted", + "Clean Mongo status database": "Mongo durum veritabanını temizle", + "Delete all documents from devicestatus collection": "Devicestatus koleksiyonundan tüm dokümanları sil", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Bu görev tüm durumları Devicestatus koleksiyonundan kaldırır. Yükleyici pil durumu güncellenmiyorsa kullanışlıdır.", + "Delete all documents": "Tüm Belgeleri sil", + "Delete all documents from devicestatus collection?": "Tüm Devicestatus koleksiyon belgeleri silinsin mi?", + "Database contains %1 records": "Veritabanı %1 kayıt içeriyor", + "All records removed ...": "Tüm kayıtlar kaldırıldı ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "Yönetici araçları", + "Nightscout reporting": "NightScout raporları", + "Cancel": "İptal", + "Edit treatment": "Tedaviyi düzenle", + "Duration": "süre", + "Duration in minutes": "Süre dakika cinsinden", + "Temp Basal": "Geçici Bazal Oranı", + "Temp Basal Start": "Geçici Bazal Oranını Başlanğıcı", + "Temp Basal End": "Geçici bazal oranını Bitişi", + "Percent": "Yüzde", + "Basal change in %": "Bazal değişimi % cinsinden", + "Basal value": "Bazal değeri", + "Absolute basal value": "Mutlak bazal değeri", + "Announcement": "Duyuru", + "Loading temp basal data": "Geçici bazal verileri yükleniyor", + "Save current record before changing to new?": "Yenisine geçmeden önce mevcut girişleri kaydet?", + "Profile Switch": "Profil Değiştir", + "Profile": "Profil", + "General profile settings": "Genel profil ayarları", + "Title": "Başlık", + "Database records": "Veritabanı kayıtları", + "Add new record": "Yeni kayıt ekle", + "Remove this record": "Bu kaydı kaldır", + "Clone this record to new": "Bu kaydı yeniden kopyala", + "Record valid from": "Kayıt itibaren geçerli", + "Stored profiles": "Kaydedilmiş profiller", + "Timezone": "Saat dilimi", + "Duration of Insulin Activity (DIA)": "İnsülin Etki Süresi (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.": "İnsülinin etki ettiği tipik süreye karşılık gelir. Hastaya ve insülin tipine göre değişir. Çoğu pompa insülini ve çoğu hasta için genellikle 3-4 saattir. Bazen de insülin etki süresi de denir.", + "Insulin to carb ratio (I:C)": "İnsülin/Karbonhidrat oranı (I:C)", + "Hours:": "Saat:", + "hours": "saat", + "g/hour": "g/saat", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "İnsülin ünite başına g karbonhidrat. İnsülin ünite başına kaç gram karbonhidrat tüketildiği oranıdır.", + "Insulin Sensitivity Factor (ISF)": "(ISF) İnsülin Duyarlılık Faktörü", + "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "Ünite insülin başına mg/dL veya mmol/L. Her bir Ünite düzeltme insülin ile KŞ'nin ne kadar değiştiğini gösteren orandır.", + "Carbs activity / absorption rate": "Karbonhidrat aktivitesi / emilim oranı", + "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).": "Ur birim zaman başına gram. Birim zamanda (COB) Aktif Krabonhidratdaki değişimin yanı sıra o zaman üzerinde etki etmesi gereken karbonhidrat miktarını ifade eder. Karbonhidrat emme/aktivite eğrileri, insülin aktivitesinden daha zor anlaşılmaktadır, ancak bir başlangıç gecikmesi ve ardından sabit bir emilim oranı (g/hr) kullanılarak yaklaşık olarak tahmin edilebilmektedir.", + "Basal rates [unit/hour]": "Bazal oranı [ünite/saat]", + "Target BG range [mg/dL,mmol/L]": "Hedef KŞ aralığı [mg / dL, mmol / L]", + "Start of record validity": "Kayıt geçerliliği başlangıcı", + "Icicle": "Buzsaçağı", + "Render Basal": "Bazal Grafik", + "Profile used": "Kullanılan profil", + "Calculation is in target range.": "Hesaplama hedef aralıktadır.", + "Loading profile records ...": "Profil kayıtları yükleniyor ...", + "Values loaded.": "Değerler yüklendi.", + "Default values used.": "Varsayılan değerler kullanıldı.", + "Error. Default values used.": "Hata. Varsayılan değerler kullanıldı.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Target_low ve target_high öğelerinin zaman aralıkları eşleşmiyor. Değerler varsayılanlara geri yüklendi.", + "Valid from:": "Tarihinden itibaren geçerli", + "Save current record before switching to new?": "Yenisine geçmeden önce mevcut kaydı kaydet", + "Add new interval before": "Daha önce yeni aralık ekle", + "Delete interval": "Aralığı sil", + "I:C": "İ:K", + "ISF": "ISF", + "Combo Bolus": "Kombo (Yayma) Bolus", + "Difference": "fark", + "New time": "Yeni zaman", + "Edit Mode": "Düzenleme Modu", + "When enabled icon to start edit mode is visible": "Etkinleştirildiğinde düzenleme modunun başında simgesi görünecektir.", + "Operation": "İşlem", + "Move": "Taşı", + "Delete": "Sil", + "Move insulin": "İnsülini taşı", + "Move carbs": "Karbonhidratları taşı", + "Remove insulin": "İnsülini kaldır", + "Remove carbs": "Karbonhidratları kaldır", + "Change treatment time to %1 ?": "Tedavi tarihini %1 e değiştirilsin mi?", + "Change carbs time to %1 ?": "Karbonhidrat zamanını %1 e değiştirilsin mi?", + "Change insulin time to %1 ?": "İnsülin tarihini %1 e değiştirilsin mi?", + "Remove treatment ?": "Tedavi kaldırılsın mı? ", + "Remove insulin from treatment ?": "İnsülini tedaviden çıkartılsın mı?", + "Remove carbs from treatment ?": "Karbonhidratları tedaviden çıkartılsın mı ?", + "Rendering": "Grafik oluşturuluyor...", + "Loading OpenAPS data of": "dan OpenAPS verileri yükleniyor", + "Loading profile switch data": "Veri profili değişikliği yükleniyor", + "Redirecting you to the Profile Editor to create a new profile.": "Yanlış profil ayarı.\nGörüntülenen zamana göre profil tanımlanmamış.\nYeni profil oluşturmak için profil düzenleyicisine yönlendiriliyor.", + "Pump": "Pompa", + "Sensor Age": "(SAGE) Sensör yaşı ", + "Insulin Age": "(IAGE) İnsülin yaşı", + "Temporary target": "Geçici hedef", + "Reason": "Neden", + "Eating soon": "Yakında yemek", + "Top": "Üst", + "Bottom": "Alt", + "Activity": "Aktivite", + "Targets": "Hedefler", + "Bolus insulin:": "Bolus insülin:", + "Base basal insulin:": "Temel bazal insülin", + "Positive temp basal insulin:": "Pozitif geçici bazal insülin:", + "Negative temp basal insulin:": "Negatif geçici bazal insülin:", + "Total basal insulin:": "Toplam bazal insülin:", + "Total daily insulin:": "Günlük toplam insülin:", + "Unable to %1 Role": "%1 Rolü yapılandırılamadı", + "Unable to delete Role": "Rol silinemedi", + "Database contains %1 roles": "Veritabanı %1 rol içerir", + "Edit Role": "Rolü düzenle", + "admin, school, family, etc": "yönetici, okul, aile, vb", + "Permissions": "İzinler", + "Are you sure you want to delete: ": "Silmek istediğinizden emin misiniz:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Her rolün bir veya daha fazla izni vardır.*izni bir yer tutucudur ve izinler ayırıcı olarak : ile hiyerarşiktir.", + "Add new Role": "Yeni Rol ekle", + "Roles - Groups of People, Devices, etc": "Roller - İnsan grupları, Cihazlar vb.", + "Edit this role": "Bu rolü düzenle", + "Admin authorized": "Yönetici yetkilendirildi", + "Subjects - People, Devices, etc": "Konular - İnsanlar, Cihazlar, vb.", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Her konu benzersiz bir erişim anahtarı ve bir veya daha fazla rol alır. Seçilen konuyla ilgili yeni bir görünüm elde etmek için erişim tuşuna tıklayın. Bu gizli bağlantı paylaşılabilinir.", + "Add new Subject": "Yeni konu ekle", + "Unable to %1 Subject": "%1 konu yapılamıyor", + "Unable to delete Subject": "Konu silinemedi", + "Database contains %1 subjects": "Veritabanı %1 konu içeriyor", + "Edit Subject": "Konuyu düzenle", + "person, device, etc": "kişi, cihaz, vb", + "role1, role2": "rol1, rol2", + "Edit this subject": "Bu konuyu düzenle", + "Delete this subject": "Bu konuyu sil", + "Roles": "Roller", + "Access Token": "Erişim Simgesi (Access Token)", + "hour ago": "saat önce", + "hours ago": "saat önce", + "Silence for %1 minutes": "%1 dakika sürelik sessizlik", + "Check BG": "KŞ'ini kontrol et", + "BASAL": "Bazal", + "Current basal": "Geçerli Bazal", + "Sensitivity": "Duyarlılık Faktörü (ISF)", + "Current Carb Ratio": "Geçerli Karbonhidrat oranı I/C (ICR)", + "Basal timezone": "Bazal saat dilimi", + "Active profile": "Aktif profil", + "Active temp basal": "Aktif geçici bazal oranı", + "Active temp basal start": "Aktif geçici bazal oranı başlangıcı", + "Active temp basal duration": "Aktif geçici bazal süresi", + "Active temp basal remaining": "Aktif geçici bazal kalan", + "Basal profile value": "Bazal profil değeri", + "Active combo bolus": "Aktive kombo bolus", + "Active combo bolus start": "Aktif gecikmeli bolus başlangıcı", + "Active combo bolus duration": "Active combo bolus süresi", + "Active combo bolus remaining": "Aktif kombo (yayım) bolus kaldı", + "BG Delta": "KŞ farkı", + "Elapsed Time": "Geçen zaman", + "Absolute Delta": "Mutlak fark", + "Interpolated": "Aralıklı", + "BWP": "BWP", + "Urgent": "Acil", + "Warning": "Uyarı", + "Info": "Info", + "Lowest": "En düşük değer", + "Snoozing high alarm since there is enough IOB": "Yeterli IOB(Aktif İnsülin) olduğundan KŞ yüksek uyarımını ertele", + "Check BG, time to bolus?": "KŞine bakın, gerekirse bolus verin?", + "Notice": "Not", + "required info missing": "gerekli bilgi eksik", + "Insulin on Board": "(IOB) Aktif İnsülin", + "Current target": "Mevcut hedef", + "Expected effect": "Beklenen etki", + "Expected outcome": "Beklenen sonuç", + "Carb Equivalent": "Karbonhidrat eşdeğeri", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Fazla insülin: Karbonhidratları dikkate alınmadan, alt hedefe ulaşmak için gerekenden %1U'den daha fazla", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Fazla insülin: Alt KŞ hedefine ulaşmak için gerekenden %1 daha fazla insülin.IOB(Aktif İnsülin) Karbonhidrat tarafından karşılandığından emin olun.", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Alt KŞ hedefi için %1U aktif insülin azaltılmalı, bazal oranı çok mu yüksek?", + "basal adjustment out of range, give carbs?": "Bazal oran ayarlaması limit dışı, karbonhidrat alınsın mı?", + "basal adjustment out of range, give bolus?": "Bazal oran ayarlaması limit dışı, bolus alınsın mı?", + "above high": "üzerinde yüksek", + "below low": "altında düşük", + "Projected BG %1 target": "Beklenen KŞ %1 hedefi", + "aiming at": "istenen sonuç", + "Bolus %1 units": "Bolus %1 Ünite", + "or adjust basal": "ya da bazal ayarlama", + "Check BG using glucometer before correcting!": "Düzeltme bolusu öncesi glikometreyle parmaktan KŞini kontrol edin!", + "Basal reduction to account %1 units:": "%1 birimi telafi etmek için azaltılmış Bazaloranı:", + "30m temp basal": "30 dk. geçici Bazal ", + "1h temp basal": "1 sa. geçici bazal", + "Cannula change overdue!": "Kanül değişimi gecikmiş!", + "Time to change cannula": "Kanül değiştirme zamanı", + "Change cannula soon": "Yakında kanül değiştirin", + "Cannula age %1 hours": "Kanül yaşı %1 saat", + "Inserted": "Yerleştirilmiş", + "CAGE": "CAGE", + "COB": "COB", + "Last Carbs": "Son Karbonhidrat", + "IAGE": "IAGE", + "Insulin reservoir change overdue!": "İnsülin rezervuarı değişimi gecikmiş!", + "Time to change insulin reservoir": "İnsülin rezervuarını değiştirme zamanı!", + "Change insulin reservoir soon": "Yakında insülin rezervuarını değiştirin", + "Insulin reservoir age %1 hours": "İnsülin rezervuar yaşı %1 saat", + "Changed": "Değişmiş", + "IOB": "IOB", + "Careportal IOB": "Careportal IOB (Aktif İnsülin)", + "Last Bolus": "Son Bolus", + "Basal IOB": "Bazal IOB", + "Source": "Kaynak", + "Stale data, check rig?": "Veri güncel değil, vericiyi kontrol et?", + "Last received:": "Son alınan:", + "%1m ago": "%1 dk. önce", + "%1h ago": "%1 sa. önce", + "%1d ago": "%1 gün önce", + "RETRO": "RETRO Geçmiş", + "SAGE": "SAGE", + "Sensor change/restart overdue!": "Sensör değişimi/yeniden başlatma gecikti!", + "Time to change/restart sensor": "Sensörü değiştirme/yeniden başlatma zamanı", + "Change/restart sensor soon": "Sensörü yakında değiştir/yeniden başlat", + "Sensor age %1 days %2 hours": "Sensör yaşı %1 gün %2 saat", + "Sensor Insert": "Sensor yerleştirme", + "Sensor Start": "Sensör başlatma", + "days": "Gün", + "Insulin distribution": "İnsülin dağılımı", + "To see this report, press SHOW while in this view": "Bu raporu görmek için bu görünümde GÖSTER düğmesine basın.", + "AR2 Forecast": "AR2 Tahmini", + "OpenAPS Forecasts": "OpenAPS Tahminleri", + "Temporary Target": "Geçici Hedef", + "Temporary Target Cancel": "Geçici Hedef İptal", + "OpenAPS Offline": "OpenAPS Offline (çevrimdışı)", + "Profiles": "Profiller", + "Time in fluctuation": "Dalgalanmada geçen süre", + "Time in rapid fluctuation": "Hızlı dalgalanmalarda geçen süre", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Bu bir kaba tahmindir ve çok hata içerebilir gerçek kan şekeri testlerinin yerini tutmayacaktır. Kullanılan formülde buradandır:", + "Filter by hours": "Saatlere göre filtrele", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Dalgalanmadaki zaman ve Hızlı dalgalanmadaki zaman, kan şekerinin nispeten hızlı veya çok hızlı bir şekilde değiştiği, incelenen dönemdeki zamanın %'sini ölçer. Düşük değerler daha iyidir.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Toplam Günlük Değişim, incelenen süre için, gün sayısına bölünen tüm glukoz değerlerinin mutlak değerinin toplamıdır. Düşük değer daha iyidir.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Saat başına ortalama değişim, gözlem periyodu üzerindeki tüm glikoz değişikliklerinin mutlak değerlerinin saat sayısına bölünmesiyle elde edilen toplam değerdir. Düşük değerler daha iyidir.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">buradan.", + "Mean Total Daily Change": "Günde toplam ortalama değişim", + "Mean Hourly Change": "Saatte ortalama değişim", + "FortyFiveDown": "biraz düşen", + "FortyFiveUp": "biraz yükselen", + "Flat": "sabit", + "SingleUp": "yükseliyor", + "SingleDown": "düşüyor", + "DoubleDown": "hızlı düşen", + "DoubleUp": "hızla yükselen", + "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 ve %2 e kadar %3.", + "virtAsstBasal": "%1 geçerli bazal oranı saatte %2 ünite", + "virtAsstBasalTemp": "%1 geçici bazal %2 ünite %3 sona eriyor", + "virtAsstIob": "ve Sizde %1 aktif insulin var", + "virtAsstIobIntent": "Sizde %1 aktif insülin var", + "virtAsstIobUnits": "hala %1 birim", + "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstPreamble": "Senin", + "virtAsstPreamble3person": "%1 bir tane var", + "virtAsstNoInsulin": "yok", + "virtAsstUploadBattery": "Yükleyici piliniz %1", + "virtAsstReservoir": "%1 birim kaldı", + "virtAsstPumpBattery": "Pompa piliniz %1 %2", + "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstLastLoop": "Son başarılı döngü %1 oldu", + "virtAsstLoopNotAvailable": "Döngü eklentisi etkin görünmüyor", + "virtAsstLoopForecastAround": "Döngü tahminine göre sonraki %2 ye göre around %1 olması bekleniyor", + "virtAsstLoopForecastBetween": "Döngü tahminine göre sonraki %3 ye göre between %1 and %2 olması bekleniyor", + "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": "Mevcut verilerle tahmin edilemedi", + "virtAsstRawBG": "Ham kan şekeriniz %1", + "virtAsstOpenAPSForecast": "OpenAPS tarafından tahmin edilen kan şekeri %1", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Ismeretlen szándék", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Yağ [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Enerji [kJ]", + "Clock Views:": "Saat Görünümü", + "Clock": "Saat", + "Color": "Renk", + "Simple": "Basit", + "TDD average": "Ortalama günlük Toplam Doz (TDD)", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Günde ortalama karbonhidrat", + "Eating Soon": "Yakında Yenecek", + "Last entry {0} minutes ago": "Son giriş {0} dakika önce", + "change": "değişiklik", + "Speech": "Konuş", + "Target Top": "Hedef Üst", + "Target Bottom": "Hedef Alt", + "Canceled": "İptal edildi", + "Meter BG": "Glikometre KŞ", + "predicted": "tahmin", + "future": "gelecek", + "ago": "önce", + "Last data received": "Son veri alındı", + "Clock View": "Saat Görünümü", + "Protein": "Protein", + "Fat": "Yağ", + "Protein average": "Protein Ortalaması", + "Fat average": "Yağ Ortalaması", + "Total carbs": "Toplam Karbonhidrat", + "Total protein": "Toplam Protein", + "Total fat": "Toplam Yağ", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/zh_CN.json b/translations/zh_CN.json new file mode 100644 index 00000000000..7d57690a4b8 --- /dev/null +++ b/translations/zh_CN.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "正在监听端口", + "Mo": "一", + "Tu": "二", + "We": "三", + "Th": "四", + "Fr": "五", + "Sa": "六", + "Su": "日", + "Monday": "星期一", + "Tuesday": "星期二", + "Wednesday": "星期三", + "Thursday": "星期四", + "Friday": "星期五", + "Saturday": "星期六", + "Sunday": "星期日", + "Category": "类别", + "Subcategory": "子类别", + "Name": "名称", + "Today": "今天", + "Last 2 days": "过去2天", + "Last 3 days": "过去3天", + "Last week": "上周", + "Last 2 weeks": "过去2周", + "Last month": "上个月", + "Last 3 months": "过去3个月", + "between": "between", + "around": "around", + "and": "and", + "From": "从", + "To": "到", + "Notes": "记录", + "Food": "食物", + "Insulin": "胰岛素", + "Carbs": "碳水化合物", + "Notes contain": "记录包括", + "Target BG range bottom": "目标血糖范围 下限", + "top": "上限", + "Show": "生成", + "Display": "显示", + "Loading": "载入中", + "Loading profile": "载入配置文件", + "Loading status": "载入状态", + "Loading food database": "载入食物数据库", + "not displayed": "未显示", + "Loading CGM data of": "载入CGM(连续血糖监测)数据从", + "Loading treatments data of": "载入操作数据从", + "Processing data of": "处理数据从", + "Portion": "部分", + "Size": "大小", + "(none)": "(无)", + "None": "无", + "": "<无>", + "Result is empty": "结果为空", + "Day to day": "日到日", + "Week to week": "Week to week", + "Daily Stats": "每日状态", + "Percentile Chart": "百分位图形", + "Distribution": "分布", + "Hourly stats": "每小时状态", + "netIOB stats": "netIOB stats", + "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "Weekly success": "每周统计", + "No data available": "无可用数据", + "Low": "低血糖", + "In Range": "范围内", + "Period": "期间", + "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*": "糖化血红蛋白估算", + "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": "Error", + "Create new record": "新增记录", + "Save record": "保存记录", + "Portions": "部分", + "Unit": "单位", + "GI": "GI(血糖生成指数)", + "Edit record": "编辑记录", + "Delete record": "删除记录", + "Move to the top": "移至顶端", + "Hidden": "隐藏", + "Hide after use": "使用后隐藏", + "Your API secret must be at least 12 characters long": "API密钥最少需要12个字符", + "Bad API secret": "API密钥错误", + "API secret hash stored": "API密钥已存储", + "Status": "状态", + "Not loaded": "未载入", + "Food Editor": "食物编辑器", + "Your database": "你的数据库", + "Filter": "过滤器", + "Save": "保存", + "Clear": "清除", + "Record": "记录", + "Quick picks": "快速选择", + "Show hidden": "显示隐藏值", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "操作", + "Time": "时间", + "Event Type": "事件类型", + "Blood Glucose": "血糖值", + "Entered By": "输入人", + "Delete this treatment?": "删除这个操作?", + "Carbs Given": "碳水化合物量", + "Inzulin Given": "胰岛素输注", + "Event Time": "事件时间", + "Please verify that the data entered is correct": "请验证输入的数据是否正确", + "BG": "血糖", + "Use BG correction in calculation": "使用血糖值修正计算", + "BG from CGM (autoupdated)": "CGM(连续血糖监测)测量的血糖值(自动更新)", + "BG from meter": "血糖仪测量的血糖值", + "Manual BG": "手动输入的血糖值", + "Quickpick": "快速选择", + "or": "或", + "Add from database": "从数据库增加", + "Use carbs correction in calculation": "使用碳水化合物修正计算结果", + "Use COB correction in calculation": "使用COB(活性碳水化合物)修正计算结果", + "Use IOB in calculation": "使用IOB(活性胰岛素)修正计算结果", + "Other correction": "其它修正", + "Rounding": "取整", + "Enter insulin correction in treatment": "在操作中输入胰岛素修正", + "Insulin needed": "需要的胰岛素量", + "Carbs needed": "需要的碳水量", + "Carbs needed if Insulin total is negative value": "如果胰岛素总量为负时所需的碳水化合物量", + "Basal rate": "基础率", + "60 minutes earlier": "60分钟前", + "45 minutes earlier": "45分钟前", + "30 minutes earlier": "30分钟前", + "20 minutes earlier": "20分钟前", + "15 minutes earlier": "15分钟前", + "Time in minutes": "1分钟前", + "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": "CGM探头", + "Finger": "手指", + "Manual": "手动", + "Scale": "函数", + "Linear": "线性", + "Logarithmic": "对数", + "Logarithmic (Dynamic)": "对数(动态)", + "Insulin-on-Board": "活性胰岛素(IOB)", + "Carbs-on-Board": "活性碳水化合物(COB)", + "Bolus Wizard Preview": "大剂量向导预览(BWP)", + "Value Loaded": "数值已读取", + "Cannula Age": "管路使用时间(CAGE)", + "Basal Profile": "基础率配置文件", + "Silence for 30 minutes": "静音30分钟", + "Silence for 60 minutes": "静音60分钟", + "Silence for 90 minutes": "静音90分钟", + "Silence for 120 minutes": "静音2小时", + "Settings": "设置", + "Units": "计量单位", + "Date format": "时间格式", + "12 hours": "12小时制", + "24 hours": "24小时制", + "Log a Treatment": "记录操作", + "BG Check": "测量血糖", + "Meal Bolus": "正餐大剂量", + "Snack Bolus": "加餐大剂量", + "Correction Bolus": "临时大剂量", + "Carb Correction": "碳水修正", + "Note": "备忘", + "Question": "问题", + "Exercise": "运动", + "Pump Site Change": "更换胰岛素输注部位", + "CGM Sensor Start": "启动CGM(连续血糖监测)探头", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "植入CGM(连续血糖监测)探头", + "Dexcom Sensor Start": "启动Dexcom探头", + "Dexcom Sensor Change": "更换Dexcom探头", + "Insulin Cartridge Change": "更换胰岛素储液器", + "D.A.D. Alert": "D.A.D(低血糖通报犬)警告", + "Glucose Reading": "血糖数值", + "Measurement Method": "测量方法", + "Meter": "血糖仪", + "Insulin Given": "胰岛素输注量", + "Amount in grams": "总量(g)", + "Amount in units": "总量(U)", + "View all treatments": "查看所有操作", + "Enable Alarms": "启用报警", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "启用后可发出声音报警", + "Urgent High Alarm": "血糖过高报警", + "High Alarm": "高血糖报警", + "Low Alarm": "低血糖报警", + "Urgent Low Alarm": "血糖过低报警", + "Stale Data: Warn": "数据过期:提醒", + "Stale Data: Urgent": "数据过期:警告", + "mins": "分", + "Night Mode": "夜间模式", + "When enabled the page will be dimmed from 10pm - 6am.": "启用后将在夜间22点至早晨6点降低页面亮度", + "Enable": "启用", + "Show Raw BG Data": "显示原始血糖数据", + "Never": "不显示", + "Always": "一直显示", + "When there is noise": "当有噪声时显示", + "When enabled small white dots will be displayed for raw BG data": "启用后将使用小白点标注原始血糖数据", + "Custom Title": "自定义标题", + "Theme": "主题", + "Default": "默认", + "Colors": "彩色", + "Colorblind-friendly colors": "色盲患者可辨识的颜色", + "Reset, and use defaults": "使用默认值重置", + "Calibrations": "校准", + "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": "原始血糖", + "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": "在未来", + "Update": "更新认证状态", + "Order": "排序", + "oldest on top": "按时间升序排列", + "newest on top": "按时间降序排列", + "All sensor events": "所有探头事件", + "Remove future items from mongo database": "从数据库中清除所有未来条目", + "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 records deleted", + "Clean Mongo status database": "清除状态数据库", + "Delete all documents from devicestatus collection": "从设备状态采集删除所有文档", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "此功能从设备状态采集中删除所有文档。适用于上传设备电量信息不能正常同步时使用。", + "Delete all documents": "删除所有文档", + "Delete all documents from devicestatus collection?": "从设备状态采集删除所有文档?", + "Database contains %1 records": "数据库包含%1条记录", + "All records removed ...": "所有记录已经被清除", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "管理工具", + "Nightscout reporting": "Nightscout报表生成器", + "Cancel": "取消", + "Edit treatment": "编辑操作", + "Duration": "持续", + "Duration in minutes": "持续时间(分钟)", + "Temp Basal": "临时基础率", + "Temp Basal Start": "临时基础率开始", + "Temp Basal End": "临时基础率结束", + "Percent": "百分比", + "Basal change in %": "基础率变化百分比", + "Basal value": "基础率值", + "Absolute basal value": "绝对基础率值", + "Announcement": "通告", + "Loading temp basal data": "载入临时基础率数据", + "Save current record before changing to new?": "在修改至新值前保存当前记录?", + "Profile Switch": "切换配置文件", + "Profile": "配置文件", + "General profile settings": "通用配置文件设置", + "Title": "标题", + "Database records": "数据库记录", + "Add new record": "新增记录", + "Remove this record": "删除记录", + "Clone this record to new": "复制记录", + "Record valid from": "有效记录,从", + "Stored profiles": "配置文件已存储", + "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)": "碳水化合物系数(ICR)", + "Hours:": "小时:", + "hours": "小时", + "g/hour": "g/小时", + "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每单位胰岛素。每单位输入胰岛素导致血糖变化的比例", + "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]": "基础率 [U/小时]", + "Target BG range [mg/dL,mmol/L]": "目标血糖范围 [mg/dL,mmol/L]", + "Start of record validity": "有效记录开始", + "Icicle": "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": "ICR", + "ISF": "ISF", + "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.": "配置文件设置错误。\n没有配置文件定义为显示时间。\n返回配置文件编辑器以新建配置文件。", + "Pump": "胰岛素泵", + "Sensor Age": "探头使用时间(SAGE)", + "Insulin Age": "胰岛素使用时间(IAGE)", + "Temporary target": "临时目标", + "Reason": "原因", + "Eating soon": "接近用餐时间", + "Top": "顶部", + "Bottom": "底部", + "Activity": "有效的", + "Targets": "目标", + "Bolus insulin:": "大剂量胰岛素", + "Base basal insulin:": "基础率胰岛素", + "Positive temp basal insulin:": "实际临时基础率胰岛素", + "Negative temp basal insulin:": "其余临时基础率胰岛素", + "Total basal insulin:": "基础率胰岛素合计", + "Total daily insulin:": "每日胰岛素合计", + "Unable to %1 Role": "%1角色不可用", + "Unable to delete Role": "无法删除角色", + "Database contains %1 roles": "数据库包含%1个角色", + "Edit Role": "编辑角色", + "admin, school, family, etc": "政府、学校、家庭等", + "Permissions": "权限", + "Are you sure you want to delete: ": "你确定要删除:", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "每个角色都具有一个或多个权限。权限设置时使用*作为通配符,层次结构使用:作为分隔符。", + "Add new Role": "添加新角色", + "Roles - Groups of People, Devices, etc": "角色 - 一组人或设备等", + "Edit this role": "编辑角色", + "Admin authorized": "已授权", + "Subjects - People, Devices, etc": "用户 - 人、设备等", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "每个用户具有唯一的访问令牌和一个或多个角色。在访问令牌上单击打开新窗口查看已选择用户,此时该链接可分享。", + "Add new Subject": "添加新用户", + "Unable to %1 Subject": "%1用户不可用", + "Unable to delete Subject": "无法删除用户", + "Database contains %1 subjects": "数据库包含%1个用户", + "Edit Subject": "编辑用户", + "person, device, etc": "人、设备等", + "role1, role2": "角色1、角色2", + "Edit this subject": "编辑此用户", + "Delete this subject": "删除此用户", + "Roles": "角色", + "Access Token": "访问令牌", + "hour ago": "小时前", + "hours ago": "小时前", + "Silence for %1 minutes": "静音%1分钟", + "Check BG": "测量血糖", + "BASAL": "基础率", + "Current basal": "当前基础率", + "Sensitivity": "胰岛素敏感系数", + "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": "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单位,确认IOB(活性胰岛素)被碳水化合物覆盖", + "%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": "管路", + "COB": "活性碳水COB", + "Last Carbs": "上次碳水", + "IAGE": "胰岛素", + "Insulin reservoir change overdue!": "超过更换胰岛素储液器的时间", + "Time to change insulin reservoir": "已到更换胰岛素储液器的时间", + "Change insulin reservoir soon": "接近更换胰岛素储液器的时间", + "Insulin reservoir age %1 hours": "胰岛素储液器已使用%1小时", + "Changed": "已更换", + "IOB": "活性胰岛素IOB", + "Careportal IOB": "服务面板IOB(活性胰岛素)", + "Last Bolus": "上次大剂量", + "Basal IOB": "基础率IOB(活性胰岛素)", + "Source": "来源", + "Stale data, check rig?": "数据过期,检查一下设备?", + "Last received:": "上次接收:", + "%1m ago": "%1分钟前", + "%1h ago": "%1小时前", + "%1d ago": "%1天前", + "RETRO": "历史数据", + "SAGE": "探头", + "Sensor change/restart overdue!": "超过更换/重启探头的时间", + "Time to change/restart sensor": "已到更换/重启探头的时间", + "Change/restart sensor soon": "接近更换/重启探头的时间", + "Sensor age %1 days %2 hours": "探头使用了%1天%2小时", + "Sensor Insert": "植入探头", + "Sensor Start": "启动探头", + "days": "天", + "Insulin distribution": "胰岛素分布", + "To see this report, press SHOW while in this view": "要查看此报告,请在此视图中按生成", + "AR2 Forecast": "AR2 预测", + "OpenAPS Forecasts": "OpenAPS 预测", + "Temporary Target": "临时目标", + "Temporary Target Cancel": "临时目标取消", + "OpenAPS Offline": "OpenAPS 离线", + "Profiles": "配置文件", + "Time in fluctuation": "波动时间", + "Time in rapid fluctuation": "快速波动时间", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "这只是一个粗略的估计,可能非常不准确,并不能取代测指血", + "Filter by hours": "按小时过滤", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "在检查期间血糖波动时间和快速波动时间占的时间百分比,在此期间血糖相对快速或快速地变化。百分比值越低越好。", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "平均每日总变化是检查期间所有血糖偏移的绝对值之和除以天数。越低越好", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "平均每小时变化是检查期间所有血糖偏移的绝对值之和除以该期间的小时数。 越低越好", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", + "Mean Total Daily Change": "平均每日总变化", + "Mean Hourly Change": "平均每小时变化", + "FortyFiveDown": "缓慢下降", + "FortyFiveUp": "缓慢上升", + "Flat": "平", + "SingleUp": "上升", + "SingleDown": "下降", + "DoubleDown": "快速下降", + "DoubleUp": "快速上升", + "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 和 %2 到 %3.", + "virtAsstBasal": "%1 当前基础率是 %2 U/小时", + "virtAsstBasalTemp": "%1 临时基础率 %2 U/小时将会在 %3结束", + "virtAsstIob": "并且你有 %1 的活性胰岛素.", + "virtAsstIobIntent": "你有 %1 的活性胰岛素", + "virtAsstIobUnits": "%1 单位", + "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstPreamble": "你的", + "virtAsstPreamble3person": "%1 有一个 ", + "virtAsstNoInsulin": "否", + "virtAsstUploadBattery": "你的手机电池电量是 %1 ", + "virtAsstReservoir": "你剩余%1 U的胰岛素", + "virtAsstPumpBattery": "你的泵电池电量是%1 %2", + "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstLastLoop": "最后一次成功闭环的是在%1", + "virtAsstLoopNotAvailable": "Loop插件看起来没有被启用", + "virtAsstLoopForecastAround": "根据loop的预测,在接下来的%2你的血糖将会是around %1", + "virtAsstLoopForecastBetween": "根据loop的预测,在接下来的%3你的血糖将会是between %1 and %2", + "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": "血糖数据不可用,无法预测未来走势", + "virtAsstRawBG": "你的血糖是 %1", + "virtAsstOpenAPSForecast": "OpenAPS 预测最终血糖是 %1", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "脂肪[g]", + "Protein [g]": "蛋白质[g]", + "Energy [kJ]": "能量 [kJ]", + "Clock Views:": "时钟视图", + "Clock": "时钟", + "Color": "彩色", + "Simple": "简单", + "TDD average": "日胰岛素用量平均值", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "碳水化合物平均值", + "Eating Soon": "过会吃饭", + "Last entry {0} minutes ago": "最后一个条目 {0} 分钟之前", + "change": "改变", + "Speech": "朗读", + "Target Top": "目标高值", + "Target Bottom": "目标低值", + "Canceled": "被取消了", + "Meter BG": "指血血糖值", + "predicted": "预测", + "future": "将来", + "ago": "之前", + "Last data received": "上次收到数据", + "Clock View": "时钟视图", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/translations/zh_TW.json b/translations/zh_TW.json new file mode 100644 index 00000000000..5e32ca8520b --- /dev/null +++ b/translations/zh_TW.json @@ -0,0 +1,660 @@ +{ + "Listening on port": "Listening on port", + "Mo": "Mo", + "Tu": "Tu", + "We": "We", + "Th": "Th", + "Fr": "Fr", + "Sa": "Sa", + "Su": "Su", + "Monday": "Monday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday", + "Thursday": "Thursday", + "Friday": "Friday", + "Saturday": "Saturday", + "Sunday": "Sunday", + "Category": "Category", + "Subcategory": "Subcategory", + "Name": "Name", + "Today": "Today", + "Last 2 days": "Last 2 days", + "Last 3 days": "Last 3 days", + "Last week": "Last week", + "Last 2 weeks": "Last 2 weeks", + "Last month": "Last month", + "Last 3 months": "Last 3 months", + "between": "between", + "around": "around", + "and": "and", + "From": "From", + "To": "To", + "Notes": "Notes", + "Food": "Food", + "Insulin": "Insulin", + "Carbs": "Carbs", + "Notes contain": "Notes contain", + "Target BG range bottom": "Target BG range bottom", + "top": "top", + "Show": "Show", + "Display": "Display", + "Loading": "Loading", + "Loading profile": "Loading profile", + "Loading status": "Loading status", + "Loading food database": "Loading food database", + "not displayed": "not displayed", + "Loading CGM data of": "Loading CGM data of", + "Loading treatments data of": "Loading treatments data of", + "Processing data of": "Processing data of", + "Portion": "Portion", + "Size": "Size", + "(none)": "(無)", + "None": "無", + "": "", + "Result is empty": "Result is empty", + "Day to day": "Day to day", + "Week to week": "Week to week", + "Daily Stats": "Daily Stats", + "Percentile Chart": "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", + "Weekly success": "Weekly success", + "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": "使用已存儲的API密鑰哈希值", + "No API secret hash stored yet. You need to enter API secret.": "沒有已存儲的API密鑰,請輸入API密鑰。", + "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", + "GI": "GI", + "Edit record": "Edit record", + "Delete record": "Delete record", + "Move to the top": "Move to the top", + "Hidden": "Hidden", + "Hide after use": "Hide after use", + "Your API secret must be at least 12 characters long": "API密鑰最少需要12個字符", + "Bad API secret": "API密鑰錯誤", + "API secret hash stored": "API密鑰已存儲", + "Status": "Status", + "Not loaded": "Not loaded", + "Food Editor": "Food Editor", + "Your database": "Your database", + "Filter": "Filter", + "Save": "保存", + "Clear": "Clear", + "Record": "Record", + "Quick picks": "Quick picks", + "Show hidden": "Show hidden", + "Your API secret or token": "Your API secret or token", + "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Treatments": "Treatments", + "Time": "時間", + "Event Type": "Event Type", + "Blood Glucose": "Blood Glucose", + "Entered By": "Entered By", + "Delete this treatment?": "Delete this treatment?", + "Carbs Given": "Carbs Given", + "Inzulin Given": "Inzulin Given", + "Event Time": "Event Time", + "Please verify that the data entered is correct": "Please verify that the data entered is correct", + "BG": "BG", + "Use BG correction in calculation": "Use BG correction in calculation", + "BG from CGM (autoupdated)": "BG from CGM (autoupdated)", + "BG from meter": "BG from meter", + "Manual BG": "Manual BG", + "Quickpick": "Quickpick", + "or": "or", + "Add from database": "Add from database", + "Use carbs correction in calculation": "Use carbs correction in calculation", + "Use COB correction in calculation": "Use COB correction in calculation", + "Use IOB in calculation": "Use IOB in calculation", + "Other correction": "Other correction", + "Rounding": "Rounding", + "Enter insulin correction in treatment": "Enter insulin correction in treatment", + "Insulin needed": "Insulin needed", + "Carbs needed": "Carbs needed", + "Carbs needed if Insulin total is negative value": "Carbs needed if Insulin total is negative value", + "Basal rate": "Basal rate", + "60 minutes earlier": "60 minutes earlier", + "45 minutes earlier": "45 minutes earlier", + "30 minutes earlier": "30 minutes earlier", + "20 minutes earlier": "20 minutes earlier", + "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": "配置文件編輯器", + "Reports": "生成報表", + "Add food from your database": "Add food from your database", + "Reload database": "Reload database", + "Add": "Add", + "Unauthorized": "未授權", + "Entering record failed": "Entering record failed", + "Device authenticated": "設備已認證", + "Device not authenticated": "設備未認證", + "Authentication status": "認證狀態", + "Authenticate": "認證", + "Remove": "取消", + "Your device is not authenticated yet": "這個設備還未進行認證", + "Sensor": "Sensor", + "Finger": "Finger", + "Manual": "Manual", + "Scale": "函數", + "Linear": "線性", + "Logarithmic": "對數", + "Logarithmic (Dynamic)": "對數(動態)", + "Insulin-on-Board": "活性胰島素(IOB)", + "Carbs-on-Board": "活性碳水化合物(COB)", + "Bolus Wizard Preview": "大劑量嚮導預覽(BWP)", + "Value Loaded": "數值已讀取", + "Cannula Age": "管路使用時間(CAGE)", + "Basal Profile": "基礎率配置文件", + "Silence for 30 minutes": "靜音30分鐘", + "Silence for 60 minutes": "靜音60分鐘", + "Silence for 90 minutes": "靜音90分鐘", + "Silence for 120 minutes": "靜音2小時", + "Settings": "設置", + "Units": "计量單位", + "Date format": "時間格式", + "12 hours": "12小時制", + "24 hours": "24小時制", + "Log a Treatment": "Log a Treatment", + "BG Check": "BG Check", + "Meal Bolus": "Meal Bolus", + "Snack Bolus": "Snack Bolus", + "Correction Bolus": "Correction Bolus", + "Carb Correction": "Carb Correction", + "Note": "Note", + "Question": "Question", + "Exercise": "Exercise", + "Pump Site Change": "Pump Site Change", + "CGM Sensor Start": "CGM Sensor Start", + "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Insert": "CGM Sensor Insert", + "Dexcom Sensor Start": "Dexcom Sensor Start", + "Dexcom Sensor Change": "Dexcom Sensor Change", + "Insulin Cartridge Change": "Insulin Cartridge Change", + "D.A.D. Alert": "D.A.D. Alert", + "Glucose Reading": "Glucose Reading", + "Measurement Method": "Measurement Method", + "Meter": "Meter", + "Insulin Given": "Insulin Given", + "Amount in grams": "Amount in grams", + "Amount in units": "Amount in units", + "View all treatments": "View all treatments", + "Enable Alarms": "啟用報警", + "Pump Battery Change": "Pump Battery Change", + "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery change overdue!": "Pump Battery change overdue!", + "When enabled an alarm may sound.": "啟用後可發出聲音報警", + "Urgent High Alarm": "血糖過高報警", + "High Alarm": "高血糖報警", + "Low Alarm": "低血糖報警", + "Urgent Low Alarm": "血糖過低報警", + "Stale Data: Warn": "數據過期:提醒", + "Stale Data: Urgent": "數據過期:警告", + "mins": "分", + "Night Mode": "夜間模式", + "When enabled the page will be dimmed from 10pm - 6am.": "啟用後將在夜間22點至早晨6點降低頁面亮度", + "Enable": "啟用", + "Show Raw BG Data": "顯示原始血糖數據", + "Never": "不顯示", + "Always": "一直顯示", + "When there is noise": "當有噪聲時顯示", + "When enabled small white dots will be displayed for raw BG data": "啟用後將使用小白點標註原始血糖數據", + "Custom Title": "自定義標題", + "Theme": "主題", + "Default": "默認", + "Colors": "彩色", + "Colorblind-friendly colors": "色盲患者可辨識的顏色", + "Reset, and use defaults": "使用默認值重置", + "Calibrations": "Calibrations", + "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": "Treatment type", + "Raw BG": "Raw BG", + "Device": "Device", + "Noise": "Noise", + "Calibration": "Calibration", + "Show Plugins": "Show Plugins", + "About": "關於", + "Value in": "Value in", + "Carb Time": "Carb Time", + "Language": "語言", + "Add new": "Add new", + "g": "克", + "ml": "克", + "pcs": "件", + "Drag&drop food here": "Drag&drop food here", + "Care Portal": "服務面板", + "Medium/Unknown": "Medium/Unknown", + "IN THE FUTURE": "IN THE FUTURE", + "Update": "更新認證狀態", + "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": "從數據庫中清除所有未來條目", + "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 records deleted", + "Clean Mongo status database": "Clean Mongo status database", + "Delete all documents from devicestatus collection": "Delete all documents from devicestatus collection", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.", + "Delete all documents": "Delete all documents", + "Delete all documents from devicestatus collection?": "Delete all documents from devicestatus collection?", + "Database contains %1 records": "Database contains %1 records", + "All records removed ...": "All records removed ...", + "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Number of Days to Keep:": "Number of Days to Keep:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", + "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents": "Delete old documents", + "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "Clean Mongo treatments database": "Clean Mongo treatments database", + "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Admin Tools": "管理工具", + "Nightscout reporting": "Nightscout reporting", + "Cancel": "Cancel", + "Edit treatment": "Edit treatment", + "Duration": "Duration", + "Duration in minutes": "Duration in minutes", + "Temp Basal": "Temp Basal", + "Temp Basal Start": "Temp Basal Start", + "Temp Basal End": "Temp Basal End", + "Percent": "Percent", + "Basal change in %": "Basal change in %", + "Basal value": "Basal value", + "Absolute basal value": "Absolute basal value", + "Announcement": "Announcement", + "Loading temp basal data": "Loading temp basal data", + "Save current record before changing to new?": "Save current record before changing to new?", + "Profile Switch": "Profile Switch", + "Profile": "Profile", + "General profile settings": "General profile settings", + "Title": "Title", + "Database records": "Database records", + "Add new record": "Add new record", + "Remove this record": "Remove this record", + "Clone this record to new": "Clone this record to new", + "Record valid from": "Record valid from", + "Stored profiles": "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": "使用基礎率", + "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", + "ISF": "ISF", + "Combo Bolus": "Combo Bolus", + "Difference": "Difference", + "New time": "New time", + "Edit Mode": "編輯模式", + "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", + "Loading profile switch data": "Loading profile switch data", + "Redirecting you to the Profile Editor to create a new profile.": "Redirecting you to the Profile Editor to create a new profile.", + "Pump": "Pump", + "Sensor Age": "探頭使用時間(SAGE)", + "Insulin Age": "胰島素使用時間(IAGE)", + "Temporary target": "Temporary target", + "Reason": "Reason", + "Eating soon": "Eating soon", + "Top": "Top", + "Bottom": "Bottom", + "Activity": "Activity", + "Targets": "Targets", + "Bolus insulin:": "Bolus insulin:", + "Base basal insulin:": "Base basal insulin:", + "Positive temp basal insulin:": "Positive temp basal insulin:", + "Negative temp basal insulin:": "Negative temp basal insulin:", + "Total basal insulin:": "Total basal insulin:", + "Total daily insulin:": "Total daily insulin:", + "Unable to %1 Role": "Unable to %1 Role", + "Unable to delete Role": "Unable to delete Role", + "Database contains %1 roles": "Database contains %1 roles", + "Edit Role": "Edit Role", + "admin, school, family, etc": "admin, school, family, etc", + "Permissions": "Permissions", + "Are you sure you want to delete: ": "Are you sure you want to delete: ", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.", + "Add new Role": "Add new Role", + "Roles - Groups of People, Devices, etc": "Roles - Groups of People, Devices, etc", + "Edit this role": "Edit this role", + "Admin authorized": "已授權", + "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", + "Add new Subject": "Add new Subject", + "Unable to %1 Subject": "לא יכול ל %1 נושאי", + "Unable to delete Subject": "Unable to delete Subject", + "Database contains %1 subjects": "Database contains %1 subjects", + "Edit Subject": "Edit Subject", + "person, device, etc": "person, device, etc", + "role1, role2": "role1, role2", + "Edit this subject": "Edit this subject", + "Delete this subject": "Delete this subject", + "Roles": "Roles", + "Access Token": "Access Token", + "hour ago": "hour ago", + "hours ago": "hours ago", + "Silence for %1 minutes": "靜音%1分鐘", + "Check BG": "Check BG", + "BASAL": "基礎率", + "Current basal": "Current basal", + "Sensitivity": "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": "血糖增量", + "Elapsed Time": "所需時間", + "Absolute Delta": "絕對增量", + "Interpolated": "插值", + "BWP": "BWP", + "Urgent": "緊急", + "Warning": "警告", + "Info": "資訊", + "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": "血糖過高", + "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": "已植入", + "CAGE": "管路", + "COB": "COB", + "Last Carbs": "Last Carbs", + "IAGE": "胰島素", + "Insulin reservoir change overdue!": "Insulin reservoir change overdue!", + "Time to change insulin reservoir": "Time to change insulin reservoir", + "Change insulin reservoir soon": "Change insulin reservoir soon", + "Insulin reservoir age %1 hours": "Insulin reservoir age %1 hours", + "Changed": "Changed", + "IOB": "IOB", + "Careportal IOB": "Careportal IOB", + "Last Bolus": "Last Bolus", + "Basal IOB": "Basal IOB", + "Source": "Source", + "Stale data, check rig?": "Stale data, check rig?", + "Last received:": "Last received:", + "%1m ago": "%1m ago", + "%1h ago": "%1h ago", + "%1d ago": "%1d ago", + "RETRO": "RETRO", + "SAGE": "探頭", + "Sensor change/restart overdue!": "Sensor change/restart overdue!", + "Time to change/restart sensor": "Time to change/restart sensor", + "Change/restart sensor soon": "Change/restart sensor soon", + "Sensor age %1 days %2 hours": "Sensor age %1 days %2 hours", + "Sensor Insert": "Sensor Insert", + "Sensor Start": "Sensor Start", + "days": "days", + "Insulin distribution": "Insulin distribution", + "To see this report, press SHOW while in this view": "To see this report, press SHOW while in this view", + "AR2 Forecast": "AR2 Forecast", + "OpenAPS Forecasts": "OpenAPS Forecasts", + "Temporary Target": "Temporary Target", + "Temporary Target Cancel": "Temporary Target Cancel", + "OpenAPS Offline": "OpenAPS Offline", + "Profiles": "Profiles", + "Time in fluctuation": "Time in fluctuation", + "Time in rapid fluctuation": "Time in rapid fluctuation", + "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:", + "Filter by hours": "Filter by hours", + "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">can be found here.", + "Mean Total Daily Change": "Mean Total Daily Change", + "Mean Hourly Change": "Mean Hourly Change", + "FortyFiveDown": "slightly dropping", + "FortyFiveUp": "slightly rising", + "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": "Current Raw BG", + "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", + "virtAsstCob3person": "%1 has %2 carbohydrates on board", + "virtAsstCob": "You have %1 carbohydrates on board", + "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", + "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", + "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", + "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", + "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", + "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", + "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", + "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", + "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "Fat [g]": "Fat [g]", + "Protein [g]": "Protein [g]", + "Energy [kJ]": "Energy [kJ]", + "Clock Views:": "Clock Views:", + "Clock": "Clock", + "Color": "Color", + "Simple": "Simple", + "TDD average": "TDD average", + "Bolus average": "Bolus average", + "Basal average": "Basal average", + "Base basal average:": "Base basal average:", + "Carbs average": "Carbs average", + "Eating Soon": "Eating Soon", + "Last entry {0} minutes ago": "Last entry {0} minutes ago", + "change": "change", + "Speech": "Speech", + "Target Top": "Target Top", + "Target Bottom": "Target Bottom", + "Canceled": "Canceled", + "Meter BG": "Meter BG", + "predicted": "predicted", + "future": "future", + "ago": "ago", + "Last data received": "Last data received", + "Clock View": "Clock View", + "Protein": "Protein", + "Fat": "Fat", + "Protein average": "Protein average", + "Fat average": "Fat average", + "Total carbs": "Total carbs", + "Total protein": "Total protein", + "Total fat": "Total fat", + "Database Size": "Database Size", + "Database Size near its limits!": "Database Size near its limits!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "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" +} \ No newline at end of file diff --git a/views/translationsindex.html b/views/translationsindex.html deleted file mode 100644 index 6543bb06259..00000000000 --- a/views/translationsindex.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - Nightscout translations - - - - - - - - - - - - - - - - - - - - - - - - - <% include preloadCSS %> - - - - <%- include('partials/toolbar') %> - -
- - <%- include('partials/authentication-status') %> - - - - - - - - From 74cf673ae27fdf4ad3c3be0d780be53001e3154a Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Wed, 18 Nov 2020 11:23:55 +0200 Subject: [PATCH 023/194] * Reformat the source language file * Fix an English key being in Hebrew --- translations/en/en.json | 660 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 659 insertions(+), 1 deletion(-) diff --git a/translations/en/en.json b/translations/en/en.json index 94515b382c8..02a6ae7eea7 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -1 +1,659 @@ -{"Listening on port":"Listening on port","Mo":"Mo","Tu":"Tu","We":"We","Th":"Th","Fr":"Fr","Sa":"Sa","Su":"Su","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Category":"Category","Subcategory":"Subcategory","Name":"Name","Today":"Today","Last 2 days":"Last 2 days","Last 3 days":"Last 3 days","Last week":"Last week","Last 2 weeks":"Last 2 weeks","Last month":"Last month","Last 3 months":"Last 3 months","between":"between","around":"around","and":"and","From":"From","To":"To","Notes":"Notes","Food":"Food","Insulin":"Insulin","Carbs":"Carbs","Notes contain":"Notes contain","Target BG range bottom":"Target BG range bottom","top":"top","Show":"Show","Display":"Display","Loading":"Loading","Loading profile":"Loading profile","Loading status":"Loading status","Loading food database":"Loading food database","not displayed":"not displayed","Loading CGM data of":"Loading CGM data of","Loading treatments data of":"Loading treatments data of","Processing data of":"Processing data of","Portion":"Portion","Size":"Size","(none)":"(none)","None":"None","":"","Result is empty":"Result is empty","Day to day":"Day to day","Week to week":"Week to week","Daily Stats":"Daily Stats","Percentile Chart":"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","Weekly success":"Weekly success","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","GI":"GI","Edit record":"Edit record","Delete record":"Delete record","Move to the top":"Move to the top","Hidden":"Hidden","Hide after use":"Hide after use","Your API secret must be at least 12 characters long":"Your API secret must be at least 12 characters long","Bad API secret":"Bad API secret","API secret hash stored":"API secret hash stored","Status":"Status","Not loaded":"Not loaded","Food Editor":"Food Editor","Your database":"Your database","Filter":"Filter","Save":"Save","Clear":"Clear","Record":"Record","Quick picks":"Quick picks","Show hidden":"Show hidden","Your API secret or token":"Your API secret or token","Remember this device. (Do not enable this on public computers.)":"Remember this device. (Do not enable this on public computers.)","Treatments":"Treatments","Time":"Time","Event Type":"Event Type","Blood Glucose":"Blood Glucose","Entered By":"Entered By","Delete this treatment?":"Delete this treatment?","Carbs Given":"Carbs Given","Inzulin Given":"Inzulin Given","Event Time":"Event Time","Please verify that the data entered is correct":"Please verify that the data entered is correct","BG":"BG","Use BG correction in calculation":"Use BG correction in calculation","BG from CGM (autoupdated)":"BG from CGM (autoupdated)","BG from meter":"BG from meter","Manual BG":"Manual BG","Quickpick":"Quickpick","or":"or","Add from database":"Add from database","Use carbs correction in calculation":"Use carbs correction in calculation","Use COB correction in calculation":"Use COB correction in calculation","Use IOB in calculation":"Use IOB in calculation","Other correction":"Other correction","Rounding":"Rounding","Enter insulin correction in treatment":"Enter insulin correction in treatment","Insulin needed":"Insulin needed","Carbs needed":"Carbs needed","Carbs needed if Insulin total is negative value":"Carbs needed if Insulin total is negative value","Basal rate":"Basal rate","60 minutes earlier":"60 minutes earlier","45 minutes earlier":"45 minutes earlier","30 minutes earlier":"30 minutes earlier","20 minutes earlier":"20 minutes earlier","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","Snack Bolus":"Snack Bolus","Correction Bolus":"Correction Bolus","Carb Correction":"Carb Correction","Note":"Note","Question":"Question","Exercise":"Exercise","Pump Site Change":"Pump Site Change","CGM Sensor Start":"CGM Sensor Start","CGM Sensor Stop":"CGM Sensor Stop","CGM Sensor Insert":"CGM Sensor Insert","Dexcom Sensor Start":"Dexcom Sensor Start","Dexcom Sensor Change":"Dexcom Sensor Change","Insulin Cartridge Change":"Insulin Cartridge Change","D.A.D. Alert":"D.A.D. Alert","Glucose Reading":"Glucose Reading","Measurement Method":"Measurement Method","Meter":"Meter","Insulin Given":"Insulin Given","Amount in grams":"Amount in grams","Amount in units":"Amount in units","View all treatments":"View all treatments","Enable Alarms":"Enable Alarms","Pump Battery Change":"Pump Battery Change","Pump Battery Low Alarm":"Pump Battery Low Alarm","Pump Battery change overdue!":"Pump Battery change overdue!","When enabled an alarm may sound.":"When enabled an alarm may sound.","Urgent High Alarm":"Urgent High Alarm","High Alarm":"High Alarm","Low Alarm":"Low Alarm","Urgent Low Alarm":"Urgent Low Alarm","Stale Data: Warn":"Stale Data: Warn","Stale Data: Urgent":"Stale Data: Urgent","mins":"mins","Night Mode":"Night Mode","When enabled the page will be dimmed from 10pm - 6am.":"When enabled the page will be dimmed from 10pm - 6am.","Enable":"Enable","Show Raw BG Data":"Show Raw BG Data","Never":"Never","Always":"Always","When there is noise":"When there is noise","When enabled small white dots will be displayed for raw BG data":"When enabled small white dots will be displayed for raw BG data","Custom Title":"Custom Title","Theme":"Theme","Default":"Default","Colors":"Colors","Colorblind-friendly colors":"Colorblind-friendly colors","Reset, and use defaults":"Reset, and use defaults","Calibrations":"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","Update":"Update","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","Deleting records ...":"Deleting records ...","%1 records deleted":"%1 records deleted","Clean Mongo status database":"Clean Mongo status database","Delete all documents from devicestatus collection":"Delete all documents from devicestatus collection","This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.":"This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.","Delete all documents":"Delete all documents","Delete all documents from devicestatus collection?":"Delete all documents from devicestatus collection?","Database contains %1 records":"Database contains %1 records","All records removed ...":"All records removed ...","Delete all documents from devicestatus collection older than 30 days":"Delete all documents from devicestatus collection older than 30 days","Number of Days to Keep:":"Number of Days to Keep:","This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.":"This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.","Delete old documents from devicestatus collection?":"Delete old documents from devicestatus collection?","Clean Mongo entries (glucose entries) database":"Clean Mongo entries (glucose entries) database","Delete all documents from entries collection older than 180 days":"Delete all documents from entries collection older than 180 days","This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.":"This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.","Delete old documents":"Delete old documents","Delete old documents from entries collection?":"Delete old documents from entries collection?","%1 is not a valid number":"%1 is not a valid number","%1 is not a valid number - must be more than 2":"%1 is not a valid number - must be more than 2","Clean Mongo treatments database":"Clean Mongo treatments database","Delete all documents from treatments collection older than 180 days":"Delete all documents from treatments collection older than 180 days","This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.":"This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.","Delete old documents from treatments collection?":"Delete old documents from treatments collection?","Admin Tools":"Admin Tools","Nightscout reporting":"Nightscout reporting","Cancel":"Cancel","Edit treatment":"Edit treatment","Duration":"Duration","Duration in minutes":"Duration in minutes","Temp Basal":"Temp Basal","Temp Basal Start":"Temp Basal Start","Temp Basal End":"Temp Basal End","Percent":"Percent","Basal change in %":"Basal change in %","Basal value":"Basal value","Absolute basal value":"Absolute basal value","Announcement":"Announcement","Loading temp basal data":"Loading temp basal data","Save current record before changing to new?":"Save current record before changing to new?","Profile Switch":"Profile Switch","Profile":"Profile","General profile settings":"General profile settings","Title":"Title","Database records":"Database records","Add new record":"Add new record","Remove this record":"Remove this record","Clone this record to new":"Clone this record to new","Record valid from":"Record valid from","Stored profiles":"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","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","Loading profile switch data":"Loading profile switch data","Redirecting you to the Profile Editor to create a new profile.":"Redirecting you to the Profile Editor to create a new profile.","Pump":"Pump","Sensor Age":"Sensor Age","Insulin Age":"Insulin Age","Temporary target":"Temporary target","Reason":"Reason","Eating soon":"Eating soon","Top":"Top","Bottom":"Bottom","Activity":"Activity","Targets":"Targets","Bolus insulin:":"Bolus insulin:","Base basal insulin:":"Base basal insulin:","Positive temp basal insulin:":"Positive temp basal insulin:","Negative temp basal insulin:":"Negative temp basal insulin:","Total basal insulin:":"Total basal insulin:","Total daily insulin:":"Total daily insulin:","Unable to %1 Role":"Unable to %1 Role","Unable to delete Role":"Unable to delete Role","Database contains %1 roles":"Database contains %1 roles","Edit Role":"Edit Role","admin, school, family, etc":"admin, school, family, etc","Permissions":"Permissions","Are you sure you want to delete: ":"Are you sure you want to delete: ","Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.":"Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.","Add new Role":"Add new Role","Roles - Groups of People, Devices, etc":"Roles - Groups of People, Devices, etc","Edit this role":"Edit this role","Admin authorized":"Admin authorized","Subjects - People, Devices, etc":"Subjects - People, Devices, etc","Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.":"Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.","Add new Subject":"Add new Subject","Unable to %1 Subject":"לא יכול ל %1 נושאי","Unable to delete Subject":"Unable to delete Subject","Database contains %1 subjects":"Database contains %1 subjects","Edit Subject":"Edit Subject","person, device, etc":"person, device, etc","role1, role2":"role1, role2","Edit this subject":"Edit this subject","Delete this subject":"Delete this subject","Roles":"Roles","Access Token":"Access Token","hour ago":"hour ago","hours ago":"hours ago","Silence for %1 minutes":"Silence for %1 minutes","Check BG":"Check BG","BASAL":"BASAL","Current basal":"Current basal","Sensitivity":"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","CAGE":"CAGE","COB":"COB","Last Carbs":"Last Carbs","IAGE":"IAGE","Insulin reservoir change overdue!":"Insulin reservoir change overdue!","Time to change insulin reservoir":"Time to change insulin reservoir","Change insulin reservoir soon":"Change insulin reservoir soon","Insulin reservoir age %1 hours":"Insulin reservoir age %1 hours","Changed":"Changed","IOB":"IOB","Careportal IOB":"Careportal IOB","Last Bolus":"Last Bolus","Basal IOB":"Basal IOB","Source":"Source","Stale data, check rig?":"Stale data, check rig?","Last received:":"Last received:","%1m ago":"%1m ago","%1h ago":"%1h ago","%1d ago":"%1d ago","RETRO":"RETRO","SAGE":"SAGE","Sensor change/restart overdue!":"Sensor change/restart overdue!","Time to change/restart sensor":"Time to change/restart sensor","Change/restart sensor soon":"Change/restart sensor soon","Sensor age %1 days %2 hours":"Sensor age %1 days %2 hours","Sensor Insert":"Sensor Insert","Sensor Start":"Sensor Start","days":"days","Insulin distribution":"Insulin distribution","To see this report, press SHOW while in this view":"To see this report, press SHOW while in this view","AR2 Forecast":"AR2 Forecast","OpenAPS Forecasts":"OpenAPS Forecasts","Temporary Target":"Temporary Target","Temporary Target Cancel":"Temporary Target Cancel","OpenAPS Offline":"OpenAPS Offline","Profiles":"Profiles","Time in fluctuation":"Time in fluctuation","Time in rapid fluctuation":"Time in rapid fluctuation","This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:":"This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:","Filter by hours":"Filter by hours","Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.":"Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.","Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.":"Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.","Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.":"Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.","Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.":"Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.","GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.":"\">can be found here.","Mean Total Daily Change":"Mean Total Daily Change","Mean Hourly Change":"Mean Hourly Change","FortyFiveDown":"slightly dropping","FortyFiveUp":"slightly rising","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","virtAsstCob3person":"%1 has %2 carbohydrates on board","virtAsstCob":"You have %1 carbohydrates on board","virtAsstCGMMode":"Your CGM mode was %1 as of %2.","virtAsstCGMStatus":"Your CGM status was %1 as of %2.","virtAsstCGMSessAge":"Your CGM session has been active for %1 days and %2 hours.","virtAsstCGMSessNotStarted":"There is no active CGM session at the moment.","virtAsstCGMTxStatus":"Your CGM transmitter status was %1 as of %2.","virtAsstCGMTxAge":"Your CGM transmitter is %1 days old.","virtAsstCGMNoise":"Your CGM noise was %1 as of %2.","virtAsstCGMBattOne":"Your CGM battery was %1 volts as of %2.","virtAsstCGMBattTwo":"Your CGM battery levels were %1 volts and %2 volts as of %3.","virtAsstDelta":"Your delta was %1 between %2 and %3.","virtAsstUnknownIntentTitle":"Unknown Intent","virtAsstUnknownIntentText":"I'm sorry, I don't know what you're asking for.","Fat [g]":"Fat [g]","Protein [g]":"Protein [g]","Energy [kJ]":"Energy [kJ]","Clock Views:":"Clock Views:","Clock":"Clock","Color":"Color","Simple":"Simple","TDD average":"TDD average","Bolus average":"Bolus average","Basal average":"Basal average","Base basal average:":"Base basal average:","Carbs average":"Carbs average","Eating Soon":"Eating Soon","Last entry {0} minutes ago":"Last entry {0} minutes ago","change":"change","Speech":"Speech","Target Top":"Target Top","Target Bottom":"Target Bottom","Canceled":"Canceled","Meter BG":"Meter BG","predicted":"predicted","future":"future","ago":"ago","Last data received":"Last data received","Clock View":"Clock View","Protein":"Protein","Fat":"Fat","Protein average":"Protein average","Fat average":"Fat average","Total carbs":"Total carbs","Total protein":"Total protein","Total fat":"Total fat","Database Size":"Database Size","Database Size near its limits!":"Database Size near its limits!","Database size is %1 MiB out of %2 MiB. Please backup and clean up database!":"Database size is %1 MiB out of %2 MiB. Please backup and clean up database!","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"} \ No newline at end of file +{"Listening on port":"Listening on port" + + ,"Mo":"Mo" + ,"Tu":"Tu" + ,"We":"We" + ,"Th":"Th" + ,"Fr":"Fr" + ,"Sa":"Sa" + ,"Su":"Su" + ,"Monday":"Monday" + ,"Tuesday":"Tuesday" + ,"Wednesday":"Wednesday" + ,"Thursday":"Thursday" + ,"Friday":"Friday" + ,"Saturday":"Saturday" + ,"Sunday":"Sunday" + ,"Category":"Category" + ,"Subcategory":"Subcategory" + ,"Name":"Name" + ,"Today":"Today" + ,"Last 2 days":"Last 2 days" + ,"Last 3 days":"Last 3 days" + ,"Last week":"Last week" + ,"Last 2 weeks":"Last 2 weeks" + ,"Last month":"Last month" + ,"Last 3 months":"Last 3 months" + ,"between":"between" + ,"around":"around" + ,"and":"and" + ,"From":"From" + ,"To":"To" + ,"Notes":"Notes" + ,"Food":"Food" + ,"Insulin":"Insulin" + ,"Carbs":"Carbs" + ,"Notes contain":"Notes contain" + ,"Target BG range bottom":"Target BG range bottom" + ,"top":"top" + ,"Show":"Show" + ,"Display":"Display" + ,"Loading":"Loading" + ,"Loading profile":"Loading profile" + ,"Loading status":"Loading status" + ,"Loading food database":"Loading food database" + ,"not displayed":"not displayed" + ,"Loading CGM data of":"Loading CGM data of" + ,"Loading treatments data of":"Loading treatments data of" + ,"Processing data of":"Processing data of" + ,"Portion":"Portion" + ,"Size":"Size" + ,"(none)":"(none)" + ,"None":"None" + ,"":"" + ,"Result is empty":"Result is empty" + ,"Day to day":"Day to day" + ,"Week to week":"Week to week" + ,"Daily Stats":"Daily Stats" + ,"Percentile Chart":"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" + ,"Weekly success":"Weekly success" + ,"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" + ,"GI":"GI" + ,"Edit record":"Edit record" + ,"Delete record":"Delete record" + ,"Move to the top":"Move to the top" + ,"Hidden":"Hidden" + ,"Hide after use":"Hide after use" + ,"Your API secret must be at least 12 characters long":"Your API secret must be at least 12 characters long" + ,"Bad API secret":"Bad API secret" + ,"API secret hash stored":"API secret hash stored" + ,"Status":"Status" + ,"Not loaded":"Not loaded" + ,"Food Editor":"Food Editor" + ,"Your database":"Your database" + ,"Filter":"Filter" + ,"Save":"Save" + ,"Clear":"Clear" + ,"Record":"Record" + ,"Quick picks":"Quick picks" + ,"Show hidden":"Show hidden" + ,"Your API secret or token":"Your API secret or token" + ,"Remember this device. (Do not enable this on public computers.)":"Remember this device. (Do not enable this on public computers.)" + ,"Treatments":"Treatments" + ,"Time":"Time" + ,"Event Type":"Event Type" + ,"Blood Glucose":"Blood Glucose" + ,"Entered By":"Entered By" + ,"Delete this treatment?":"Delete this treatment?" + ,"Carbs Given":"Carbs Given" + ,"Inzulin Given":"Inzulin Given" + ,"Event Time":"Event Time" + ,"Please verify that the data entered is correct":"Please verify that the data entered is correct" + ,"BG":"BG" + ,"Use BG correction in calculation":"Use BG correction in calculation" + ,"BG from CGM (autoupdated)":"BG from CGM (autoupdated)" + ,"BG from meter":"BG from meter" + ,"Manual BG":"Manual BG" + ,"Quickpick":"Quickpick" + ,"or":"or" + ,"Add from database":"Add from database" + ,"Use carbs correction in calculation":"Use carbs correction in calculation" + ,"Use COB correction in calculation":"Use COB correction in calculation" + ,"Use IOB in calculation":"Use IOB in calculation" + ,"Other correction":"Other correction" + ,"Rounding":"Rounding" + ,"Enter insulin correction in treatment":"Enter insulin correction in treatment" + ,"Insulin needed":"Insulin needed" + ,"Carbs needed":"Carbs needed" + ,"Carbs needed if Insulin total is negative value":"Carbs needed if Insulin total is negative value" + ,"Basal rate":"Basal rate" + ,"60 minutes earlier":"60 minutes earlier" + ,"45 minutes earlier":"45 minutes earlier" + ,"30 minutes earlier":"30 minutes earlier" + ,"20 minutes earlier":"20 minutes earlier" + ,"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" + ,"Snack Bolus":"Snack Bolus" + ,"Correction Bolus":"Correction Bolus" + ,"Carb Correction":"Carb Correction" + ,"Note":"Note" + ,"Question":"Question" + ,"Exercise":"Exercise" + ,"Pump Site Change":"Pump Site Change" + ,"CGM Sensor Start":"CGM Sensor Start" + ,"CGM Sensor Stop":"CGM Sensor Stop" + ,"CGM Sensor Insert":"CGM Sensor Insert" + ,"Dexcom Sensor Start":"Dexcom Sensor Start" + ,"Dexcom Sensor Change":"Dexcom Sensor Change" + ,"Insulin Cartridge Change":"Insulin Cartridge Change" + ,"D.A.D. Alert":"D.A.D. Alert" + ,"Glucose Reading":"Glucose Reading" + ,"Measurement Method":"Measurement Method" + ,"Meter":"Meter" + ,"Insulin Given":"Insulin Given" + ,"Amount in grams":"Amount in grams" + ,"Amount in units":"Amount in units" + ,"View all treatments":"View all treatments" + ,"Enable Alarms":"Enable Alarms" + ,"Pump Battery Change":"Pump Battery Change" + ,"Pump Battery Low Alarm":"Pump Battery Low Alarm" + ,"Pump Battery change overdue!":"Pump Battery change overdue!" + ,"When enabled an alarm may sound.":"When enabled an alarm may sound." + ,"Urgent High Alarm":"Urgent High Alarm" + ,"High Alarm":"High Alarm" + ,"Low Alarm":"Low Alarm" + ,"Urgent Low Alarm":"Urgent Low Alarm" + ,"Stale Data: Warn":"Stale Data: Warn" + ,"Stale Data: Urgent":"Stale Data: Urgent" + ,"mins":"mins" + ,"Night Mode":"Night Mode" + ,"When enabled the page will be dimmed from 10pm - 6am.":"When enabled the page will be dimmed from 10pm - 6am." + ,"Enable":"Enable" + ,"Show Raw BG Data":"Show Raw BG Data" + ,"Never":"Never" + ,"Always":"Always" + ,"When there is noise":"When there is noise" + ,"When enabled small white dots will be displayed for raw BG data":"When enabled small white dots will be displayed for raw BG data" + ,"Custom Title":"Custom Title" + ,"Theme":"Theme" + ,"Default":"Default" + ,"Colors":"Colors" + ,"Colorblind-friendly colors":"Colorblind-friendly colors" + ,"Reset, and use defaults":"Reset, and use defaults" + ,"Calibrations":"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" + ,"Update":"Update" + ,"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" + ,"Deleting records ...":"Deleting records ..." + ,"%1 records deleted":"%1 records deleted" + ,"Clean Mongo status database":"Clean Mongo status database" + ,"Delete all documents from devicestatus collection":"Delete all documents from devicestatus collection" + ,"This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.":"This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated." + ,"Delete all documents":"Delete all documents" + ,"Delete all documents from devicestatus collection?":"Delete all documents from devicestatus collection?" + ,"Database contains %1 records":"Database contains %1 records" + ,"All records removed ...":"All records removed ..." + ,"Delete all documents from devicestatus collection older than 30 days":"Delete all documents from devicestatus collection older than 30 days" + ,"Number of Days to Keep:":"Number of Days to Keep:" + ,"This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.":"This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated." + ,"Delete old documents from devicestatus collection?":"Delete old documents from devicestatus collection?" + ,"Clean Mongo entries (glucose entries) database":"Clean Mongo entries (glucose entries) database" + ,"Delete all documents from entries collection older than 180 days":"Delete all documents from entries collection older than 180 days" + ,"This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.":"This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated." + ,"Delete old documents":"Delete old documents" + ,"Delete old documents from entries collection?":"Delete old documents from entries collection?" + ,"%1 is not a valid number":"%1 is not a valid number" + ,"%1 is not a valid number - must be more than 2":"%1 is not a valid number - must be more than 2" + ,"Clean Mongo treatments database":"Clean Mongo treatments database" + ,"Delete all documents from treatments collection older than 180 days":"Delete all documents from treatments collection older than 180 days" + ,"This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.":"This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated." + ,"Delete old documents from treatments collection?":"Delete old documents from treatments collection?" + ,"Admin Tools":"Admin Tools" + ,"Nightscout reporting":"Nightscout reporting" + ,"Cancel":"Cancel" + ,"Edit treatment":"Edit treatment" + ,"Duration":"Duration" + ,"Duration in minutes":"Duration in minutes" + ,"Temp Basal":"Temp Basal" + ,"Temp Basal Start":"Temp Basal Start" + ,"Temp Basal End":"Temp Basal End" + ,"Percent":"Percent" + ,"Basal change in %":"Basal change in %" + ,"Basal value":"Basal value" + ,"Absolute basal value":"Absolute basal value" + ,"Announcement":"Announcement" + ,"Loading temp basal data":"Loading temp basal data" + ,"Save current record before changing to new?":"Save current record before changing to new?" + ,"Profile Switch":"Profile Switch" + ,"Profile":"Profile" + ,"General profile settings":"General profile settings" + ,"Title":"Title" + ,"Database records":"Database records" + ,"Add new record":"Add new record" + ,"Remove this record":"Remove this record" + ,"Clone this record to new":"Clone this record to new" + ,"Record valid from":"Record valid from" + ,"Stored profiles":"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" + ,"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" + ,"Loading profile switch data":"Loading profile switch data" + ,"Redirecting you to the Profile Editor to create a new profile.":"Redirecting you to the Profile Editor to create a new profile." + ,"Pump":"Pump" + ,"Sensor Age":"Sensor Age" + ,"Insulin Age":"Insulin Age" + ,"Temporary target":"Temporary target" + ,"Reason":"Reason" + ,"Eating soon":"Eating soon" + ,"Top":"Top" + ,"Bottom":"Bottom" + ,"Activity":"Activity" + ,"Targets":"Targets" + ,"Bolus insulin:":"Bolus insulin:" + ,"Base basal insulin:":"Base basal insulin:" + ,"Positive temp basal insulin:":"Positive temp basal insulin:" + ,"Negative temp basal insulin:":"Negative temp basal insulin:" + ,"Total basal insulin:":"Total basal insulin:" + ,"Total daily insulin:":"Total daily insulin:" + ,"Unable to %1 Role":"Unable to %1 Role" + ,"Unable to delete Role":"Unable to delete Role" + ,"Database contains %1 roles":"Database contains %1 roles" + ,"Edit Role":"Edit Role" + ,"admin, school, family, etc":"admin, school, family, etc" + ,"Permissions":"Permissions" + ,"Are you sure you want to delete: ":"Are you sure you want to delete: " + ,"Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.":"Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator." + ,"Add new Role":"Add new Role" + ,"Roles - Groups of People, Devices, etc":"Roles - Groups of People, Devices, etc" + ,"Edit this role":"Edit this role" + ,"Admin authorized":"Admin authorized" + ,"Subjects - People, Devices, etc":"Subjects - People, Devices, etc" + ,"Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.":"Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared." + ,"Add new Subject":"Add new Subject" + ,"Unable to %1 Subject":"Unable to %1 Subject" + ,"Unable to delete Subject":"Unable to delete Subject" + ,"Database contains %1 subjects":"Database contains %1 subjects" + ,"Edit Subject":"Edit Subject" + ,"person, device, etc":"person, device, etc" + ,"role1, role2":"role1, role2" + ,"Edit this subject":"Edit this subject" + ,"Delete this subject":"Delete this subject" + ,"Roles":"Roles" + ,"Access Token":"Access Token" + ,"hour ago":"hour ago" + ,"hours ago":"hours ago" + ,"Silence for %1 minutes":"Silence for %1 minutes" + ,"Check BG":"Check BG" + ,"BASAL":"BASAL" + ,"Current basal":"Current basal" + ,"Sensitivity":"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" + ,"CAGE":"CAGE" + ,"COB":"COB" + ,"Last Carbs":"Last Carbs" + ,"IAGE":"IAGE" + ,"Insulin reservoir change overdue!":"Insulin reservoir change overdue!" + ,"Time to change insulin reservoir":"Time to change insulin reservoir" + ,"Change insulin reservoir soon":"Change insulin reservoir soon" + ,"Insulin reservoir age %1 hours":"Insulin reservoir age %1 hours" + ,"Changed":"Changed" + ,"IOB":"IOB" + ,"Careportal IOB":"Careportal IOB" + ,"Last Bolus":"Last Bolus" + ,"Basal IOB":"Basal IOB" + ,"Source":"Source" + ,"Stale data, check rig?":"Stale data, check rig?" + ,"Last received:":"Last received:" + ,"%1m ago":"%1m ago" + ,"%1h ago":"%1h ago" + ,"%1d ago":"%1d ago" + ,"RETRO":"RETRO" + ,"SAGE":"SAGE" + ,"Sensor change/restart overdue!":"Sensor change/restart overdue!" + ,"Time to change/restart sensor":"Time to change/restart sensor" + ,"Change/restart sensor soon":"Change/restart sensor soon" + ,"Sensor age %1 days %2 hours":"Sensor age %1 days %2 hours" + ,"Sensor Insert":"Sensor Insert" + ,"Sensor Start":"Sensor Start" + ,"days":"days" + ,"Insulin distribution":"Insulin distribution" + ,"To see this report, press SHOW while in this view":"To see this report, press SHOW while in this view" + ,"AR2 Forecast":"AR2 Forecast" + ,"OpenAPS Forecasts":"OpenAPS Forecasts" + ,"Temporary Target":"Temporary Target" + ,"Temporary Target Cancel":"Temporary Target Cancel" + ,"OpenAPS Offline":"OpenAPS Offline" + ,"Profiles":"Profiles" + ,"Time in fluctuation":"Time in fluctuation" + ,"Time in rapid fluctuation":"Time in rapid fluctuation" + ,"This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:":"This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:" + ,"Filter by hours":"Filter by hours" + ,"Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.":"Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better." + ,"Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.":"Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better." + ,"Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.":"Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better." + ,"Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.":"Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better." + ,"GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.":"\">can be found here." + ,"Mean Total Daily Change":"Mean Total Daily Change" + ,"Mean Hourly Change":"Mean Hourly Change" + ,"FortyFiveDown":"slightly dropping" + ,"FortyFiveUp":"slightly rising" + ,"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" + ,"virtAsstCob3person":"%1 has %2 carbohydrates on board" + ,"virtAsstCob":"You have %1 carbohydrates on board" + ,"virtAsstCGMMode":"Your CGM mode was %1 as of %2." + ,"virtAsstCGMStatus":"Your CGM status was %1 as of %2." + ,"virtAsstCGMSessAge":"Your CGM session has been active for %1 days and %2 hours." + ,"virtAsstCGMSessNotStarted":"There is no active CGM session at the moment." + ,"virtAsstCGMTxStatus":"Your CGM transmitter status was %1 as of %2." + ,"virtAsstCGMTxAge":"Your CGM transmitter is %1 days old." + ,"virtAsstCGMNoise":"Your CGM noise was %1 as of %2." + ,"virtAsstCGMBattOne":"Your CGM battery was %1 volts as of %2." + ,"virtAsstCGMBattTwo":"Your CGM battery levels were %1 volts and %2 volts as of %3." + ,"virtAsstDelta":"Your delta was %1 between %2 and %3." + ,"virtAsstUnknownIntentTitle":"Unknown Intent" + ,"virtAsstUnknownIntentText":"I'm sorry, I don't know what you're asking for." + ,"Fat [g]":"Fat [g]" + ,"Protein [g]":"Protein [g]" + ,"Energy [kJ]":"Energy [kJ]" + ,"Clock Views:":"Clock Views:" + ,"Clock":"Clock" + ,"Color":"Color" + ,"Simple":"Simple" + ,"TDD average":"TDD average" + ,"Bolus average":"Bolus average" + ,"Basal average":"Basal average" + ,"Base basal average:":"Base basal average:" + ,"Carbs average":"Carbs average" + ,"Eating Soon":"Eating Soon" + ,"Last entry {0} minutes ago":"Last entry {0} minutes ago" + ,"change":"change" + ,"Speech":"Speech" + ,"Target Top":"Target Top" + ,"Target Bottom":"Target Bottom" + ,"Canceled":"Canceled" + ,"Meter BG":"Meter BG" + ,"predicted":"predicted" + ,"future":"future" + ,"ago":"ago" + ,"Last data received":"Last data received" + ,"Clock View":"Clock View" + ,"Protein":"Protein" + ,"Fat":"Fat" + ,"Protein average":"Protein average" + ,"Fat average":"Fat average" + ,"Total carbs":"Total carbs" + ,"Total protein":"Total protein" + ,"Total fat":"Total fat" + ,"Database Size":"Database Size" + ,"Database Size near its limits!":"Database Size near its limits!" + ,"Database size is %1 MiB out of %2 MiB. Please backup and clean up database!":"Database size is %1 MiB out of %2 MiB. Please backup and clean up database!" + ,"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"} \ No newline at end of file From 15f47f6eba4d7b9e9456b36ab2b3e28af1f5e9a0 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Wed, 18 Nov 2020 11:24:29 +0200 Subject: [PATCH 024/194] One more tiny formatting fix --- translations/en/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/en/en.json b/translations/en/en.json index 02a6ae7eea7..cc12c1853b9 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -1,5 +1,4 @@ {"Listening on port":"Listening on port" - ,"Mo":"Mo" ,"Tu":"Tu" ,"We":"We" @@ -656,4 +655,5 @@ ,"Data size":"Data size" ,"virtAsstDatabaseSize":"%1 MiB. That is %2% of available database space." ,"virtAsstTitleDatabaseSize":"Database file size" - ,"Carbs/Food/Time":"Carbs/Food/Time"} \ No newline at end of file + ,"Carbs/Food/Time":"Carbs/Food/Time" +} \ No newline at end of file From 76ce300dbf25a0f29024741f841ce97d771d8aa5 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Wed, 18 Nov 2020 12:11:23 +0200 Subject: [PATCH 025/194] Inzulin -> Insulin in English --- translations/en/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/en/en.json b/translations/en/en.json index cc12c1853b9..9f58a686344 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -127,7 +127,7 @@ ,"Entered By":"Entered By" ,"Delete this treatment?":"Delete this treatment?" ,"Carbs Given":"Carbs Given" - ,"Inzulin Given":"Inzulin Given" + ,"Insulin Given":"Insulin Given" ,"Event Time":"Event Time" ,"Please verify that the data entered is correct":"Please verify that the data entered is correct" ,"BG":"BG" From cb7c74ee5d7e06f4eb22d4099f8cae478145f859 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Mon, 23 Nov 2020 11:56:00 +0200 Subject: [PATCH 026/194] Fix typo in Portugues Brazilian language code --- lib/language.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/language.js b/lib/language.js index 1966f0e4ec0..951ddb7c07d 100644 --- a/lib/language.js +++ b/lib/language.js @@ -30,7 +30,7 @@ function init(fs) { , { code: 'nb', file: 'nb_NO', language: 'Norsk (Bokmål)', speechCode: 'no-NO' } , { code: 'nl', file: 'nl_NL', language: 'Nederlands', speechCode: 'nl-NL' } , { code: 'pl', file: 'pl_PL', language: 'Polski', speechCode: 'pl-PL' } - , { code: 'pt', file: 'pr_BR', language: 'Português (Brasil)', speechCode: 'pt-BR' } + , { code: 'pt', file: 'pt_BR', language: 'Português (Brasil)', speechCode: 'pt-BR' } , { code: 'ro', file: 'ro_RO', language: 'Română', speechCode: 'ro-RO' } , { code: 'ru', file: 'ru_RU', language: 'Русский', speechCode: 'ru-RU' } , { code: 'sk', file: 'sl_SL', language: 'Slovenčina', speechCode: 'sk-SK' } @@ -113,8 +113,10 @@ function init(fs) { } // this is a server only call and needs fs by reference as the class is also used in the client - language.loadLocalization = function loadLocalization(fs) { - const l = fs.readFileSync('./translations/' + this.getFilename(this.lang)); + language.loadLocalization = function loadLocalization(fs, path) { + let filename = './translations/' + this.getFilename(this.lang); + if (path) filename = path.resolve(__dirname, filename); + const l = fs.readFileSync(filename); this.offerTranslations(JSON.parse(l)); } @@ -128,6 +130,14 @@ function init(fs) { return language(); }; + language.get = function get(lang) { + var r; + language.languages.forEach(function (l) { + if (l.code === lang) r = l; + }); + return r; + } + // if run on server and we get a filesystem handle, load english by default if (fs) { language.set('en'); From fc849fb174d880caa1f9d10a8646ef25b9b424d8 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Mon, 23 Nov 2020 12:10:21 +0200 Subject: [PATCH 027/194] New Crowdin updates (#6535) * New translations en.json (Finnish) * New translations en.json (Finnish) * New translations en.json (Finnish) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (Spanish) * New translations en.json (German) * New translations en.json (Czech) * New translations en.json (German) * New translations en.json (Czech) * New translations en.json (German) * New translations en.json (Dutch) * Update source file en.json * New translations en.json (German) * New translations en.json (Dutch) * New translations en.json (German) * New translations en.json (German) * New translations en.json (Norwegian Bokmal) * New translations en.json (Czech) * New translations en.json (Norwegian Bokmal) * New translations en.json (Czech) * New translations en.json (German) * New translations en.json (German) * New translations en.json (German) * New translations en.json (Norwegian Bokmal) * New translations en.json (Czech) * New translations en.json (Norwegian Bokmal) * New translations en.json (Czech) * New translations en.json (Norwegian Bokmal) * New translations en.json (Czech) * New translations en.json (Norwegian Bokmal) * New translations en.json (Czech) * New translations en.json (Russian) * New translations en.json (Czech) * New translations en.json (Russian) * New translations en.json (Russian) * New translations en.json (Czech) * New translations en.json (Hungarian) * New translations en.json (Russian) * New translations en.json (Dutch) * New translations en.json (Norwegian Bokmal) * New translations en.json (Dutch) * New translations en.json (Norwegian Bokmal) * New translations en.json (Hungarian) * New translations en.json (Norwegian Bokmal) * New translations en.json (Norwegian Bokmal) * New translations en.json (Norwegian Bokmal) * New translations en.json (French) * New translations en.json (French) * New translations en.json (French) * New translations en.json (French) * New translations en.json (French) * New translations en.json (Czech) * New translations en.json (Norwegian Bokmal) * New translations en.json (Romanian) * New translations en.json (Korean) * New translations en.json (Croatian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Swedish) * New translations en.json (Slovenian) * New translations en.json (Russian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Japanese) * New translations en.json (French) * New translations en.json (Italian) * New translations en.json (Hungarian) * New translations en.json (Hebrew) * New translations en.json (Finnish) * New translations en.json (Greek) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (Norwegian Bokmal) * Update source file en.json * New translations en.json (Dutch) * New translations en.json (Romanian) * New translations en.json (Korean) * New translations en.json (Croatian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Swedish) * New translations en.json (Slovenian) * New translations en.json (Russian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Japanese) * New translations en.json (French) * New translations en.json (Italian) * New translations en.json (Hungarian) * New translations en.json (Hebrew) * New translations en.json (Finnish) * New translations en.json (Greek) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (Norwegian Bokmal) * Update source file en.json * New translations en.json (Norwegian Bokmal) * New translations en.json (Czech) * New translations en.json (Russian) * New translations en.json (French) * New translations en.json (Greek) * New translations en.json (Norwegian Bokmal) * New translations en.json (Russian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Italian) --- translations/bg_BG.json | 5 +- translations/cs_CZ.json | 201 +++++++++++---------- translations/da_DK.json | 5 +- translations/de_DE.json | 157 +++++++++-------- translations/el_GR.json | 17 +- translations/es_ES.json | 15 +- translations/fi_FI.json | 145 ++++++++------- translations/fr_FR.json | 115 ++++++------ translations/he_IL.json | 5 +- translations/hr_HR.json | 5 +- translations/hu_HU.json | 21 ++- translations/it_IT.json | 379 ++++++++++++++++++++-------------------- translations/ja_JP.json | 5 +- translations/ko_KR.json | 5 +- translations/nb_NO.json | 203 +++++++++++---------- translations/nl_NL.json | 165 +++++++++-------- translations/pl_PL.json | 5 +- translations/pt_BR.json | 5 +- translations/ro_RO.json | 5 +- translations/ru_RU.json | 65 ++++--- translations/sl_SI.json | 5 +- translations/sv_SE.json | 5 +- translations/tr_TR.json | 5 +- translations/zh_CN.json | 5 +- translations/zh_TW.json | 5 +- 25 files changed, 764 insertions(+), 789 deletions(-) diff --git a/translations/bg_BG.json b/translations/bg_BG.json index f590b2faeab..dfc40a6fd69 100644 --- a/translations/bg_BG.json +++ b/translations/bg_BG.json @@ -128,7 +128,7 @@ "Entered By": "Въведено от", "Delete this treatment?": "Изтрий това събитие", "Carbs Given": "ВХ", - "Inzulin Given": "Инсулин", + "Insulin Given": "Инсулин", "Event Time": "Въвеждане", "Please verify that the data entered is correct": "Моля проверете, че датата е въведена правилно", "BG": "КЗ", @@ -220,7 +220,6 @@ "Glucose Reading": "Кръвна захар", "Measurement Method": "Метод на измерване", "Meter": "Глюкомер", - "Insulin Given": "Инсулин", "Amount in grams": "К-во в грамове", "Amount in units": "К-во в единици", "View all treatments": "Преглед на всички събития", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Субекти - Хора,Устройства,т.н.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Всеки обект ще има уникален ключ за достъп и 1 или повече роли. Кликнете върху ключа за достъп, за да отворите нов изглед с избрания обект, тази секретна връзка може след това да се споделя", "Add new Subject": "Добави нов субект", - "Unable to %1 Subject": "Невъзможно %1 субект", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Невъзможно изтриването на субекта", "Database contains %1 subjects": "Базата данни съдържа %1 субекти", "Edit Subject": "Промени субект", diff --git a/translations/cs_CZ.json b/translations/cs_CZ.json index 0c552f45399..fe22b3b74ad 100644 --- a/translations/cs_CZ.json +++ b/translations/cs_CZ.json @@ -1,5 +1,5 @@ { - "Listening on port": "Poslouchám na portu", + "Listening on port": "Naslouchám na portu", "Mo": "Po", "Tu": "Út", "We": "St", @@ -24,9 +24,9 @@ "Last 2 weeks": "Poslední 2 týdny", "Last month": "Poslední měsíc", "Last 3 months": "Poslední 3 měsíce", - "between": "between", - "around": "around", - "and": "and", + "between": "mezi", + "around": "kolem", + "and": "a", "From": "Od", "To": "Do", "Notes": "Poznámky", @@ -53,13 +53,13 @@ "": "<Žádný>", "Result is empty": "Prázdný výsledek", "Day to day": "Den po dni", - "Week to week": "Week to week", + "Week to week": "Týden po týdnu", "Daily Stats": "Denní statistiky", "Percentile Chart": "Percentil", "Distribution": "Rozložení", "Hourly stats": "Statistika po hodinách", - "netIOB stats": "netIOB stats", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "netIOB stats": "statistiky netIOB", + "temp basals must be rendered to display this report": "pro zobrazení reportu musí být vykresleny dočasné bazály", "Weekly success": "Statistika po týdnech", "No data available": "Žádná dostupná data", "Low": "Nízká", @@ -95,7 +95,7 @@ "No API secret hash stored yet. You need to enter API secret.": "Není uložený žádný hash API hesla. Musíte zadat API heslo.", "Database loaded": "Databáze načtena", "Error: Database failed to load": "Chyba při načítání databáze", - "Error": "Error", + "Error": "Chyba", "Create new record": "Vytvořit nový záznam", "Save record": "Uložit záznam", "Portions": "Porcí", @@ -109,7 +109,7 @@ "Your API secret must be at least 12 characters long": "Vaše API heslo musí mít alespoň 12 znaků", "Bad API secret": "Chybné API heslo", "API secret hash stored": "Hash API hesla uložen", - "Status": "Status", + "Status": "Stav", "Not loaded": "Nenačtený", "Food Editor": "Editor jídel", "Your database": "Vaše databáze", @@ -119,8 +119,8 @@ "Record": "Záznam", "Quick picks": "Rychlý výběr", "Show hidden": "Zobraz skryté", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Vaše API heslo nebo token", + "Remember this device. (Do not enable this on public computers.)": "Pamatovat si toto zařízení. (nepovolujte na veřejných počítačích.)", "Treatments": "Ošetření", "Time": "Čas", "Event Type": "Typ události", @@ -128,7 +128,7 @@ "Entered By": "Zadal", "Delete this treatment?": "Vymazat toto ošetření?", "Carbs Given": "Sacharidů", - "Inzulin Given": "Inzulínu", + "Insulin Given": "Inzulín", "Event Time": "Čas události", "Please verify that the data entered is correct": "Prosím zkontrolujte, zda jsou údaje zadány správně", "BG": "Glykémie", @@ -185,8 +185,8 @@ "Linear": "Lineární", "Logarithmic": "Logaritmické", "Logarithmic (Dynamic)": "Logaritmické (Dynamické)", - "Insulin-on-Board": "IOB", - "Carbs-on-Board": "COB", + "Insulin-on-Board": "Aktivní inzulín", + "Carbs-on-Board": "Aktivní sacharidy", "Bolus Wizard Preview": "BWP-Náhled bolusového kalk.", "Value Loaded": "Hodnoty načteny", "Cannula Age": "CAGE-Stáří kanyly", @@ -211,23 +211,22 @@ "Exercise": "Cvičení", "Pump Site Change": "Výměna setu", "CGM Sensor Start": "Spuštění sensoru", - "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Stop": "Spuštění sensoru", "CGM Sensor Insert": "Výměna sensoru", "Dexcom Sensor Start": "Spuštění sensoru", "Dexcom Sensor Change": "Výměna sensoru", "Insulin Cartridge Change": "Výměna inzulínu", - "D.A.D. Alert": "D.A.D. Alert", + "D.A.D. Alert": "D.A.D. Upozornění", "Glucose Reading": "Hodnota glykémie", "Measurement Method": "Metoda měření", "Meter": "Glukoměr", - "Insulin Given": "Inzulín", "Amount in grams": "Množství v gramech", "Amount in units": "Množství v jednotkách", "View all treatments": "Zobraz všechny ošetření", "Enable Alarms": "Povolit alarmy", - "Pump Battery Change": "Pump Battery Change", - "Pump Battery Low Alarm": "Pump Battery Low Alarm", - "Pump Battery change overdue!": "Pump Battery change overdue!", + "Pump Battery Change": "Výměna baterie pumpy", + "Pump Battery Low Alarm": "Upozornění na nízký stav baterie", + "Pump Battery change overdue!": "Překročen čas pro výměnu baterie!", "When enabled an alarm may sound.": "Při povoleném alarmu zní zvuk", "Urgent High Alarm": "Urgentní vysoká glykémie", "High Alarm": "Vysoká glykémie", @@ -303,7 +302,7 @@ "Record %1 removed ...": "Záznam %1 odstraněn ...", "Error removing record %1": "Chyba při odstaňování záznamu %1", "Deleting records ...": "Odstraňování záznamů ...", - "%1 records deleted": "%1 records deleted", + "%1 records deleted": "%1 záznamů odstraněno", "Clean Mongo status database": "Vyčištění Mongo databáze statusů", "Delete all documents from devicestatus collection": "Odstranění všech záznamů z kolekce devicestatus", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Tento úkol odstraní všechny dokumenty z kolekce devicestatus. Je to vhodné udělat, pokud se ukazatel stavu baterie neobnovuje správně.", @@ -311,21 +310,21 @@ "Delete all documents from devicestatus collection?": "Odstranit všechny dokumenty z kolekce devicestatus?", "Database contains %1 records": "Databáze obsahuje %1 záznamů", "All records removed ...": "Všechny záznamy odstraněny ...", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", - "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", - "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents": "Delete old documents", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", - "%1 is not a valid number": "%1 is not a valid number", - "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Delete all documents from devicestatus collection older than 30 days": "Odstranit všechny dokumenty z tabulky devicestatus starší než 30 dní", + "Number of Days to Keep:": "Počet dní k zachovaní:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Tento úkol odstraní všechny záznamy z tabulky devicestatus. Je to vhodné udělat, pokud se ukazatel stavu baterie neukazuje správně.", + "Delete old documents from devicestatus collection?": "Odstranit všechny staré záznamy z tabulky devicestatus?", + "Clean Mongo entries (glucose entries) database": "Vymazat záznamy (glykémie) z Mongo databáze", + "Delete all documents from entries collection older than 180 days": "Odstranit z tabulky entries všechny záznamy starší než 180 dní", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Tato úloha odstraní záznamy z tabulky entries, které jsou starší než 180 dní. Je vhodné ji spustit, pokud máte problémy se zobrazováním stavu baterie uploaderu.", + "Delete old documents": "Smazat staré záznamy", + "Delete old documents from entries collection?": "Odstranit staré záznamy z tabulky entries?", + "%1 is not a valid number": "%1 není platné číslo", + "%1 is not a valid number - must be more than 2": "%1 není platné číslo - musí být větší než 2", + "Clean Mongo treatments database": "Vyčistit tabulku treatments v Mongo databázi", + "Delete all documents from treatments collection older than 180 days": "Odstranit z tabulky treatments všechny záznamy starší než 180 dní", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Tato úloha odstraní záznamy z tabulky treatments, které jsou starší než 180 dní. Je vhodné ji spustit, pokud máte problémy se zobrazováním stavu baterie uploaderu.", + "Delete old documents from treatments collection?": "Odstranit staré záznamy z tabulky treatments?", "Admin Tools": "Nástroje pro správu", "Nightscout reporting": "Nightscout - Výkazy", "Cancel": "Zrušit", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Subjekty - Lidé, zařízení atd.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Každý subjekt má svůj unikátní token a 1 nebo více rolí. Klikem na přístupový token se otevře nové okno pro tento subjekt. Tento link je možné sdílet.", "Add new Subject": "Přidat nový subjekt", - "Unable to %1 Subject": "Chyba volání %1 Subjektu:", + "Unable to %1 Subject": "Nelze %1 Subjekt", "Unable to delete Subject": "Nelze odstranit Subjekt:", "Database contains %1 subjects": "Databáze obsahuje %1 subjektů", "Edit Subject": "Editovat subjekt", @@ -521,7 +520,7 @@ "%1m ago": "%1m zpět", "%1h ago": "%1h zpět", "%1d ago": "%1d zpět", - "RETRO": "RETRO", + "RETRO": "Zastaralé", "SAGE": "SENZ", "Sensor change/restart overdue!": "Čas na výměnu senzoru vypršel!", "Time to change/restart sensor": "Čas na výměnu senzoru", @@ -557,65 +556,65 @@ "SingleDown": "dolů", "DoubleDown": "rychle dolů", "DoubleUp": "rychle nahoru", - "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", + "virtAsstUnknown": "Hodnota je v tuto chvíli neznámá. Pro více informací se podívejte na stránky Nightscout.", + "virtAsstTitleAR2Forecast": "AR2 predikce", + "virtAsstTitleCurrentBasal": "Aktuální bazál", + "virtAsstTitleCurrentCOB": "Aktuální COB", + "virtAsstTitleCurrentIOB": "Aktuální COB", + "virtAsstTitleLaunch": "Vítejte v Nightscoutu", + "virtAsstTitleLoopForecast": "Prognóza smyčky", + "virtAsstTitleLastLoop": "Poslední smyčka", + "virtAsstTitleOpenAPSForecast": "OpenAPS predikce", + "virtAsstTitlePumpReservoir": "Zbývající inzulín", + "virtAsstTitlePumpBattery": "Baterie pumpy", + "virtAsstTitleRawBG": "Aktuální Raw glykemie", + "virtAsstTitleUploaderBattery": "Baterie telefonu", + "virtAsstTitleCurrentBG": "Aktuální glykemie", + "virtAsstTitleFullStatus": "Plný status", + "virtAsstTitleCGMMode": "Režim CGM", + "virtAsstTitleCGMStatus": "Stav CGM", + "virtAsstTitleCGMSessionAge": "Staří senzoru CGM", + "virtAsstTitleCGMTxStatus": "Stav vysílače CGM", + "virtAsstTitleCGMTxAge": "Stáří vysílače CGM", + "virtAsstTitleCGMNoise": "Šum CGM", + "virtAsstTitleDelta": "Změna krevní glukózy", "virtAsstStatus": "%1 %2 čas %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", + "virtAsstBasal": "%1 aktuální bazál je %2 jednotek za hodinu", + "virtAsstBasalTemp": "%1 dočasný bazál %2 jednotek za hodinu skončí v %3", + "virtAsstIob": "a máte %1 aktivního inzulínu.", + "virtAsstIobIntent": "Máte %1 aktivního inzulínu", "virtAsstIobUnits": "%1 jednotek", - "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstLaunch": "Co chcete v Nightscoutu zkontrolovat?", "virtAsstPreamble": "Vaše", "virtAsstPreamble3person": "%1 má ", "virtAsstNoInsulin": "žádný", "virtAsstUploadBattery": "Baterie mobilu má %1", "virtAsstReservoir": "V zásobníku zbývá %1 jednotek", "virtAsstPumpBattery": "Baterie v pumpě má %1 %2", - "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstUploaderBattery": "Baterie uploaderu má %1", "virtAsstLastLoop": "Poslední úšpěšné provedení smyčky %1", "virtAsstLoopNotAvailable": "Plugin smyčka není patrně povolený", "virtAsstLoopForecastAround": "Podle přepovědi smyčky je očekávána glykémie around %1 během následujících %2", "virtAsstLoopForecastBetween": "Podle přepovědi smyčky je očekávána glykémie between %1 and %2 během následujících %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", + "virtAsstAR2ForecastAround": "Podle AR2 predikce je očekávána glykémie okolo %1 během následujících %2", + "virtAsstAR2ForecastBetween": "Podle AR2 predikce je očekávána glykémie mezi %1 a %2 během následujících %3", "virtAsstForecastUnavailable": "S dostupnými daty přepověď není možná", "virtAsstRawBG": "Raw glykémie je %1", "virtAsstOpenAPSForecast": "OpenAPS Eventual BG je %1", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstCob3person": "%1 má %2 aktivních sacharidů", + "virtAsstCob": "Máte %1 aktivních sacharidů", + "virtAsstCGMMode": "Váš CGM režim byl %1 od %2.", + "virtAsstCGMStatus": "Váš stav CGM byl %1 od %2.", + "virtAsstCGMSessAge": "Vaše CGM relace byla aktivní %1 dní a %2 hodin.", + "virtAsstCGMSessNotStarted": "V tuto chvíli není aktivní žádná relace CGM.", + "virtAsstCGMTxStatus": "Stav CGM vysílače byl %1 od %2.", + "virtAsstCGMTxAge": "Stáří CGM vysílače je %1 dní.", + "virtAsstCGMNoise": "Šum CGM byl %1 do %2.", + "virtAsstCGMBattOne": "Baterie CGM vysílače byla %1 voltů od %2.", + "virtAsstCGMBattTwo": "Stav baterie CGM vysílače byla mezi %1 voltů a %2 voltů od %3.", + "virtAsstDelta": "Vaše delta byla %1 mezi %2 a %3.", + "virtAsstUnknownIntentTitle": "Neznámý úmysl", + "virtAsstUnknownIntentText": "Je mi líto. Nevím, na co se ptáte.", "Fat [g]": "Tuk [g]", "Protein [g]": "Proteiny [g]", "Energy [kJ]": "Energie [kJ]", @@ -624,9 +623,9 @@ "Color": "Barva", "Simple": "Jednoduchý", "TDD average": "Průměrná denní dávka", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", + "Bolus average": "Průměrný bolus", + "Basal average": "Průměrný bazál", + "Base basal average:": "Průměrná hodnota bazálu:", "Carbs average": "Průměrné množství sacharidů", "Eating Soon": "Blížící se jídlo", "Last entry {0} minutes ago": "Poslední hodnota {0} minut zpět", @@ -641,20 +640,20 @@ "ago": "zpět", "Last data received": "Poslední data přiajata", "Clock View": "Hodiny", - "Protein": "Protein", - "Fat": "Fat", - "Protein average": "Protein average", - "Fat average": "Fat average", - "Total carbs": "Total carbs", - "Total protein": "Total protein", - "Total fat": "Total fat", - "Database Size": "Database Size", - "Database Size near its limits!": "Database Size near its limits!", - "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", - "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" + "Protein": "Proteiny", + "Fat": "Tuk", + "Protein average": "Průměrně bílkovin", + "Fat average": "Průměrně tuků", + "Total carbs": "Celkové sacharidy", + "Total protein": "Celkem bílkovin", + "Total fat": "Celkový tuk", + "Database Size": "Velikost databáze", + "Database Size near its limits!": "Databáze bude brzy plná!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Velikost databáze je %1 MiB z %2 MiB. Udělejte si zálohu dat a vyčistěte databázi!", + "Database file size": "Velikost databáze", + "%1 MiB of %2 MiB (%3%)": "%1 MiB z %2 MiB (%3%)", + "Data size": "Velikost dat", + "virtAsstDatabaseSize": "%1 MiB. To odpovídá %2% dostupného místa databázi.", + "virtAsstTitleDatabaseSize": "Velikost databáze", + "Carbs/Food/Time": "Sacharidy/Jídlo/Čas" } \ No newline at end of file diff --git a/translations/da_DK.json b/translations/da_DK.json index fcf693eb5e0..061a60ff7bc 100644 --- a/translations/da_DK.json +++ b/translations/da_DK.json @@ -128,7 +128,7 @@ "Entered By": "Indtastet af", "Delete this treatment?": "Slet denne hændelse?", "Carbs Given": "Antal kulhydrater", - "Inzulin Given": "Insulin", + "Insulin Given": "Insulin dosis", "Event Time": "Tidspunkt for hændelsen", "Please verify that the data entered is correct": "Venligst verificer at indtastet data er korrekt", "BG": "BS", @@ -220,7 +220,6 @@ "Glucose Reading": "Blodsukker aflæsning", "Measurement Method": "Målemetode", "Meter": "Blodsukkermåler", - "Insulin Given": "Insulin dosis", "Amount in grams": "Antal gram", "Amount in units": "Antal enheder", "View all treatments": "Vis behandlinger", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Emner - Brugere, Enheder, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Hvert emne vil have en unik sikkerhedsnøgle samt en eller flere roller. Klik på sikkerhedsnøglen for at åbne et nyt view med det valgte emne, dette hemmelige link kan derefter blive delt.", "Add new Subject": "Tilføj nye emner", - "Unable to %1 Subject": "Kan ikke %1 emne", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Kan ikke slette emne", "Database contains %1 subjects": "Databasen indeholder %1 emner", "Edit Subject": "Rediger emne", diff --git a/translations/de_DE.json b/translations/de_DE.json index 392c3e5d650..45b59d88303 100644 --- a/translations/de_DE.json +++ b/translations/de_DE.json @@ -24,9 +24,9 @@ "Last 2 weeks": "Letzten 2 Wochen", "Last month": "Letzter Monat", "Last 3 months": "Letzten 3 Monate", - "between": "between", - "around": "around", - "and": "and", + "between": "zwischen", + "around": "circa", + "and": "und", "From": "Von", "To": "Bis", "Notes": "Notiz", @@ -71,10 +71,10 @@ "Upper Quartile": "Oberes Quartil", "Quartile": "Quartil", "Date": "Datum", - "Normal": "Normal", + "Normal": "Regulär", "Median": "Median", "Readings": "Messwerte", - "StDev": "Standardabweichung", + "StDev": "StAbw", "Daily stats report": "Tagesstatistik Bericht", "Glucose Percentile report": "Glukose-Perzentil Bericht", "Glucose distribution": "Glukose Verteilung", @@ -89,13 +89,13 @@ "Max": "Max", "Min": "Min", "A1c estimation*": "Einschätzung HbA1c*", - "Weekly Success": "Wöchtlicher Erfolg", + "Weekly Success": "Wöchentlicher Erfolg", "There is not sufficient data to run this report. Select more days.": "Für diesen Bericht sind nicht genug Daten verfügbar. Bitte weitere Tage auswählen.", "Using stored API secret hash": "Gespeicherte API-Prüfsumme verwenden", "No API secret hash stored yet. You need to enter API secret.": "Keine API-Prüfsumme gespeichert. Bitte API-Prüfsumme eingeben.", "Database loaded": "Datenbank geladen", "Error: Database failed to load": "Fehler: Datenbank konnte nicht geladen werden", - "Error": "Error", + "Error": "Fehler", "Create new record": "Erstelle neuen Datensatz", "Save record": "Speichere Datensatz", "Portions": "Portionen", @@ -106,9 +106,9 @@ "Move to the top": "Gehe zum Anfang", "Hidden": "Verborgen", "Hide after use": "Verberge nach Gebrauch", - "Your API secret must be at least 12 characters long": "Deine API-Prüfsumme muss mindestens 12 Zeichen lang sein", - "Bad API secret": "Fehlerhafte API-Prüfsumme", - "API secret hash stored": "API-Prüfsumme gespeichert", + "Your API secret must be at least 12 characters long": "Dein API-Geheimnis muss mindestens 12 Zeichen lang sein", + "Bad API secret": "Fehlerhaftes API-Geheimnis", + "API secret hash stored": "API-Geheimnis-Prüfsumme gespeichert", "Status": "Status", "Not loaded": "Nicht geladen", "Food Editor": "Nahrungsmittel-Editor", @@ -119,7 +119,7 @@ "Record": "Datensatz", "Quick picks": "Schnellauswahl", "Show hidden": "Verborgenes zeigen", - "Your API secret or token": "Deine API-Prüfsumme oder Token", + "Your API secret or token": "Dein API-Geheimnis oder Token", "Remember this device. (Do not enable this on public computers.)": "An dieses Gerät erinnern. (Nicht auf öffentlichen Geräten verwenden)", "Treatments": "Behandlungen", "Time": "Zeit", @@ -128,20 +128,20 @@ "Entered By": "Eingabe durch", "Delete this treatment?": "Diese Behandlung löschen?", "Carbs Given": "Kohlenhydratgabe", - "Inzulin Given": "Insulingabe", + "Insulin Given": "Insulingabe", "Event Time": "Ereignis-Zeit", "Please verify that the data entered is correct": "Bitte Daten auf Plausibilität prüfen", - "BG": "BG", - "Use BG correction in calculation": "Verwende BG-Korrektur zur Kalkulation", + "BG": "BZ", + "Use BG correction in calculation": "Verwende BG-Korrektur zur Berechnung", "BG from CGM (autoupdated)": "Blutglukose vom CGM (Auto-Update)", "BG from meter": "Blutzucker vom Messgerät", "Manual BG": "BG von Hand", "Quickpick": "Schnellauswahl", "or": "oder", "Add from database": "Ergänze aus Datenbank", - "Use carbs correction in calculation": "Verwende Kohlenhydrate-Korrektur zur Kalkulation", - "Use COB correction in calculation": "Verwende verzehrte Kohlenhydrate zur Kalkulation", - "Use IOB in calculation": "Verwende gespritzes Insulin zur Kalkulation", + "Use carbs correction in calculation": "Verwende Kohlenhydrate-Korrektur zur Berechnung", + "Use COB correction in calculation": "Verwende verzehrte Kohlenhydrate zur Berechnung", + "Use IOB in calculation": "Verwende Insulin on Board zur Berechnung", "Other correction": "Weitere Korrektur", "Rounding": "Gerundet", "Enter insulin correction in treatment": "Insulin Korrektur zur Behandlung eingeben", @@ -161,7 +161,7 @@ "45 minutes later": "45 Minuten später", "60 minutes later": "60 Minuten später", "Additional Notes, Comments": "Ergänzende Hinweise/Kommentare", - "RETRO MODE": "Retro-Modus", + "RETRO MODE": "RETRO-MODUS", "Now": "Jetzt", "Other": "Weitere", "Submit Form": "Formular absenden", @@ -174,7 +174,7 @@ "Entering record failed": "Eingabe Datensatz fehlerhaft", "Device authenticated": "Gerät authentifiziert", "Device not authenticated": "Gerät nicht authentifiziert", - "Authentication status": "Authentifikationsstatus", + "Authentication status": "Authentifizierungsstatus", "Authenticate": "Authentifizieren", "Remove": "Entfernen", "Your device is not authenticated yet": "Dein Gerät ist noch nicht authentifiziert", @@ -184,17 +184,17 @@ "Scale": "Skalierung", "Linear": "Linear", "Logarithmic": "Logarithmisch", - "Logarithmic (Dynamic)": "Logaritmisch (dynamisch)", - "Insulin-on-Board": "Aktives Bolus-Insulin", + "Logarithmic (Dynamic)": "Logarithmisch (dynamisch)", + "Insulin-on-Board": "Aktives Insulin", "Carbs-on-Board": "Aktiv wirksame Kohlenhydrate", - "Bolus Wizard Preview": "Bolus-Kalkulator Vorschau (BWP)", + "Bolus Wizard Preview": "Bolus-Assistent Vorschau (BWP)", "Value Loaded": "Geladener Wert", "Cannula Age": "Kanülenalter", "Basal Profile": "Basalraten-Profil", - "Silence for 30 minutes": "Stille für 30 Minuten", - "Silence for 60 minutes": "Stille für 60 Minuten", - "Silence for 90 minutes": "Stille für 90 Minuten", - "Silence for 120 minutes": "Stille für 120 Minuten", + "Silence for 30 minutes": "Lautlos für 30 Minuten", + "Silence for 60 minutes": "Lautlos für 60 Minuten", + "Silence for 90 minutes": "Lautlos für 90 Minuten", + "Silence for 120 minutes": "Lautlos für 120 Minuten", "Settings": "Einstellungen", "Units": "Einheiten", "Date format": "Datumsformat", @@ -205,13 +205,13 @@ "Meal Bolus": "Mahlzeiten-Bolus", "Snack Bolus": "Snack-Bolus", "Correction Bolus": "Korrektur-Bolus", - "Carb Correction": "Kohlenhydrate Korrektur", + "Carb Correction": "Kohlenhydrat-Korrektur", "Note": "Bemerkung", "Question": "Frage", "Exercise": "Bewegung", "Pump Site Change": "Pumpen-Katheter Wechsel", "CGM Sensor Start": "CGM Sensor Start", - "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Stop": "CGM Sensor Stopp", "CGM Sensor Insert": "CGM Sensor Wechsel", "Dexcom Sensor Start": "Dexcom Sensor Start", "Dexcom Sensor Change": "Dexcom Sensor Wechsel", @@ -220,7 +220,6 @@ "Glucose Reading": "Glukosemesswert", "Measurement Method": "Messmethode", "Meter": "BZ-Messgerät", - "Insulin Given": "Insulingabe", "Amount in grams": "Menge in Gramm", "Amount in units": "Anzahl in Einheiten", "View all treatments": "Zeige alle Behandlungen", @@ -229,10 +228,10 @@ "Pump Battery Low Alarm": "Pumpenbatterie niedrig Alarm", "Pump Battery change overdue!": "Pumpenbatterie Wechsel überfällig!", "When enabled an alarm may sound.": "Sofern eingeschaltet ertönt ein Alarm", - "Urgent High Alarm": "Achtung Hoch Alarm", + "Urgent High Alarm": "Akuter Hoch Alarm", "High Alarm": "Hoch Alarm", "Low Alarm": "Niedrig Alarm", - "Urgent Low Alarm": "Achtung Niedrig Alarm", + "Urgent Low Alarm": "Akuter Niedrig Alarm", "Stale Data: Warn": "Warnung: Daten nicht mehr gültig", "Stale Data: Urgent": "Achtung: Daten nicht mehr gültig", "mins": "Minuten", @@ -242,7 +241,7 @@ "Show Raw BG Data": "Zeige Roh-BG Daten", "Never": "Nie", "Always": "Immer", - "When there is noise": "Sofern Rauschen vorhanden", + "When there is noise": "Sofern Sensorrauschen vorhanden", "When enabled small white dots will be displayed for raw BG data": "Bei Aktivierung erscheinen kleine weiße Punkte für Roh-BG Daten", "Custom Title": "Benutzerdefinierter Titel", "Theme": "Aussehen", @@ -252,7 +251,7 @@ "Reset, and use defaults": "Zurücksetzen und Voreinstellungen verwenden", "Calibrations": "Kalibrierung", "Alarm Test / Smartphone Enable": "Alarm Test / Smartphone aktivieren", - "Bolus Wizard": "Bolus-Kalkulator", + "Bolus Wizard": "Bolus-Assistent", "in the future": "in der Zukunft", "time ago": "seit Kurzem", "hr ago": "Stunde her", @@ -300,7 +299,7 @@ "Database contains %1 future records": "Datenbank enthält %1 zukünftige Einträge", "Remove %1 selected records?": "Lösche ausgewählten %1 Eintrag?", "Error loading database": "Fehler beim Laden der Datenbank", - "Record %1 removed ...": "Eintrag %1 entfernt", + "Record %1 removed ...": "Eintrag %1 entfernt ...", "Error removing record %1": "Fehler beim Entfernen des Eintrags %1", "Deleting records ...": "Entferne Einträge ...", "%1 records deleted": "%1 Einträge gelöscht", @@ -328,7 +327,7 @@ "Delete old documents from treatments collection?": "Alte Dokumente aus der Behandlungs-Sammlung entfernen?", "Admin Tools": "Administrator-Werkzeuge", "Nightscout reporting": "Nightscout-Berichte", - "Cancel": "Abbruch", + "Cancel": "Abbrechen", "Edit treatment": "Bearbeite Behandlung", "Duration": "Dauer", "Duration in minutes": "Dauer in Minuten", @@ -351,19 +350,19 @@ "Remove this record": "Diesen Eintrag löschen", "Clone this record to new": "Diesen Eintrag duplizieren", "Record valid from": "Eintrag gültig ab", - "Stored profiles": "Gesicherte Profile", + "Stored profiles": "Gespeicherte Profile", "Timezone": "Zeitzone", "Duration of Insulin Activity (DIA)": "Dauer der Insulinaktivität (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.": "Entspricht der typischen Dauer in der das Insulin wirkt. Variiert je nach Patient und Insulintyp. Häufig 3-4 Stunden für die meisten Pumpeninsuline und die meisten Patienten. Manchmal auch Insulin-Wirkungsdauer genannt.", + "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.": "Entspricht der typischen Dauer, die das Insulin wirkt. Variiert je nach Patient und Art des Insulins. Häufig 3-4 Stunden für die meisten Pumpeninsuline und die meisten Patienten. Manchmal auch Insulin-Wirkungsdauer genannt.", "Insulin to carb ratio (I:C)": "Insulin/Kohlenhydrate-Verhältnis (I:KH)", "Hours:": "Stunden:", "hours": "Stunden", - "g/hour": "g/Std", + "g/hour": "g/h", "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g Kohlenhydrate pro Einheit Insulin. Das Verhältnis wie viele Gramm Kohlenhydrate je Einheit Insulin verbraucht werden.", "Insulin Sensitivity Factor (ISF)": "Insulinsensibilitätsfaktor (ISF)", "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL oder mmol/L pro Einheit Insulin. Verhältnis von BG-Veränderung je Einheit Korrekturinsulin.", - "Carbs activity / absorption rate": "Kohlenhydrataktivität / Aufnahme Kohlenhydrate", - "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).": "Gramm pro Zeiteinheit. Bedeutet sowohl die Änderung in COB je Zeiteinheit, als auch die Menge an Kohlenhydraten die über diese Zeit wirken sollten. Kohlenhydrat-Absorption / Aktivitätskurven werden weniger genau verstanden als Insulinaktivität, aber sie können angenähert werden indem eine Anfangsverzögerung mit konstanter Aufnahme (g/Std.) verwendet wird.", + "Carbs activity / absorption rate": "Kohlenhydrataktivität / Kohlenhydrat-Absorptionsrate", + "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).": "Gramm pro Zeiteinheit. Bedeutet sowohl die Änderung in COB je Zeiteinheit, als auch die Menge an Kohlenhydraten, die über diese Zeit wirken sollten. Kohlenhydrat-Absorption / Aktivitätskurven werden weniger genau verstanden als Insulinaktivität, aber sie können angenähert werden indem eine Anfangsverzögerung mit konstanter Aufnahme (g/Std.) verwendet wird.", "Basal rates [unit/hour]": "Basalraten [Einheit/h]", "Target BG range [mg/dL,mmol/L]": "Blutzucker-Zielbereich [mg/dL, mmol/L]", "Start of record validity": "Beginn der Aufzeichnungsgültigkeit", @@ -375,7 +374,7 @@ "Values loaded.": "Werte geladen.", "Default values used.": "Standardwerte werden verwendet.", "Error. Default values used.": "Fehler. Standardwerte werden verwendet.", - "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Zeitspanne vom untersten und obersten Wert wird nicht berücksichtigt. Werte auf Standard zurückgesetzt.", + "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Zeitspannen vom untern und oberen Zielwert stimmen nicht überein. Werte auf Standard zurückgesetzt.", "Valid from:": "Gültig ab:", "Save current record before switching to new?": "Aktuellen Datensatz speichern?", "Add new interval before": "Neues Intervall vorher hinzufügen", @@ -394,7 +393,7 @@ "Move carbs": "Kohlenhydrate verschieben", "Remove insulin": "Insulin löschen", "Remove carbs": "Kohlenhydrate löschen", - "Change treatment time to %1 ?": "Behandlungsdauer ändern in %1 ?", + "Change treatment time to %1 ?": "Behandlungsdauer ändern zu %1 ?", "Change carbs time to %1 ?": "Kohlenhydrat-Zeit ändern zu %1 ?", "Change insulin time to %1 ?": "Insulinzeit ändern zu %1 ?", "Remove treatment ?": "Behandlung löschen?", @@ -420,14 +419,14 @@ "Negative temp basal insulin:": "Negatives temporäres Basal Insulin:", "Total basal insulin:": "Gesamt Basal Insulin:", "Total daily insulin:": "Gesamtes tägliches Insulin:", - "Unable to %1 Role": "Unpassend zu %1 Rolle", + "Unable to %1 Role": "Fehler bei der %1 Rolle", "Unable to delete Role": "Rolle nicht löschbar", "Database contains %1 roles": "Datenbank enthält %1 Rollen", "Edit Role": "Rolle editieren", "admin, school, family, etc": "Administrator, Schule, Familie, etc", "Permissions": "Berechtigungen", "Are you sure you want to delete: ": "Sind sie sicher, das Sie löschen wollen:", - "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Jede Rolle hat eine oder mehrere Berechtigungen. Die * Berechtigung ist ein Platzhalter, Berechtigungen sind hierachrchisch mit : als Separator.", + "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Jede Rolle hat eine oder mehrere Berechtigungen. Die * Berechtigung ist ein Platzhalter, Berechtigungen sind hierarchisch mit : als Separator.", "Add new Role": "Eine neue Rolle hinzufügen", "Roles - Groups of People, Devices, etc": "Rollen - Gruppierungen von Menschen, Geräten, etc.", "Edit this role": "Editiere diese Rolle", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Subjekte - Menschen, Geräte, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Jedes Subjekt erhält einen einzigartigen Zugriffsschlüssel und eine oder mehrere Rollen. Klicke auf den Zugriffsschlüssel, um eine neue Ansicht mit dem ausgewählten Subjekt zu erhalten. Dieser geheime Link kann geteilt werden.", "Add new Subject": "Füge ein neues Subjekt hinzu", - "Unable to %1 Subject": "Unpassend zum %1 Subjekt", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Kann Subjekt nicht löschen", "Database contains %1 subjects": "Datenbank enthält %1 Subjekte", "Edit Subject": "Editiere Subjekt", @@ -444,7 +443,7 @@ "Edit this subject": "Editiere dieses Subjekt", "Delete this subject": "Lösche dieses Subjekt", "Roles": "Rollen", - "Access Token": "Zugriffsschlüssel", + "Access Token": "Zugriffsschlüssel (Token)", "hour ago": "vor einer Stunde", "hours ago": "vor mehreren Stunden", "Silence for %1 minutes": "Ruhe für %1 Minuten", @@ -473,7 +472,7 @@ "Warning": "Warnung", "Info": "Info", "Lowest": "Niedrigster", - "Snoozing high alarm since there is enough IOB": "Ignoriere Alarm hoch, da genügend aktives Bolus-Insulin (IOB) vorhanden", + "Snoozing high alarm since there is enough IOB": "Ignoriere Alarm hoch, da genügend aktives Insulin (IOB) vorhanden", "Check BG, time to bolus?": "BZ kontrollieren, ggf. Bolus abgeben?", "Notice": "Notiz", "required info missing": "Benötigte Information fehlt", @@ -494,7 +493,7 @@ "Bolus %1 units": "Bolus von %1 Einheiten", "or adjust basal": "oder Basal anpassen", "Check BG using glucometer before correcting!": "Überprüfe deinen BZ mit dem Messgerät, bevor du eine Korrektur vornimmst!", - "Basal reduction to account %1 units:": "Reduktion der Basalrate um %1 Einheiten zu kompensieren", + "Basal reduction to account %1 units:": "Reduktion der Basalrate um %1 Einheiten zu kompensieren:", "30m temp basal": "30min temporäres Basal", "1h temp basal": "1h temporäres Basal", "Cannula change overdue!": "Kanülenwechsel überfällig!", @@ -512,7 +511,7 @@ "Insulin reservoir age %1 hours": "Ampullen Alter %1 Stunden", "Changed": "Gewechselt", "IOB": "IOB", - "Careportal IOB": "Careportal IOB", + "Careportal IOB": "Behandlungs-Portal IOB", "Last Bolus": "Letzter Bolus", "Basal IOB": "Basal IOB", "Source": "Quelle", @@ -521,7 +520,7 @@ "%1m ago": "vor %1m", "%1h ago": "vor %1h", "%1d ago": "vor 1d", - "RETRO": "RETRO", + "RETRO": "RÜCKSCHAU", "SAGE": "SAGE", "Sensor change/restart overdue!": "Sensorwechsel/-neustart überfällig!", "Time to change/restart sensor": "Es ist Zeit, den Sensor zu wechseln/neuzustarten", @@ -536,7 +535,7 @@ "OpenAPS Forecasts": "OpenAPS-Vorhersage", "Temporary Target": "Temporäres Ziel", "Temporary Target Cancel": "Temporäres Ziel abbrechen", - "OpenAPS Offline": "OpenAPS Offline", + "OpenAPS Offline": "OpenAPS offline", "Profiles": "Profile", "Time in fluctuation": "Zeit in Fluktuation (Schwankung)", "Time in rapid fluctuation": "Zeit in starker Fluktuation (Schwankung)", @@ -545,7 +544,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Zeit in Fluktuation und Zeit in starker Fluktuation messen den Teil der Zeit, in der sich der Blutzuckerwert relativ oder sehr schnell verändert hat. Niedrigere Werte sind besser.", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Die gesamte mittlere Änderung pro Tag ist die Summe der absoluten Werte aller Glukoseveränderungen im Betrachtungszeitraum geteilt durch die Anzahl der Tage. Niedrigere Werte sind besser.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Die mittlere Änderung pro Stunde ist die Summe der absoluten Werte aller Glukoseveränderungen im Betrachtungszeitraum geteilt durch die Anzahl der Stunden. Niedrigere Werte sind besser.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Der \"außerhalb des Zielbereichs RMS-Wert\" wird berechnet, indem der Abstand außerhalb des Zielbereichs für alle Glukosemesswerte im untersuchten Zeitraum quadriert, addiert, durch die Anzahl geteilt und die Quadratwurzel genommen wird. Diese Metrik ähnelt dem Im-Zielbereich-Prozentsatz, gewichtet aber Messwerte weit außerhalb des Bereichs höher. Niedrigere Werte sind besser.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">hier.", "Mean Total Daily Change": "Gesamte mittlere Änderung pro Tag", @@ -572,12 +571,12 @@ "virtAsstTitleUploaderBattery": "Uploader Batterie", "virtAsstTitleCurrentBG": "Aktueller Blutzucker", "virtAsstTitleFullStatus": "Gesamtstatus", - "virtAsstTitleCGMMode": "CGM Mode", - "virtAsstTitleCGMStatus": "CGM Status", - "virtAsstTitleCGMSessionAge": "CGM Session Age", + "virtAsstTitleCGMMode": "CGM Modus", + "virtAsstTitleCGMStatus": "CGM-Status", + "virtAsstTitleCGMSessionAge": "CGM Sitzungs-Alter", "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", - "virtAsstTitleCGMTxAge": "CGM Transmitter Age", - "virtAsstTitleCGMNoise": "CGM Noise", + "virtAsstTitleCGMTxAge": "CGM-Transmitteralter", + "virtAsstTitleCGMNoise": "CGM Sensorrauschen", "virtAsstTitleDelta": "Blutzucker-Delta", "virtAsstStatus": "%1 und bis %3 %2.", "virtAsstBasal": "%1 aktuelle Basalrate ist %2 Einheiten je Stunde", @@ -592,41 +591,41 @@ "virtAsstUploadBattery": "Der Akku deines Uploader-Handys ist bei %1", "virtAsstReservoir": "Du hast %1 Einheiten übrig", "virtAsstPumpBattery": "Der Batteriestand deiner Pumpe ist bei %1 %2", - "virtAsstUploaderBattery": "Der Akku deines Uploader-Handys ist bei %1", + "virtAsstUploaderBattery": "Der Akku deines Uploaders ist bei %1", "virtAsstLastLoop": "Der letzte erfolgreiche Loop war %1", "virtAsstLoopNotAvailable": "Das Loop-Plugin scheint nicht aktiviert zu sein", - "virtAsstLoopForecastAround": "Entsprechend der Loop-Vorhersage landest in den nächsten %2 bei %1", - "virtAsstLoopForecastBetween": "Entsprechend der Loop-Vorhersage landest du zwischen %1 und %2 während der nächsten %3", - "virtAsstAR2ForecastAround": "Entsprechend der AR2-Vorhersage landest du in %2 bei %1", - "virtAsstAR2ForecastBetween": "Entsprechend der AR2-Vorhersage landest du in %3 zwischen %1 and %2", + "virtAsstLoopForecastAround": "Entsprechend der Loop-Vorhersage wirst in den nächsten %2 bei %1 sein", + "virtAsstLoopForecastBetween": "Entsprechend der Loop-Vorhersage wirst du zwischen %1 und %2 während der nächsten %3 sein", + "virtAsstAR2ForecastAround": "Entsprechend der AR2-Vorhersage wirst du in %2 bei %1 sein", + "virtAsstAR2ForecastBetween": "Entsprechend der AR2-Vorhersage wirst du in %3 zwischen %1 and %2 sein", "virtAsstForecastUnavailable": "Mit den verfügbaren Daten ist eine Loop-Vorhersage nicht möglich", "virtAsstRawBG": "Dein Rohblutzucker ist %1", "virtAsstOpenAPSForecast": "Der von OpenAPS vorhergesagte Blutzucker ist %1", "virtAsstCob3person": "%1 hat %2 Kohlenhydrate wirkend", - "virtAsstCob": "Du hast noch %1 Kohlenhydrate wirkend.", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstCob": "Du hast noch %1 Kohlenhydrate wirkend", + "virtAsstCGMMode": "Ihr CGM Modus von %2 war %1.", + "virtAsstCGMStatus": "Ihr CGM Status von %2 war %1.", + "virtAsstCGMSessAge": "Deine CGM Sitzung ist seit %1 Tagen und %2 Stunden aktiv.", + "virtAsstCGMSessNotStarted": "Derzeit gibt es keine aktive CGM Sitzung.", + "virtAsstCGMTxStatus": "Dein CGM Status von %2 war %1.", + "virtAsstCGMTxAge": "Dein CGM Transmitter ist %1 Tage alt.", + "virtAsstCGMNoise": "Dein CGM Sensorrauschen von %2 war %1.", + "virtAsstCGMBattOne": "Dein CGM Akku von %2 war %1 Volt.", + "virtAsstCGMBattTwo": "Deine CGM Akkustände von %3 waren %1 Volt und %2 Volt.", "virtAsstDelta": "Dein Delta war %1 zwischen %2 und %3.", - "virtAsstUnknownIntentTitle": "Unbekannte Absicht", + "virtAsstUnknownIntentTitle": "Unbekanntes Vorhaben", "virtAsstUnknownIntentText": "Tut mir leid, ich hab deine Frage nicht verstanden.", "Fat [g]": "Fett [g]", "Protein [g]": "Proteine [g]", "Energy [kJ]": "Energie [kJ]", - "Clock Views:": "Uhr-Anzeigen", + "Clock Views:": "Uhr-Anzeigen:", "Clock": "Uhr", "Color": "Farbe", "Simple": "Einfach", "TDD average": "durchschnittliches Insulin pro Tag (TDD)", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", + "Bolus average": "Bolus-Durchschnitt", + "Basal average": "Basal-Durchschnitt", + "Base basal average:": "Basis-Basal-Durchschnitt:", "Carbs average": "durchschnittliche Kohlenhydrate pro Tag", "Eating Soon": "Bald Essen", "Last entry {0} minutes ago": "Letzter Eintrag vor {0} Minuten", @@ -641,7 +640,7 @@ "ago": "vor", "Last data received": "Zuletzt Daten empfangen", "Clock View": "Uhr-Anzeigen", - "Protein": "Protein", + "Protein": "Proteine", "Fat": "Fett", "Protein average": "Proteine Durchschnitt", "Fat average": "Fett Durchschnitt", @@ -656,5 +655,5 @@ "Data size": "Datengröße", "virtAsstDatabaseSize": "%1 MiB. Das sind %2% des verfügbaren Datenbank-Speicherplatzes.", "virtAsstTitleDatabaseSize": "Datenbank-Dateigröße", - "Carbs/Food/Time": "Carbs/Food/Time" + "Carbs/Food/Time": "Kohlenhydrate/Nahrung/Zeit" } \ No newline at end of file diff --git a/translations/el_GR.json b/translations/el_GR.json index 40d0f4f607d..e89970d0ae4 100644 --- a/translations/el_GR.json +++ b/translations/el_GR.json @@ -25,8 +25,8 @@ "Last month": "Τελευταίος μήνας", "Last 3 months": "Τελευταίοι 3 μήνες", "between": "between", - "around": "around", - "and": "and", + "around": "γύρω από", + "and": "και", "From": "Από", "To": "Έως", "Notes": "Σημειώσεις", @@ -95,7 +95,7 @@ "No API secret hash stored yet. You need to enter API secret.": "Δεν υπάρχει αποθηκευμένο συνθηματικό API. Πρέπει να εισάγετε το συνθηματικό API", "Database loaded": "Συνδέθηκε με τη Βάση Δεδομένων", "Error: Database failed to load": "Σφάλμα:Αποτυχία σύνδεσης με τη Βάση Δεδομένων", - "Error": "Error", + "Error": "Σφάλμα", "Create new record": "Δημιουργία νέας εγγραφής", "Save record": "Αποθήκευση εγγραφής", "Portions": "Μερίδα", @@ -120,7 +120,7 @@ "Quick picks": "Γρήγορη επιλογή", "Show hidden": "Εμφάνιση κρυφών εγγραφών", "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Remember this device. (Do not enable this on public computers.)": "Αποθήκευση κωδικού σε αυτή την συσκευή. (Μην το επιλέγετε σε κοινόχρηστες συσκευές.)", "Treatments": "Ενέργειες", "Time": "Ώρα", "Event Type": "Ενέργεια", @@ -128,7 +128,7 @@ "Entered By": "Εισήχθη από", "Delete this treatment?": "Διαγραφή ενέργειας", "Carbs Given": "Υδατάνθρακες", - "Inzulin Given": "Ινσουλίνη", + "Insulin Given": "Ινσουλίνη", "Event Time": "Ώρα ενέργειας", "Please verify that the data entered is correct": "Παρακαλώ ελέξτε ότι τα δεδομένα είναι σωστά", "BG": "Τιμή Γλυκόζης Αίματος", @@ -220,12 +220,11 @@ "Glucose Reading": "Τιμή Γλυκόζης", "Measurement Method": "Μέθοδος Μέτρησης", "Meter": "Μετρητής", - "Insulin Given": "Ινσουλίνη", "Amount in grams": "Ποσότητα σε γρ", "Amount in units": "Ποσότητα σε μονάδες", "View all treatments": "Προβολή όλων των ενεργειών", "Enable Alarms": "Ενεργοποίηση όλων των ειδοποιήσεων", - "Pump Battery Change": "Pump Battery Change", + "Pump Battery Change": "Αλλαγή μπαταρίας αντλίας", "Pump Battery Low Alarm": "Pump Battery Low Alarm", "Pump Battery change overdue!": "Pump Battery change overdue!", "When enabled an alarm may sound.": "Όταν ενεργοποιηθεί, μία ηχητική ειδοποίηση ενδέχεται να ακουστεί", @@ -426,7 +425,7 @@ "Edit Role": "Edit Role", "admin, school, family, etc": "admin, school, family, etc", "Permissions": "Permissions", - "Are you sure you want to delete: ": "Are you sure you want to delete: ", + "Are you sure you want to delete: ": "Είστε σίγουρος/η ότι θέλετε να διαγράψετε; ", "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.", "Add new Role": "Add new Role", "Roles - Groups of People, Devices, etc": "Roles - Groups of People, Devices, etc", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", "Add new Subject": "Add new Subject", - "Unable to %1 Subject": "לא יכול ל %1 נושאי", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Unable to delete Subject", "Database contains %1 subjects": "Database contains %1 subjects", "Edit Subject": "Edit Subject", diff --git a/translations/es_ES.json b/translations/es_ES.json index 481f3982456..ea41219e839 100644 --- a/translations/es_ES.json +++ b/translations/es_ES.json @@ -24,9 +24,9 @@ "Last 2 weeks": "Últimas 2 semanas", "Last month": "Mes pasado", "Last 3 months": "Últimos 3 meses", - "between": "between", - "around": "around", - "and": "and", + "between": "entre", + "around": "alrededor de", + "and": "y", "From": "Desde", "To": "Hasta", "Notes": "Notas", @@ -53,12 +53,12 @@ "": "", "Result is empty": "Resultado vacío", "Day to day": "Día a día", - "Week to week": "Week to week", + "Week to week": "Semana a semana", "Daily Stats": "Estadísticas diarias", "Percentile Chart": "Percentiles", "Distribution": "Distribución", "Hourly stats": "Estadísticas por hora", - "netIOB stats": "netIOB stats", + "netIOB stats": "estadísticas netIOB", "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", "Weekly success": "Resultados semanales", "No data available": "No hay datos disponibles", @@ -128,7 +128,7 @@ "Entered By": "Introducido por", "Delete this treatment?": "¿Borrar este tratamiento?", "Carbs Given": "Hidratos de carbono dados", - "Inzulin Given": "Insulina dada", + "Insulin Given": "Insulina", "Event Time": "Hora del evento", "Please verify that the data entered is correct": "Por favor, verifique que los datos introducidos son correctos", "BG": "Glucemia en sangre", @@ -220,7 +220,6 @@ "Glucose Reading": "Valor de glucemia", "Measurement Method": "Método de medida", "Meter": "Glucómetro", - "Insulin Given": "Insulina", "Amount in grams": "Cantidad en gramos", "Amount in units": "Cantidad en unidades", "View all treatments": "Visualizar todos los tratamientos", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Sujetos - Personas, Dispositivos, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Cada sujeto tendrá un identificador de acceso único y 1 o más roles. Haga clic en el identificador de acceso para abrir una nueva vista con el tema seleccionado, este enlace secreto puede ser compartido.", "Add new Subject": "Añadir nuevo Sujeto", - "Unable to %1 Subject": "Imposible poner %1 Sujeto", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Imposible eliminar sujeto", "Database contains %1 subjects": "Base de datos contiene %1 sujetos", "Edit Subject": "Editar sujeto", diff --git a/translations/fi_FI.json b/translations/fi_FI.json index c15202300b9..cfba56bd300 100644 --- a/translations/fi_FI.json +++ b/translations/fi_FI.json @@ -24,9 +24,9 @@ "Last 2 weeks": "Viimeiset 2 viikkoa", "Last month": "Viime kuu", "Last 3 months": "Viimeiset 3 kuukautta", - "between": "between", - "around": "around", - "and": "and", + "between": "välissä", + "around": "ympäri", + "and": "ja", "From": "Alkaen", "To": "Asti", "Notes": "Merkinnät", @@ -53,7 +53,7 @@ "": "", "Result is empty": "Ei tuloksia", "Day to day": "Päivittäinen", - "Week to week": "Week to week", + "Week to week": "Viikosta viikkoon", "Daily Stats": "Päivittäiset tilastot", "Percentile Chart": "Suhteellinen kuvaaja", "Distribution": "Jakauma", @@ -128,7 +128,7 @@ "Entered By": "Tiedot syötti", "Delete this treatment?": "Tuhoa tämä hoitotoimenpide?", "Carbs Given": "Hiilihydraatit", - "Inzulin Given": "Insuliiniannos", + "Insulin Given": "Insuliiniannos", "Event Time": "Aika", "Please verify that the data entered is correct": "Varmista, että tiedot ovat oikein", "BG": "VS", @@ -211,7 +211,7 @@ "Exercise": "Fyysinen harjoitus", "Pump Site Change": "Kanyylin vaihto", "CGM Sensor Start": "Sensorin aloitus", - "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Stop": "CGM Sensori Pysäytys", "CGM Sensor Insert": "Sensorin vaihto", "Dexcom Sensor Start": "Sensorin aloitus", "Dexcom Sensor Change": "Sensorin vaihto", @@ -220,7 +220,6 @@ "Glucose Reading": "Verensokeri", "Measurement Method": "Mittaustapa", "Meter": "Sokerimittari", - "Insulin Given": "Insuliiniannos", "Amount in grams": "Määrä grammoissa", "Amount in units": "Annos yksiköissä", "View all treatments": "Katso kaikki hoitotoimenpiteet", @@ -303,7 +302,7 @@ "Record %1 removed ...": "Merkintä %1 poistettu ...", "Error removing record %1": "Virhe poistaessa merkintää numero %1", "Deleting records ...": "Poistan merkintöjä...", - "%1 records deleted": "%1 records deleted", + "%1 records deleted": "%1 tietuetta poistettu", "Clean Mongo status database": "Siivoa statustietokanta", "Delete all documents from devicestatus collection": "Poista kaikki tiedot statustietokannasta", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Tämä työkalu poistaa kaikki tiedot statustietokannasta, mikä korjaa tilanteen, jossa puhelimen akun lataustilanne ei näy oikein.", @@ -311,21 +310,21 @@ "Delete all documents from devicestatus collection?": "Poista tiedot statustietokannasta?", "Database contains %1 records": "Tietokanta sisältää %1 merkintää", "All records removed ...": "Kaikki merkinnät poistettu ...", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", - "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", - "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete all documents from devicestatus collection older than 30 days": "Poista yli 30 päivää vanhat tietueet devicestatus kokoelmasta", + "Number of Days to Keep:": "Säilyttävien päivien lukumäärä:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Tämä työkalu poistaa kaikki yli 30 päivää vanhat tietueet devicestatus kokoelmasta.", + "Delete old documents from devicestatus collection?": "Poista vanhat tietueet devicestatus tietokannasta?", + "Clean Mongo entries (glucose entries) database": "Poista verensokeritiedot tietokannasta", + "Delete all documents from entries collection older than 180 days": "Poista yli 180 päivää vanhat verensokeritiedot", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Tämä työkalu poistaa yli 180 päivää vanhat verensokeritiedot.", "Delete old documents": "Tuhoa vanhat dokumentit", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", - "%1 is not a valid number": "%1 is not a valid number", - "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Delete old documents from entries collection?": "Tuhoa vanhat verensokeritiedot?", + "%1 is not a valid number": "%1 ei ole numero", + "%1 is not a valid number - must be more than 2": "%1 ei ole kelvollinen numero - täytyy olla yli 2", + "Clean Mongo treatments database": "Poista hoitotiedot Mongo tietokannasta", + "Delete all documents from treatments collection older than 180 days": "Poista yli 180 päivää vanhat tiedot hoitotietokannasta", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Tämä työkalu poistaa kaikki yli 180 päivää vanhat hoitotietueet.", + "Delete old documents from treatments collection?": "Poista vanhat hoitotiedot?", "Admin Tools": "Ylläpitotyökalut", "Nightscout reporting": "Nightscout raportointi", "Cancel": "Peruuta", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Käyttäjät (Ihmiset, laitteet jne)", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Jokaisella käyttäjällä on uniikki pääsytunniste ja yksi tai useampi rooli. Klikkaa pääsytunnistetta nähdäksesi käyttäjän, jolloin saat jaettavan osoitteen tämän käyttäjän oikeuksilla.", "Add new Subject": "Lisää uusi käyttäjä", - "Unable to %1 Subject": "%1 operaatio käyttäjälle epäonnistui", + "Unable to %1 Subject": "Operaatio %1 roolille epäonnistui", "Unable to delete Subject": "Käyttäjän poistaminen epäonnistui", "Database contains %1 subjects": "Tietokanta sisältää %1 käyttäjää", "Edit Subject": "Muokkaa käyttäjää", @@ -545,7 +544,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Aika Muutoksessa ja Aika Nopeassa Muutoksessa mittaa osuutta tarkkailtavasta aikaperiodista, jolloin glukoosi on ollut nopeassa tai hyvin nopeassa muutoksessa. Pienempi arvo on parempi.", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Keskimääräinen Kokonaismuutos kertoo kerkimääräisen päivätason verensokerimuutoksien yhteenlasketun arvon. Pienempi arvo on parempi.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Keskimääräinen tunti kertoo keskimääräisen tuntitason verensokerimuutoksien yhteenlasketun arvon. Pienempi arvo on parempi.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Alueen ulkopuolella oleva RMS lasketaan siten, että kaikkien tavoitealueen ulkopuolisten glukoosilukemien etäisyys alueesta lasketaan toiseen potenssiin, luvut summataan, jaetaan niiden määrällä ja otetaan neliöjuuri. Tämä tieto on samankaltainen kuin lukemien osuus tavoitealueella, mutta painottaa lukemia kauempana alueen ulkopuolella. Matalampi arvo on parempi.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", "Mean Total Daily Change": "Keskimääräinen Kokonaismuutos", @@ -557,65 +556,65 @@ "SingleDown": "laskussa", "DoubleDown": "laskee nopeasti", "DoubleUp": "nousee nopeasti", - "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", + "virtAsstUnknown": "Tämä arvo on tällä hetkellä tuntematon. Katso lisätietoja Nightscout-sivustostasi.", + "virtAsstTitleAR2Forecast": "AR2 Ennuste", + "virtAsstTitleCurrentBasal": "Nykyinen Basaali", + "virtAsstTitleCurrentCOB": "Tämänhetkinen COB", "virtAsstTitleCurrentIOB": "Tämänhetkinen IOB", "virtAsstTitleLaunch": "Tervetuloa Nightscoutiin", "virtAsstTitleLoopForecast": "Loop ennuste", - "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", + "virtAsstTitleLastLoop": "Viimeisin Loop", + "virtAsstTitleOpenAPSForecast": "OpenAPS Ennuste", + "virtAsstTitlePumpReservoir": "Insuliinia jäljellä", + "virtAsstTitlePumpBattery": "Pumpun paristo", + "virtAsstTitleRawBG": "Nykyinen Raw BG", + "virtAsstTitleUploaderBattery": "Lähettimen akku", + "virtAsstTitleCurrentBG": "Nykyinen VS", + "virtAsstTitleFullStatus": "Täysi status", + "virtAsstTitleCGMMode": "CGM tila", + "virtAsstTitleCGMStatus": "CGM tila", + "virtAsstTitleCGMSessionAge": "CGM Istunnon Ikä", + "virtAsstTitleCGMTxStatus": "CGM Lähettimen Tila", + "virtAsstTitleCGMTxAge": "CGM Lähettimen Ikä", + "virtAsstTitleCGMNoise": "CGM Häiriöt", + "virtAsstTitleDelta": "Verensokerin muutos", "virtAsstStatus": "%1 ja %2 alkaen %3.", "virtAsstBasal": "%1 nykyinen basaali on %2 yksikköä tunnissa", "virtAsstBasalTemp": "%1 tilapäinen basaali on %2 tunnissa, päättyy %3", "virtAsstIob": "ja sinulla on %1 aktivista insuliinia.", "virtAsstIobIntent": "Sinulla on %1 aktiivista insuliinia", "virtAsstIobUnits": "%1 yksikköä", - "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstLaunch": "Mitä haluat tarkistaa Nightscoutissa?", "virtAsstPreamble": "Sinun", "virtAsstPreamble3person": "%1 on ", "virtAsstNoInsulin": "ei", "virtAsstUploadBattery": "Lähettimen paristoa jäljellä %1", "virtAsstReservoir": "%1 yksikköä insuliinia jäljellä", "virtAsstPumpBattery": "Pumppu on %1 %2", - "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstUploaderBattery": "Lähettimen pariston lataustaso on %1", "virtAsstLastLoop": "Viimeisin onnistunut loop oli %1", "virtAsstLoopNotAvailable": "Loop plugin ei ole aktivoitu", "virtAsstLoopForecastAround": "Ennusteen mukaan olet around %1 seuraavan %2 ajan", "virtAsstLoopForecastBetween": "Ennusteen mukaan olet between %1 and %2 seuraavan %3 ajan", - "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", + "virtAsstAR2ForecastAround": "AR2 ennusteen mukaan olet %1 seuraavan %2 aikana", + "virtAsstAR2ForecastBetween": "AR2 ennusteen mukaan olet %1 ja %2 välissä seuraavan %3 aikana", "virtAsstForecastUnavailable": "Ennusteet eivät ole toiminnassa puuttuvan tiedon vuoksi", "virtAsstRawBG": "Suodattamaton verensokeriarvo on %1", "virtAsstOpenAPSForecast": "OpenAPS verensokeriarvio on %1", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstCob3person": "%1 on %2 aktiivista hiilihydraattia", + "virtAsstCob": "Sinulla on %1 aktiivista hiilihydraattia", + "virtAsstCGMMode": "CGM moodi oli %1 %2 alkaen.", + "virtAsstCGMStatus": "CGM tila oli %1 %2 alkaen.", + "virtAsstCGMSessAge": "CGM istunto on ollut aktiivisena %1 päivää ja %2 tuntia.", + "virtAsstCGMSessNotStarted": "Tällä hetkellä ei ole aktiivista CGM-istuntoa.", + "virtAsstCGMTxStatus": "CGM lähettimen tila oli %1 hetkellä %2.", + "virtAsstCGMTxAge": "CGM lähetin on %1 päivää vanha.", + "virtAsstCGMNoise": "CGM kohina oli %1 hetkellä %2.", + "virtAsstCGMBattOne": "CGM akku oli %1 volttia hetkellä %2.", + "virtAsstCGMBattTwo": "CGM akun tasot olivat %1 volttia ja %2 volttia hetkellä %3.", + "virtAsstDelta": "Muutoksesi oli %1 %2 ja %3 välillä.", + "virtAsstUnknownIntentTitle": "Tuntematon intentio", + "virtAsstUnknownIntentText": "Anteeksi, en tiedä mitä pyydät.", "Fat [g]": "Rasva [g]", "Protein [g]": "Proteiini [g]", "Energy [kJ]": "Energia [kJ]", @@ -624,9 +623,9 @@ "Color": "Väri", "Simple": "Yksinkertainen", "TDD average": "Päivän kokonaisinsuliinin keskiarvo", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", + "Bolus average": "Boluksien keskiarvo", + "Basal average": "Basaalien keskiarvo", + "Base basal average:": "Perusbasaalin keskiarvo:", "Carbs average": "Hiilihydraatit keskiarvo", "Eating Soon": "Ruokailu pian", "Last entry {0} minutes ago": "Edellinen verensokeri {0} minuuttia sitten", @@ -648,13 +647,13 @@ "Total carbs": "Hiilihydraatit yhteensä", "Total protein": "Proteiini yhteensä", "Total fat": "Rasva yhteensä", - "Database Size": "Database Size", - "Database Size near its limits!": "Database Size near its limits!", - "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", - "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" + "Database Size": "Tietokannan koko", + "Database Size near its limits!": "Tietokannan koko lähellä rajaa!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Tietokannan koko on %1, raja on %2. Muista varmistaa tietokanta!", + "Database file size": "Tietokannan tiedoston koko", + "%1 MiB of %2 MiB (%3%)": "%1 MiB / %2 MiB (%3%)", + "Data size": "Tietojen koko", + "virtAsstDatabaseSize": "%1 MiB. Se on %2% saatavilla olevasta koosta.", + "virtAsstTitleDatabaseSize": "Tietokantatiedoston koko", + "Carbs/Food/Time": "Hiilihydraatit/Ruoka/Aika" } \ No newline at end of file diff --git a/translations/fr_FR.json b/translations/fr_FR.json index 350d518072b..4707e42575a 100644 --- a/translations/fr_FR.json +++ b/translations/fr_FR.json @@ -24,12 +24,12 @@ "Last 2 weeks": "2 dernières semaines", "Last month": "Mois dernier", "Last 3 months": "3 derniers mois", - "between": "between", - "around": "around", - "and": "and", + "between": "entre", + "around": "environ", + "and": "et", "From": "Du", "To": "Au", - "Notes": "Notes", + "Notes": "Remarques", "Food": "Nourriture", "Insulin": "Insuline", "Carbs": "Glucides", @@ -53,13 +53,13 @@ "": "", "Result is empty": "Pas de résultat", "Day to day": "jour par jour", - "Week to week": "Week to week", + "Week to week": "Semaine après semaine", "Daily Stats": "Stats quotidiennes", "Percentile Chart": "Percentiles", "Distribution": "Distribution", "Hourly stats": "Statistiques horaires", - "netIOB stats": "netIOB stats", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "netIOB stats": "statistiques netiob", + "temp basals must be rendered to display this report": "la basale temporaire doit être activé pour afficher ce rapport", "Weekly success": "Résultat hebdomadaire", "No data available": "Pas de données disponibles", "Low": "Bas", @@ -86,8 +86,8 @@ "# of Readings": "nbr de valeurs", "Mean": "Moyenne", "Standard Deviation": "Déviation Standard", - "Max": "Max", - "Min": "Min", + "Max": "Maximum", + "Min": "Minimum", "A1c estimation*": "Estimation HbA1c*", "Weekly Success": "Réussite hebdomadaire", "There is not sufficient data to run this report. Select more days.": "Pas assez de données pour un rapport. Sélectionnez plus de jours.", @@ -95,7 +95,7 @@ "No API secret hash stored yet. You need to enter API secret.": "Pas de secret API existant. Vous devez en entrer un.", "Database loaded": "Base de données chargée", "Error: Database failed to load": "Erreur: le chargement de la base de données a échoué", - "Error": "Error", + "Error": "Erreur", "Create new record": "Créer nouvel enregistrement", "Save record": "Sauver enregistrement", "Portions": "Portions", @@ -119,8 +119,8 @@ "Record": "Enregistrement", "Quick picks": "Sélection rapide", "Show hidden": "Montrer cachés", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Votre mot de passe API secret ou jeton", + "Remember this device. (Do not enable this on public computers.)": "Se souvenir de cet appareil. (Ne pas l'activer sur les ordinateurs publics.)", "Treatments": "Traitements", "Time": "Heure", "Event Type": "Type d'événement", @@ -128,7 +128,7 @@ "Entered By": "Entré par", "Delete this treatment?": "Effacer ce traitement?", "Carbs Given": "Glucides donnés", - "Inzulin Given": "Insuline donnée", + "Insulin Given": "Insuline donnée", "Event Time": "Heure de l'événement", "Please verify that the data entered is correct": "Merci de vérifier la correction des données entrées", "BG": "Glycémie", @@ -211,7 +211,7 @@ "Exercise": "Exercice physique", "Pump Site Change": "Changement de site pompe", "CGM Sensor Start": "Démarrage senseur", - "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Stop": "GSC Sensor Arrêt", "CGM Sensor Insert": "Changement senseur", "Dexcom Sensor Start": "Démarrage senseur Dexcom", "Dexcom Sensor Change": "Changement senseur Dexcom", @@ -220,14 +220,13 @@ "Glucose Reading": "Valeur de glycémie", "Measurement Method": "Méthode de mesure", "Meter": "Glucomètre", - "Insulin Given": "Insuline donnée", "Amount in grams": "Quantité en grammes", "Amount in units": "Quantité en unités", "View all treatments": "Voir tous les traitements", "Enable Alarms": "Activer les alarmes", - "Pump Battery Change": "Pump Battery Change", - "Pump Battery Low Alarm": "Pump Battery Low Alarm", - "Pump Battery change overdue!": "Pump Battery change overdue!", + "Pump Battery Change": "Changer les batteries de la pompe", + "Pump Battery Low Alarm": "Alarme batterie de la pompe faible", + "Pump Battery change overdue!": "Changement de la batterie de la pompe nécessaire !", "When enabled an alarm may sound.": "Si activée, un alarme peut sonner.", "Urgent High Alarm": "Alarme hyperglycémie urgente", "High Alarm": "Alarme hyperglycémie", @@ -235,7 +234,7 @@ "Urgent Low Alarm": "Alarme hypoglycémie urgente", "Stale Data: Warn": "Données échues: avertissement", "Stale Data: Urgent": "Données échues: avertissement urgent", - "mins": "mins", + "mins": "minutes", "Night Mode": "Mode nocturne", "When enabled the page will be dimmed from 10pm - 6am.": "Si activé, la page sera assombrie de 22:00 à 6:00", "Enable": "Activer", @@ -270,7 +269,7 @@ "Raw BG": "Glycémie brute", "Device": "Appareil", "Noise": "Bruit", - "Calibration": "Calibration", + "Calibration": "Calibrage", "Show Plugins": "Montrer Plugins", "About": "À propos de", "Value in": "Valeur en", @@ -281,7 +280,7 @@ "ml": "ml", "pcs": "pcs", "Drag&drop food here": "Glisser et déposer repas ici ", - "Care Portal": "Care Portal", + "Care Portal": "Portail de soins", "Medium/Unknown": "Moyen/Inconnu", "IN THE FUTURE": "dans le futur", "Update": "Mise à jour", @@ -303,7 +302,7 @@ "Record %1 removed ...": "Événement %1 effacé", "Error removing record %1": "Echec d'effacement de l'événement %1", "Deleting records ...": "Effacement dévénements...", - "%1 records deleted": "%1 records deleted", + "%1 records deleted": "%1 resultats effacé", "Clean Mongo status database": "Nettoyage de la base de donées Mongo", "Delete all documents from devicestatus collection": "Effacer tous les documents de la collection devicestatus", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Efface tous les documents de la collection devicestatus. Utile lorsque l'indicateur de chargement de la batterie du Smartphone n'est pas affichée correctement", @@ -311,21 +310,21 @@ "Delete all documents from devicestatus collection?": "Effacer toutes les données de la collection devicestatus ?", "Database contains %1 records": "La base de donées contient %1 événements", "All records removed ...": "Toutes les valeurs ont été effacées", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", - "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", - "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", + "Delete all documents from devicestatus collection older than 30 days": "Effacer tout les documents de l'appareil plus vieux que 30 jours", + "Number of Days to Keep:": "Nombre de jours à conserver:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Cette tâche efface tout les documents au sujet de l'appareil qui son agé de plus de 30 jours. Soyer sur que votre batterie est a pleine charge sinon votre syncronisation ne sera pas mis a jour.", + "Delete old documents from devicestatus collection?": "Effacer les vieux résultats de votre appareil?", + "Clean Mongo entries (glucose entries) database": "Nettoyer la base de données des entrées Mongo (entrées de glycémie)", + "Delete all documents from entries collection older than 180 days": "Effacer les résultats de plus de 180 jours", "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents": "Delete old documents", + "Delete old documents": "Effacer les anciens documents", "Delete old documents from entries collection?": "Delete old documents from entries collection?", - "%1 is not a valid number": "%1 is not a valid number", + "%1 is not a valid number": "%1 n'est pas un nombre valide", "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", - "Clean Mongo treatments database": "Clean Mongo treatments database", + "Clean Mongo treatments database": "Nettoyage de la base de données des traitements Mongo", "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Delete old documents from treatments collection?": "Voulez vous effacer les plus vieux résultats?", "Admin Tools": "Outils d'administration", "Nightscout reporting": "Rapports Nightscout", "Cancel": "Interrompre", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Utilisateurs - Personnes, Appareils, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Chaque utilisateur aura un identificateur unique et un ou plusieurs rôles. Cliquez sur l'identificateur pour révéler l'utilisateur, ce lien secret peut être partagé.", "Add new Subject": "Ajouter un nouvel Utilisateur", - "Unable to %1 Subject": "Impossible de créer l'Utilisateur %1", + "Unable to %1 Subject": "Incapable de %1 sujet", "Unable to delete Subject": "Impossible d'effacer l'Utilisateur", "Database contains %1 subjects": "La base de données contient %1 utilisateurs", "Edit Subject": "Éditer l'Utilisateur", @@ -511,7 +510,7 @@ "Change insulin reservoir soon": "Changement de réservoir d'insuline bientôt", "Insulin reservoir age %1 hours": "Âge du réservoir d'insuline %1 heures", "Changed": "Changé", - "IOB": "IOB", + "IOB": "Insuline Active", "Careportal IOB": "Careportal IOB", "Last Bolus": "Dernier Bolus", "Basal IOB": "IOB du débit basal", @@ -567,13 +566,13 @@ "virtAsstTitleLastLoop": "Last Loop", "virtAsstTitleOpenAPSForecast": "OpenAPS Forecast", "virtAsstTitlePumpReservoir": "Insulin Remaining", - "virtAsstTitlePumpBattery": "Pump Battery", + "virtAsstTitlePumpBattery": "Batterie Pompe", "virtAsstTitleRawBG": "Current Raw BG", "virtAsstTitleUploaderBattery": "Uploader Battery", - "virtAsstTitleCurrentBG": "Current BG", + "virtAsstTitleCurrentBG": "Glycémie actuelle", "virtAsstTitleFullStatus": "Full Status", "virtAsstTitleCGMMode": "CGM Mode", - "virtAsstTitleCGMStatus": "CGM Status", + "virtAsstTitleCGMStatus": "Statut CGM", "virtAsstTitleCGMSessionAge": "CGM Session Age", "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", "virtAsstTitleCGMTxAge": "CGM Transmitter Age", @@ -585,12 +584,12 @@ "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", + "virtAsstLaunch": "Qu'est ce que vous voulez voir sur Nightscout?", + "virtAsstPreamble": "Vous", "virtAsstPreamble3person": "%1 has a ", - "virtAsstNoInsulin": "no", - "virtAsstUploadBattery": "Your uploader battery is at %1", - "virtAsstReservoir": "You have %1 units remaining", + "virtAsstNoInsulin": "non", + "virtAsstUploadBattery": "Votre appareil est chargé a %1", + "virtAsstReservoir": "Vous avez %1 unités non utilisé", "virtAsstPumpBattery": "Your pump battery is at %1 %2", "virtAsstUploaderBattery": "Your uploader battery is at %1", "virtAsstLastLoop": "The last successful loop was %1", @@ -634,27 +633,27 @@ "Speech": "Speech", "Target Top": "Target Top", "Target Bottom": "Target Bottom", - "Canceled": "Canceled", + "Canceled": "Annulé", "Meter BG": "Meter BG", - "predicted": "predicted", - "future": "future", - "ago": "ago", - "Last data received": "Last data received", + "predicted": "prédiction", + "future": "futur", + "ago": "plus tôt", + "Last data received": "Dernières données reçues", "Clock View": "Vue Horloge", - "Protein": "Protein", - "Fat": "Fat", - "Protein average": "Protein average", - "Fat average": "Fat average", - "Total carbs": "Total carbs", - "Total protein": "Total protein", - "Total fat": "Total fat", - "Database Size": "Database Size", - "Database Size near its limits!": "Database Size near its limits!", - "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", + "Protein": "Protéines", + "Fat": "Graisses", + "Protein average": "Moyenne des protéines", + "Fat average": "Moyenne des graisses", + "Total carbs": "Glucides totaux", + "Total protein": "Protéines totales", + "Total fat": "Graisses totales", + "Database Size": "Taille de la base de données", + "Database Size near its limits!": "Taille de la base de données proche de ses limites !", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "La taille de la base de données est de %1 MiB sur %2 Mio. Veuillez sauvegarder et nettoyer la base de données !", "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" + "Carbs/Food/Time": "Glucides/Alimentation/Temps" } \ No newline at end of file diff --git a/translations/he_IL.json b/translations/he_IL.json index 71b42c166c5..65fb1c546de 100644 --- a/translations/he_IL.json +++ b/translations/he_IL.json @@ -128,7 +128,7 @@ "Entered By": "הוזן על-ידי", "Delete this treatment?": "למחוק רשומה זו?", "Carbs Given": "פחמימות שנאכלו", - "Inzulin Given": "אינסולין שניתן", + "Insulin Given": "אינסולין שניתן", "Event Time": "זמן האירוע", "Please verify that the data entered is correct": "נא לוודא שהמידע שהוזן הוא נכון ומדוייק", "BG": "סוכר בדם", @@ -220,7 +220,6 @@ "Glucose Reading": "מדידת סוכר", "Measurement Method": "אמצעי מדידה", "Meter": "מד סוכר", - "Insulin Given": "אינסולין שניתן", "Amount in grams": "כמות בגרמים", "Amount in units": "כמות ביחידות", "View all treatments": "הצג את כל הטיפולים", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "נושאים - אנשים, התקנים וכו ", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "לכל נושא תהיה אסימון גישה ייחודי ותפקיד אחד או יותר. לחץ על אסימון הגישה כדי לפתוח תצוגה חדשה עם הנושא הנבחר, קישור סודי זה יכול להיות משותף ", "Add new Subject": "הוסף נושא חדש ", - "Unable to %1 Subject": "לא יכול ל %1 נושאי", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "לא יכול לבטל נושא ", "Database contains %1 subjects": "מסד נתונים מכיל %1 נושאים ", "Edit Subject": "ערוך נושא ", diff --git a/translations/hr_HR.json b/translations/hr_HR.json index 193448d6dfd..ab9dbdbe24a 100644 --- a/translations/hr_HR.json +++ b/translations/hr_HR.json @@ -128,7 +128,7 @@ "Entered By": "Unos izvršio", "Delete this treatment?": "Izbriši ovaj tretman?", "Carbs Given": "Količina UGH", - "Inzulin Given": "Količina inzulina", + "Insulin Given": "Količina iznulina", "Event Time": "Vrijeme događaja", "Please verify that the data entered is correct": "Molim Vas provjerite jesu li uneseni podaci ispravni", "BG": "GUK", @@ -220,7 +220,6 @@ "Glucose Reading": "Vrijednost GUK-a", "Measurement Method": "Metoda mjerenja", "Meter": "Glukometar", - "Insulin Given": "Količina iznulina", "Amount in grams": "Količina u gramima", "Amount in units": "Količina u jedinicama", "View all treatments": "Prikaži sve tretmane", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Subjekti - Ljudi, uređaji, itd.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Svaki subjekt će dobiti jedinstveni pristupni token i jednu ili više uloga. Kliknite na pristupni token kako bi se otvorio novi pogled sa odabranim subjektom, a tada se tajni link može podijeliti.", "Add new Subject": "Dodaj novi subjekt", - "Unable to %1 Subject": "Ne mogu %1 subjekt", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Ne mogu obrisati subjekt", "Database contains %1 subjects": "Baza sadrži %1 subjekata", "Edit Subject": "Uredi subjekt", diff --git a/translations/hu_HU.json b/translations/hu_HU.json index 36be99c1288..a74dd96b6ad 100644 --- a/translations/hu_HU.json +++ b/translations/hu_HU.json @@ -6,7 +6,7 @@ "Th": "Csü", "Fr": "Pé", "Sa": "Szo", - "Su": "Vas", + "Su": "Va", "Monday": "Hétfő", "Tuesday": "Kedd", "Wednesday": "Szerda", @@ -21,9 +21,9 @@ "Last 2 days": "Utolsó 2 nap", "Last 3 days": "Utolsó 3 nap", "Last week": "Előző hét", - "Last 2 weeks": "Előző 2 hét", - "Last month": "Előző hónap", - "Last 3 months": "Előző 3 hónap", + "Last 2 weeks": "Elmúlt 2 hét", + "Last month": "Elmúlt 1 hónap", + "Last 3 months": "Elmúlt 3 hónap", "between": "között", "around": "körülbelül", "and": "és", @@ -128,7 +128,7 @@ "Entered By": "Beírta", "Delete this treatment?": "Kezelés törlése?", "Carbs Given": "Szénhidrátok", - "Inzulin Given": "Beadott inzulin", + "Insulin Given": "Inzulin Beadva", "Event Time": "Időpont", "Please verify that the data entered is correct": "Kérlek ellenőrizd, hogy az adatok helyesek.", "BG": "Cukorszint", @@ -220,7 +220,6 @@ "Glucose Reading": "Vércukorszint Érték", "Measurement Method": "Cukorszint mérés metódusa", "Meter": "Cukorszint mérő", - "Insulin Given": "Inzulin Beadva", "Amount in grams": "Adag grammokban (g)", "Amount in units": "Adag egységekben", "View all treatments": "Összes kezelés mutatása", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Semélyek - Emberek csoportja, berendezések, stb.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Mindegyik személynek egy egyedi hozzáférése lesz 1 vagy több szereppel. Kattints a tokenre, hogy egy új nézetet kapj - a kapott linket megoszthatod velük.", "Add new Subject": "Új személy hozzáadása", - "Unable to %1 Subject": "A %1 személy hozáadása nem sikerült", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "A személyt nem sikerült törölni", "Database contains %1 subjects": "Az adatbázis %1 személyt tartalmaz", "Edit Subject": "Személy szerkesztése", @@ -447,7 +446,7 @@ "Access Token": "Hozzáférési token", "hour ago": "órája", "hours ago": "órája", - "Silence for %1 minutes": "Silence for %1 minutes", + "Silence for %1 minutes": "Lehalkítás %1 percre", "Check BG": "Ellenőrizd a cukorszintet", "BASAL": "BAZÁL", "Current basal": "Aktuális bazál", @@ -502,7 +501,7 @@ "Change cannula soon": "Hamarosan cseréld ki a kanilt", "Cannula age %1 hours": "Kamil életkora %1 óra", "Inserted": "Behelyezve", - "CAGE": "CAGE", + "CAGE": "Kanil Ideje", "COB": "COB", "Last Carbs": "Utolsó szénhidrátok", "IAGE": "IAGE", @@ -617,7 +616,7 @@ "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "Sajnálom, nem tudom mit szeretnél tőlem.", "Fat [g]": "Zsír [g]", - "Protein [g]": "Protein [g]", + "Protein [g]": "Fehérje [g]", "Energy [kJ]": "Energia [kJ]", "Clock Views:": "Óra:", "Clock": "Óra:", @@ -641,7 +640,7 @@ "ago": "ezelött", "Last data received": "Utólsó adatok fogadva", "Clock View": "Idő", - "Protein": "Protein", + "Protein": "Fehérje", "Fat": "Zsír", "Protein average": "Protein átlag", "Fat average": "Zsír átlag", diff --git a/translations/it_IT.json b/translations/it_IT.json index 711a6c51fa2..59b3000da7c 100644 --- a/translations/it_IT.json +++ b/translations/it_IT.json @@ -24,9 +24,9 @@ "Last 2 weeks": "Ultime 2 settimane", "Last month": "Mese scorso", "Last 3 months": "Ultimi 3 mesi", - "between": "between", - "around": "around", - "and": "and", + "between": "Tra", + "around": "intorno a", + "and": "e", "From": "Da", "To": "A", "Notes": "Note", @@ -53,13 +53,13 @@ "": "", "Result is empty": "Risultato vuoto", "Day to day": "Giorno per giorno", - "Week to week": "Week to week", + "Week to week": "Da settimana a settimana", "Daily Stats": "Statistiche giornaliere", "Percentile Chart": "Grafico percentile", "Distribution": "Distribuzione", "Hourly stats": "Statistiche per ore", - "netIOB stats": "netIOB stats", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "netIOB stats": "netIOB statistiche", + "temp basals must be rendered to display this report": "le basali temp devono essere renderizzate per visualizzare questo report", "Weekly success": "Statistiche settimanali", "No data available": "Dati non disponibili", "Low": "Basso", @@ -69,7 +69,7 @@ "Average": "Media", "Low Quartile": "Quartile basso", "Upper Quartile": "Quartile alto", - "Quartile": "Quartile", + "Quartile": "Questo viene utilizzato nei rapporti da ora a ora, dove il Quartile 25 si riferisce al 25% più basso delle misure CGM e il Quartile 75 si riferisce al 25% più alto delle misure CGM", "Date": "Data", "Normal": "Normale", "Median": "Mediana", @@ -95,7 +95,7 @@ "No API secret hash stored yet. You need to enter API secret.": "API hash segreto non è ancora memorizzato. È necessario inserire API segreto.", "Database loaded": "Database caricato", "Error: Database failed to load": "Errore: database non è stato caricato", - "Error": "Error", + "Error": "Errore", "Create new record": "Crea nuovo registro", "Save record": "Salva Registro", "Portions": "Porzioni", @@ -106,12 +106,12 @@ "Move to the top": "Spostare verso l'alto", "Hidden": "Nascosto", "Hide after use": "Nascondi dopo l'uso", - "Your API secret must be at least 12 characters long": "il vostro API secreto deve essere lungo almeno 12 caratteri", - "Bad API secret": "API secreto non corretto", - "API secret hash stored": "Hash API secreto memorizzato", + "Your API secret must be at least 12 characters long": "Il vostro API segreto deve essere lungo almeno 12 caratteri", + "Bad API secret": "API segreto non corretto", + "API secret hash stored": "Hash API segreto memorizzato", "Status": "Stato", "Not loaded": "Non caricato", - "Food Editor": "NS - Database Alimenti", + "Food Editor": "Database Alimenti", "Your database": "Vostro database", "Filter": "Filtro", "Save": "Salva", @@ -119,8 +119,8 @@ "Record": "Registro", "Quick picks": "Scelta rapida", "Show hidden": "Mostra nascosto", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Il tuo API segreto o simbolo", + "Remember this device. (Do not enable this on public computers.)": "Ricorda questo dispositivo. (Da non abilitare su computer condivisi con altri.)", "Treatments": "Somministrazioni", "Time": "Tempo", "Event Type": "Tipo di evento", @@ -128,7 +128,7 @@ "Entered By": "inserito da", "Delete this treatment?": "Eliminare questa somministrazione?", "Carbs Given": "Carboidrati", - "Inzulin Given": "Insulina", + "Insulin Given": "Insulina", "Event Time": "Ora Evento", "Please verify that the data entered is correct": "Si prega di verificare che i dati inseriti siano corretti", "BG": "Glicemie", @@ -165,8 +165,8 @@ "Now": "Ora", "Other": "Altro", "Submit Form": "Invia il modulo", - "Profile Editor": "NS - Dati Personali", - "Reports": "NS - Statistiche", + "Profile Editor": "Dati Personali", + "Reports": "Statistiche", "Add food from your database": "Aggiungere cibo al database", "Reload database": "Ricarica database", "Add": "Aggiungere", @@ -185,12 +185,12 @@ "Linear": "Lineare", "Logarithmic": "Logaritmica", "Logarithmic (Dynamic)": "Logaritmica (Dinamica)", - "Insulin-on-Board": "IOB-Insulina a Bordo", - "Carbs-on-Board": "COB-Carboidrati a Bordo", - "Bolus Wizard Preview": "BWP-Calcolatore di bolo", + "Insulin-on-Board": "Insulina attiva", + "Carbs-on-Board": "Carboidrati attivi", + "Bolus Wizard Preview": "Calcolatore di bolo", "Value Loaded": "Valori Caricati", - "Cannula Age": "CAGE-Cambio Ago", - "Basal Profile": "BASAL-Profilo Basale", + "Cannula Age": "Cambio Ago", + "Basal Profile": "Profilo Basale", "Silence for 30 minutes": "Silenzio per 30 minuti", "Silence for 60 minutes": "Silenzio per 60 minuti", "Silence for 90 minutes": "Silenzio per 90 minuti", @@ -209,41 +209,40 @@ "Note": "Nota", "Question": "Domanda", "Exercise": "Esercizio Fisico", - "Pump Site Change": "CAGE-Cambio Ago", - "CGM Sensor Start": "CGM Avvio sensore", - "CGM Sensor Stop": "CGM Sensor Stop", - "CGM Sensor Insert": "CGM Cambio sensore", + "Pump Site Change": "Cambio Ago", + "CGM Sensor Start": "Avvio sensore CGM", + "CGM Sensor Stop": "Arresto Sensore CGM", + "CGM Sensor Insert": "Cambio sensore CGM", "Dexcom Sensor Start": "Avvio sensore Dexcom", "Dexcom Sensor Change": "Cambio sensore Dexcom", - "Insulin Cartridge Change": "Cambio cartuccia insulina", + "Insulin Cartridge Change": "Cambio Cartuccia Insulina", "D.A.D. Alert": "Allarme D.A.D.(Diabete Alert Dog)", "Glucose Reading": "Lettura glicemie", "Measurement Method": "Metodo di misurazione", "Meter": "Glucometro", - "Insulin Given": "Insulina", "Amount in grams": "Quantità in grammi", "Amount in units": "Quantità in unità", "View all treatments": "Visualizza tutti le somministrazioni", "Enable Alarms": "Attiva Allarme", - "Pump Battery Change": "Pump Battery Change", - "Pump Battery Low Alarm": "Pump Battery Low Alarm", - "Pump Battery change overdue!": "Pump Battery change overdue!", + "Pump Battery Change": "Cambio Batteria Microinfusore", + "Pump Battery Low Alarm": "Allarme Batteria Pompa Basso", + "Pump Battery change overdue!": "Sostituzione Batteria del Microinfusore in ritardo!", "When enabled an alarm may sound.": "Quando si attiva un allarme acustico.", - "Urgent High Alarm": "Urgente:Glicemia Alta", + "Urgent High Alarm": "Urgente Glicemia Alta", "High Alarm": "Glicemia Alta", "Low Alarm": "Glicemia bassa", - "Urgent Low Alarm": "Urgente:Glicemia Bassa", - "Stale Data: Warn": "Notifica Dati", - "Stale Data: Urgent": "Notifica:Urgente", + "Urgent Low Alarm": "Urgente Glicemia Bassa", + "Stale Data: Warn": "Avviso: Dati Obsoleti", + "Stale Data: Urgent": "Urgente: Dati Obsoleti", "mins": "min", "Night Mode": "Modalità Notte", - "When enabled the page will be dimmed from 10pm - 6am.": "Attivandola, la pagina sarà oscurata dalle 22:00-06:00.", + "When enabled the page will be dimmed from 10pm - 6am.": "Attivandola, la pagina sarà oscurata dalle 22.00 - 06.00.", "Enable": "Permettere", - "Show Raw BG Data": "Mostra dati Raw BG", + "Show Raw BG Data": "Mostra dati Grezzi Glicemia", "Never": "Mai", "Always": "Sempre", "When there is noise": "Quando vi è rumore", - "When enabled small white dots will be displayed for raw BG data": "Quando lo abiliti, visualizzerai piccoli puntini bianchi (raw BG data)", + "When enabled small white dots will be displayed for raw BG data": "Quando lo abiliti, i piccoli punti bianchi saranno visualizzati come dati grezzi della glicemia", "Custom Title": "Titolo personalizzato", "Theme": "Tema", "Default": "Predefinito", @@ -252,29 +251,29 @@ "Reset, and use defaults": "Resetta le impostazioni predefinite", "Calibrations": "Calibrazioni", "Alarm Test / Smartphone Enable": "Test Allarme / Abilita Smartphone", - "Bolus Wizard": "BW-Calcolatore di Bolo", + "Bolus Wizard": "Calcolatore di Bolo", "in the future": "nel futuro", "time ago": "tempo fa", "hr ago": "ora fa", "hrs ago": "ore fa", "min ago": "minuto fa", "mins ago": "minuti fa", - "day ago": "Giorno fa", + "day ago": "giorno fa", "days ago": "giorni fa", - "long ago": "Molto tempo fa", + "long ago": "molto tempo fa", "Clean": "Pulito", "Light": "Leggero", "Medium": "Medio", "Heavy": "Pesante", "Treatment type": "Somministrazione", - "Raw BG": "Raw BG", + "Raw BG": "Glicemia Grezza", "Device": "Dispositivo", "Noise": "Rumore", - "Calibration": "Calibratura", + "Calibration": "Calibrazione", "Show Plugins": "Mostra Plugin", "About": "Informazioni", "Value in": "Valore in", - "Carb Time": "Tempo", + "Carb Time": "Tempo Assorbimento Carboidrati", "Language": "Lingua", "Add new": "Aggiungi nuovo", "g": "g", @@ -289,44 +288,44 @@ "oldest on top": "più vecchio in alto", "newest on top": "più recente in alto", "All sensor events": "Tutti gli eventi del sensore", - "Remove future items from mongo database": "Rimuovere gli oggetti dal database di mongo in futuro", - "Find and remove treatments in the future": "Individuare e rimuovere le somministrazioni in futuro", + "Remove future items from mongo database": "Rimuovi gli elementi futuri dal database mongo", + "Find and remove treatments in the future": "Trova e rimuovi i trattamenti in futuro", "This task find and remove treatments in the future.": "Trovare e rimuovere le somministrazioni in futuro", "Remove treatments in the future": "Rimuovere somministrazioni in futuro", "Find and remove entries in the future": "Trovare e rimuovere le voci in futuro", "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Trovare e rimuovere i dati CGM in futuro creato da uploader/xdrip con data/ora sbagliato.", "Remove entries in the future": "Rimuovere le voci in futuro", "Loading database ...": "Carica Database ...", - "Database contains %1 future records": "Contiene Database %1 record futuri", + "Database contains %1 future records": "Il Database contiene %1 record futuri", "Remove %1 selected records?": "Rimuovere %1 record selezionati?", "Error loading database": "Errore di caricamento del database", - "Record %1 removed ...": "Record %1 rimosso ...", - "Error removing record %1": "Errore rimozione record %1", - "Deleting records ...": "Elimino dei record ...", - "%1 records deleted": "%1 records deleted", + "Record %1 removed ...": "Registro %1 rimosso ...", + "Error removing record %1": "Errore rimozione registro %1", + "Deleting records ...": "Elimino registro ...", + "%1 records deleted": "%1Registro Cancellato", "Clean Mongo status database": "Pulisci database di Mongo", "Delete all documents from devicestatus collection": "Eliminare tutti i documenti dalla collezione \"devicestatus\"", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Questa attività elimina tutti i documenti dalla collezione \"devicestatus\". Utile quando lo stato della batteria uploader/xdrip non si aggiorna.", "Delete all documents": "Eliminare tutti i documenti", "Delete all documents from devicestatus collection?": "Eliminare tutti i documenti dalla collezione devicestatus?", - "Database contains %1 records": "Contiene Database %1 record", - "All records removed ...": "Tutti i record rimossi ...", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", - "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", - "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents": "Delete old documents", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", - "%1 is not a valid number": "%1 is not a valid number", - "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", - "Admin Tools": "NS - Dati Mongo", + "Database contains %1 records": "Il Database contiene %1 registri", + "All records removed ...": "Tutti i registri rimossi ...", + "Delete all documents from devicestatus collection older than 30 days": "Eliminare tutti i documenti della collezione \"devicestatus\" più vecchi di 30 giorni", + "Number of Days to Keep:": "Numero di Giorni da osservare:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Questa attività elimina tutti i documenti dalla collezione \"devicestatus\". Utile quando lo stato della batteria uploader/xdrip non si aggiorna.", + "Delete old documents from devicestatus collection?": "Eliminare tutti i documenti dalla collezione devicestatus?", + "Clean Mongo entries (glucose entries) database": "Pulisci il database Mongo entries (glicemie sensore)", + "Delete all documents from entries collection older than 180 days": "Eliminare tutti i documenti della collezione \"devicestatus\" più vecchi di 180 giorni", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Questa attività elimina tutti i documenti dalla collezione \"devicestatus\". Utile quando lo stato della batteria uploader/xdrip non si aggiorna.", + "Delete old documents": "Eliminare tutti i documenti", + "Delete old documents from entries collection?": "Eliminare tutti i documenti dalla collezione devicestatus?", + "%1 is not a valid number": "%1 non è un numero valido", + "%1 is not a valid number - must be more than 2": "%1 non è un numero valido - deve essere più di 2", + "Clean Mongo treatments database": "Pulisci database \"treatments\" di Mongo", + "Delete all documents from treatments collection older than 180 days": "Eliminare tutti i documenti della collezione \"devicestatus\" più vecchi di 180 giorni", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Questa attività elimina tutti i documenti dalla collezione \"devicestatus\". Utile quando lo stato della batteria uploader/xdrip non si aggiorna.", + "Delete old documents from treatments collection?": "Eliminare tutti i documenti dalla collezione devicestatus?", + "Admin Tools": "Dati Mongo", "Nightscout reporting": "Nightscout - Statistiche", "Cancel": "Cancellare", "Edit treatment": "Modifica Somministrazione", @@ -346,11 +345,11 @@ "Profile": "Profilo", "General profile settings": "Impostazioni generali profilo", "Title": "Titolo", - "Database records": "Record del database", - "Add new record": "Aggiungi un nuovo record", - "Remove this record": "Rimuovi questo record", - "Clone this record to new": "Clona questo record in uno nuovo", - "Record valid from": "Record valido da", + "Database records": "Registro del database", + "Add new record": "Aggiungi un nuovo registro", + "Remove this record": "Rimuovi questo registro", + "Clone this record to new": "Clona questo registro in uno nuovo", + "Record valid from": "Registro valido da", "Stored profiles": "Profili salvati", "Timezone": "Fuso orario", "Duration of Insulin Activity (DIA)": "Durata Attività Insulinica (DIA)", @@ -359,13 +358,13 @@ "Hours:": "Ore:", "hours": "ore", "g/hour": "g/ora", - "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g carbo per U di insulina. Il rapporto tra quanti grammi di carboidrati sono compensati da ogni U di insulina.", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g carboidrati per U di insulina. Il rapporto tra quanti grammi di carboidrati sono compensati da ogni U di insulina.", "Insulin Sensitivity Factor (ISF)": "Fattore di Sensibilità Insulinica (ISF)", "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL o mmol/L per U insulina. Il rapporto di quanto la glicemia varia per ogni U di correzione insulinica.", "Carbs activity / absorption rate": "Attività carboidrati / Velocità di assorbimento", "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).": "grammi per unità di tempo. Rappresentano sia il cambio di COB per unità di tempo, sia la quantità di carboidrati che faranno effetto nel tempo. Assorbimento di carboidrati / curva di attività sono meno conosciute rispetto all'attività insulinica, ma possono essere approssimate usando un ritardo iniziale seguito da un rapporto costante di assorbimento (g/hr).", "Basal rates [unit/hour]": "Basale [unità/ora]", - "Target BG range [mg/dL,mmol/L]": "Obiettivo d'intervallo glicemico [mg/dL,mmol/L]", + "Target BG range [mg/dL,mmol/L]": "Obiettivo dell'intervallo glicemico [mg/dL,mmol/L]", "Start of record validity": "Inizio di validità del dato", "Icicle": "Inverso", "Render Basal": "Grafico Basale", @@ -373,25 +372,25 @@ "Calculation is in target range.": "Calcolo all'interno dell'intervallo", "Loading profile records ...": "Caricamento dati del profilo ...", "Values loaded.": "Valori caricati.", - "Default values used.": "Valori standard usati.", + "Default values used.": "Usati Valori standard.", "Error. Default values used.": "Errore. Valori standard usati.", "Time ranges of target_low and target_high don't match. Values are restored to defaults.": "Intervalli di tempo della glicemia obiettivo inferiore e superiore non corretti. Valori ripristinati a quelli standard.", "Valid from:": "Valido da:", "Save current record before switching to new?": "Salvare il dato corrente prima di passare ad uno nuovo?", "Add new interval before": "Aggiungere prima un nuovo intervallo", "Delete interval": "Elimina intervallo", - "I:C": "I:C", - "ISF": "ISF", + "I:C": "Insulina:Carboidrati", + "ISF": "Sensibilità insulinica", "Combo Bolus": "Combo Bolo", "Difference": "Differenza", "New time": "Nuovo Orario", "Edit Mode": "Modalità di Modifica", "When enabled icon to start edit mode is visible": "Quando abilitata, l'icona della Modalità di Modifica è visibile", "Operation": "Operazione", - "Move": "Muovi", + "Move": "Sposta", "Delete": "Elimina", - "Move insulin": "Muovi Insulina", - "Move carbs": "Muovi carboidrati", + "Move insulin": "Sposta Insulina", + "Move carbs": "Sposta carboidrati", "Remove insulin": "Rimuovi insulina", "Remove carbs": "Rimuovi carboidrati", "Change treatment time to %1 ?": "Cambiare tempo alla somministrazione a %1 ?", @@ -400,13 +399,13 @@ "Remove treatment ?": "Rimuovere somministrazione ?", "Remove insulin from treatment ?": "Rimuovere insulina dalla somministrazione ?", "Remove carbs from treatment ?": "Rimuovere carboidrati dalla somministrazione ?", - "Rendering": "Traduzione", + "Rendering": "Rendering", "Loading OpenAPS data of": "Caricamento in corso dati OpenAPS", "Loading profile switch data": "Caricamento in corso dati cambio profilo", "Redirecting you to the Profile Editor to create a new profile.": "Impostazione errata del profilo. \nNessun profilo definito per visualizzare l'ora. \nReindirizzamento al profilo editor per creare un nuovo profilo.", - "Pump": "Pompa", - "Sensor Age": "SAGE - Durata Sensore", - "Insulin Age": "IAGE - Durata Insulina", + "Pump": "Microinfusore", + "Sensor Age": "Durata Sensore", + "Insulin Age": "Durata Insulina", "Temporary target": "Obiettivo Temporaneo", "Reason": "Ragionare", "Eating soon": "Mangiare prossimamente", @@ -420,8 +419,8 @@ "Negative temp basal insulin:": "Insulina basale Temp negativa:", "Total basal insulin:": "Insulina Basale Totale:", "Total daily insulin:": "Totale giornaliero d'insulina:", - "Unable to %1 Role": "Incapace di %1 Ruolo", - "Unable to delete Role": "Incapace di eliminare Ruolo", + "Unable to %1 Role": "Impossibile %1 Ruolo", + "Unable to delete Role": "Impossibile eliminare il Ruolo", "Database contains %1 roles": "Database contiene %1 ruolo", "Edit Role": "Modifica ruolo", "admin, school, family, etc": "amministrazione, scuola, famiglia, etc", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Soggetti - persone, dispositivi, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Ogni soggetto avrà un gettone d'accesso unico e 1 o più ruoli. Fare clic sul gettone d'accesso per aprire una nuova vista con il soggetto selezionato, questo legame segreto può quindi essere condiviso.", "Add new Subject": "Aggiungere un nuovo Soggetto", - "Unable to %1 Subject": "Incapace di %1 sottoporre", + "Unable to %1 Subject": "Impossibile %1 eliminare oggetto", "Unable to delete Subject": "Impossibile eliminare Soggetto", "Database contains %1 subjects": "Database contiene %1 soggetti", "Edit Subject": "Modifica Oggetto", @@ -448,52 +447,52 @@ "hour ago": "ora fa", "hours ago": "ore fa", "Silence for %1 minutes": "Silenzio per %1 minuti", - "Check BG": "Controllare BG", + "Check BG": "Controlla Glicemia", "BASAL": "BASALE", "Current basal": "Basale corrente", - "Sensitivity": "ISF - sensibilità", + "Sensitivity": "Sensibilità", "Current Carb Ratio": "Attuale rapporto I:C", "Basal timezone": "fuso orario basale", - "Active profile": "Attiva profilo", - "Active temp basal": "Attiva Basale Temp", - "Active temp basal start": "Attiva Inizio Basale temp", - "Active temp basal duration": "Attiva durata basale temp", - "Active temp basal remaining": "Attiva residuo basale temp", + "Active profile": "Profilo Attivo", + "Active temp basal": "Basale Temporanea Attiva", + "Active temp basal start": "Avvio Basale temporanea attiva", + "Active temp basal duration": "Durata basale temporanea Attiva", + "Active temp basal remaining": "Residuo basale temporanea Attiva", "Basal profile value": "Valore profilo basale", - "Active combo bolus": "Attiva Combo bolo", - "Active combo bolus start": "Attivo inizio Combo bolo", - "Active combo bolus duration": "Attivo durata Combo bolo", - "Active combo bolus remaining": "Attivo residuo Combo bolo", - "BG Delta": "BG Delta", + "Active combo bolus": "Combo bolo Attivo", + "Active combo bolus start": "Avvio Combo bolo Attivo", + "Active combo bolus duration": "Durata Combo bolo Attivo", + "Active combo bolus remaining": "Residuo Combo bolo Attivo", + "BG Delta": "Differenza di Glicemia", "Elapsed Time": "Tempo Trascorso", "Absolute Delta": "Delta Assoluto", "Interpolated": "Interpolata", - "BWP": "BWP", + "BWP": "Calcolatore di Bolo", "Urgent": "Urgente", "Warning": "Avviso", - "Info": "Info", + "Info": "Informazioni", "Lowest": "Minore", - "Snoozing high alarm since there is enough IOB": "Addormenta allarme alto poiché non vi è sufficiente IOB", - "Check BG, time to bolus?": "Controllare BG, il tempo del bolo?", + "Snoozing high alarm since there is enough IOB": "Addormenta allarme alto poiché non vi è sufficiente Insulina attiva", + "Check BG, time to bolus?": "Controllare Glicemia, ora di bolo?", "Notice": "Preavviso", "required info missing": "richiesta informazioni mancanti", - "Insulin on Board": "IOB - Insulina Attiva", + "Insulin on Board": "Insulina Attiva", "Current target": "Obiettivo attuale", "Expected effect": "Effetto Previsto", "Expected outcome": "Risultato previsto", "Carb Equivalent": "Carb equivalenti", "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "L'eccesso d'insulina equivalente %1U più che necessari per raggiungere l'obiettivo basso, non rappresentano i carboidrati.", - "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "L'eccesso d'insulina equivalente %1U più che necessario per raggiungere l'obiettivo basso, ASSICURARSI IOB SIA COPERTO DA CARBOIDRATI", - "%1U reduction needed in active insulin to reach low target, too much basal?": "Riduzione 1U% necessaria d'insulina attiva per raggiungere l'obiettivo basso, troppa basale?", - "basal adjustment out of range, give carbs?": "regolazione basale fuori campo, dare carboidrati?", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "L' eccesso d'insulina equivale a %1U in più di quanto necessario per raggiungere l'obiettivo basso, ASSICURARSI CHE L'INSULINA ATTIVA SIA COPERTA DAI CARBOIDRATI", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Riduzione %1U necessaria dell'insulina attiva per raggiungere l'obiettivo basso, troppa basale?", + "basal adjustment out of range, give carbs?": "regolazione basale fuori intervallo, dare carboidrati?", "basal adjustment out of range, give bolus?": "regolazione basale fuori campo, dare bolo?", "above high": "sopra alto", "below low": "sotto bassa", - "Projected BG %1 target": "Proiezione BG %1 obiettivo", + "Projected BG %1 target": "Proiezione Glicemia %1 obiettivo", "aiming at": "puntare a", "Bolus %1 units": "Bolo %1 unità", "or adjust basal": "o regolare basale", - "Check BG using glucometer before correcting!": "Controllare BG utilizzando glucometro prima di correggere!", + "Check BG using glucometer before correcting!": "Controllare Glicemia utilizzando glucometro prima di correggere!", "Basal reduction to account %1 units:": "Riduzione basale per conto %1 unità:", "30m temp basal": "30m basale temp", "1h temp basal": "1h basale temp", @@ -502,16 +501,16 @@ "Change cannula soon": "Cambio cannula prossimamente", "Cannula age %1 hours": "Durata Cannula %1 ore", "Inserted": "Inserito", - "CAGE": "CAGE", - "COB": "COB", + "CAGE": "Cambio Ago", + "COB": "Carboidrati Attivi", "Last Carbs": "Ultimi carboidrati", - "IAGE": "IAGE", + "IAGE": "Età Insulina", "Insulin reservoir change overdue!": "Cambio serbatoio d'insulina in ritardo!", "Time to change insulin reservoir": "Momento di cambiare serbatoio d'insulina", "Change insulin reservoir soon": "Cambiare serbatoio d'insulina prossimamente", "Insulin reservoir age %1 hours": "IAGE - Durata Serbatoio d'insulina %1 ore", "Changed": "Cambiato", - "IOB": "IOB", + "IOB": "Insulina Attiva", "Careportal IOB": "IOB Somministrazioni", "Last Bolus": "Ultimo bolo", "Basal IOB": "Basale IOB", @@ -522,7 +521,7 @@ "%1h ago": "%1h fa", "%1d ago": "%1d fa", "RETRO": "RETRO", - "SAGE": "SAGE", + "SAGE": "Età Sensore", "Sensor change/restart overdue!": "Cambio/riavvio del sensore in ritardo!", "Time to change/restart sensor": "Tempo di cambiare/riavvio sensore", "Change/restart sensor soon": "Modifica/riavvio sensore prossimamente", @@ -531,11 +530,11 @@ "Sensor Start": "SAGE - partenza sensore", "days": "giorni", "Insulin distribution": "Distribuzione di insulina", - "To see this report, press SHOW while in this view": "Per guardare questo report, premere SHOW all'interno della finestra", + "To see this report, press SHOW while in this view": "Per guardare questo report, premere MOSTRA all'interno della finestra", "AR2 Forecast": "Previsione AR2", "OpenAPS Forecasts": "Previsione OpenAPS", - "Temporary Target": "Obbiettivo temporaneo", - "Temporary Target Cancel": "Obbiettivo temporaneo cancellato", + "Temporary Target": "Obiettivo temporaneo", + "Temporary Target Cancel": "Obiettivo temporaneo cancellato", "OpenAPS Offline": "OpenAPS disconnesso", "Profiles": "Profili", "Time in fluctuation": "Tempo in fluttuazione", @@ -545,7 +544,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tempo in fluttuazione e Tempo in rapida fluttuazione misurano la % di tempo durante il periodo esaminato, durante il quale la glicemia stà variando velocemente o rapidamente. Bassi valori sono migliori.", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Media Totale Giornaliera Variazioni è la somma dei valori assoluti di tutte le escursioni glicemiche per il periodo esaminato, diviso per il numero di giorni. Bassi valori sono migliori.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Media Oraria Variazioni è la somma del valore assoluto di tutte le escursioni glicemiche per il periodo esaminato, diviso per il numero di ore. Bassi valori sono migliori.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Il RMS fuori gamma è calcolato facendo quadrare la distanza fuori campo per tutte le letture di glucosio per il periodo esaminato, sommando loro, dividendo per il conteggio e prendendo la radice quadrata. Questa metrica è simile alla percentuale dell'intervallo ma le letture dei pesi sono molto più alte. I valori più bassi sono migliori.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">qui.", "Mean Total Daily Change": "Media Totale Giornaliera Variazioni", @@ -557,65 +556,65 @@ "SingleDown": "diminuzione", "DoubleDown": "rapida diminuzione", "DoubleUp": "rapido aumento", - "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", + "virtAsstUnknown": "Questo valore al momento non è noto. Per maggiori dettagli consulta il tuo sito Nightscout.", + "virtAsstTitleAR2Forecast": "Previsione AR2", + "virtAsstTitleCurrentBasal": "Basale corrente", + "virtAsstTitleCurrentCOB": "COB Corrente", + "virtAsstTitleCurrentIOB": "IOB Corrente", + "virtAsstTitleLaunch": "Benvenuto in Nightscout", + "virtAsstTitleLoopForecast": "Previsione Ciclo", + "virtAsstTitleLastLoop": "Ultimo Ciclo", + "virtAsstTitleOpenAPSForecast": "Previsione OpenAPS", + "virtAsstTitlePumpReservoir": "Insulina Rimanente", + "virtAsstTitlePumpBattery": "Batteria Microinfusore", + "virtAsstTitleRawBG": "Glicemia Grezza Corrente", + "virtAsstTitleUploaderBattery": "Batteria del Caricatore", + "virtAsstTitleCurrentBG": "Glicemia Corrente", + "virtAsstTitleFullStatus": "Stato Completo", + "virtAsstTitleCGMMode": "Modalità CGM", + "virtAsstTitleCGMStatus": "Stato CGM", + "virtAsstTitleCGMSessionAge": "Età Sessione Sensore", + "virtAsstTitleCGMTxStatus": "Stato Trasmettitore Sensore", + "virtAsstTitleCGMTxAge": "Età Trasmettitore del Sensore", + "virtAsstTitleCGMNoise": "Disturbo Sensore", + "virtAsstTitleDelta": "Delta Glicemia", "virtAsstStatus": "%1 e %2 come %3.", "virtAsstBasal": "%1 basale attuale è %2 unità per ora", "virtAsstBasalTemp": "%1 basale temporanea di %2 unità per ora finirà %3", "virtAsstIob": "e tu hai %1 insulina attiva.", "virtAsstIobIntent": "Tu hai %1 insulina attiva", "virtAsstIobUnits": "%1 unità di", - "virtAsstLaunch": "What would you like to check on Nightscout?", + "virtAsstLaunch": "Cosa vorresti controllare su Nightscout?", "virtAsstPreamble": "Tuo", "virtAsstPreamble3person": "%1 ha un ", "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", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstUploadBattery": "La batteria del caricatore è a %1", + "virtAsstReservoir": "Hai %1 unità rimanenti", + "virtAsstPumpBattery": "La batteria del microinsusore è a %1 %2", + "virtAsstUploaderBattery": "La batteria del caricatore è a %1", + "virtAsstLastLoop": "L'ultimo successo del ciclo è stato %1", + "virtAsstLoopNotAvailable": "Il plugin del ciclo non sembra essere abilitato", + "virtAsstLoopForecastAround": "Secondo le previsioni del ciclo ci si aspetta che ci siano circa %1 nei prossimi %2", + "virtAsstLoopForecastBetween": "Secondo le previsioni di ciclo ci si aspetta che siano tra %1 e %2 per i prossimi %3", + "virtAsstAR2ForecastAround": "Secondo le previsioni AR2 ci si aspetta che ci siano circa %1 nei prossimi %2", + "virtAsstAR2ForecastBetween": "Secondo le previsioni AR2 ci si aspetta che siano tra %1 e %2 nei prossimi %3", + "virtAsstForecastUnavailable": "Impossibile prevedere con i dati disponibili", + "virtAsstRawBG": "La tua Glicemia grezza è %1", + "virtAsstOpenAPSForecast": "L'eventuale Glicemia OpenAPS è %1", + "virtAsstCob3person": "%1 ha %2 carboidrati attivi", + "virtAsstCob": "Hai %1 carboidrati attivi", + "virtAsstCGMMode": "La modalità del tuo Sensore era %1 a partire da %2.", + "virtAsstCGMStatus": "Il stato del tuo Sensore era %1 a partire da %2.", + "virtAsstCGMSessAge": "La tua sessione del Sensore e' attiva da %1 giorni e %2 ore.", + "virtAsstCGMSessNotStarted": "Al momento non c'è una sessione attiva del Sensore.", + "virtAsstCGMTxStatus": "Lo stato del trasmettitore del tuo Sensore era %1 a partire da %2.", + "virtAsstCGMTxAge": "Il trasmettitore del tuo sensore ha %1 giorni.", + "virtAsstCGMNoise": "Il rumore del tuo sensore era %1 a partire da %2.", + "virtAsstCGMBattOne": "La batteria del tuo Sensore era %1 volt da %2.", + "virtAsstCGMBattTwo": "I livelli della batteria del Sensore erano %1 volt e %2 volt a partire da %3.", + "virtAsstDelta": "Il tuo delta era %1 tra %2 e %3.", + "virtAsstUnknownIntentTitle": "Intenzioni Sconosciute", + "virtAsstUnknownIntentText": "Mi dispiace, non so cosa state chiedendo.", "Fat [g]": "Grassi [g]", "Protein [g]": "Proteine [g]", "Energy [kJ]": "Energia [kJ]", @@ -624,9 +623,9 @@ "Color": "Colore", "Simple": "Semplice", "TDD average": "Totale Dose Giornaliera media (TDD)", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", + "Bolus average": "Media bolo", + "Basal average": "Media basale", + "Base basal average:": "Media basale originale:", "Carbs average": "Media carboidrati", "Eating Soon": "Mangiare presto", "Last entry {0} minutes ago": "Ultimo inserimento {0} minuti fa", @@ -638,23 +637,23 @@ "Meter BG": "Glicemia Capillare", "predicted": "predetto", "future": "futuro", - "ago": "ago", + "ago": "fa", "Last data received": "Ultimo dato ricevuto", "Clock View": "Vista orologio", - "Protein": "Protein", - "Fat": "Fat", - "Protein average": "Protein average", - "Fat average": "Fat average", - "Total carbs": "Total carbs", - "Total protein": "Total protein", - "Total fat": "Total fat", - "Database Size": "Database Size", - "Database Size near its limits!": "Database Size near its limits!", - "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", - "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" + "Protein": "Proteine", + "Fat": "Grasso", + "Protein average": "Media delle proteine", + "Fat average": "Media dei grassi", + "Total carbs": "Carboidrati Totali", + "Total protein": "Proteine Totali", + "Total fat": "Grasso Totale", + "Database Size": "Dimensione Del Database", + "Database Size near its limits!": "Dimensione del database vicino ai suoi limiti!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "La dimensione del database è %1 MiB su %2 MiB. Si prega di eseguire il backup e ripulire il database!", + "Database file size": "Dimensione file database", + "%1 MiB of %2 MiB (%3%)": "%1 MiB di %2 MiB (%3%)", + "Data size": "Dimensione dati", + "virtAsstDatabaseSize": "%1 MiB. Questo è il %2% dello spazio del database disponibile.", + "virtAsstTitleDatabaseSize": "Dimensione file database", + "Carbs/Food/Time": "Carboidrati/Cibo/Tempo" } \ No newline at end of file diff --git a/translations/ja_JP.json b/translations/ja_JP.json index f98deca1650..05d00abbd80 100644 --- a/translations/ja_JP.json +++ b/translations/ja_JP.json @@ -128,7 +128,7 @@ "Entered By": "入力者", "Delete this treatment?": "この治療データを削除しますか?", "Carbs Given": "摂取糖質量", - "Inzulin Given": "インスリン投与量", + "Insulin Given": "投与されたインスリン", "Event Time": "イベント時間", "Please verify that the data entered is correct": "入力したデータが正しいか確認をお願いします。", "BG": "BG", @@ -220,7 +220,6 @@ "Glucose Reading": "Glucose Reading", "Measurement Method": "測定方法", "Meter": "血糖測定器", - "Insulin Given": "投与されたインスリン", "Amount in grams": "グラム換算", "Amount in units": "単位換算", "View all treatments": "全治療内容を参照", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", "Add new Subject": "Add new Subject", - "Unable to %1 Subject": "לא יכול ל %1 נושאי", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Unable to delete Subject", "Database contains %1 subjects": "Database contains %1 subjects", "Edit Subject": "Edit Subject", diff --git a/translations/ko_KR.json b/translations/ko_KR.json index 9650dc2f928..5b33d89bda7 100644 --- a/translations/ko_KR.json +++ b/translations/ko_KR.json @@ -128,7 +128,7 @@ "Entered By": "입력 내용", "Delete this treatment?": "이 대처를 지울까요?", "Carbs Given": "탄수화물 요구량", - "Inzulin Given": "인슐린 요구량", + "Insulin Given": "인슐린 요구량", "Event Time": "입력 시간", "Please verify that the data entered is correct": "입력한 데이터가 정확한지 확인해 주세요.", "BG": "혈당", @@ -220,7 +220,6 @@ "Glucose Reading": "혈당 읽기", "Measurement Method": "측정 방법", "Meter": "혈당 측정기", - "Insulin Given": "인슐린 요구량", "Amount in grams": "합계(grams)", "Amount in units": "합계(units)", "View all treatments": "모든 treatments 보기", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "주제 - 사람, 기기 등", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "각 주제는 유일한 access token을 가지고 1 또는 그 이상의 역할을 가질 것이다. 선택된 주제와 새로운 뷰를 열기 위해 access token을 클릭하세요. 이 비밀 링크는 공유되어질 수 있다.", "Add new Subject": "새 주제 추가", - "Unable to %1 Subject": "%1 주제 비활성화", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "주제를 지우기 위해 비활성화", "Database contains %1 subjects": "데이터베이스는 %1 주제를 포함", "Edit Subject": "주제 편집", diff --git a/translations/nb_NO.json b/translations/nb_NO.json index 38a46a41e12..b116a573376 100644 --- a/translations/nb_NO.json +++ b/translations/nb_NO.json @@ -87,12 +87,12 @@ "Mean": "Gjennomsnitt", "Standard Deviation": "Standardavvik", "Max": "Maks", - "Min": "Min", + "Min": "Minimum", "A1c estimation*": "Beregnet HbA1c", "Weekly Success": "Ukeresultat", "There is not sufficient data to run this report. Select more days.": "Der er ikke nok data til å lage rapporten. Velg flere dager.", - "Using stored API secret hash": "Bruker lagret API-nøkkel", - "No API secret hash stored yet. You need to enter API secret.": "Mangler API-nøkkel. Du må skrive inn API-hemmelighet.", + "Using stored API secret hash": "Bruker lagret API-hemmelighet", + "No API secret hash stored yet. You need to enter API secret.": "Mangler API-hemmelighet. Du må skrive inn API-hemmelighet.", "Database loaded": "Database lest", "Error: Database failed to load": "Feil: Database kunne ikke leses", "Error": "Feil", @@ -106,9 +106,9 @@ "Move to the top": "Gå til toppen", "Hidden": "Skjult", "Hide after use": "Skjul etter bruk", - "Your API secret must be at least 12 characters long": "Din API-nøkkel må være minst 12 tegn lang", - "Bad API secret": "Ugyldig API-nøkkel", - "API secret hash stored": "API-nøkkel lagret", + "Your API secret must be at least 12 characters long": "Din API-hemmelighet må være minst 12 tegn", + "Bad API secret": "Ugyldig API-hemmelighet", + "API secret hash stored": "API-hemmelighet lagret", "Status": "Status", "Not loaded": "Ikke lest", "Food Editor": "Mat-editor", @@ -119,7 +119,7 @@ "Record": "Registrering", "Quick picks": "Hurtigvalg", "Show hidden": "Vis skjulte", - "Your API secret or token": "Din API-nøkkel eller passord", + "Your API secret or token": "Din API-hemmelighet eller tilgangsnøkkel", "Remember this device. (Do not enable this on public computers.)": "Husk denne enheten (Ikke velg dette på offentlige eller delte datamaskiner)", "Treatments": "Behandlinger", "Time": "Tid", @@ -128,7 +128,7 @@ "Entered By": "Lagt inn av", "Delete this treatment?": "Slett denne hendelsen?", "Carbs Given": "Karbohydrat", - "Inzulin Given": "Insulin", + "Insulin Given": "Insulin", "Event Time": "Tidspunkt", "Please verify that the data entered is correct": "Vennligst verifiser at inntastet data er korrekt", "BG": "BS", @@ -220,7 +220,6 @@ "Glucose Reading": "Blodsukkermåling", "Measurement Method": "Målemetode", "Meter": "Måleapparat", - "Insulin Given": "Insulin", "Amount in grams": "Antall gram", "Amount in units": "Antall enheter", "View all treatments": "Vis behandlinger", @@ -262,7 +261,7 @@ "day ago": "dag siden", "days ago": "dager siden", "long ago": "lenge siden", - "Clean": "Rent", + "Clean": "Rydd", "Light": "Lite", "Medium": "Middels", "Heavy": "Mye", @@ -289,43 +288,43 @@ "oldest on top": "Eldste først", "newest on top": "Nyeste først", "All sensor events": "Alle sensorhendelser", - "Remove future items from mongo database": "Fjern fremtidige elementer fra mongo database", + "Remove future items from mongo database": "Fjern fremtidige elementer fra Mongo database", "Find and remove treatments in the future": "Finn og fjern fremtidige behandlinger", - "This task find and remove treatments in the future.": "Finn og fjern fremtidige behandlinger", + "This task find and remove treatments in the future.": "Denne funksjonen finner og fjerner fremtidige behandlinger.", "Remove treatments in the future": "Fjern fremtidige behandlinger", "Find and remove entries in the future": "Finn og fjern fremtidige hendelser", - "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Finn og fjern fremtidige cgm data som er lastet opp med feil dato/tid", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Denne funksjonen finner og fjerner fremtidige CGM data som er lastet opp med feil dato/tid.", "Remove entries in the future": "Fjern fremtidige hendelser", "Loading database ...": "Leser database ...", "Database contains %1 future records": "Databasen inneholder %1 fremtidige hendelser", "Remove %1 selected records?": "Fjern %1 valgte elementer?", "Error loading database": "Feil under lasting av database", "Record %1 removed ...": "Element %1 fjernet", - "Error removing record %1": "Feil under fjerning av element %1", - "Deleting records ...": "Fjerner elementer...", + "Error removing record %1": "Feil under fjerning av registrering %1", + "Deleting records ...": "Fjerner registreringer...", "%1 records deleted": "%1 registreringer slettet", - "Clean Mongo status database": "Slett Mongo status database", - "Delete all documents from devicestatus collection": "Fjern alle dokumenter fra device status tabell", - "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra device status tabellen. Nyttig når status for opplaster batteri ikke blir opppdatert", + "Clean Mongo status database": "Rydd i Mongo \"status\" databasen", + "Delete all documents from devicestatus collection": "Fjern alle dokumenter fra \"devicestatus\" samlingen", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra \"devicestatus\" samlingen. Nyttig når status for opplaster-batteri ikke blir opppdatert.", "Delete all documents": "Fjern alle dokumenter", - "Delete all documents from devicestatus collection?": "Fjern alle dokumenter fra device status tabellen?", - "Database contains %1 records": "Databasen inneholder %1 elementer", + "Delete all documents from devicestatus collection?": "Fjern alle dokumenter fra \"devicestatus\" samlingen?", + "Database contains %1 records": "Databasen inneholder %1 registreringer", "All records removed ...": "Alle elementer fjernet ...", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", - "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", - "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents": "Delete old documents", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", - "%1 is not a valid number": "%1 is not a valid number", - "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Delete all documents from devicestatus collection older than 30 days": "Slett alle dokumenter fra \"devicestatus\" samlingen som er eldre enn 30 dager", + "Number of Days to Keep:": "Antall dager å beholde:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra \"devicestatus\" samlingen som er eldre enn 30 dager. Nyttig når status for opplaster-batteri ikke blir opppdatert.", + "Delete old documents from devicestatus collection?": "Slett gamle dokumenter fra \"devicestatus\" samlingen?", + "Clean Mongo entries (glucose entries) database": "Rydd i Mongo \"entries\" databasen (blodsukkerregistreringer)", + "Delete all documents from entries collection older than 180 days": "Slett alle dokumenter fra \"entries\" samlingen som er eldre enn 180 dager", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra \"entries\" samlingen som er eldre enn 180 dager. Nyttig når status for opplaster-batteri ikke blir opppdatert.", + "Delete old documents": "Slett eldre dokumenter", + "Delete old documents from entries collection?": "Slett gamle dokumenter fra \"entries\" samlingen?", + "%1 is not a valid number": "%1 er ikke et gyldig tall", + "%1 is not a valid number - must be more than 2": "%1 er ikke et gyldig tall - må være mer enn 2", + "Clean Mongo treatments database": "Rengjør Mongo-behandling database", + "Delete all documents from treatments collection older than 180 days": "Slett alle dokumenter fra \"treatments\" samlingen som er eldre enn 180 dager", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra \"treatments\" samlingen som er eldre enn 180 dager. Nyttig når status for opplaster-batteri ikke blir opppdatert.", + "Delete old documents from treatments collection?": "Slett gamle dokumenter fra \"treatments\" samlingen?", "Admin Tools": "Administrasjonsverktøy", "Nightscout reporting": "Rapporter", "Cancel": "Avbryt", @@ -433,7 +432,7 @@ "Edit this role": "Editer denne rollen", "Admin authorized": "Administratorgodkjent", "Subjects - People, Devices, etc": "Ressurser - Brukere, enheter osv", - "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Hver enkelt ressurs får en unik sikkerhetsnøkkel og en eller flere roller. Klikk på sikkerhetsnøkkelen for å åpne valgte ressurs, den hemmelige lenken kan så deles.", + "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Hver enkelt ressurs får en unik tilgangsnøkkel og en eller flere roller. Klikk på tilgangsnøkkelen for å åpne valgte ressurs, denne hemmelige lenken kan så deles.", "Add new Subject": "Legg til ny ressurs", "Unable to %1 Subject": "Kan ikke %1 ressurs", "Unable to delete Subject": "Kan ikke slette ressurs", @@ -557,65 +556,65 @@ "SingleDown": "fallende", "DoubleDown": "hurtig fallende", "DoubleUp": "hurtig stigende", - "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", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstUnknown": "Den verdien er ukjent for øyeblikket. Vennligst se Nightscout siden for mer informasjon.", + "virtAsstTitleAR2Forecast": "AR2 Prognose", + "virtAsstTitleCurrentBasal": "Gjeldende Basal", + "virtAsstTitleCurrentCOB": "Nåværende COB", + "virtAsstTitleCurrentIOB": "Nåværende IOB", + "virtAsstTitleLaunch": "Velkommen til Nightscout", + "virtAsstTitleLoopForecast": "Loop Prognose", + "virtAsstTitleLastLoop": "Siste Loop", + "virtAsstTitleOpenAPSForecast": "OpenAPS Prognose", + "virtAsstTitlePumpReservoir": "Insulin som gjenstår", + "virtAsstTitlePumpBattery": "Pumpebatteri", + "virtAsstTitleRawBG": "Nåværende Raw BG", + "virtAsstTitleUploaderBattery": "Opplaster-batteri", + "virtAsstTitleCurrentBG": "Nåværende BS", + "virtAsstTitleFullStatus": "Fullstendig status", + "virtAsstTitleCGMMode": "CGM modus", + "virtAsstTitleCGMStatus": "CGM status", + "virtAsstTitleCGMSessionAge": "CGM øktalder", + "virtAsstTitleCGMTxStatus": "CGM sender-status", + "virtAsstTitleCGMTxAge": "CMG Alder på sender", + "virtAsstTitleCGMNoise": "CGM støy", + "virtAsstTitleDelta": "Blodglukose Delta", + "virtAsstStatus": "%1 og %2 fra %3.", + "virtAsstBasal": "%1 gjeldende basalenhet er %2 enheter per time", + "virtAsstBasalTemp": "%1 midlertidig basal av %2 enheter per time vil avslutte %3", + "virtAsstIob": "og du har %1 insulin i kroppen.", + "virtAsstIobIntent": "Og du har %1 insulin i kroppen", + "virtAsstIobUnits": "%1 enheter av", + "virtAsstLaunch": "Hva vil du sjekke på Nightscout?", + "virtAsstPreamble": "Din", + "virtAsstPreamble3person": "%1 har en ", + "virtAsstNoInsulin": "nei", + "virtAsstUploadBattery": "Opplaster-batteriet er %1", + "virtAsstReservoir": "Du har %1 enheter igjen", + "virtAsstPumpBattery": "Pumpebatteriet er %1 %2", + "virtAsstUploaderBattery": "Opplaster-batteriet er %1", + "virtAsstLastLoop": "Siste vellykkede loop var %1", + "virtAsstLoopNotAvailable": "Programtillegg for Loop ser ikke ut til å være aktivert", + "virtAsstLoopForecastAround": "Ifølge loop-prognosen forventes du å være rundt %1 i løpet av den neste %2", + "virtAsstLoopForecastBetween": "I følge loop-prognosen forventes du å være mellom %1 og %2 i løpet av den neste %3", + "virtAsstAR2ForecastAround": "I følge prognose fra AR2 forventes du å være rundt %1 i løpet av den neste %2", + "virtAsstAR2ForecastBetween": "I følge AR2-prognosen forventes du å være mellom %1 og %2 i løpet av de neste %3", + "virtAsstForecastUnavailable": "Kan ikke forutsi med dataene som er tilgjengelig", + "virtAsstRawBG": "Din raw bg er %1", + "virtAsstOpenAPSForecast": "OpenAPS forventer at blodsukkeret er %1", + "virtAsstCob3person": "%1 har %2 karbohydrater i bruk", + "virtAsstCob": "Du har %1 karbohydrater i bruk", + "virtAsstCGMMode": "CGM-modusen din var %1 fra %2.", + "virtAsstCGMStatus": "CGM statusen din var %1 fra %2.", + "virtAsstCGMSessAge": "CGM økten har vært aktiv i %1 dager og %2 timer.", + "virtAsstCGMSessNotStarted": "Det er ingen aktiv CGM økt for øyeblikket.", + "virtAsstCGMTxStatus": "CGM sender status var %1 fra %2.", + "virtAsstCGMTxAge": "CGM-sender er %1 dager gammel.", + "virtAsstCGMNoise": "CGM statusen din var %1 fra %2.", + "virtAsstCGMBattOne": "CGM-batteriet ditt var %1 volt som av %2.", + "virtAsstCGMBattTwo": "CGM batterinivåene dine var %1 volt og %2 volt som av %3.", + "virtAsstDelta": "Din delta var %1 mellom %2 og %3.", + "virtAsstUnknownIntentTitle": "Ukjent hensikt", + "virtAsstUnknownIntentText": "Beklager, jeg vet ikke hva du ber om.", "Fat [g]": "Fett [g]", "Protein [g]": "Protein [g]", "Energy [kJ]": "Energi [kJ]", @@ -627,14 +626,14 @@ "Bolus average": "Gjennomsnitt bolus", "Basal average": "Gjennomsnitt basal", "Base basal average:": "Programmert gj.snitt basal", - "Carbs average": "Gjennomsnitt totale karbohydrater", + "Carbs average": "Gjennomsnitt karbohydrater", "Eating Soon": "Spiser snart", - "Last entry {0} minutes ago": "Last entry {0} minutes ago", - "change": "change", + "Last entry {0} minutes ago": "Siste registrering var for {0} minutter siden", + "change": "endre", "Speech": "Tale", "Target Top": "Høyt mål", "Target Bottom": "Lavt mål", - "Canceled": "Canceled", + "Canceled": "Avbrutt", "Meter BG": "Blodsukkermåler BS", "predicted": "predikert", "future": "Fremtid", @@ -649,12 +648,12 @@ "Total protein": "Totalt protein", "Total fat": "Totalt fett", "Database Size": "Databasestørrelse", - "Database Size near its limits!": "Databasestørrelsen nærmer seg grensene", + "Database Size near its limits!": "Databasestørrelsen nærmer seg grensene!", "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Databasestørrelsen er %1 MiB av %2 MiB. Vennligst ta backup og rydd i databasen!", "Database file size": "Database filstørrelse", "%1 MiB of %2 MiB (%3%)": "%1 MiB av %2 MiB (%3%)", "Data size": "Datastørrelse", - "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", - "virtAsstTitleDatabaseSize": "Database file size", + "virtAsstDatabaseSize": "%1 MiB. Dette er %2% av tilgjengelig databaseplass.", + "virtAsstTitleDatabaseSize": "Database filstørrelse", "Carbs/Food/Time": "Karbo/Mat/Abs.tid" } \ No newline at end of file diff --git a/translations/nl_NL.json b/translations/nl_NL.json index 452d3cd6259..10e762f79b1 100644 --- a/translations/nl_NL.json +++ b/translations/nl_NL.json @@ -33,7 +33,7 @@ "Food": "Voeding", "Insulin": "Insuline", "Carbs": "Koolhydraten", - "Notes contain": "Inhoud aantekening", + "Notes contain": "Notities bevatten", "Target BG range bottom": "Ondergrens doelbereik glucose", "top": "Top", "Show": "Laat zien", @@ -53,12 +53,12 @@ "": "", "Result is empty": "Geen resultaat", "Day to day": "Dag tot Dag", - "Week to week": "Week to week", + "Week to week": "Week tot week", "Daily Stats": "Dagelijkse statistiek", "Percentile Chart": "Procentuele grafiek", "Distribution": "Verdeling", "Hourly stats": "Statistieken per uur", - "netIOB stats": "netIOB stats", + "netIOB stats": "netIOB statistieken", "temp basals must be rendered to display this report": "tijdelijk basaal moet zichtbaar zijn voor dit rapport", "Weekly success": "Wekelijkse successen", "No data available": "Geen gegevens beschikbaar", @@ -95,7 +95,7 @@ "No API secret hash stored yet. You need to enter API secret.": "Er is nog geen geheime API Hash opgeslagen. U moet eerst een geheime API code invoeren.", "Database loaded": "Database geladen", "Error: Database failed to load": "FOUT: Database niet geladen", - "Error": "Error", + "Error": "Fout", "Create new record": "Opslaan", "Save record": "Sla op", "Portions": "Porties", @@ -119,8 +119,8 @@ "Record": "Toevoegen", "Quick picks": "Snelkeuze", "Show hidden": "Laat verborgen zien", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Je API geheim of token", + "Remember this device. (Do not enable this on public computers.)": "Onthoud dit apparaat. (Dit niet inschakelen op openbare computers.)", "Treatments": "Behandelingen", "Time": "Tijd", "Event Type": "Soort", @@ -128,7 +128,7 @@ "Entered By": "Ingevoerd door", "Delete this treatment?": "Verwijder", "Carbs Given": "Aantal koolhydraten", - "Inzulin Given": "Insuline", + "Insulin Given": "Toegediende insuline", "Event Time": "Tijdstip", "Please verify that the data entered is correct": "Controleer uw invoer", "BG": "BG", @@ -220,7 +220,6 @@ "Glucose Reading": "Glucose meting", "Measurement Method": "Meetmethode", "Meter": "Glucosemeter", - "Insulin Given": "Toegediende insuline", "Amount in grams": "Hoeveelheid in gram", "Amount in units": "Aantal in eenheden", "View all treatments": "Bekijk alle behandelingen", @@ -303,7 +302,7 @@ "Record %1 removed ...": "Data %1 verwijderd ", "Error removing record %1": "Fout bij het verwijderen van %1 data", "Deleting records ...": "Verwijderen van data .....", - "%1 records deleted": "%1 records deleted", + "%1 records deleted": "%1 records verwijderd", "Clean Mongo status database": "Ruim Mongo database status op", "Delete all documents from devicestatus collection": "Verwijder alle documenten uit \"devicestatus\" database", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Dit commando verwijdert alle documenten uit \"devicestatus\" database. Handig wanneer de batterij status niet correct wordt geupload.", @@ -311,21 +310,21 @@ "Delete all documents from devicestatus collection?": "Wil je alle data van \"devicestatus\" database verwijderen?", "Database contains %1 records": "Database bevat %1 gegevens", "All records removed ...": "Alle gegevens verwijderd", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", - "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", - "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents": "Delete old documents", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", - "%1 is not a valid number": "%1 is not a valid number", - "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Delete all documents from devicestatus collection older than 30 days": "Verwijder alle documenten uit \"devicestatus\" database ouder dan 30 dagen", + "Number of Days to Keep:": "Aantal dagen te bewaren:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Dit commando verwijdert alle documenten uit de \"devicestatus\" database. Handig wanneer de batterij status niet correct wordt geüpload.", + "Delete old documents from devicestatus collection?": "Wil je oude data uit de \"devicestatus\" database verwijderen?", + "Clean Mongo entries (glucose entries) database": "Mongo gegevens (glucose waarden) opschonen", + "Delete all documents from entries collection older than 180 days": "Verwijder alle documenten uit \"entries\" database ouder dan 180 dagen", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Dit commando verwijdert alle documenten uit de \"entries\" database. Handig wanneer de batterij status niet correct wordt geüpload.", + "Delete old documents": "Verwijder oude documenten", + "Delete old documents from entries collection?": "Wil je oude data uit de \"entries\" database verwijderen?", + "%1 is not a valid number": "%1 is geen geldig nummer", + "%1 is not a valid number - must be more than 2": "%1 is geen geldig nummer - moet meer zijn dan 2", + "Clean Mongo treatments database": "Ruim Mongo behandel database op", + "Delete all documents from treatments collection older than 180 days": "Verwijder alle documenten uit \"treatments\" database ouder dan 180 dagen", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Dit commando verwijdert alle documenten uit de \"treatments\" database. Handig wanneer de batterij status niet correct wordt geüpload.", + "Delete old documents from treatments collection?": "Wil je oude data uit de \"treatments\" database verwijderen?", "Admin Tools": "Admin tools", "Nightscout reporting": "Nightscout rapportages", "Cancel": "Annuleer", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Onderwerpen - Mensen, apparaten etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Elk onderwerp heeft een unieke toegangscode en 1 of meer rollen. Klik op de toegangscode om een nieu venster te openen om het onderwerp te bekijken, deze verborgen link kan gedeeld worden.", "Add new Subject": "Voeg onderwerp toe", - "Unable to %1 Subject": "Niet in staat %1 Onderwerp", + "Unable to %1 Subject": "Kan onderwerp niet %1", "Unable to delete Subject": "Kan onderwerp niet verwijderen", "Database contains %1 subjects": "Database bevat %1 onderwerpen", "Edit Subject": "Pas onderwerp aan", @@ -512,7 +511,7 @@ "Insulin reservoir age %1 hours": "Insuline reservoir leeftijd %1 uren", "Changed": "veranderd", "IOB": "IOB", - "Careportal IOB": "Careportal IOB", + "Careportal IOB": "Careportal tabblad", "Last Bolus": "Laatste bolus", "Basal IOB": "Basaal IOB", "Source": "bron", @@ -545,77 +544,77 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tijd met fluctuaties of grote fluctuaties in % van de geevalueerde periode, waarbij de bloed glucose relatief snel wijzigde.Lagere waarden zijn beter.", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Gemiddelde veranderingen per dag is een som van alle waardes die uitschieten over de bekeken periode, gedeeld door het aantal dagen in deze periode. Lager is beter.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Gemiddelde veranderingen per uur is een som van alle waardes die uitschieten over de bekeken periode, gedeeld door het aantal uur in deze periode. Lager is beter.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Buiten het bereik van RMS wordt berekend door de afstand buiten het bereik van alle glucosewaardes voor de vastgestelde periode te nemen, deze te kwadrateren, sommeren, delen door het aantal metingen en daar de wortel van te nemen. Deze metriek is vergelijkbaar met het in-range percentage, maar metingen die verder buiten bereik zijn tellen zwaarder. Lagere waarden zijn beter.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">is hier te vinden.", "Mean Total Daily Change": "Gemiddelde veranderingen per dag", "Mean Hourly Change": "Gemiddelde veranderingen per uur", - "FortyFiveDown": "slightly dropping", - "FortyFiveUp": "slightly rising", - "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", + "FortyFiveDown": "licht dalend", + "FortyFiveUp": "licht stijgend", + "Flat": "vlak", + "SingleUp": "stijgend", + "SingleDown": "dalend", + "DoubleDown": "snel dalend", + "DoubleUp": "snel stijgend", + "virtAsstUnknown": "Die waarde is op dit moment onbekend. Zie je Nightscout site voor meer informatie.", + "virtAsstTitleAR2Forecast": "AR2 Voorspelling", + "virtAsstTitleCurrentBasal": "Huidig basaal", + "virtAsstTitleCurrentCOB": "Huidig COB", + "virtAsstTitleCurrentIOB": "Huidig IOB", + "virtAsstTitleLaunch": "Welkom bij Nightscout", + "virtAsstTitleLoopForecast": "Loop Voorbeschouwing", + "virtAsstTitleLastLoop": "Laatste Loop", + "virtAsstTitleOpenAPSForecast": "OpenAPS Voorspelling", + "virtAsstTitlePumpReservoir": "Resterende insuline", + "virtAsstTitlePumpBattery": "Pomp batterij", + "virtAsstTitleRawBG": "Huidige Ruw BG", + "virtAsstTitleUploaderBattery": "Uploader batterij", + "virtAsstTitleCurrentBG": "Huidig BG", + "virtAsstTitleFullStatus": "Volledige status", + "virtAsstTitleCGMMode": "CGM modus", "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?", + "virtAsstTitleCGMSessionAge": "CGM Sessie Leeftijd", + "virtAsstTitleCGMTxStatus": "CGM zender status", + "virtAsstTitleCGMTxAge": "CGM zender leeftijd", + "virtAsstTitleCGMNoise": "CGM ruis", + "virtAsstTitleDelta": "Bloedglucose delta", + "virtAsstStatus": "%1 en %2 sinds %3.", + "virtAsstBasal": "%1 huidig basaal is %2 eenheden per uur", + "virtAsstBasalTemp": "%1 tijdelijk basaal van %2 eenheden per uur zal eindigen %3", + "virtAsstIob": "en je hebt %1 insuline aan boord.", + "virtAsstIobIntent": "Je hebt %1 insuline aan boord", + "virtAsstIobUnits": "%1 eenheden van", + "virtAsstLaunch": "Wat wil je bekijken op Nightscout?", "virtAsstPreamble": "Jouw", "virtAsstPreamble3person": "%1 heeft een ", "virtAsstNoInsulin": "geen", "virtAsstUploadBattery": "De batterij van je mobiel is bij %l", "virtAsstReservoir": "Je hebt nog %l eenheden in je reservoir", "virtAsstPumpBattery": "Je pomp batterij is bij %1 %2", - "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstUploaderBattery": "Je uploader batterij is bij %1", "virtAsstLastLoop": "De meest recente goede loop was %1", "virtAsstLoopNotAvailable": "De Loop plugin is niet geactiveerd", "virtAsstLoopForecastAround": "Volgens de Loop voorspelling is je waarde around %1 over de volgnede %2", "virtAsstLoopForecastBetween": "Volgens de Loop voorspelling is je waarde between %1 and %2 over de volgnede %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", + "virtAsstAR2ForecastAround": "Volgens de AR2 voorspelling wordt verwacht dat u ongeveer op %1 zal zitten in de volgende %2", + "virtAsstAR2ForecastBetween": "Volgens de AR2 voorspelling wordt verwacht dat u ongeveer tussen %1 en %2 zal zitten in de volgende %3", "virtAsstForecastUnavailable": "Niet mogelijk om een voorspelling te doen met de data die beschikbaar is", "virtAsstRawBG": "Je raw bloedwaarde is %1", "virtAsstOpenAPSForecast": "OpenAPS uiteindelijke bloedglucose van %1", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstCob3person": "%1 heeft %2 koolhydraten aan boord", + "virtAsstCob": "Je hebt %1 koolhydraten aan boord", + "virtAsstCGMMode": "Uw CGM modus was %1 sinds %2.", + "virtAsstCGMStatus": "Uw CGM status was %1 sinds %2.", + "virtAsstCGMSessAge": "Uw CGM sessie is actief gedurende %1 dagen en %2 uur.", + "virtAsstCGMSessNotStarted": "Er is op dit moment geen actieve CGM-sessie.", + "virtAsstCGMTxStatus": "Uw CGM zender status was %1 sinds %2.", + "virtAsstCGMTxAge": "Uw CGM-zender is %1 dagen oud.", + "virtAsstCGMNoise": "Uw CGM-ruis was %1 sinds %2.", + "virtAsstCGMBattOne": "Uw CGM batterij was %1 volt sinds %2.", + "virtAsstCGMBattTwo": "Uw CGM batterijniveau was %1 volt en %2 volt sinds %3.", + "virtAsstDelta": "Je delta was %1 tussen %2 en %3.", + "virtAsstUnknownIntentTitle": "Onbekende Intentie", + "virtAsstUnknownIntentText": "Het spijt me, ik weet niet wat je bedoelt.", "Fat [g]": "Vet [g]", "Protein [g]": "Proteine [g]", "Energy [kJ]": "Energie [kJ]", @@ -624,9 +623,9 @@ "Color": "Kleur", "Simple": "Simpel", "TDD average": "Gemiddelde dagelijkse insuline (TDD)", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", + "Bolus average": "Gemiddelde bolus", + "Basal average": "Gemiddelde basaal", + "Base basal average:": "Basis basaal gemiddeld:", "Carbs average": "Gemiddelde koolhydraten per dag", "Eating Soon": "Pre-maaltijd modus", "Last entry {0} minutes ago": "Laatste waarde {0} minuten geleden", @@ -656,5 +655,5 @@ "Data size": "Datagrootte", "virtAsstDatabaseSize": "%1 MiB dat is %2% van de beschikbaare database ruimte", "virtAsstTitleDatabaseSize": "Database bestandsgrootte", - "Carbs/Food/Time": "Carbs/Food/Time" + "Carbs/Food/Time": "Koolhydraten/Voedsel/Tijd" } \ No newline at end of file diff --git a/translations/pl_PL.json b/translations/pl_PL.json index 4a569345962..e8ab1007edb 100644 --- a/translations/pl_PL.json +++ b/translations/pl_PL.json @@ -128,7 +128,7 @@ "Entered By": "Wprowadzono przez", "Delete this treatment?": "Usunąć te leczenie?", "Carbs Given": "Węglowodany spożyte", - "Inzulin Given": "Insulina podana", + "Insulin Given": "Podana insulina", "Event Time": "Czas zdarzenia", "Please verify that the data entered is correct": "Proszę sprawdzić, czy wprowadzone dane są prawidłowe", "BG": "BG", @@ -220,7 +220,6 @@ "Glucose Reading": "Odczyt glikemii", "Measurement Method": "Sposób pomiaru", "Meter": "Glukometr", - "Insulin Given": "Podana insulina", "Amount in grams": "Wartość w gramach", "Amount in units": "Wartość w jednostkach", "View all treatments": "Pokaż całość leczenia", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Obiekty - ludzie, urządzenia itp", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Każdy obiekt będzie miał unikalny token dostępu i jedną lub więcej ról. Kliknij token dostępu, aby otworzyć nowy widok z wybranym obiektem, ten tajny link może być następnie udostępniony", "Add new Subject": "Dodaj obiekt", - "Unable to %1 Subject": "Nie można %1 obiektu", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Nie można usunąć obiektu", "Database contains %1 subjects": "Baza danych zawiera %1 obiektów", "Edit Subject": "Edytuj obiekt", diff --git a/translations/pt_BR.json b/translations/pt_BR.json index 43238f7e185..6d71a516ddc 100644 --- a/translations/pt_BR.json +++ b/translations/pt_BR.json @@ -128,7 +128,7 @@ "Entered By": "Inserido por", "Delete this treatment?": "Apagar este procedimento?", "Carbs Given": "Carboidratos", - "Inzulin Given": "Insulina", + "Insulin Given": "Insulina", "Event Time": "Hora do evento", "Please verify that the data entered is correct": "Favor verificar se os dados estão corretos", "BG": "Glicemia", @@ -220,7 +220,6 @@ "Glucose Reading": "Valor de glicemia", "Measurement Method": "Método de medida", "Meter": "Glicosímetro", - "Insulin Given": "Insulina", "Amount in grams": "Quantidade em gramas", "Amount in units": "Quantidade em unidades", "View all treatments": "Visualizar todos os procedimentos", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Assunto - Pessoas, dispositivos, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Cada assunto terá um único token de acesso e uma ou mais Funções. Clique no token de acesso para abrir uma nova visualização com o assunto selecionado. Este link secreto poderá então ser compartilhado", "Add new Subject": "Adicionar novo assunto", - "Unable to %1 Subject": "Impossível postar %1 assunto", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Impossível apagar assunto", "Database contains %1 subjects": "Banco de dados contém %1 assuntos", "Edit Subject": "Editar assunto", diff --git a/translations/ro_RO.json b/translations/ro_RO.json index c67d9ce9f91..91d8ca029a1 100644 --- a/translations/ro_RO.json +++ b/translations/ro_RO.json @@ -128,7 +128,7 @@ "Entered By": "Introdus de", "Delete this treatment?": "Șterge acest eveniment?", "Carbs Given": "Carbohidrați", - "Inzulin Given": "Insulină administrată", + "Insulin Given": "Insulină administrată", "Event Time": "Ora evenimentului", "Please verify that the data entered is correct": "Verificați conexiunea datelor introduse", "BG": "Glicemie", @@ -220,7 +220,6 @@ "Glucose Reading": "Valoare glicemie", "Measurement Method": "Metodă măsurare", "Meter": "Glucometru", - "Insulin Given": "Insulină administrată", "Amount in grams": "Cantitate în grame", "Amount in units": "Cantitate în unități", "View all treatments": "Vezi toate evenimentele", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Subiecte - Persoane, dispozitive, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Fiecare subiect va avea o cheie unică de acces și unul sau mai multe roluri. Apăsați pe cheia de acces pentru a vizualiza subiectul selectat, acest link poate fi distribuit.", "Add new Subject": "Adaugă un Subiect nou", - "Unable to %1 Subject": "Imposibil de %1 Subiectul", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Imposibil de șters Subiectul", "Database contains %1 subjects": "Baza de date are %1 subiecți", "Edit Subject": "Editează Subiectul", diff --git a/translations/ru_RU.json b/translations/ru_RU.json index f09ce63573d..a91d97b7419 100644 --- a/translations/ru_RU.json +++ b/translations/ru_RU.json @@ -42,9 +42,9 @@ "Loading profile": "Загрузка профиля", "Loading status": "Загрузка состояния", "Loading food database": "Загрузка БД продуктов", - "not displayed": "Не показано", + "not displayed": "Не отображено", "Loading CGM data of": "Загрузка данных мониторинга", - "Loading treatments data of": "Загрузка данных лечения", + "Loading treatments data of": "Загрузка данных терапии", "Processing data of": "Обработка данных от", "Portion": "Порция", "Size": "Объем", @@ -128,7 +128,7 @@ "Entered By": "Внесено через", "Delete this treatment?": "Удалить это событие?", "Carbs Given": "Дано углеводов", - "Inzulin Given": "Дано инсулина", + "Insulin Given": "Введен инсулин", "Event Time": "Время события", "Please verify that the data entered is correct": "Проверьте правильность вводимых данных", "BG": "ГК", @@ -220,7 +220,6 @@ "Glucose Reading": "Значение ГК", "Measurement Method": "Способ замера", "Meter": "Глюкометр", - "Insulin Given": "Введен инсулин", "Amount in grams": "Количество в граммах", "Amount in units": "Количество в ед.", "View all treatments": "Показать все события", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Субъекты - Люди, устройства и т п", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Каждый субъект получает уникальный код доступа и 1 или более ролей. Нажмите на иконку кода доступа чтобы открыть новое окно с выбранным субъектом, эту секретную ссылку можно переслать.", "Add new Subject": "Добавить нового субъекта", - "Unable to %1 Subject": "Невозможно создать %1 субъект", + "Unable to %1 Subject": "Невозможно %1 Субъект", "Unable to delete Subject": "Невозможно удалить Субъект ", "Database contains %1 subjects": "База данных содержит %1 субъекта/ов", "Edit Subject": "Редактировать Субъект", @@ -545,7 +544,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Время флуктуаций и время быстрых флуктуаций означает % времени в рассматриваемый период в течение которого ГК менялась относительно быстро или просто быстро. Более низкие значения предпочтительней", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Усредненное ежедневное изменение это сумма абсолютных величин всех отклонений ГК в рассматриваемый период, деленная на количество дней. Меньшая величина предпочтительней", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Усредненное часовое изменение это сумма абсолютных величин всех отклонений ГК в рассматриваемый период, деленная на количество часов в этот период. Более низкое предпочтительней", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Среднее квадратичное вне диапазона рассчитывается путем возведения в квадрат дистанции замеров вне диапазона для всех значений гликемии за рассматриваемый период, их суммирования, деления на общее количество и извлечения квадратные корни. Эта методика схожа с расчётом процента значений в диапазоне, но значения за пределами диапазона оказываются весомее. Чем ниже значение, тем лучше.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">здесь.", "Mean Total Daily Change": "Усредненное изменение за день", @@ -572,12 +571,12 @@ "virtAsstTitleUploaderBattery": "Батарея загрузчика", "virtAsstTitleCurrentBG": "Актуальная ГК", "virtAsstTitleFullStatus": "Полная информация о статусе", - "virtAsstTitleCGMMode": "CGM Mode", - "virtAsstTitleCGMStatus": "CGM Status", - "virtAsstTitleCGMSessionAge": "CGM Session Age", - "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", - "virtAsstTitleCGMTxAge": "CGM Transmitter Age", - "virtAsstTitleCGMNoise": "CGM Noise", + "virtAsstTitleCGMMode": "Режим непрерывного мониторинга", + "virtAsstTitleCGMStatus": "Состояние непрерывного мониторинга", + "virtAsstTitleCGMSessionAge": "Сенсору", + "virtAsstTitleCGMTxStatus": "Состояние трансмиттера мониторинга", + "virtAsstTitleCGMTxAge": "Трансмиттеру", + "virtAsstTitleCGMNoise": "Фоновый шум мониторинга", "virtAsstTitleDelta": "Дельта ГК", "virtAsstStatus": "%1 и %2 начиная с %3.", "virtAsstBasal": "%1 текущий базал %2 ед в час", @@ -604,15 +603,15 @@ "virtAsstOpenAPSForecast": "OpenAPS прогнозирует ваш СК как %1 ", "virtAsstCob3person": "%1 имеет %2 активных углеводов", "virtAsstCob": "У вас %1 активных углеводов", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", + "virtAsstCGMMode": "Режим непрерывного мониторинга был %1 по состоянию на %2.", + "virtAsstCGMStatus": "Состояние непрерывного мониторинга было %1 по состоянию на %2.", + "virtAsstCGMSessAge": "Сессия мониторинга была активна %1 дн и %2 час.", + "virtAsstCGMSessNotStarted": "Сейчас нет активных сессий мониторинга.", + "virtAsstCGMTxStatus": "Состояние трансмиттера мониторинга было %1 по состоянию на %2.", + "virtAsstCGMTxAge": "Трансмиттеру мониторинга %1 дн.", + "virtAsstCGMNoise": "Зашумленность непрерывного мониторинга была %1 по состоянию на %2.", + "virtAsstCGMBattOne": "Батарея мониторинга была %1 вольт по состоянию на %2.", + "virtAsstCGMBattTwo": "Уровни заряда аккумулятора были %1 вольт и %2 вольт по состоянию на %3.", "virtAsstDelta": "Дельта была %1 между %2 и %3.", "virtAsstUnknownIntentTitle": "Неизвестное намерение", "virtAsstUnknownIntentText": "Ваш запрос непонятен", @@ -624,9 +623,9 @@ "Color": "цвет", "Simple": "простой", "TDD average": "средняя суточная доза инсулина", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", + "Bolus average": "Среднее значение болюсов", + "Basal average": "Среднее значение базала", + "Base basal average:": "Среднее значение базового базала:", "Carbs average": "среднее кол-во углеводов за сутки", "Eating Soon": "Ожидаемый прием пищи", "Last entry {0} minutes ago": "предыдущая запись {0} минут назад", @@ -648,13 +647,13 @@ "Total carbs": "Всего углеводов", "Total protein": "Всего белков", "Total fat": "Всего жиров", - "Database Size": "Database Size", - "Database Size near its limits!": "Database Size near its limits!", - "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", - "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" + "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": "Размер файла базы данных", + "%1 MiB of %2 MiB (%3%)": "%1 MiB из %2 MiB (%3%)", + "Data size": "Объем данных", + "virtAsstDatabaseSize": "%1 MiB Это %2% доступного места в базе данных.", + "virtAsstTitleDatabaseSize": "Размер файла базы данных", + "Carbs/Food/Time": "Углеводы/Еда/Время" } \ No newline at end of file diff --git a/translations/sl_SI.json b/translations/sl_SI.json index ddb380f7eca..1944948e0d9 100644 --- a/translations/sl_SI.json +++ b/translations/sl_SI.json @@ -128,7 +128,7 @@ "Entered By": "Zadal", "Delete this treatment?": "Vymazať toto ošetrenie?", "Carbs Given": "Sacharidov", - "Inzulin Given": "Inzulínu", + "Insulin Given": "Podaný inzulín", "Event Time": "Čas udalosti", "Please verify that the data entered is correct": "Prosím, skontrolujte správnosť zadaných údajov", "BG": "Glykémia", @@ -220,7 +220,6 @@ "Glucose Reading": "Hodnota glykémie", "Measurement Method": "Metóda merania", "Meter": "Glukomer", - "Insulin Given": "Podaný inzulín", "Amount in grams": "Množstvo v gramoch", "Amount in units": "Množstvo v jednotkách", "View all treatments": "Zobraziť všetky ošetrenia", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Subjekty - ľudia, zariadenia atď...", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Každý objekt má svoj unikátny prístupový token a 1 alebo viac rolí. Klikni na prístupový token pre otvorenie nového okna pre tento subjekt. Tento link je možné zdielať.", "Add new Subject": "Pridať nový subjekt", - "Unable to %1 Subject": "Chyba volania %1 subjektu", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Subjekt sa nedá odstrániť", "Database contains %1 subjects": "Databáza obsahuje %1 subjektov", "Edit Subject": "Editovať subjekt", diff --git a/translations/sv_SE.json b/translations/sv_SE.json index 741f2cbbe63..f831e39494b 100644 --- a/translations/sv_SE.json +++ b/translations/sv_SE.json @@ -128,7 +128,7 @@ "Entered By": "Inlagt av", "Delete this treatment?": "Ta bort händelse?", "Carbs Given": "Antal kolhydrater", - "Inzulin Given": "Insulin", + "Insulin Given": "Insulindos", "Event Time": "Klockslag", "Please verify that the data entered is correct": "Vänligen verifiera att inlagd data är korrekt", "BG": "BS", @@ -220,7 +220,6 @@ "Glucose Reading": "Glukosvärde", "Measurement Method": "Mätmetod", "Meter": "Mätare", - "Insulin Given": "Insulindos", "Amount in grams": "Antal gram", "Amount in units": "Antal enheter", "View all treatments": "Visa behandlingar", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Ämnen - Användare, Enheter, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Varje ämne får en unik säkerhetsnyckel och en eller flera roller. Klicka på accessnyckeln för att öppna en ny vy med det valda ämnet, denna hemliga länk kan sedan delas.", "Add new Subject": "Lägg till nytt ämne", - "Unable to %1 Subject": "Kan ej %1 ämne", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Kan ej ta bort ämne", "Database contains %1 subjects": "Databasen innehåller %1 ämnen", "Edit Subject": "Editera ämne", diff --git a/translations/tr_TR.json b/translations/tr_TR.json index 18507ce44b9..fdd161d1ba3 100644 --- a/translations/tr_TR.json +++ b/translations/tr_TR.json @@ -128,7 +128,7 @@ "Entered By": "Tarafından girildi", "Delete this treatment?": "Bu tedaviyi sil?", "Carbs Given": "Karbonhidrat Verilen", - "Inzulin Given": "İnsülin Verilen", + "Insulin Given": "Verilen İnsülin", "Event Time": "Etkinliğin zamanı", "Please verify that the data entered is correct": "Lütfen girilen verilerin doğru olduğunu kontrol edin.", "BG": "KŞ", @@ -220,7 +220,6 @@ "Glucose Reading": "Glikoz Değeri", "Measurement Method": "Ölçüm Metodu", "Meter": "Glikometre", - "Insulin Given": "Verilen İnsülin", "Amount in grams": "Gram cinsinden miktar", "Amount in units": "Birim miktarı", "View all treatments": "Tüm tedavileri görüntüle", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Konular - İnsanlar, Cihazlar, vb.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Her konu benzersiz bir erişim anahtarı ve bir veya daha fazla rol alır. Seçilen konuyla ilgili yeni bir görünüm elde etmek için erişim tuşuna tıklayın. Bu gizli bağlantı paylaşılabilinir.", "Add new Subject": "Yeni konu ekle", - "Unable to %1 Subject": "%1 konu yapılamıyor", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Konu silinemedi", "Database contains %1 subjects": "Veritabanı %1 konu içeriyor", "Edit Subject": "Konuyu düzenle", diff --git a/translations/zh_CN.json b/translations/zh_CN.json index 7d57690a4b8..8bf19a55697 100644 --- a/translations/zh_CN.json +++ b/translations/zh_CN.json @@ -128,7 +128,7 @@ "Entered By": "输入人", "Delete this treatment?": "删除这个操作?", "Carbs Given": "碳水化合物量", - "Inzulin Given": "胰岛素输注", + "Insulin Given": "胰岛素输注量", "Event Time": "事件时间", "Please verify that the data entered is correct": "请验证输入的数据是否正确", "BG": "血糖", @@ -220,7 +220,6 @@ "Glucose Reading": "血糖数值", "Measurement Method": "测量方法", "Meter": "血糖仪", - "Insulin Given": "胰岛素输注量", "Amount in grams": "总量(g)", "Amount in units": "总量(U)", "View all treatments": "查看所有操作", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "用户 - 人、设备等", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "每个用户具有唯一的访问令牌和一个或多个角色。在访问令牌上单击打开新窗口查看已选择用户,此时该链接可分享。", "Add new Subject": "添加新用户", - "Unable to %1 Subject": "%1用户不可用", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "无法删除用户", "Database contains %1 subjects": "数据库包含%1个用户", "Edit Subject": "编辑用户", diff --git a/translations/zh_TW.json b/translations/zh_TW.json index 5e32ca8520b..7aa950820f2 100644 --- a/translations/zh_TW.json +++ b/translations/zh_TW.json @@ -128,7 +128,7 @@ "Entered By": "Entered By", "Delete this treatment?": "Delete this treatment?", "Carbs Given": "Carbs Given", - "Inzulin Given": "Inzulin Given", + "Insulin Given": "Insulin Given", "Event Time": "Event Time", "Please verify that the data entered is correct": "Please verify that the data entered is correct", "BG": "BG", @@ -220,7 +220,6 @@ "Glucose Reading": "Glucose Reading", "Measurement Method": "Measurement Method", "Meter": "Meter", - "Insulin Given": "Insulin Given", "Amount in grams": "Amount in grams", "Amount in units": "Amount in units", "View all treatments": "View all treatments", @@ -435,7 +434,7 @@ "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", "Add new Subject": "Add new Subject", - "Unable to %1 Subject": "לא יכול ל %1 נושאי", + "Unable to %1 Subject": "Unable to %1 Subject", "Unable to delete Subject": "Unable to delete Subject", "Database contains %1 subjects": "Database contains %1 subjects", "Edit Subject": "Edit Subject", From 8367d004051a0e7e5d535e186649181f52936936 Mon Sep 17 00:00:00 2001 From: bjornoleh <63544115+bjornoleh@users.noreply.github.com> Date: Mon, 23 Nov 2020 11:13:37 +0100 Subject: [PATCH 028/194] Update CONTRIBUTING.md (#6540) regarding translation Co-authored-by: Sulka Haro --- CONTRIBUTING.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 64a239ec74f..97204edff44 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,7 +15,6 @@ - [List of Contributors](#list-of-contributors) - [Core developers, contributing developers, coordinators and documentation writers](#core-developers-contributing-developers-coordinators-and-documentation-writers) - [Plugin contributors](#plugin-contributors) - - [Translators](#translators) - [List of all contributors](#list-of-all-contributors) @@ -38,7 +37,7 @@ ## Translations -Please visit our [project in Crowdin](https://crowdin.com/project/nightscout) to translate Nigthscout. If you want to add a new language, please get in touch with the dev team in Gitter. +Please visit our [project in Crowdin](https://crowdin.com/project/nightscout) to translate Nigthscout. If you want to add a new language, please get in touch with the dev team in [Discord][discord-url]. ## Installation for development From 36809756d9b2d7a53e08d3afc40a4a512e005793 Mon Sep 17 00:00:00 2001 From: Caleb Date: Mon, 23 Nov 2020 03:15:00 -0700 Subject: [PATCH 029/194] Typo correction (#6558) --- docs/plugins/alexa-plugin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/alexa-plugin.md b/docs/plugins/alexa-plugin.md index 87117affd46..97f522ed632 100644 --- a/docs/plugins/alexa-plugin.md +++ b/docs/plugins/alexa-plugin.md @@ -88,7 +88,7 @@ If you use Authentication Roles, you will need to add a token to the end of your 1. In your Nightscout Admin Tools, add a new subject and give it the "readable" role. - If you **really** would like to be super specific, you could create a new role and set the permissions to `api:*:read`. 1. After the new subject is created, copy the "Access Token" value for the new row in your subject table (**don't** copy the link, just copy the text). -1. At the end of your Nighscout URL, add `?token={yourtoken}`, where `{yourtoken}` is the Access Token you just copied. Your new URL should look like `https://{yourdomain}/api/v1/googlehome?token={yourtoken}`. +1. At the end of your Nighscout URL, add `?token={yourtoken}`, where `{yourtoken}` is the Access Token you just copied. Your new URL should look like `https://{yourdomain}/api/v1/alexa?token={yourtoken}`. ### Test your skill out with the test tool From 4c12fe64740f2cb150a4ace83bacbaf20800a807 Mon Sep 17 00:00:00 2001 From: Michael Kroes Date: Mon, 23 Nov 2020 11:18:26 +0100 Subject: [PATCH 030/194] Increased the width of the inlinepiechart to fit the Dutch translated legend (#6539) --- lib/report_plugins/dailystats.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/report_plugins/dailystats.js b/lib/report_plugins/dailystats.js index 2f9fa77a24a..e1e2a4a3f26 100644 --- a/lib/report_plugins/dailystats.js +++ b/lib/report_plugins/dailystats.js @@ -29,7 +29,7 @@ dailystats.css = ' text-align:center;' + '}' + '#dailystats-placeholder .inlinepiechart {' + - ' width: 2.0in;' + + ' width: 2.2in;' + ' height: 0.9in;' + '}'; From 7a3b968e3a8e1d7fa8064bab702e51b6f7a4496f Mon Sep 17 00:00:00 2001 From: Lennart Goedhart Date: Mon, 30 Nov 2020 20:31:30 +1100 Subject: [PATCH 031/194] Refactor `mongo-storage.js` (#6589) * Refactor `mongo-storage.js` * Use async/await instead of promises * Fixes a bug in the previous implementation where a promise error was not being caught and handled * Code cleanup --- lib/storage/mongo-storage.js | 126 +++++++++++++++++------------------ 1 file changed, 60 insertions(+), 66 deletions(-) diff --git a/lib/storage/mongo-storage.js b/lib/storage/mongo-storage.js index 8c2533873c7..632f1cfa82e 100644 --- a/lib/storage/mongo-storage.js +++ b/lib/storage/mongo-storage.js @@ -1,18 +1,19 @@ 'use strict'; -var mongodb = require('mongodb'); -var connection = null; -var MongoClient = mongodb.MongoClient; -var mongo = {}; +const MongoClient = require('mongodb').MongoClient; -function init (env, cb, forceNewConnection) { +const mongo = { + client: null, + db: null, +}; - function maybe_connect (cb) { +function init(env, cb, forceNewConnection) { - if (connection != null && !forceNewConnection) { + function maybe_connect(cb) { + + if (mongo.db != null && !forceNewConnection) { console.log('Reusing MongoDB connection handler'); // If there is a valid callback, then return the Mongo-object - mongo.db = connection; if (cb && cb.call) { cb(null, mongo); @@ -23,61 +24,54 @@ function init (env, cb, forceNewConnection) { } console.log('Setting up new connection to MongoDB'); - var timeout = 30 * 1000; - var options = { - reconnectInterval: 10000 - , reconnectTries: 500 - , connectTimeoutMS: timeout - , socketTimeoutMS: timeout - , useNewUrlParser: true + const timeout = 10 * 1000; + const options = { + connectTimeoutMS: timeout, + socketTimeoutMS: timeout, + useNewUrlParser: true, + useUnifiedTopology: true, }; - var connect_with_retry = function(i) { - - MongoClient.connect(env.storageURI, options) - .then(client => { - console.log('Successfully established a connected to MongoDB'); - - var dbName = env.storageURI.split('/').pop().split('?'); - dbName = dbName[0]; // drop Connection Options - mongo.db = client.db(dbName); - connection = mongo.db; - mongo.client = client; - - mongo.db.command({ connectionStatus: 1 }).then( - result => { - const roles = result.authInfo.authenticatedUserRoles; - if (roles.length > 0 && roles[0].role == 'readAnyDatabase') { - console.error('Mongo user is read only'); - cb(new Error('MongoDB connection is in read only mode! Go back to MongoDB configuration and check your database user has read and write access.'), null); - } - - console.log('Mongo user role seems ok:', roles); - - // If there is a valid callback, then invoke the function to perform the callback - if (cb && cb.call) { - cb(null, mongo); - } - } - ); - }) - .catch(err => { - if (err.message && err.message.includes('AuthenticationFailed')) { - console.log('Authentication to Mongo failed'); - cb(new Error('MongoDB authentication failed! Double check the URL has the right username and password in MONGODB_URI.'), null); - return; - } - - if (err.name && err.name === "MongoNetworkError") { - var timeout = (i > 15) ? 60000 : i * 3000; - console.log('Error connecting to MongoDB: %j - retrying in ' + timeout / 1000 + ' sec', err); - setTimeout(connect_with_retry, timeout, i + 1); - if (i == 1) cb(new Error('MongoDB connection failed! Double check the MONGODB_URI setting in Heroku.'), null); - } else { - cb(new Error('MONGODB_URI ' + env.storageURI + ' seems invalid: ' + err.message)); - } - }); - + const connect_with_retry = async function (i) { + + mongo.client = new MongoClient(env.storageURI, options); + try { + await mongo.client.connect(); + + console.log('Successfully established a connected to MongoDB'); + + const dbName = mongo.client.s.options.dbName; + mongo.db = mongo.client.db(dbName); + + const result = await mongo.db.command({ connectionStatus: 1 }); + const roles = result.authInfo.authenticatedUserRoles; + if (roles.length > 0 && roles[0].role == 'readAnyDatabase') { + console.error('Mongo user is read only'); + cb(new Error('MongoDB connection is in read only mode! Go back to MongoDB configuration and check your database user has read and write access.'), null); + } + + console.log('Mongo user role seems ok:', roles); + + // If there is a valid callback, then invoke the function to perform the callback + if (cb && cb.call) { + cb(null, mongo); + } + } catch (err) { + if (err.message && err.message.includes('AuthenticationFailed')) { + console.log('Authentication to Mongo failed'); + cb(new Error('MongoDB authentication failed! Double check the URL has the right username and password in MONGODB_URI.'), null); + return; + } + + if (err.name && err.name === "MongoServerSelectionError") { + const timeout = (i > 15) ? 60000 : i * 3000; + console.log('Error connecting to MongoDB: %j - retrying in ' + timeout / 1000 + ' sec', err); + setTimeout(connect_with_retry, timeout, i + 1); + if (i == 1) cb(new Error('MongoDB connection failed! Double check the MONGODB_URI setting in Heroku.'), null); + } else { + cb(new Error('MONGODB_URI ' + env.storageURI + ' seems invalid: ' + err.message)); + } + } }; return connect_with_retry(1); @@ -85,14 +79,14 @@ function init (env, cb, forceNewConnection) { } } - mongo.collection = function get_collection (name) { - return connection.collection(name); + mongo.collection = function get_collection(name) { + return mongo.db.collection(name); }; - mongo.ensureIndexes = function ensureIndexes (collection, fields) { - fields.forEach(function(field) { + mongo.ensureIndexes = function ensureIndexes(collection, fields) { + fields.forEach(function (field) { console.info('ensuring index for: ' + field); - collection.createIndex(field, { 'background': true }, function(err) { + collection.createIndex(field, { 'background': true }, function (err) { if (err) { console.error('unable to ensureIndex for: ' + field + ' - ' + err); } From d0cf72af5ec5cbb6dcdb85b43aa38a406afa572f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 8 Dec 2020 12:12:08 +0200 Subject: [PATCH 032/194] Fixes the color changes based on BG target preferences in the clock views (#6592) --- lib/client/clock-client.js | 5 ++--- lib/plugins/bgnow.js | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/client/clock-client.js b/lib/client/clock-client.js index 73ac9c3baca..5872b67fb85 100644 --- a/lib/client/clock-client.js +++ b/lib/client/clock-client.js @@ -4,8 +4,6 @@ var browserSettings = require('./browser-settings'); var client = {}; var latestProperties = {}; -client.settings = browserSettings(client, window.serverSettings, $); - client.query = function query () { var parts = (location.search || '?').substring(1).split('&'); var token = ''; @@ -101,7 +99,6 @@ client.render = function render () { } } - // Convert BG to mmol/L if necessary. let displayValue = rec.scaled; // Insert the delta value text. @@ -202,7 +199,9 @@ function updateClock () { } client.init = function init () { + console.log('Initializing clock'); + client.settings = browserSettings(client, window.serverSettings, $); client.query(); setInterval(client.query, 20 * 1000); // update every 20 seconds diff --git a/lib/plugins/bgnow.js b/lib/plugins/bgnow.js index f3d835788bf..b57796d10f2 100644 --- a/lib/plugins/bgnow.js +++ b/lib/plugins/bgnow.js @@ -85,6 +85,7 @@ function init (ctx) { }); if (bucket) { + sbx.scaleEntry(sgv); bucket.sgvs.push(sgv); } From 512139e5e0af65b8b8532a6ea97cb76e1b4ebb4a Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Wed, 9 Dec 2020 14:54:48 +0200 Subject: [PATCH 033/194] Added some boot logging & allow booting using Node 14 LTS --- lib/server/bootevent.js | 51 +++++++++++++++++++++++++++++++++++------ server.js | 3 +++ 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/lib/server/bootevent.js b/lib/server/bootevent.js index ff4e9110f00..55376f7c578 100644 --- a/lib/server/bootevent.js +++ b/lib/server/bootevent.js @@ -7,6 +7,9 @@ var UPDATE_THROTTLE = 5000; function boot (env, language) { function startBoot(ctx, next) { + + console.log('Executing startBoot'); + ctx.runtimeState = 'booting'; next(); } @@ -27,25 +30,31 @@ function boot (env, language) { // >= 12.6.0 does work, not recommended, will not be supported. We only support Node LTS releases /////////////////////////////////////////////////// function checkNodeVersion (ctx, next) { + + console.log('Executing checkNodeVersion'); + var semver = require('semver'); var nodeVersion = process.version; const isLTS = process.release.lts ? true : false; - - if (!isLTS) { - console.log( 'ERROR: Node version ' + nodeVersion + ' is not supported. Please use a secure LTS version or upgrade your Node'); - process.exit(1); - } - - if (semver.satisfies(nodeVersion, '^12.0.0') || semver.satisfies(nodeVersion, '^10.0.0')) { + + if (isLTS && (semver.satisfies(nodeVersion, '^14.0.0') || semver.satisfies(nodeVersion, '^12.0.0') || semver.satisfies(nodeVersion, '^10.0.0'))) { //Latest Node 10 LTS and Node 12 LTS are recommended and supported. //Require at least Node 8 LTS and Node 10 LTS without known security issues console.debug('Node LTS version ' + nodeVersion + ' is supported'); next(); + return; } + + console.log( 'ERROR: Node version ' + nodeVersion + ' is not supported. Please use a secure LTS version or upgrade your Node'); + process.exit(1); + } function checkEnv (ctx, next) { + + console.log('Executing checkEnv'); + ctx.language = language; if (env.err) { ctx.bootErrors = ctx.bootErrors || [ ]; @@ -59,6 +68,9 @@ function boot (env, language) { } function augmentSettings (ctx, next) { + + console.log('Executing augmentSettings'); + var configURL = env.IMPORT_CONFIG || null; var url = require('url'); var href = null; @@ -93,6 +105,8 @@ function boot (env, language) { function checkSettings (ctx, next) { + console.log('Executing checkSettings'); + ctx.bootErrors = ctx.bootErrors || []; console.log('Checking settings'); @@ -112,6 +126,8 @@ function boot (env, language) { function setupStorage (ctx, next) { + console.log('Executing setupStorage'); + if (hasBootErrors(ctx)) { return next(); } @@ -149,6 +165,9 @@ function boot (env, language) { } function setupAuthorization (ctx, next) { + + console.log('Executing setupAuthorization'); + if (hasBootErrors(ctx)) { return next(); } @@ -164,6 +183,9 @@ function boot (env, language) { } function setupInternals (ctx, next) { + + console.log('Executing setupInternals'); + if (hasBootErrors(ctx)) { return next(); } @@ -214,6 +236,9 @@ function boot (env, language) { } function ensureIndexes (ctx, next) { + + console.log('Executing ensureIndexes'); + if (hasBootErrors(ctx)) { return next(); } @@ -230,6 +255,9 @@ function boot (env, language) { } function setupListeners (ctx, next) { + + console.log('Executing setupListeners'); + if (hasBootErrors(ctx)) { return next(); } @@ -270,6 +298,9 @@ function boot (env, language) { } function setupBridge (ctx, next) { + + console.log('Executing setupBridge'); + if (hasBootErrors(ctx)) { return next(); } @@ -282,6 +313,9 @@ function boot (env, language) { } function setupMMConnect (ctx, next) { + + console.log('Executing setupMMConnect'); + if (hasBootErrors(ctx)) { return next(); } @@ -294,6 +328,9 @@ function boot (env, language) { } function finishBoot (ctx, next) { + + console.log('Executing finishBoot'); + if (hasBootErrors(ctx)) { return next(); } diff --git a/server.js b/server.js index 6c3b7bb87d5..56ce2b2d894 100644 --- a/server.js +++ b/server.js @@ -48,6 +48,9 @@ function create (app) { } require('./lib/server/bootevent')(env, language).boot(function booted (ctx) { + + console.log('Boot event processing completed'); + var app = require('./app')(env, ctx); var server = create(app).listen(PORT, HOSTNAME); console.log(translate('Listening on port'), PORT, HOSTNAME); From bc0f8170bb00eca71293ce7e91d2de5310816808 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Wed, 9 Dec 2020 19:57:22 +0200 Subject: [PATCH 034/194] * Fix a bug with reloading while the server is starting * Workaround for the plugins being re-executed multiple times in rapid succession during site load, causing timing issues --- lib/client/index.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/client/index.js b/lib/client/index.js index 4b3ef9e5a1b..75719976261 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -67,7 +67,7 @@ client.init = function init (callback) { if (serverSettings.runtimeState !== 'loaded') { console.log('Server is still loading data'); $('#loadingMessageText').html('Server is starting and still loading data, retrying load in 5 seconds'); - window.setTimeout(window.Nightscout.client.init(), 5000); + window.setTimeout(window.Nightscout.client.init, 5000); return; } client.settingsFailed = false; @@ -169,6 +169,8 @@ client.load = function load (serverSettings, callback) { }; client.now = Date.now(); + client.dataLastUpdated = 0; + client.lastPluginUpdateTime = 0; client.ddata = require('../data/ddata')(); client.defaultForecastTime = times.mins(30).msecs; client.forecastTime = client.now + client.defaultForecastTime; @@ -538,6 +540,13 @@ client.load = function load (serverSettings, callback) { function updatePlugins (time) { + if (time > client.lastPluginUpdateTime && time > client.dataLastUpdated) { + if ((time - client.lastPluginUpdateTime) < 1000) { + return; // Don't update the plugins more than once a second + } + client.lastPluginUpdateTime = time; + } + //TODO: doing a clone was slow, but ok to let plugins muck with data? //var ddata = client.ddata.clone(); @@ -1261,6 +1270,8 @@ client.load = function load (serverSettings, callback) { console.info('got dataUpdate', new Date(client.now)); var lastUpdated = Date.now(); + client.dataLastUpdated = lastUpdated; + receiveDData(received, client.ddata, client.settings); // Resend new treatments to profile From f02b8d9bc2951a78f58dcb9cba32a992cae35320 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 10 Dec 2020 17:27:30 +0200 Subject: [PATCH 035/194] Fix timing issue with a test using async, causing tests to randomly fail --- tests/api3.create.test.js | 47 +++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/tests/api3.create.test.js b/tests/api3.create.test.js index 5ea3ab1a869..22c88d3d16d 100644 --- a/tests/api3.create.test.js +++ b/tests/api3.create.test.js @@ -374,29 +374,32 @@ describe('API3 CREATE', function() { }); delete doc.identifier; - self.instance.ctx.treatments.create([doc], async (err) => { // let's insert the document in APIv1's way - should.not.exist(err); - - let oldBody = await self.get(doc._id); - delete doc._id; // APIv1 updates input document, we must get rid of _id for the next round - oldBody.should.containEql(doc); - - const doc2 = Object.assign({}, doc, { - eventType: 'Meal Bolus', - insulin: 0.4, - identifier: utils.randomString('32', 'aA#') + let p = await new Promise(function(resolve, reject) { + self.instance.ctx.treatments.create([doc], async (err) => { // let's insert the document in APIv1's way + should.not.exist(err); + + let oldBody = await self.get(doc._id); + delete doc._id; // APIv1 updates input document, we must get rid of _id for the next round + oldBody.should.containEql(doc); + + const doc2 = Object.assign({}, doc, { + eventType: 'Meal Bolus', + insulin: 0.4, + identifier: utils.randomString('32', 'aA#') + }); + + await self.instance.post(`${self.url}?token=${self.token.all}`) + .send(doc2) + .expect(201); + + let updatedBody = await self.get(doc2.identifier); + updatedBody.should.containEql(doc2); + updatedBody.identifier.should.not.equal(oldBody.identifier); + + await self.delete(doc2.identifier); + await self.delete(oldBody.identifier); + resolve('Done!'); }); - - await self.instance.post(`${self.url}?token=${self.token.all}`) - .send(doc2) - .expect(201); - - let updatedBody = await self.get(doc2.identifier); - updatedBody.should.containEql(doc2); - updatedBody.identifier.should.not.equal(oldBody.identifier); - - await self.delete(doc2.identifier); - await self.delete(oldBody.identifier); }); }); From 7fe8e32152a150235bfb68858a9a0be1133401fe Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Fri, 11 Dec 2020 00:23:25 +0200 Subject: [PATCH 036/194] Refactor core auth (#6596) * Auth resolve now supports async/await * Read only tokens can be used for authentication and the UI shows privileges for these accounts correctly * Failed attempt at authenticating an API_SECRET or token delays subsequent auth attempt by 5000 ms --- lib/api/status.js | 6 +- lib/api/verifyauth.js | 21 ++- lib/api3/security.js | 6 +- lib/authorization/delaylist.js | 58 ++++++ lib/authorization/index.js | 336 +++++++++++++++++---------------- lib/{ => client}/hashauth.js | 128 +++++++------ lib/client/index.js | 29 ++- lib/server/websocket.js | 7 +- tests/admintools.test.js | 2 +- tests/api.unauthorized.test.js | 2 + tests/api.verifyauth.test.js | 3 + tests/careportal.test.js | 2 +- tests/hashauth.test.js | 10 +- tests/profileeditor.test.js | 2 +- tests/reports.test.js | 4 +- tests/verifyauth.test.js | 65 ++++++- translations/en/en.json | 5 + views/index.html | 6 +- 18 files changed, 430 insertions(+), 262 deletions(-) create mode 100644 lib/authorization/delaylist.js rename lib/{ => client}/hashauth.js (59%) diff --git a/lib/api/status.js b/lib/api/status.js index 56196114a07..b1a15952970 100644 --- a/lib/api/status.js +++ b/lib/api/status.js @@ -20,6 +20,10 @@ function configure (app, wares, env, ctx) { var authToken = req.query.token || req.query.secret || ''; + function getRemoteIP (req) { + return req.headers['x-forwarded-for'] || req.connection.remoteAddress; + } + var date = new Date(); var info = { status: 'ok' , name: app.get('name') @@ -31,7 +35,7 @@ function configure (app, wares, env, ctx) { , boluscalcEnabled: app.enabled('api') && env.settings.enable.indexOf('boluscalc') > -1 , settings: settings , extendedSettings: extended - , authorized: ctx.authorization.authorize(authToken) + , authorized: ctx.authorization.authorize(authToken, getRemoteIP(req)) , runtimeState: ctx.runtimeState }; diff --git a/lib/api/verifyauth.js b/lib/api/verifyauth.js index a4eb2edf4ee..849ce9bef9a 100644 --- a/lib/api/verifyauth.js +++ b/lib/api/verifyauth.js @@ -8,15 +8,24 @@ function configure (ctx) { api.get('/verifyauth', function(req, res) { ctx.authorization.resolveWithRequest(req, function resolved (err, result) { - // this is used to see if req has api-secret equivalent authorization - var authorized = !err && - ctx.authorization.checkMultiple('*:*:create,update,delete', result.shiros) && //can write to everything - ctx.authorization.checkMultiple('admin:*:*:*', result.shiros); //full admin permissions too + var canRead = !err && + ctx.authorization.checkMultiple('*:*:read', result.shiros); + var canWrite = !err && + ctx.authorization.checkMultiple('*:*:write', result.shiros); + var isAdmin = !err && + ctx.authorization.checkMultiple('*:*:admin', result.shiros); + var authorized = canRead && !result.defaults; + var response = { + canRead, + canWrite, + isAdmin, message: authorized ? 'OK' : 'UNAUTHORIZED', - rolefound: result.subject ? 'FOUND' : 'NOTFOUND' - } + rolefound: result.subject ? 'FOUND' : 'NOTFOUND', + permissions: result.defaults ? 'DEFAULT' : 'ROLE' + }; + res.sendJSONStatus(res, consts.HTTP_OK, response); }); diff --git a/lib/api3/security.js b/lib/api3/security.js index 33099d88f12..1488a0ee3b8 100644 --- a/lib/api3/security.js +++ b/lib/api3/security.js @@ -9,6 +9,10 @@ const moment = require('moment') ; +function getRemoteIP (req) { + return req.headers['x-forwarded-for'] || req.connection.remoteAddress; +} + /** * Check if Date header in HTTP request (or 'now' query parameter) is present and valid (with error response sending) */ @@ -68,7 +72,7 @@ function authenticate (opCtx) { opTools.sendJSONStatus(res, apiConst.HTTP.UNAUTHORIZED, apiConst.MSG.HTTP_401_MISSING_OR_BAD_TOKEN)); } - ctx.authorization.resolve({ token }, function resolveFinish (err, result) { + ctx.authorization.resolve({ token, ip: getRemoteIP(req) }, function resolveFinish (err, result) { if (err) { return reject( opTools.sendJSONStatus(res, apiConst.HTTP.UNAUTHORIZED, apiConst.MSG.HTTP_401_BAD_TOKEN)); diff --git a/lib/authorization/delaylist.js b/lib/authorization/delaylist.js new file mode 100644 index 00000000000..cfc0509e6ab --- /dev/null +++ b/lib/authorization/delaylist.js @@ -0,0 +1,58 @@ +'use strict'; + +function init () { + + const ipDelayList = {}; + + const DELAY_ON_FAIL = 5000; + const FAIL_AGE = 60000; + + const sleep = require('util').promisify(setTimeout); + + ipDelayList.addFailedRequest = function addFailedRequest (ip) { + const ipString = String(ip); + let entry = ipDelayList[ipString]; + const now = Date.now(); + if (!entry) { + ipDelayList[ipString] = now + DELAY_ON_FAIL; + return; + } + if (now >= entry) { entry = now; } + ipDelayList[ipString] = entry + DELAY_ON_FAIL; + }; + + ipDelayList.shouldDelayRequest = function shouldDelayRequest (ip) { + const ipString = String(ip); + const entry = ipDelayList[ipString]; + let now = Date.now(); + if (entry) { + if (now < entry) { + return entry - now; + } + } + return false; + }; + + ipDelayList.requestSucceeded = function requestSucceeded (ip) { + const ipString = String(ip); + if (ipDelayList[ipString]) { + delete ipDelayList[ipString]; + } + }; + + // Clear items older than a minute + + setTimeout(function clearList () { + for (var key in ipDelayList) { + if (ipDelayList.hasOwnProperty(key)) { + if (Date.now() > ipDelayList[key] + FAIL_AGE) { + delete ipDelayList[key]; + } + } + } + }, 30000); + + return ipDelayList; +} + +module.exports = init; diff --git a/lib/authorization/index.js b/lib/authorization/index.js index b81578e0dca..0f5fe138287 100644 --- a/lib/authorization/index.js +++ b/lib/authorization/index.js @@ -1,96 +1,85 @@ 'use strict'; -var _ = require('lodash'); -var jwt = require('jsonwebtoken'); -var shiroTrie = require('shiro-trie'); - -var consts = require('./../constants'); - -var log_green = '\x1B[32m'; -var log_red = '\x1b[31m'; -var log_reset = '\x1B[0m'; -var LOG_GRANTED = log_green + 'GRANTED: ' + log_reset; -var LOG_DENIED = log_red + 'DENIED: ' + log_reset; - -function mkopts (opts) { - var options = opts && !_.isEmpty(opts) ? opts : { }; - if (!options.redirectDeniedURL) { - options.redirectDeniedURL = null; - } - return options; -} +const _ = require('lodash'); +const jwt = require('jsonwebtoken'); +const shiroTrie = require('shiro-trie'); + +const ipdelaylist = require('./delaylist')(); +const consts = require('./../constants'); + +const sleep = require('util').promisify(setTimeout); + +const addFailedRequest = ipdelaylist.addFailedRequest; +const shouldDelayRequest = ipdelaylist.shouldDelayRequest; +const requestSucceeded = ipdelaylist.requestSucceeded; function getRemoteIP (req) { return req.headers['x-forwarded-for'] || req.connection.remoteAddress; } function init (env, ctx) { - var authorization = { }; + var authorization = {}; var storage = authorization.storage = require('./storage')(env, ctx); var defaultRoles = (env.settings.authDefaultRoles || '').split(/[, :]/); - function extractToken (req) { - var token; - var authorization = req.header('Authorization'); + /** + * Loads JWT from request + * + * @param {*} req + */ + function extractJWTfromRequest (req) { + + if (req.auth_token) return req.auth_token; - if (authorization) { - var parts = authorization.split(' '); + let token; + + if (req.header('Authorization')) { + const parts = req.header('Authorization').split(' '); if (parts.length === 2 && parts[0] === 'Bearer') { token = parts[1]; } } - if (!token && req.auth_token) { - token = req.auth_token; - } - if (!token) { - token = authorizeAccessToken(req); - } + let accessToken = req.query.token; + if (!accessToken && req.body) { + if (_.isArray(req.body) && req.body.length > 0 && req.body[0].token) { + accessToken = req.body[0].token; + delete req.body[0].token; + } else if (req.body.token) { + accessToken = req.body.token; + delete req.body.token; + } + } - if (token) { - req.auth_token = token; + if (accessToken) { + // validate and parse the token + const authed = authorization.authorize(accessToken); + if (authed && authed.token) { + token = authed.token; + } + } } + if (token) { req.auth_token = token; } + return token; } - authorization.extractToken = extractToken; - - function authorizeAccessToken (req) { + authorization.extractToken = extractJWTfromRequest; - var accessToken = req.query.token; - - if (!accessToken && req.body) { - if (_.isArray(req.body) && req.body.length > 0 && req.body[0].token) { - accessToken = req.body[0].token; - delete req.body[0].token; - } else if (req.body.token) { - accessToken = req.body.token; - delete req.body.token; - } - } + /** + * Fetches the API_SECRET from the request + * + * @param {*} req Express request object + */ + function apiSecretFromRequest (req) { - var authToken = null; + if (req.api_secret) return req.api_secret; - if (accessToken) { - // make an auth token on the fly, based on an access token - var authed = authorization.authorize(accessToken); - if (authed && authed.token) { - authToken = authed.token; - } - } + let secret = req.query && req.query.secret ? req.query.secret : req.header('api-secret'); - return authToken; - } - - function adminSecretFromRequest (req) { - var secret = req.query && req.query.secret ? req.query.secret : req.header('api-secret'); - - if (!secret && req.api_secret) { - //see if we already got the secret from the body, since it gets deleted - secret = req.api_secret; - } else if (!secret && req.body) { + if (!secret && req.body) { // try to get the secret from the body, but don't leave it there if (_.isArray(req.body) && req.body.length > 0 && req.body[0].secret) { secret = req.body[0].secret; @@ -101,71 +90,125 @@ function init (env, ctx) { } } - if (secret) { - // store the secret hash on the request since the req may get processed again - req.api_secret = secret; - } - + // store the secret hash on the request since the req may get processed again + if (secret) { req.api_secret = secret; } return secret; } - function authorizeAdminSecretWithRequest (req) { - return authorizeAdminSecret(adminSecretFromRequest(req)); - } - function authorizeAdminSecret (secret) { return (env.api_secret && env.api_secret.length > 12) ? (secret === env.api_secret) : false; } - authorization.seenPermissions = [ ]; + authorization.seenPermissions = []; - authorization.expandedPermissions = function expandedPermissions ( ) { + authorization.expandedPermissions = function expandedPermissions () { var permissions = shiroTrie.new(); permissions.add(authorization.seenPermissions); return permissions; }; authorization.resolveWithRequest = function resolveWithRequest (req, callback) { - authorization.resolve({ - api_secret: adminSecretFromRequest(req) - , token: extractToken(req) - }, callback); + const resolveData = { + api_secret: apiSecretFromRequest(req) + , token: extractJWTfromRequest(req) + , ip: getRemoteIP(req) + }; + authorization.resolve(resolveData, callback); }; - authorization.checkMultiple = function checkMultiple(permission, shiros) { + /** + * Check if the Apache Shiro-style permission object includes the permission. + * + * Returns a boolean true / false depending on if the permission is found. + * + * @param {*} permission Desired permission + * @param {*} shiros Shiros + */ + + authorization.checkMultiple = function checkMultiple (permission, shiros) { var found = _.find(shiros, function checkEach (shiro) { return shiro && shiro.check(permission); }); return _.isObject(found); }; - authorization.resolve = function resolve (data, callback) { + /** + * Resolve an API secret or token and return the permissions associated with + * the secret / token + * + * @param {*} data + * @param {*} callback + */ + authorization.resolve = async function resolve (data, callback) { + + if (!data.ip) { + console.error('Trying to authorize without IP information'); + return callback(null, { shiros: [] }); + } + + data.api_secret = data.api_secret || null; + + if (data.api_secret == 'null') { // TODO find what's sending this anomaly + data.api_secret = null; + } - var defaultShiros = storage.rolesToShiros(defaultRoles); + const requestDelay = shouldDelayRequest(data.ip); - if (storage.doesAccessTokenExist(data.api_secret)) { - authorization.resolveAccessToken (data.api_secret, callback, defaultShiros); - return; + if (requestDelay) { + await sleep(requestDelay); } - if (authorizeAdminSecret(data.api_secret)) { + const authAttempted = (data.api_secret || data.token) ? true : false; + const defaultShiros = storage.rolesToShiros(defaultRoles); + + // If there is no token or secret, return default permissions + if (!authAttempted) { + const result = { shiros: defaultShiros, defaults: true }; + if (callback) { callback(null, result); } + return result; + } + + // Check for API_SECRET first as that allows bailing out fast + + if (data.api_secret && authorizeAdminSecret(data.api_secret)) { + requestSucceeded(data.ip); var admin = shiroTrie.new(); admin.add(['*']); - return callback(null, { shiros: [ admin ] }); + const result = { shiros: [admin] }; + if (callback) { callback(null, result); } + return result; } - if (data.token) { - jwt.verify(data.token, env.api_secret, function result(err, verified) { - if (err) { - return callback(err, { shiros: [ ] }); - } else { - authorization.resolveAccessToken (verified.accessToken, callback, defaultShiros); - } - }); - } else { - return callback(null, { shiros: defaultShiros }); + // If we reach this point, we must be dealing with a role based token + + let token = null; + + // Tokens have to be well formed JWTs + try { + const verified = await jwt.verify(data.token, env.api_secret); + token = verified.accessToken; + } catch (err) {} + + // Check if there's a token in the secret + + if (!token && data.api_secret) { + if (storage.doesAccessTokenExist(data.api_secret)) { + token = data.api_secret; + } } + if (token) { + requestSucceeded(data.ip); + const results = authorization.resolveAccessToken(token, null, defaultShiros); + if (callback) { callback(null, results); } + return results; + } + + console.error('Resolving secret/token to permissions failed'); + addFailedRequest(data.ip); + callback('All validation failed', {}); + return {}; + }; authorization.resolveAccessToken = function resolveAccessToken (accessToken, callback, defaultShiros) { @@ -176,94 +219,67 @@ function init (env, ctx) { let resolved = storage.resolveSubjectAndPermissions(accessToken); if (!resolved || !resolved.subject) { - return callback('Subject not found', null); + if (callback) { callback('Subject not found', null); } + return null; } let shiros = resolved.shiros.concat(defaultShiros); - return callback(null, { shiros: shiros, subject: resolved.subject }); + const result = { shiros, subject: resolved.subject }; + if (callback) { callback(null, result); } + return result; }; - authorization.isPermitted = function isPermitted (permission, opts) { - + /** + * Check if the client has a permission execute an action, + * based on an API_SECRET or JWT in the request. + * + * Used to authorize API calls + * + * @param {*} permission Permission being checked + */ + authorization.isPermitted = function isPermitted (permission) { - mkopts(opts); authorization.seenPermissions = _.chain(authorization.seenPermissions) .push(permission) .sort() .uniq() .value(); - function check(req, res, next) { + async function check (req, res, next) { var remoteIP = getRemoteIP(req); + var secret = apiSecretFromRequest(req); + var token = extractJWTfromRequest(req); - var secret = adminSecretFromRequest(req); - var defaultShiros = storage.rolesToShiros(defaultRoles); - - if (storage.doesAccessTokenExist(secret)) { - var resolved = storage.resolveSubjectAndPermissions (secret); - - if (authorization.checkMultiple(permission, resolved.shiros)) { - console.log(LOG_GRANTED, remoteIP, resolved.accessToken , permission); - next(); - } else if (authorization.checkMultiple(permission, defaultShiros)) { - console.log(LOG_GRANTED, remoteIP, resolved.accessToken, permission, 'default'); - next( ); - } else { - console.log(LOG_DENIED, remoteIP, resolved.accessToken, permission); - res.sendJSONStatus(res, consts.HTTP_UNAUTHORIZED, 'Unauthorized', 'Invalid/Missing'); - } - return; - } + const data = { api_secret: secret, token, ip: remoteIP }; - if (authorizeAdminSecretWithRequest(req)) { - console.log(LOG_GRANTED, remoteIP, 'api-secret', permission); - next( ); - return; - } + const permissions = await authorization.resolve(data); + const permitted = authorization.checkMultiple(permission, permissions.shiros); - var token = extractToken(req); - - if (token) { - jwt.verify(token, env.api_secret, function result(err, verified) { - if (err) { - console.info('Error verifying Authorized Token', err); - res.status(consts.HTTP_UNAUTHORIZED).send('Unauthorized - Invalid/Missing'); - } else { - var resolved = storage.resolveSubjectAndPermissions(verified.accessToken); - if (authorization.checkMultiple(permission, resolved.shiros)) { - console.log(LOG_GRANTED, remoteIP, verified.accessToken , permission); - next(); - } else if (authorization.checkMultiple(permission, defaultShiros)) { - console.log(LOG_GRANTED, remoteIP, verified.accessToken, permission, 'default'); - next( ); - } else { - console.log(LOG_DENIED, remoteIP, verified.accessToken, permission); - res.sendJSONStatus(res, consts.HTTP_UNAUTHORIZED, 'Unauthorized', 'Invalid/Missing'); - } - } - }); - } else { - if (authorization.checkMultiple(permission, defaultShiros)) { - console.log(LOG_GRANTED, remoteIP, 'no-token', permission, 'default'); - return next( ); - } - console.log(LOG_DENIED, remoteIP, 'no-token', permission); - res.sendJSONStatus(res, consts.HTTP_UNAUTHORIZED, 'Unauthorized', 'Invalid/Missing'); + if (permitted) { + next(); + return; } + res.sendJSONStatus(res, consts.HTTP_UNAUTHORIZED, 'Unauthorized', 'Invalid/Missing'); } return check; + }; + /** + * Generates a JWT based on an access token / authorizes an existing token + * + * @param {*} accessToken token to be used for generating a JWT for the client + */ authorization.authorize = function authorize (accessToken) { - var subject = storage.findSubject(accessToken); + var subject = storage.findSubject(accessToken); var authorized = null; if (subject) { - var token = jwt.sign( { accessToken: subject.accessToken }, env.api_secret, { expiresIn: '1h' } ); + var token = jwt.sign({ accessToken: subject.accessToken }, env.api_secret, { expiresIn: '1h' }); //decode so we can tell the client the issued and expired times var decoded = jwt.decode(token); @@ -271,10 +287,10 @@ function init (env, ctx) { var roles = _.uniq(subject.roles.concat(defaultRoles)); authorized = { - token: token + token , sub: subject.name - // not sending roles to client to prevent us from treating them as magic - // instead group permissions by role so the we can create correct shiros on the client + // not sending roles to client to prevent us from treating them as magic + // instead group permissions by role so the we can create correct shiros on the client , permissionGroups: _.map(roles, storage.roleToPermissions) , iat: decoded.iat , exp: decoded.exp diff --git a/lib/hashauth.js b/lib/client/hashauth.js similarity index 59% rename from lib/hashauth.js rename to lib/client/hashauth.js index 8848ca08ef0..6a2def96b31 100644 --- a/lib/hashauth.js +++ b/lib/client/hashauth.js @@ -4,21 +4,22 @@ var crypto = require('crypto'); var Storages = require('js-storage'); var hashauth = { - apisecret: '' - , storeapisecret: false - , apisecrethash: null - , authenticated: false - , initialized: false - , tokenauthenticated: false + initialized: false }; -hashauth.init = function init(client, $) { +hashauth.init = function init (client, $) { - if (hashauth.initialized) { - return hashauth; - } + hashauth.apisecret = ''; + hashauth.storeapisecret = false; + hashauth.apisecrethash = null; + hashauth.authenticated = false; + hashauth.tokenauthenticated = false; + hashauth.hasReadPermission = false; + hashauth.isAdmin = false; + hashauth.hasWritePermission = false; + hashauth.permissionlevel = 'NONE'; - hashauth.verifyAuthentication = function verifyAuthentication(next) { + hashauth.verifyAuthentication = function verifyAuthentication (next) { hashauth.authenticated = false; $.ajax({ method: 'GET' @@ -26,15 +27,22 @@ hashauth.init = function init(client, $) { , headers: client.headers() }).done(function verifysuccess (response) { - if (response.message.rolefound == 'FOUND') { + + var message = response.message; + + if (message.canRead) { hashauth.hasReadPermission = true; } + if (message.canWrite) { hashauth.hasWritePermission = true; } + if (message.isAdmin) { hashauth.isAdmin = true; } + if (message.permissions) { hashauth.permissionlevel = message.permissions; } + + if (message.rolefound == 'FOUND') { hashauth.tokenauthenticated = true; console.log('Token Authentication passed.'); - client.authorizeSocket(); next(true); return; } - if (response.message.message === 'OK') { + if (message.message === 'OK') { hashauth.authenticated = true; console.log('Authentication passed.'); next(true); @@ -42,10 +50,10 @@ hashauth.init = function init(client, $) { } console.log('Authentication failed.', response); - hashauth.removeAuthentication(); - next(false); - return; - + hashauth.removeAuthentication(); + next(false); + return; + }).fail(function verifyfail (err) { console.log('Authentication failed.', err); hashauth.removeAuthentication(); @@ -53,23 +61,23 @@ hashauth.init = function init(client, $) { }); }; - hashauth.injectHtml = function injectHtml ( ) { + hashauth.injectHtml = function injectHtml () { if (!hashauth.injectedHtml) { $('#authentication_placeholder').html(hashauth.inlineCode()); hashauth.injectedHtml = true; } }; - hashauth.initAuthentication = function initAuthentication(next) { + hashauth.initAuthentication = function initAuthentication (next) { hashauth.apisecrethash = hashauth.apisecrethash || Storages.localStorage.get('apisecrethash') || null; - hashauth.verifyAuthentication(function () { + hashauth.verifyAuthentication(function() { hashauth.injectHtml(); - if (next) { next( hashauth.isAuthenticated() ); } + if (next) { next(hashauth.isAuthenticated()); } }); return hashauth; }; - hashauth.removeAuthentication = function removeAuthentication(event) { + hashauth.removeAuthentication = function removeAuthentication (event) { Storages.localStorage.remove('apisecrethash'); @@ -92,14 +100,14 @@ hashauth.init = function init(client, $) { var translate = client.translate; hashauth.injectHtml(); - var clientWidth = window.innerWidth - || document.documentElement.clientWidth - || document.body.clientWidth; + var clientWidth = window.innerWidth || + document.documentElement.clientWidth || + document.body.clientWidth; clientWidth = Math.min(400, clientWidth); - $( '#requestauthenticationdialog' ).dialog({ - width: clientWidth + $('#requestauthenticationdialog').dialog({ + width: clientWidth , height: 270 , closeText: '' , buttons: [ @@ -115,7 +123,7 @@ hashauth.init = function init(client, $) { } else { client.afterAuth(true); } - $( dialog ).dialog( 'close' ); + $(dialog).dialog('close'); } else { $('#apisecret').val('').focus(); } @@ -123,8 +131,8 @@ hashauth.init = function init(client, $) { } } ] - , open: function open ( ) { - $('#apisecret').off('keyup').on('keyup' ,function pressed (e) { + , open: function open () { + $('#apisecret').off('keyup').on('keyup', function pressed (e) { if (e.keyCode === $.ui.keyCode.ENTER) { $('#requestauthenticationdialog-btn').trigger('click'); } @@ -140,7 +148,7 @@ hashauth.init = function init(client, $) { return false; }; - hashauth.processSecret = function processSecret(apisecret, storeapisecret, callback) { + hashauth.processSecret = function processSecret (apisecret, storeapisecret, callback) { var translate = client.translate; hashauth.apisecret = apisecret; @@ -155,10 +163,10 @@ hashauth.init = function init(client, $) { shasum.update(hashauth.apisecret); hashauth.apisecrethash = shasum.digest('hex'); - hashauth.verifyAuthentication( function(isok) { + hashauth.verifyAuthentication(function(isok) { if (isok) { if (hashauth.storeapisecret) { - Storages.localStorage.set('apisecrethash',hashauth.apisecrethash); + Storages.localStorage.set('apisecrethash', hashauth.apisecrethash); // TODO show dialog first, then reload if (hashauth.tokenauthenticated) client.browserUtils.reload(); } @@ -176,43 +184,57 @@ hashauth.init = function init(client, $) { } }; - hashauth.inlineCode = function inlineCode() { + hashauth.inlineCode = function inlineCode () { var translate = client.translate; var status = null; + if (!hashauth.isAdmin) { + $('.needsadminaccess').hide(); + } else { + $('.needsadminaccess').show(); + } + + if (client.updateAdminMenu) client.updateAdminMenu(); + if (client.authorized || hashauth.tokenauthenticated) { status = translate('Authorized by token'); if (client.authorized && client.authorized.sub) { - status += '
' + client.authorized.sub + ': ' + client.authorized.permissionGroups.join(', ') + ''; + status += '
' + translate('Auth role') + ': ' + client.authorized.sub; + if (hashauth.hasReadPermission) { status += '
' + translate('Data reads enabled'); } + if (hashauth.hasWritePermission) { status += '
' + translate('Data writes enabled'); } + if (!hashauth.hasWritePermission) { status += '
' + translate('Data writes not enabled'); } } - if (hashauth.apisecrethash) - { + if (hashauth.apisecrethash) { status += '
(' + translate('Remove stored token') + ')'; } else { - status += '
(' + translate('view without token') + ')'; + status += '
(' + translate('view without token') + ')'; } } else if (hashauth.isAuthenticated()) { - console.info('status isAuthenticated', hashauth); status = translate('Admin authorized') + ' (' + translate('Remove') + ')'; } else { - status = translate('Unauthorized') + ' (' + translate('Authenticate') + ')'; + status = translate('Unauthorized') + + '
' + + translate('Reads enabled in default permissions') + + '
' + + ' (' + + translate('Authenticate') + ')'; } var html = - ''+ + '' + '
' + status + '
'; return html; }; - hashauth.updateSocketAuth = function updateSocketAuth() { + hashauth.updateSocketAuth = function updateSocketAuth () { client.socket.emit( 'authorize' , { @@ -220,8 +242,7 @@ hashauth.init = function init(client, $) { , secret: client.authorized && client.authorized.token ? null : client.hashauth.hash() , token: client.authorized && client.authorized.token } - , function authCallback(data) { - console.log('Client rights: ',data); + , function authCallback (data) { if (!data.read && !client.authorized) { hashauth.requestAuthentication(); } @@ -229,16 +250,17 @@ hashauth.init = function init(client, $) { ); }; - hashauth.hash = function hash() { + hashauth.hash = function hash () { return hashauth.apisecrethash; }; - hashauth.isAuthenticated = function isAuthenticated() { + hashauth.isAuthenticated = function isAuthenticated () { return hashauth.authenticated || hashauth.tokenauthenticated; }; hashauth.initialized = true; + return hashauth; -}; +} module.exports = hashauth; diff --git a/lib/client/index.js b/lib/client/index.js index 75719976261..15b05698b83 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -21,9 +21,10 @@ var browserSettings; var client = {}; -$('#loadingMessageText').html('Connecting to server'); +var hashauth = require('./hashauth'); +client.hashauth = hashauth.init(client, $); -client.hashauth = require('../hashauth').init(client, $); +$('#loadingMessageText').html('Connecting to server'); client.headers = function headers () { if (client.authorized) { @@ -105,7 +106,7 @@ client.init = function init (callback) { // auth failed, hide loader and request for key $('#centerMessagePanel').hide(); client.hashauth.requestAuthentication(function afterRequest () { - client.init(callback); + window.setTimeout(client.init(callback), 5000); }); } }); @@ -1084,9 +1085,6 @@ client.load = function load (serverSettings, callback) { 'authorize' , auth_data , function authCallback (data) { - - console.log('Socket auth response', data); - if (!data) { console.log('Crashed!'); client.crashed(); @@ -1137,7 +1135,6 @@ client.load = function load (serverSettings, callback) { socket.on('notification', function(notify) { console.log('notification from server:', notify); - if (notify.timestamp && previousNotifyTimestamp !== notify.timestamp) { previousNotifyTimestamp = notify.timestamp; client.plugins.visualizeAlarm(client.sbx, notify, notify.title + ' ' + notify.message); @@ -1148,7 +1145,6 @@ client.load = function load (serverSettings, callback) { socket.on('announcement', function(notify) { console.info('announcement received from server'); - console.log('notify:', notify); currentAnnouncement = notify; currentAnnouncement.received = Date.now(); updateTitle(); @@ -1156,7 +1152,6 @@ client.load = function load (serverSettings, callback) { socket.on('alarm', function(notify) { console.info('alarm received from server'); - console.log('notify:', notify); var enabled = (isAlarmForHigh() && client.settings.alarmHigh) || (isAlarmForLow() && client.settings.alarmLow); if (enabled) { console.log('Alarm raised!'); @@ -1169,8 +1164,6 @@ client.load = function load (serverSettings, callback) { socket.on('urgent_alarm', function(notify) { console.info('urgent alarm received from server'); - console.log('notify:', notify); - var enabled = (isAlarmForHigh() && client.settings.alarmUrgentHigh) || (isAlarmForLow() && client.settings.alarmUrgentLow); if (enabled) { console.log('Urgent alarm raised!'); @@ -1182,7 +1175,6 @@ client.load = function load (serverSettings, callback) { }); socket.on('clear_alarm', function(notify) { - console.info('got clear_alarm', notify); if (alarmInProgress) { console.log('clearing alarm'); stopAlarm(false, null, notify); @@ -1217,10 +1209,15 @@ client.load = function load (serverSettings, callback) { } } - // hide food control if not enabled - $('.foodcontrol').toggle(client.settings.enable.indexOf('food') > -1); - // hide cob control if not enabled - $('.cobcontrol').toggle(client.settings.enable.indexOf('cob') > -1); + client.updateAdminMenu = function updateAdminMenu() { + // hide food control if not enabled + $('.foodcontrol').toggle(client.settings.enable.indexOf('food') > -1); + // hide cob control if not enabled + $('.cobcontrol').toggle(client.settings.enable.indexOf('cob') > -1); +} + + client.updateAdminMenu(); + container.toggleClass('has-minor-pills', client.plugins.hasShownType('pill-minor', client.settings)); function prepareEntries () { diff --git a/lib/server/websocket.js b/lib/server/websocket.js index 7a685ccde05..a0142db8fd1 100644 --- a/lib/server/websocket.js +++ b/lib/server/websocket.js @@ -82,8 +82,8 @@ function init (env, ctx, server) { }); } - function verifyAuthorization (message, callback) { - ctx.authorization.resolve({ api_secret: message.secret, token: message.token }, function resolved (err, result) { + function verifyAuthorization (message, ip, callback) { + ctx.authorization.resolve({ api_secret: message.secret, token: message.token, ip: ip }, function resolved (err, result) { if (err) { return callback(err, { @@ -498,7 +498,8 @@ function init (env, ctx, server) { // [, status : true ] // } socket.on('authorize', function authorize (message, callback) { - verifyAuthorization(message, function verified (err, authorization) { + const remoteIP = socket.request.connection.remoteAddress; + verifyAuthorization(message, remoteIP, function verified (err, authorization) { socketAuthorization = authorization; clientType = message.client; history = message.history || 48; //default history is 48 hours diff --git a/tests/admintools.test.js b/tests/admintools.test.js index 2fe6169f59a..b151381cf07 100644 --- a/tests/admintools.test.js +++ b/tests/admintools.test.js @@ -202,7 +202,7 @@ describe('admintools', function ( ) { it ('should produce some html', function (done) { var client = require('../lib/client'); - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); hashauth.init(client,$); hashauth.verifyAuthentication = function mockVerifyAuthentication(next) { hashauth.authenticated = true; diff --git a/tests/api.unauthorized.test.js b/tests/api.unauthorized.test.js index 5785069f77e..f3603ebb8b4 100644 --- a/tests/api.unauthorized.test.js +++ b/tests/api.unauthorized.test.js @@ -8,6 +8,8 @@ var language = require('../lib/language')(); describe('authed REST api', function ( ) { var entries = require('../lib/api/entries/'); + this.timeout(20000); + before(function (done) { var known = 'b723e97aa97846eb92d5264f084b2823f57c4aa1'; delete process.env.API_SECRET; diff --git a/tests/api.verifyauth.test.js b/tests/api.verifyauth.test.js index 48a05f2d9c4..318ba610a29 100644 --- a/tests/api.verifyauth.test.js +++ b/tests/api.verifyauth.test.js @@ -8,10 +8,13 @@ require('should'); describe('Verifyauth REST api', function ( ) { var self = this; + this.timeout(10000); + var api = require('../lib/api/'); before(function (done) { self.env = require('../env')( ); self.env.api_secret = 'this is my long pass phrase'; + self.env.settings.authDefaultRoles = 'denied'; this.wares = require('../lib/middleware/')(self.env); self.app = require('express')( ); self.app.enable('api'); diff --git a/tests/careportal.test.js b/tests/careportal.test.js index 36f48d3a5a4..d16ec95e472 100644 --- a/tests/careportal.test.js +++ b/tests/careportal.test.js @@ -40,7 +40,7 @@ describe('client', function ( ) { var client = window.Nightscout.client; - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); hashauth.init(client,$); hashauth.verifyAuthentication = function mockVerifyAuthentication(next) { hashauth.authenticated = true; diff --git a/tests/hashauth.test.js b/tests/hashauth.test.js index 011ca689d10..64412da96df 100644 --- a/tests/hashauth.test.js +++ b/tests/hashauth.test.js @@ -66,7 +66,7 @@ describe('hashauth', function ( ) { it ('should make module unauthorized', function () { var client = require('../lib/client'); - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); hashauth.init(client,$); hashauth.verifyAuthentication = function mockVerifyAuthentication(next) { @@ -84,7 +84,7 @@ describe('hashauth', function ( ) { it ('should make module authorized', function () { var client = require('../lib/client'); - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); hashauth.init(client,$); hashauth.verifyAuthentication = function mockVerifyAuthentication(next) { @@ -100,7 +100,7 @@ describe('hashauth', function ( ) { it ('should store hash and the remove authentication', function () { var client = require('../lib/client'); - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); var localStorage = require('./fixtures/localstorage'); localStorage.remove('apisecrethash'); @@ -126,7 +126,7 @@ describe('hashauth', function ( ) { it ('should not store hash', function () { var client = require('../lib/client'); - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); var localStorage = require('./fixtures/localstorage'); localStorage.remove('apisecrethash'); @@ -149,7 +149,7 @@ describe('hashauth', function ( ) { it ('should report secret too short', function () { var client = require('../lib/client'); - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); var localStorage = require('./fixtures/localstorage'); localStorage.remove('apisecrethash'); diff --git a/tests/profileeditor.test.js b/tests/profileeditor.test.js index 42656b511af..cdca12764b7 100644 --- a/tests/profileeditor.test.js +++ b/tests/profileeditor.test.js @@ -101,7 +101,7 @@ describe('Profile editor', function ( ) { it ('should produce some html', function (done) { var client = require('../lib/client'); - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); hashauth.init(client,$); hashauth.verifyAuthentication = function mockVerifyAuthentication(next) { hashauth.authenticated = true; diff --git a/tests/reports.test.js b/tests/reports.test.js index c77f87f2e8f..cfdda992b9d 100644 --- a/tests/reports.test.js +++ b/tests/reports.test.js @@ -206,7 +206,7 @@ describe('reports', function ( ) { it ('should produce some html', function (done) { var client = window.Nightscout.client; - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); hashauth.init(client,$); hashauth.verifyAuthentication = function mockVerifyAuthentication(next) { hashauth.authenticated = true; @@ -281,7 +281,7 @@ describe('reports', function ( ) { it ('should produce week to week report', function (done) { var client = window.Nightscout.client; - var hashauth = require('../lib/hashauth'); + var hashauth = require('../lib/client/hashauth'); hashauth.init(client,$); hashauth.verifyAuthentication = function mockVerifyAuthentication(next) { hashauth.authenticated = true; diff --git a/tests/verifyauth.test.js b/tests/verifyauth.test.js index 36624e03023..ce970f26bab 100644 --- a/tests/verifyauth.test.js +++ b/tests/verifyauth.test.js @@ -1,5 +1,6 @@ 'use strict'; +const { geoNaturalEarth1 } = require('d3'); var request = require('supertest'); var language = require('../lib/language')(); require('should'); @@ -7,6 +8,8 @@ require('should'); describe('verifyauth', function ( ) { var api = require('../lib/api/'); + this.timeout(25000); + var scope = this; function setup_app (env, fn) { require('../lib/server/bootevent')(env, language).boot(function booted (ctx) { @@ -20,7 +23,7 @@ describe('verifyauth', function ( ) { done(); }); - it('should fail unauthorized', function (done) { + it('should return defaults when called without secret', function (done) { var known = 'b723e97aa97846eb92d5264f084b2823f57c4aa1'; delete process.env.API_SECRET; process.env.API_SECRET = 'this is my long pass phrase'; @@ -29,12 +32,59 @@ describe('verifyauth', function ( ) { setup_app(env, function (ctx) { ctx.app.enabled('api').should.equal(true); ctx.app.api_secret = ''; - ping_authorized_endpoint(ctx.app, 401, done); + ping_authorized_endpoint(ctx.app, 200, done); + }); + }); + + it('should fail when calling with wrong secret', function (done) { + var known = 'b723e97aa97846eb92d5264f084b2823f57c4aa1'; + delete process.env.API_SECRET; + process.env.API_SECRET = 'this is my long pass phrase'; + var env = require('../env')( ); + env.api_secret.should.equal(known); + setup_app(env, function (ctx) { + ctx.app.enabled('api').should.equal(true); + ctx.app.api_secret = 'wrong secret'; + + function check(res) { + res.body.message.message.should.equal('UNAUTHORIZED'); + done(); + } + + ping_authorized_endpoint(ctx.app, 200, check, true); }); + }); + + + it('should fail unauthorized and delay subsequent attempts', function (done) { + var known = 'b723e97aa97846eb92d5264f084b2823f57c4aa1'; + delete process.env.API_SECRET; + process.env.API_SECRET = 'this is my long pass phrase'; + var env = require('../env')( ); + env.api_secret.should.equal(known); + setup_app(env, function (ctx) { + ctx.app.enabled('api').should.equal(true); + ctx.app.api_secret = 'wrong secret'; + const time = Date.now(); + + function checkTimer(res) { + res.body.message.message.should.equal('UNAUTHORIZED'); + const delta = Date.now() - time; + delta.should.be.greaterThan(1000); + done(); + } + function pingAgain (res) { + res.body.message.message.should.equal('UNAUTHORIZED'); + ping_authorized_endpoint(ctx.app, 200, checkTimer, true); + } + + ping_authorized_endpoint(ctx.app, 200, pingAgain, true); + }); }); + it('should work fine authorized', function (done) { var known = 'b723e97aa97846eb92d5264f084b2823f57c4aa1'; delete process.env.API_SECRET; @@ -50,17 +100,14 @@ describe('verifyauth', function ( ) { }); - function ping_authorized_endpoint (app, fails, fn) { + function ping_authorized_endpoint (app, httpResponse, fn, passres) { request(app) .get('/verifyauth') .set('api-secret', app.api_secret || '') - .expect(fails) + .expect(httpResponse) .end(function (err, res) { - //console.log(res.body); - if (fails < 400) { - res.body.status.should.equal(200); - } - fn( ); + res.body.status.should.equal(httpResponse); + if (passres) { fn(res); } else { fn(); } // console.log('err', err, 'res', res); }); } diff --git a/translations/en/en.json b/translations/en/en.json index 9f58a686344..9692f9555c1 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -656,4 +656,9 @@ ,"virtAsstDatabaseSize":"%1 MiB. That is %2% of available database space." ,"virtAsstTitleDatabaseSize":"Database file size" ,"Carbs/Food/Time":"Carbs/Food/Time" + ,"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" + } \ No newline at end of file diff --git a/views/index.html b/views/index.html index 8e60b30f471..3f249e1d57c 100644 --- a/views/index.html +++ b/views/index.html @@ -166,9 +166,9 @@
SundayMondayTuesdayWednesday
ThursdayFridaySaturday
'; + $('#weektoweekcharts').append($(legend)); - $('#weektoweekcharts').append($(legend)); + weekstoshow.forEach(function eachWeek (d) { + $('#weektoweekcharts').append($('
')); + }); + }; - weekstoshow.forEach(function eachWeek(d) { - $('#weektoweekcharts').append($('
')); - }); -}; + weektoweek.report = function report_weektoweek (datastorage, sorteddaystoshow, options) { + var Nightscout = window.Nightscout; + var client = Nightscout.client; + var report_plugins = Nightscout.report_plugins; -weektoweek.report = function report_weektoweek(datastorage, sorteddaystoshow, options) { - var Nightscout = window.Nightscout; - var client = Nightscout.client; - var report_plugins = Nightscout.report_plugins; - - var padding = { top: 15, right: 22, bottom: 30, left: 35 }; + var padding = { top: 15, right: 22, bottom: 30, left: 35 }; - var weekstoshow = [ ]; + var weekstoshow = []; - var startDay = moment(sorteddaystoshow[0] + ' 00:00:00'); + var startDay = moment(sorteddaystoshow[0] + ' 00:00:00'); - sorteddaystoshow.forEach( function eachDay(day) { - var weekNum = Math.abs(moment(day + ' 00:00:00').diff(startDay, 'weeks')); + sorteddaystoshow.forEach(function eachDay (day) { + var weekNum = Math.abs(moment(day + ' 00:00:00').diff(startDay, 'weeks')); - if (typeof weekstoshow[weekNum] === 'undefined') { - weekstoshow[weekNum] = [ ]; - } + if (typeof weekstoshow[weekNum] === 'undefined') { + weekstoshow[weekNum] = []; + } - weekstoshow[weekNum].push(day); - }); + weekstoshow[weekNum].push(day); + }); - weekstoshow = weekstoshow.map(function orderWeek(week) { - return _.sortBy(week); - }); + weekstoshow = weekstoshow.map(function orderWeek (week) { + return _.sortBy(week); + }); - weektoweek.prepareHtml(weekstoshow); + weektoweek.prepareHtml(weekstoshow); - weekstoshow.forEach( function eachWeek(week) { - var sgvData = [ ]; - var weekStart = moment(week[0] + ' 00:00:00'); + weekstoshow.forEach(function eachWeek (week) { + var sgvData = []; + var weekStart = moment(week[0] + ' 00:00:00'); - week.forEach( function eachDay(day) { - var dayNum = Math.abs(moment(day + ' 00:00:00').diff(weekStart, 'days')); + week.forEach(function eachDay (day) { + var dayNum = Math.abs(moment(day + ' 00:00:00').diff(weekStart, 'days')); - datastorage[day].sgv.forEach ( function eachSgv(sgv) { - var sgvWeekday = moment(sgv.date).day(); - var sgvColor = dayColors[sgvWeekday]; + datastorage[day].sgv.forEach(function eachSgv (sgv) { + var sgvWeekday = moment(sgv.date).day(); + var sgvColor = dayColors[sgvWeekday]; - if (sgv.color === 'gray') { - sgvColor = sgv.color; - } + if (sgv.color === 'gray') { + sgvColor = sgv.color; + } - sgvData.push( { - 'color': sgvColor - , 'date': moment(sgv.date).subtract(dayNum, 'days').toDate() - , 'filtered': sgv.filtered - , 'mills': sgv.mills - dayNum * 24*60*60000 - , 'noise': sgv.noise - , 'sgv': sgv.sgv - , 'type': sgv.type - , 'unfiltered': sgv.unfiltered - , 'y': sgv.y + sgvData.push({ + 'color': sgvColor + , 'date': moment(sgv.date).subtract(dayNum, 'days').toDate() + , 'filtered': sgv.filtered + , 'mills': sgv.mills - dayNum * 24 * 60 * 60000 + , 'noise': sgv.noise + , 'sgv': sgv.sgv + , 'type': sgv.type + , 'unfiltered': sgv.unfiltered + , 'y': sgv.y + }); }); }); - }); - drawChart(week, sgvData, options); - }); + drawChart(week, sgvData, options); + }); - function timeTicks(n, i) { - var t12 = [ - '12am', '', '2am', '', '4am', '', '6am', '', '8am', '', '10am', '', - '12pm', '', '2pm', '', '4pm', '', '6pm', '', '8pm', '', '10pm', '', '12am' + function timeTicks (n, i) { + var t12 = [ + '12am', '', '2am', '', '4am', '', '6am', '', '8am', '', '10am', '' + , '12pm', '', '2pm', '', '4pm', '', '6pm', '', '8pm', '', '10pm', '', '12am' ]; - if (Nightscout.client.settings.timeFormat === 24) { - return ('00' + i).slice(-2); - } else { - return t12[i]; + if (Nightscout.client.settings.timeFormat === 24) { + return ('00' + i).slice(-2); + } else { + return t12[i]; + } } - } - - function drawChart(week, sgvData, options) { - var tickValues - , charts - , context - , xScale2, yScale2 - , xAxis2, yAxis2 - , dateFn = function (d) { return new Date(d.date); }; - - tickValues = client.ticks(client, { - scaleY: options.weekscale === report_plugins.consts.SCALE_LOG ? 'log' : 'linear' - , targetTop: options.targetHigh - , targetBottom: options.targetLow - }); - - // add defs for combo boluses - var dashWidth = 5; - d3.select('body').append('svg') - .append('defs') - .append('pattern') - .attr('id', 'hash') - .attr('patternUnits', 'userSpaceOnUse') - .attr('width', 6) - .attr('height', 6) - .attr('x', 0) - .attr('y', 0) - .append('g') + + function drawChart (week, sgvData, options) { + var tickValues + , charts + , context + , xScale2, yScale2 + , xAxis2, yAxis2 + , dateFn = function(d) { return new Date(d.date); }; + + tickValues = client.ticks(client, { + scaleY: options.weekscale === report_plugins.consts.SCALE_LOG ? 'log' : 'linear' + , targetTop: options.targetHigh + , targetBottom: options.targetLow + }); + + // add defs for combo boluses + var dashWidth = 5; + d3.select('body').append('svg') + .append('defs') + .append('pattern') + .attr('id', 'hash') + .attr('patternUnits', 'userSpaceOnUse') + .attr('width', 6) + .attr('height', 6) + .attr('x', 0) + .attr('y', 0) + .append('g') .style('fill', 'none') .style('stroke', '#0099ff') .style('stroke-width', 2) - .append('path').attr('d', 'M0,0 l' + dashWidth + ',' + dashWidth) - .append('path').attr('d', 'M' + dashWidth + ',0 l-' + dashWidth + ',' + dashWidth); - - // create svg and g to contain the chart contents - charts = d3.select('#weektoweekchart-' + week[0] + '-' + week[week.length-1]).html( - ''+ - report_plugins.utils.localeDate(week[0])+ - '-' + - report_plugins.utils.localeDate(week[week.length-1])+ - '
' + .append('path').attr('d', 'M0,0 l' + dashWidth + ',' + dashWidth) + .append('path').attr('d', 'M' + dashWidth + ',0 l-' + dashWidth + ',' + dashWidth); + + // create svg and g to contain the chart contents + charts = d3.select('#weektoweekchart-' + week[0] + '-' + week[week.length - 1]).html( + '' + + report_plugins.utils.localeDate(week[0]) + + '-' + + report_plugins.utils.localeDate(week[week.length - 1]) + + '
' ).append('svg'); - charts.append('rect') - .attr('width', '100%') - .attr('height', '100%') - .attr('fill', 'WhiteSmoke'); - - context = charts.append('g'); - - // define the parts of the axis that aren't dependent on width or height - xScale2 = d3.scaleTime() - .domain(d3.extent(sgvData, dateFn)); - - if (options.weekscale === report_plugins.consts.SCALE_LOG) { - yScale2 = d3.scaleLog() - .domain([client.utils.scaleMgdl(36), client.utils.scaleMgdl(420)]); - } else { - yScale2 = d3.scaleLinear() - .domain([client.utils.scaleMgdl(36), client.utils.scaleMgdl(420)]); - } + charts.append('rect') + .attr('width', '100%') + .attr('height', '100%') + .attr('fill', 'WhiteSmoke'); + + context = charts.append('g'); + + // define the parts of the axis that aren't dependent on width or height + xScale2 = d3.scaleTime() + .domain(d3.extent(sgvData, dateFn)); + + if (options.weekscale === report_plugins.consts.SCALE_LOG) { + yScale2 = d3.scaleLog() + .domain([client.utils.scaleMgdl(36), client.utils.scaleMgdl(420)]); + } else { + yScale2 = d3.scaleLinear() + .domain([client.utils.scaleMgdl(36), client.utils.scaleMgdl(420)]); + } - xAxis2 = d3.axisBottom(xScale2) - .tickFormat(timeTicks) - .ticks(24); - - yAxis2 = d3.axisLeft(yScale2) - .tickFormat(d3.format('d')) - .tickValues(tickValues); - - // get current data range - var dataRange = d3.extent(sgvData, dateFn); - - // get the entire container height and width subtracting the padding - var chartWidth = options.weekwidth - padding.left - padding.right; - var chartHeight = options.weekheight - padding.top - padding.bottom; - - //set the width and height of the SVG element - charts.attr('width', options.weekwidth) - .attr('height', options.weekheight); - - // ranges are based on the width and height available so reset - xScale2.range([0, chartWidth]); - yScale2.range([chartHeight,0]); - - // add target BG rect - context.append('rect') - .attr('x', xScale2(dataRange[0])+padding.left) - .attr('y', yScale2(options.targetHigh)+padding.top) - .attr('width', xScale2(dataRange[1]- xScale2(dataRange[0]))) - .attr('height', yScale2(options.targetLow)-yScale2(options.targetHigh)) - .style('fill', '#D6FFD6') - .attr('stroke', 'grey'); - - // create the x axis container - context.append('g') - .attr('class', 'x axis'); - - // create the y axis container - context.append('g') - .attr('class', 'y axis'); - - context.select('.y') - .attr('transform', 'translate(' + (padding.left) + ',' + padding.top + ')') - .style('stroke', 'black') - .style('shape-rendering', 'crispEdges') - .style('fill', 'none') - .call(yAxis2); - - // if first run then just display axis with no transition - context.select('.x') - .attr('transform', 'translate(' + padding.left + ',' + (chartHeight + padding.top) + ')') - .style('stroke', 'black') - .style('shape-rendering', 'crispEdges') - .style('fill', 'none') - .call(xAxis2); - - _.each(tickValues, function (n, li) { - context.append('line') - .attr('class', 'high-line') - .attr('x1', xScale2(dataRange[0])+padding.left) - .attr('y1', yScale2(tickValues[li])+padding.top) - .attr('x2', xScale2(dataRange[1])+padding.left) - .attr('y2', yScale2(tickValues[li])+padding.top) - .style('stroke-dasharray', ('1, 5')) + xAxis2 = d3.axisBottom(xScale2) + .tickFormat(timeTicks) + .ticks(24); + + yAxis2 = d3.axisLeft(yScale2) + .tickFormat(d3.format('d')) + .tickValues(tickValues); + + // get current data range + var dataRange = d3.extent(sgvData, dateFn); + + // get the entire container height and width subtracting the padding + var chartWidth = options.weekwidth - padding.left - padding.right; + var chartHeight = options.weekheight - padding.top - padding.bottom; + + //set the width and height of the SVG element + charts.attr('width', options.weekwidth) + .attr('height', options.weekheight); + + // ranges are based on the width and height available so reset + xScale2.range([0, chartWidth]); + yScale2.range([chartHeight, 0]); + + // add target BG rect + context.append('rect') + .attr('x', xScale2(dataRange[0]) + padding.left) + .attr('y', yScale2(options.targetHigh) + padding.top) + .attr('width', xScale2(dataRange[1] - xScale2(dataRange[0]))) + .attr('height', yScale2(options.targetLow) - yScale2(options.targetHigh)) + .style('fill', '#D6FFD6') .attr('stroke', 'grey'); - }); - // bind up the context chart data to an array of circles - var contextCircles = context.selectAll('circle') + // create the x axis container + context.append('g') + .attr('class', 'x axis'); + + // create the y axis container + context.append('g') + .attr('class', 'y axis'); + + context.select('.y') + .attr('transform', 'translate(' + (padding.left) + ',' + padding.top + ')') + .style('stroke', 'black') + .style('shape-rendering', 'crispEdges') + .style('fill', 'none') + .call(yAxis2); + + // if first run then just display axis with no transition + context.select('.x') + .attr('transform', 'translate(' + padding.left + ',' + (chartHeight + padding.top) + ')') + .style('stroke', 'black') + .style('shape-rendering', 'crispEdges') + .style('fill', 'none') + .call(xAxis2); + + _.each(tickValues, function(n, li) { + context.append('line') + .attr('class', 'high-line') + .attr('x1', xScale2(dataRange[0]) + padding.left) + .attr('y1', yScale2(tickValues[li]) + padding.top) + .attr('x2', xScale2(dataRange[1]) + padding.left) + .attr('y2', yScale2(tickValues[li]) + padding.top) + .style('stroke-dasharray', ('1, 5')) + .attr('stroke', 'grey'); + }); + + // bind up the context chart data to an array of circles + var contextCircles = context.selectAll('circle') .data(sgvData); - function prepareContextCircles(sel) { - var badData = []; - sel.attr('cx', function (d) { - return xScale2(d.date) + padding.left; - }) - .attr('cy', function (d) { + function prepareContextCircles (sel) { + var badData = []; + sel.attr('cx', function(d) { + return xScale2(d.date) + padding.left; + }) + .attr('cy', function(d) { if (isNaN(d.sgv)) { - badData.push(d); - return yScale2(client.utils.scaleMgdl(450) + padding.top); + badData.push(d); + return yScale2(client.utils.scaleMgdl(450) + padding.top); } else { - return yScale2(d.sgv) + padding.top; + return yScale2(d.sgv) + padding.top; } }) - .attr('fill', function (d) { + .attr('fill', function(d) { if (d.color === 'gray') { - return 'transparent'; + return 'transparent'; } - return d.color; + return d.color; }) - .style('opacity', function () { return 0.5 }) - .attr('stroke-width', function (d) {if (d.type === 'mbg') { return 2; } else { return 0; }}) - .attr('stroke', function () { return 'black'; }) - .attr('r', function(d) { - if (d.type === 'mbg') { - return 4; - } else { - return 2 + (options.weekwidth - 800) / 400; + .style('opacity', function() { return 0.5 }) + .attr('stroke-width', function(d) { if (d.type === 'mbg') { return 2; } else { return 0; } }) + .attr('stroke', function() { return 'black'; }) + .attr('r', function(d) { + if (d.type === 'mbg') { + return 4; + } else { + return 2 + (options.weekwidth - 800) / 400; } }) .on('mouseout', hideTooltip); - if (badData.length > 0) { - console.warn('Bad Data: isNaN(sgv)', badData); - } - return sel; + if (badData.length > 0) { + console.warn('Bad Data: isNaN(sgv)', badData); + } + return sel; } - // if new circle then just display - prepareContextCircles(contextCircles.enter().append('circle')); + // if new circle then just display + prepareContextCircles(contextCircles.enter().append('circle')); + + contextCircles.exit() + .remove(); + } - contextCircles.exit() - .remove(); - } + function hideTooltip () { + client.tooltip.style('opacity', 0); + } + }; + return weektoweek; +} - function hideTooltip ( ) { - client.tooltip.style('opacity', 0); - } -}; +module.exports = init; diff --git a/translations/en/en.json b/translations/en/en.json index a3795b4b602..fd2d060e363 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -661,4 +661,24 @@ ,"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":"Timeshift on meals larger than" + ,"g carbs":"g carbs'" + ,"consumed between":"consumed between" + ,"Previous":"Previous" + ,"Previous day":"Previous day" + ,"Next day":"Next day" + ,"Next":"Next" + ,"Temp basal delta":"Temp basal delta" } \ No newline at end of file diff --git a/views/index.html b/views/index.html index 3f249e1d57c..7830fda586e 100644 --- a/views/index.html +++ b/views/index.html @@ -292,10 +292,10 @@
Copyright © 2017 Nightscout contributors

From b09e463c1ffc21660bd463a15e9e6c8f575baab1 Mon Sep 17 00:00:00 2001 From: Ben West Date: Tue, 15 Dec 2020 16:05:57 -0800 Subject: [PATCH 047/194] Test new dev version of minimed-connect-to-nightscout Try out plugin with recent fixes, thanks to @fredmk. --- npm-shrinkwrap.json | 5 ++--- package.json | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index f5f8bf958e0..17299a3caaf 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -6325,9 +6325,8 @@ } }, "minimed-connect-to-nightscout": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/minimed-connect-to-nightscout/-/minimed-connect-to-nightscout-1.4.0.tgz", - "integrity": "sha512-hxbcncJPiQOoTtjp1VquoxA4ab/Lbn1LiwAymeaEUfyqUxaj9E7w8CHJ/kGbgEu2oYHsqUMvJ1orOlCuUA/g6g==", + "version": "github:nightscout/minimed-connect-to-nightscout#2a76725d4b27fd98be8b4eb9f11caba6ec7e3f55", + "from": "github:nightscout/minimed-connect-to-nightscout#wip/rebased/dev", "requires": { "axios": "^0.19.2", "axios-cookiejar-support": "^1.0.0", diff --git a/package.json b/package.json index fe79d145ef4..74356483325 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "lodash": "^4.17.20", "memory-cache": "^0.2.0", "mime": "^2.4.6", - "minimed-connect-to-nightscout": "^1.4.0", + "minimed-connect-to-nightscout": "github:nightscout/minimed-connect-to-nightscout#wip/rebased/dev", "moment": "^2.27.0", "moment-locales-webpack-plugin": "^1.2.0", "moment-timezone": "^0.5.31", From 8c59de8d2d3abf6636dd41e189cbef3e246b04e4 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 17 Dec 2020 23:13:48 +0200 Subject: [PATCH 048/194] * More small localization fixes * Change link to point to github.io docs --- translations/en/en.json | 5 ++++- views/index.html | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/translations/en/en.json b/translations/en/en.json index fd2d060e363..85ba5401e94 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -681,4 +681,7 @@ ,"Next day":"Next day" ,"Next":"Next" ,"Temp basal delta":"Temp basal delta" -} \ No newline at end of file + ,"Authorized by token":"Authorized by token" + ,"Auth role":"Auth role" + ,"view without token":"view without token" +} diff --git a/views/index.html b/views/index.html index 7830fda586e..da32087af6c 100644 --- a/views/index.html +++ b/views/index.html @@ -293,9 +293,9 @@

From 4bdd271939806599c202c0a99f71a0745b87627c Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Mon, 21 Dec 2020 18:19:36 +0200 Subject: [PATCH 049/194] Fix upbat.js levels reference --- lib/plugins/upbat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plugins/upbat.js b/lib/plugins/upbat.js index 8ed0fab1e71..5d25ff2447b 100644 --- a/lib/plugins/upbat.js +++ b/lib/plugins/upbat.js @@ -172,7 +172,7 @@ function init(ctx) { sbx.notifications.requestNotify({ level: prop.min.notification - , title: levels.toDisplay(prop.min.notification) + ' Uploader Battery is Low' + , title: ctx.levels.toDisplay(prop.min.notification) + ' Uploader Battery is Low' , message: message , pushoverSound: 'echo' , group: 'Uploader Battery' From edfcf6eccd04c1b569dcb8d48e047261b29fb88a Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Mon, 21 Dec 2020 21:09:18 +0200 Subject: [PATCH 050/194] Fix authorization renewal --- lib/authorization/index.js | 11 +++++++++-- lib/authorization/storage.js | 1 - lib/client/index.js | 4 ++-- lib/report/reportclient.js | 8 ++++---- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/lib/authorization/index.js b/lib/authorization/index.js index 0f5fe138287..f6c45802459 100644 --- a/lib/authorization/index.js +++ b/lib/authorization/index.js @@ -275,11 +275,18 @@ function init (env, ctx) { */ authorization.authorize = function authorize (accessToken) { - var subject = storage.findSubject(accessToken); + let userToken = accessToken + const decodedToken = jwt.decode(accessToken); + + if (decodedToken && decodedToken.accessToken) { + userToken = decodedToken.accessToken; + } + + var subject = storage.findSubject(userToken); var authorized = null; if (subject) { - var token = jwt.sign({ accessToken: subject.accessToken }, env.api_secret, { expiresIn: '1h' }); + var token = jwt.sign({ accessToken: subject.accessToken }, env.api_secret, { expiresIn: '8h' }); //decode so we can tell the client the issued and expired times var decoded = jwt.decode(token); diff --git a/lib/authorization/storage.js b/lib/authorization/storage.js index d602470add6..c867f0ee572 100644 --- a/lib/authorization/storage.js +++ b/lib/authorization/storage.js @@ -210,7 +210,6 @@ function init (env, ctx) { if (!accessToken) return null; - function checkToken(accessToken) { var split_token = accessToken.split('-'); var prefix = split_token ? _.last(split_token) : ''; diff --git a/lib/client/index.js b/lib/client/index.js index 8b176c1e13f..ca56d4421e5 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -814,12 +814,12 @@ client.load = function load (serverSettings, callback) { } function refreshAuthIfNeeded () { - var token = client.browserUtils.queryParms().token; + var token = client.browserUtils.queryParms().token || client.authorized.token; if (token && client.authorized) { var renewTime = (client.authorized.exp * 1000) - times.mins(15).msecs - Math.abs((client.authorized.iat * 1000) - client.authorized.lat); var refreshIn = Math.round((renewTime - client.now) / 1000); if (client.now > renewTime) { - console.info('Refreshing authorization'); + console.info('Refreshing authorization renewal'); $.ajax('/api/v2/authorization/request/' + token, { success: function(authorized) { if (authorized) { diff --git a/lib/report/reportclient.js b/lib/report/reportclient.js index c9061553e05..171186f9a90 100644 --- a/lib/report/reportclient.js +++ b/lib/report/reportclient.js @@ -426,7 +426,7 @@ var init = function init () { function countDays () { for (var d in daystoshow) { - if (daystoshow.hasOwnProperty(d)) { + if (Object.prototype.hasOwnProperty.call(daystoshow, d)) { if (daystoshow[d] === matchesneeded) { if (dayscount < maxdays) { dayscount++; @@ -441,7 +441,7 @@ var init = function init () { function addPreviousDayTreatments () { for (var d in daystoshow) { - if (daystoshow.hasOwnProperty(d)) { + if (Object.prototype.hasOwnProperty.call(daystoshow, d)) { var day = moment.tz(d, zone); var previous = day.subtract(1, 'days'); var formated = previous.format('YYYY-MM-DD'); @@ -514,7 +514,7 @@ var init = function init () { datastorage.treatments.sort(function sort (a, b) { return a.mills - b.mills; }); for (var d in daystoshow) { - if (daystoshow.hasOwnProperty(d)) { + if (Object.prototype.hasOwnProperty.call(daystoshow, d)) { if (daystoshow[d].treatmentsonly) { delete daystoshow[d]; delete datastorage[d]; @@ -749,7 +749,7 @@ var init = function init () { }); } - function loadProfilesRangeCore (dateFrom, dateTo, dayCount) { + function loadProfilesRangeCore (dateFrom, dateTo) { $('#info > b').html('' + translate('Loading core profiles') + ' ...'); //The results must be returned in descending order to work with key logic in routines such as getCurrentProfile From 0a15938d1063b5bfe46a0f75bc61b7f67df29b85 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Mon, 21 Dec 2020 21:11:03 +0200 Subject: [PATCH 051/194] New Crowdin updates (#6653) * New translations en.json (Norwegian Bokmal) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * Update source file en.json * New translations en.json (Czech) * New translations en.json (Finnish) * New translations en.json (Greek) * New translations en.json (Dutch) * New translations en.json (Norwegian Bokmal) * New translations en.json (Norwegian Bokmal) * New translations en.json (Norwegian Bokmal) * New translations en.json (Swedish) * New translations en.json (Norwegian Bokmal) * Update source file en.json * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * New translations en.json (Dutch) * New translations en.json (Swedish) * New translations en.json (Czech) * New translations en.json (Romanian) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Russian) --- translations/bg_BG.json | 27 ++++- translations/cs_CZ.json | 27 ++++- translations/da_DK.json | 27 ++++- translations/de_DE.json | 27 ++++- translations/el_GR.json | 27 ++++- translations/es_ES.json | 27 ++++- translations/fi_FI.json | 27 ++++- translations/fr_FR.json | 27 ++++- translations/he_IL.json | 27 ++++- translations/hr_HR.json | 27 ++++- translations/hu_HU.json | 27 ++++- translations/it_IT.json | 27 ++++- translations/ja_JP.json | 27 ++++- translations/ko_KR.json | 27 ++++- translations/nb_NO.json | 101 +++++++++++------- translations/nl_NL.json | 27 ++++- translations/pl_PL.json | 27 ++++- translations/pt_BR.json | 27 ++++- translations/ro_RO.json | 227 ++++++++++++++++++++++------------------ translations/ru_RU.json | 45 ++++++-- translations/sl_SI.json | 27 ++++- translations/sv_SE.json | 27 ++++- translations/tr_TR.json | 27 ++++- translations/zh_CN.json | 27 ++++- translations/zh_TW.json | 27 ++++- 25 files changed, 771 insertions(+), 196 deletions(-) diff --git a/translations/bg_BG.json b/translations/bg_BG.json index bd02b2fa11c..b1c5e7b9695 100644 --- a/translations/bg_BG.json +++ b/translations/bg_BG.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/cs_CZ.json b/translations/cs_CZ.json index d93618231ce..f19bd479970 100644 --- a/translations/cs_CZ.json +++ b/translations/cs_CZ.json @@ -660,5 +660,28 @@ "Data reads enabled": "Čtení dat povoleno", "Data writes enabled": "Zápis dat povolen", "Data writes not enabled": "Zápis dat není povolen", - "Color prediction lines": "Color prediction lines" -} \ No newline at end of file + "Color prediction lines": "Color prediction lines", + "Release Notes": "Poznámky k vydání", + "Check for Updates": "Zkontrolovat aktualizace", + "Open Source": "Open Source", + "Nightscout Info": "Informace o Nightscoutu", + "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.": "Hlavním úkolem Loopalyzeru je vizualizace systému uzavřené smyčky. Funguje to při jakémkoliv nastavení - s uzavřenou či otevřenou smyčkou, nebo bez smyčky. Nicméně v návaznosti na tom, jaký uploader používáte, jaká data je schopen načíst a následně odeslat, jak je schopen doplňovat chybějící údaje, mohou některé grafy obsahovat chybějící data, nebo dokonce mohou být prázdné. Vždy si zajistěte, aby grafy vypadaly rozumně. Nejlepší je zobrazit nejprve jeden den, a až pak zobrazit více dní najednou.", + "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 obsahuje funkci časového posunu. Například máte-li snídani jeden den v 7:00, a den poté v 8:00, budou průměrné křivky glykémie za tyto 2 dny pravděpodobně vypadat zploštělé, a odezva smyčky pak bude zkreslená. Časový posun vypočítá průměrnou dobu, po kterou byla tato jídla konzumována, poté posune všechna data (sacharidy, inzulín, bazál atd.) během obou dnů o odpovídající časový rozdíl tak, aby obě jídla odpovídala průměrné době začátku jídla.", + "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.": "V tomto příkladu jsou všechna data z prvního dne posunuta o 30 minut vpřed, a všechna data z druhého dne o 30 minut zpět, takže to vypadá, jako byste oba dny měli snídani v 7:30. To vám umožní zobrazit průměrnou reakci na glukózu v krvi z jídla.", + "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.": "Časový posun zvýrazňuje šedou barvou období po průměrné době zahájení jídla po dobu trvání DIA (doba působení inzulínu). Protože jsou všechny datové body za celý den posunuté, nemusí být křivky mimo šedou oblast přesné.", + "Note that time shift is available only when viewing multiple days.": "Berte na vědomí, že časový posun je k dispozici pouze při prohlížení více dní.", + "Please select a maximum of two weeks duration and click Show again.": "Vyberte, prosím, dobu trvání maximálně 2 týdny, a klepněte na tlačítko Zobrazit znovu.", + "Show profiles table": "Zobrazit tabulku profilů", + "Show predictions": "Zobrazit predikce", + "Timeshift on meals larger than": "Časový limit jídla větší než", + "g carbs": "g sacharidů", + "consumed between": "spotřebováno mezi", + "Previous": "Předchozí", + "Previous day": "Předchozí den", + "Next day": "Následující den", + "Next": "Další", + "Temp basal delta": "Rozdíl dočasného bazálu", + "Authorized by token": "Autorizováno pomocí tokenu", + "Auth role": "Autorizační role", + "view without token": "zobrazit bez tokenu" +} diff --git a/translations/da_DK.json b/translations/da_DK.json index 51e926a6032..072df43e684 100644 --- a/translations/da_DK.json +++ b/translations/da_DK.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/de_DE.json b/translations/de_DE.json index a39d94eb976..74afcd61452 100644 --- a/translations/de_DE.json +++ b/translations/de_DE.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/el_GR.json b/translations/el_GR.json index e4d1b2f54cd..7d0fec22c84 100644 --- a/translations/el_GR.json +++ b/translations/el_GR.json @@ -660,5 +660,28 @@ "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", "Data writes not enabled": "Data writes not enabled", - "Color prediction lines": "Γραμμές πρόβλεψης με χρωματικό κώδικα" -} \ No newline at end of file + "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.": "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/es_ES.json b/translations/es_ES.json index 2ed434bfa6c..ff0c38e5b7a 100644 --- a/translations/es_ES.json +++ b/translations/es_ES.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/fi_FI.json b/translations/fi_FI.json index e52c4825907..9f1366eceac 100644 --- a/translations/fi_FI.json +++ b/translations/fi_FI.json @@ -660,5 +660,28 @@ "Data reads enabled": "Tiedon lukeminen mahdollista", "Data writes enabled": "Tiedon kirjoittaminen mahdollista", "Data writes not enabled": "Tiedon kirjoittaminen estetty", - "Color prediction lines": "Värilliset ennusteviivat" -} \ No newline at end of file + "Color prediction lines": "Värilliset ennusteviivat", + "Release Notes": "Nightscout versioiden kuvaukset", + "Check for Updates": "Tarkista päivityksen saatavuus", + "Open Source": "Avoin lähdekoodi", + "Nightscout Info": "Tietoa Nightscoutista", + "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.": "Loopalyzerin tarkoitus on visualisoida miten Loop-järjestelmä on toiminut. Visualisointi toimii jossain määrin myös muita järjestelmiä käyttävillä, mutta graafista saattaa puuttua tietoja ja se saattaa näyttää oudolta jos et käytä Loopia. Tarkista huolellisesti, että Loopalyzerin raportti näyttää toimivan.", + "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 sisältää aikasiirto-ominaisuuden. Jos syöt esimerkiksi aamupalan yhtenä päivänä seitsemältä ja seuraavana kahdeksalta, näyttää päivien keskiarvoglukoosi harhaanjohtavaa käyrää. Aikasiirto huomaa eri ajan aamupalalle, ja siirtää automaattisesti päivien tiedot niin, että käyrät piirtävät aamupalan samalle hetkelle, jolloin päivien vertaaminen on helpompaa.", + "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.": "Yllämainitussa esimerkissä ensimmäisen päivän tietoja siirrettäisiin 30 minuuttia eteenpäin ja toisen päivän tietoja 30 taaksepäin ajassa, ikään kuin molemmat aamupalat olisi syöty kello 7:30. Näin näet miten verensokeri on muuttunut aamupalojen jälkeen.", + "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.": "Aikasiirto näyttää insuliinin vaikutusajan verran tietoa aterioiden jälkeen. Koska kaikki tiedot koko päivän ajalla ovat siirtyneet, käyrä harmaan alueen ulkopuolella ei välttämättä ole tarkka.", + "Note that time shift is available only when viewing multiple days.": "Huomioi että aikasiirto toimii vain kun haet monen päivän tiedot samaan aikaan.", + "Please select a maximum of two weeks duration and click Show again.": "Valitse enintään kahden viikon tiedot kerrallaan, ja paina Näytä -nappia uudellen.", + "Show profiles table": "Näytä profiilitaulukko", + "Show predictions": "Näytä ennusteet", + "Timeshift on meals larger than": "Aikamuutos aterioilla jotka ovat suuremmat kuin", + "g carbs": "grammaa hiilihydraattia", + "consumed between": "syöty välillä", + "Previous": "Edellinen", + "Previous day": "Edellinen päivä", + "Next day": "Seuraava päivä", + "Next": "Seuraava", + "Temp basal delta": "Tilapäisen basaalin muutos", + "Authorized by token": "Authorized by token", + "Auth role": "Auth role", + "view without token": "view without token" +} diff --git a/translations/fr_FR.json b/translations/fr_FR.json index d285d574b1c..be8fbf8c0b3 100644 --- a/translations/fr_FR.json +++ b/translations/fr_FR.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/he_IL.json b/translations/he_IL.json index 516f429b679..ec18edbb156 100644 --- a/translations/he_IL.json +++ b/translations/he_IL.json @@ -660,5 +660,28 @@ "Data reads enabled": "קריאת נתונים מופעלת", "Data writes enabled": "רישום נתונים מופעל", "Data writes not enabled": "רישום נתונים מופסק", - "Color prediction lines": "Color prediction lines" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/hr_HR.json b/translations/hr_HR.json index f750a2ab36e..63c2ab48742 100644 --- a/translations/hr_HR.json +++ b/translations/hr_HR.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/hu_HU.json b/translations/hu_HU.json index 6dccf0b9561..61e8ccb9af2 100644 --- a/translations/hu_HU.json +++ b/translations/hu_HU.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/it_IT.json b/translations/it_IT.json index 830e2e29102..56bf87eb0b5 100644 --- a/translations/it_IT.json +++ b/translations/it_IT.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/ja_JP.json b/translations/ja_JP.json index 44bac3bbbda..a354651ae19 100644 --- a/translations/ja_JP.json +++ b/translations/ja_JP.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/ko_KR.json b/translations/ko_KR.json index a1ef3fc256b..6feab346652 100644 --- a/translations/ko_KR.json +++ b/translations/ko_KR.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/nb_NO.json b/translations/nb_NO.json index 3aa0ef72184..ce56be99c48 100644 --- a/translations/nb_NO.json +++ b/translations/nb_NO.json @@ -119,7 +119,7 @@ "Record": "Registrering", "Quick picks": "Hurtigvalg", "Show hidden": "Vis skjulte", - "Your API secret or token": "Din API-hemmelighet eller tilgangsnøkkel", + "Your API secret or token": "API-hemmelighet eller tilgangsnøkkel", "Remember this device. (Do not enable this on public computers.)": "Husk denne enheten (Ikke velg dette på offentlige eller delte datamaskiner)", "Treatments": "Behandlinger", "Time": "Tid", @@ -189,7 +189,7 @@ "Carbs-on-Board": "Aktive karbo (cob)", "Bolus Wizard Preview": "Boluskalk (bwp)", "Value Loaded": "Verdi lastet", - "Cannula Age": "Nålalder", + "Cannula Age": "Nålalder (cage)", "Basal Profile": "Basalprofil (basal)", "Silence for 30 minutes": "Stille i 30 min", "Silence for 60 minutes": "Stille i 60 min", @@ -225,7 +225,7 @@ "View all treatments": "Vis behandlinger", "Enable Alarms": "Aktiver alarmer", "Pump Battery Change": "Bytte av pumpebatteri", - "Pump Battery Low Alarm": "Pumpebatteri Lav alarm", + "Pump Battery Low Alarm": "Pumpebatteri: Lav alarm", "Pump Battery change overdue!": "Pumpebatteriet må byttes!", "When enabled an alarm may sound.": "Når aktivert kan en alarm lyde.", "Urgent High Alarm": "Kritisk høy alarm", @@ -288,42 +288,42 @@ "oldest on top": "Eldste først", "newest on top": "Nyeste først", "All sensor events": "Alle sensorhendelser", - "Remove future items from mongo database": "Fjern fremtidige elementer fra Mongo database", - "Find and remove treatments in the future": "Finn og fjern fremtidige behandlinger", - "This task find and remove treatments in the future.": "Denne funksjonen finner og fjerner fremtidige behandlinger.", - "Remove treatments in the future": "Fjern fremtidige behandlinger", - "Find and remove entries in the future": "Finn og fjern fremtidige hendelser", - "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Denne funksjonen finner og fjerner fremtidige CGM data som er lastet opp med feil dato/tid.", - "Remove entries in the future": "Fjern fremtidige hendelser", + "Remove future items from mongo database": "Slett fremtidige elementer fra Mongo databasen", + "Find and remove treatments in the future": "Finn og slett fremtidige behandlinger", + "This task find and remove treatments in the future.": "Denne funksjonen finner og sletter fremtidige behandlinger.", + "Remove treatments in the future": "Slett fremtidige behandlinger", + "Find and remove entries in the future": "Finn og slett fremtidige hendelser", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Denne funksjonen finner og sletter fremtidige CGM data som er lastet opp med feil dato/tid.", + "Remove entries in the future": "Slett fremtidige hendelser", "Loading database ...": "Leser database ...", "Database contains %1 future records": "Databasen inneholder %1 fremtidige hendelser", - "Remove %1 selected records?": "Fjern %1 valgte elementer?", + "Remove %1 selected records?": "Slette %1 valgte elementer?", "Error loading database": "Feil under lasting av database", - "Record %1 removed ...": "Element %1 fjernet", - "Error removing record %1": "Feil under fjerning av registrering %1", - "Deleting records ...": "Fjerner registreringer...", + "Record %1 removed ...": "Element %1 slettet ...", + "Error removing record %1": "Feil under sletting av registrering %1", + "Deleting records ...": "Sletter registreringer...", "%1 records deleted": "%1 registreringer slettet", - "Clean Mongo status database": "Rydd i Mongo \"status\" databasen", - "Delete all documents from devicestatus collection": "Fjern alle dokumenter fra \"devicestatus\" samlingen", - "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra \"devicestatus\" samlingen. Nyttig når status for opplaster-batteri ikke blir opppdatert.", - "Delete all documents": "Fjern alle dokumenter", - "Delete all documents from devicestatus collection?": "Fjern alle dokumenter fra \"devicestatus\" samlingen?", + "Clean Mongo status database": "Rydd i Mongo-databasen for \"device status\"", + "Delete all documents from devicestatus collection": "Slett alle dokumenter fra \"devicestatus\" samlingen", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Denne funksjonen sletter alle dokumenter fra \"devicestatus\" samlingen. Nyttig når status for opplaster-batteri ikke blir oppdatert.", + "Delete all documents": "Slett alle dokumenter", + "Delete all documents from devicestatus collection?": "Slette alle dokumenter fra \"devicestatus\" samlingen?", "Database contains %1 records": "Databasen inneholder %1 registreringer", - "All records removed ...": "Alle elementer fjernet ...", + "All records removed ...": "Alle elementer er slettet ...", "Delete all documents from devicestatus collection older than 30 days": "Slett alle dokumenter fra \"devicestatus\" samlingen som er eldre enn 30 dager", "Number of Days to Keep:": "Antall dager å beholde:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra \"devicestatus\" samlingen som er eldre enn 30 dager. Nyttig når status for opplaster-batteri ikke blir opppdatert.", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Denne funksjonen sletter alle dokumenter fra \"devicestatus\" samlingen som er eldre enn 30 dager. Nyttig når status for opplaster-batteri ikke blir oppdatert.", "Delete old documents from devicestatus collection?": "Slett gamle dokumenter fra \"devicestatus\" samlingen?", - "Clean Mongo entries (glucose entries) database": "Rydd i Mongo \"entries\" databasen (blodsukkerregistreringer)", + "Clean Mongo entries (glucose entries) database": "Rydd i Mongo-databasen for blodsukkerregistreringer", "Delete all documents from entries collection older than 180 days": "Slett alle dokumenter fra \"entries\" samlingen som er eldre enn 180 dager", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra \"entries\" samlingen som er eldre enn 180 dager. Nyttig når status for opplaster-batteri ikke blir opppdatert.", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Denne funksjonen sletter alle dokumenter fra \"entries\" samlingen som er eldre enn 180 dager. Nyttig når status for opplaster-batteri ikke blir oppdatert.", "Delete old documents": "Slett eldre dokumenter", "Delete old documents from entries collection?": "Slett gamle dokumenter fra \"entries\" samlingen?", "%1 is not a valid number": "%1 er ikke et gyldig tall", "%1 is not a valid number - must be more than 2": "%1 er ikke et gyldig tall - må være mer enn 2", - "Clean Mongo treatments database": "Rengjør Mongo-behandling database", + "Clean Mongo treatments database": "Rydd i Mongo-databasen for behandlinger", "Delete all documents from treatments collection older than 180 days": "Slett alle dokumenter fra \"treatments\" samlingen som er eldre enn 180 dager", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Denne funksjonen fjerner alle dokumenter fra \"treatments\" samlingen som er eldre enn 180 dager. Nyttig når status for opplaster-batteri ikke blir opppdatert.", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Denne funksjonen sletter alle dokumenter fra \"treatments\" samlingen som er eldre enn 180 dager. Nyttig når status for opplaster-batteri ikke blir oppdatert.", "Delete old documents from treatments collection?": "Slett gamle dokumenter fra \"treatments\" samlingen?", "Admin Tools": "Administrasjonsverktøy", "Nightscout reporting": "Rapporter", @@ -391,21 +391,21 @@ "Delete": "Slett", "Move insulin": "Flytt insulin", "Move carbs": "Flytt karbohydrater", - "Remove insulin": "Fjern insulin", - "Remove carbs": "Fjern karbohydrater", + "Remove insulin": "Slett insulin", + "Remove carbs": "Slett karbohydrater", "Change treatment time to %1 ?": "Endre behandlingstid til %1 ?", "Change carbs time to %1 ?": "Endre karbohydrattid til %1 ?", "Change insulin time to %1 ?": "Endre insulintid til %1 ?", - "Remove treatment ?": "Fjern behandling ?", - "Remove insulin from treatment ?": "Fjern insulin fra behandling ?", - "Remove carbs from treatment ?": "Fjern karbohydrater fra behandling ?", + "Remove treatment ?": "Slette behandling ?", + "Remove insulin from treatment ?": "Slette insulin fra behandling?", + "Remove carbs from treatment ?": "Slette karbohydrater fra behandling ?", "Rendering": "Tegner grafikk", "Loading OpenAPS data of": "Laster OpenAPS data for", "Loading profile switch data": "Laster nye profildata", "Redirecting you to the Profile Editor to create a new profile.": "Feil profilinstilling.\nIngen profil valgt for valgt tid.\nVideresender for å lage ny profil.", "Pump": "Pumpe", - "Sensor Age": "Sensoralder (SAGE)", - "Insulin Age": "Insulinalder (IAGE)", + "Sensor Age": "Sensoralder (sage)", + "Insulin Age": "Insulinalder (iage)", "Temporary target": "Mildertidig mål", "Reason": "Årsak", "Eating soon": "Snart tid for mat", @@ -499,7 +499,7 @@ "Cannula change overdue!": "Byttetid for infusjonssett overskredet", "Time to change cannula": "På tide å bytte infusjonssett", "Change cannula soon": "Bytt infusjonssett snart", - "Cannula age %1 hours": "infusjonssett alder %1 timer", + "Cannula age %1 hours": "Nålalder %1 timer", "Inserted": "Satt inn", "CAGE": "Nålalder", "COB": "Aktive karbo", @@ -656,9 +656,32 @@ "virtAsstDatabaseSize": "%1 MiB. Dette er %2% av tilgjengelig databaseplass.", "virtAsstTitleDatabaseSize": "Database filstørrelse", "Carbs/Food/Time": "Karbo/Mat/Abs.tid", - "Reads enabled in default permissions": "Leser aktivert i standardtillatelser", - "Data reads enabled": "Dataleser aktivert", - "Data writes enabled": "Dataskriver aktivert", - "Data writes not enabled": "Dataskriver ikke aktivert", - "Color prediction lines": "Color prediction lines" -} \ No newline at end of file + "Reads enabled in default permissions": "Lesetilgang er aktivert i innstillingene", + "Data reads enabled": "Lesetilgang aktivert", + "Data writes enabled": "Skrivetilgang aktivert", + "Data writes not enabled": "Skrivetilgang ikke aktivert", + "Color prediction lines": "Fargede prediksjonslinjer", + "Release Notes": "Utgivelsesnotater", + "Check for Updates": "Se etter oppdateringer", + "Open Source": "Åpen kildekode", + "Nightscout Info": "Dokumentasjon for 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.": "Det primære formålet med Loopalyzer er å visualisere hvordan Loop opererer i lukket loop. Den kan også virke med andre oppsett, både lukket og åpen loop, og uten loop. Men avhengig av hvilken opplaster du bruker, hvor ofte den kan samle og laste opp data, og hvordan det kan laste opp manglende data i ettertid, kan noen grafer ha tomrom eller til og med være helt fraværende. Sørg alltid for at grafene ser rimelige ut. For å sjekke at dataene er komplette, er det best å se på én dag om gangen, og bla gjennom noen dager slik at mangler kan oppdages.", + "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 har en tidsforskyvnings-funksjon. Hvis du for eksempel spiser frokost kl. 07:00 én dag og kl 08:00 dagen etter, vil den gjennomsnittlige blodsukkerkurven for disse to dagene mest sannsynlig se utflatet ut, og skjule den faktiske responsen av måltidet. Tidsforskyvningen beregner det gjennomsnittlige starttidspunktet for måltidene, og forskyver deretter alle data (karbohydrat, insulin, basaldata osv.) for begge dagene slik at måltidene sammenfaller med gjennomsnittlig starttid.", + "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.": "I dette eksemplet skyves alle data fra første dag 30 minutter fremover i tid, og alle data fra andre dag 30 minutter bakover i tid. Det vil da fremstå som om du spiste frokost klokken 07:30 begge dager. Dette gjør at du kan se din faktiske gjennomsnittlige blodglukoserespons fra et måltid.", + "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.": "Tidsforskyvningen blir uthevet med grått for perioden etter gjennomsnittlig starttid for måltidet, med varighet lik DIA (Duration of Insulin Action). Siden alle datapunktene er forskjøvet for hele dagen, kan kurvene utenfor det grå området være unøyaktige.", + "Note that time shift is available only when viewing multiple days.": "Merk at tidsforskyvning kun er tilgjengelig når du ser på flere dager.", + "Please select a maximum of two weeks duration and click Show again.": "Velg maksimalt to ukers varighet og klikk på Vis igjen.", + "Show profiles table": "Vis profiler som tabell", + "Show predictions": "Vis prediksjoner", + "Timeshift on meals larger than": "Tidsforskyvning ved måltider større enn", + "g carbs": "g karbohydrater", + "consumed between": "inntatt mellom", + "Previous": "Forrige", + "Previous day": "Forrige dag", + "Next day": "Neste dag", + "Next": "Neste", + "Temp basal delta": "Midlertidig basal delta", + "Authorized by token": "Autorisert med tlgangsnøkkel", + "Auth role": "Autorisert", + "view without token": "vis uten tilgangsnøkkel" +} diff --git a/translations/nl_NL.json b/translations/nl_NL.json index 4e89e11767a..d401525eae8 100644 --- a/translations/nl_NL.json +++ b/translations/nl_NL.json @@ -660,5 +660,28 @@ "Data reads enabled": "Gegevens lezen ingeschakeld", "Data writes enabled": "Gegevens schrijven ingeschakeld", "Data writes not enabled": "Gegevens schrijven uitgeschakeld", - "Color prediction lines": "Gekleurde voorspellingslijnen" -} \ No newline at end of file + "Color prediction lines": "Gekleurde voorspellingslijnen", + "Release Notes": "Versie opmerkingen", + "Check for Updates": "Zoek naar updates", + "Open Source": "Open source", + "Nightscout Info": "Nightscout Informatie", + "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.": "Het primaire doel van Loopalyzer is om te visualiseren hoe het Loop closed loop systeem presteert. Het kan ook werken met andere opstellingen, zowel in de closed en open loop als in de niet-loop. Echter afhankelijk van welke uploader u gebruikt, hoe vaak het in staat is om uw gegevens vast te leggen en te uploaden, en hoe het in staat is om ontbrekende gegevens op te vullen, kunnen sommige grafieken gaten hebben of zelfs volledig leeg zijn. Zorg er altijd voor dat de grafieken er redelijk uitzien. Het beste is om één dag tegelijk te bekijken en scroll door een aantal dagen eerst om te zien.", + "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 bevat een functie voor tijdverschuiving. Als je bijvoorbeeld het ontbijt eet om 07:00 en om 08:00 op de dag erna, zal je gemiddelde bloedglucosecurve van deze twee dagen er zeer waarschijnlijk vlak uitzien en niet de werkelijke reactie laten zien na het ontbijt. Tijdverschuiving berekent de gemiddelde tijd dat deze maaltijden werden gegeten en verplaatst vervolgens alle data (koolhydraten, insuline, basaal, etc) zodat het lijkt of beide maaltijden op dezelfde tijd zijn gegeten.", + "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 dit voorbeeld worden alle gegevens van de eerste dag 30 minuten naar voren geschoven en alle gegevens vanaf de tweede dag 30 minuten naar achter geschoven, dus het lijkt alsof je om 7:30 beide dagen hebt ontbeten. Hiermee kunt u uw gemiddelde bloedglucosereactie van een maaltijd zien.", + "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.": "Tijdverschuiving benadrukt de periode na de gemiddelde begintijd in het grijs, voor de duur van de DIA (duur van insuline actie). Omdat alle gegevens van de hele dag verschoven zijn kunnen de gegevens buiten het grijze gebied mogelijk niet accuraat zijn.", + "Note that time shift is available only when viewing multiple days.": "Merk op dat tijdverschuiving alleen beschikbaar is bij het bekijken van meerdere dagen.", + "Please select a maximum of two weeks duration and click Show again.": "Selecteer maximaal twee weken en klik opnieuw op Laat Zien.", + "Show profiles table": "Profieltabel weergeven", + "Show predictions": "Toon voorspellingen", + "Timeshift on meals larger than": "Tijd verschuiving op maaltijden groter dan", + "g carbs": "g koolhydraten", + "consumed between": "gegeten tussen", + "Previous": "Vorige", + "Previous day": "Vorige dag", + "Next day": "Volgende dag", + "Next": "Volgende", + "Temp basal delta": "Tijdelijk basaal delta", + "Authorized by token": "Geautoriseerd met token", + "Auth role": "Auth rol", + "view without token": "bekijken zonder token" +} diff --git a/translations/pl_PL.json b/translations/pl_PL.json index ba230f69e92..7e7b4656037 100644 --- a/translations/pl_PL.json +++ b/translations/pl_PL.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/pt_BR.json b/translations/pt_BR.json index de5402e7388..7df52dea076 100644 --- a/translations/pt_BR.json +++ b/translations/pt_BR.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/ro_RO.json b/translations/ro_RO.json index d2cfd939dc7..8e29bc99f36 100644 --- a/translations/ro_RO.json +++ b/translations/ro_RO.json @@ -24,9 +24,9 @@ "Last 2 weeks": "Ultimele 2 săptămâni", "Last month": "Ultima lună", "Last 3 months": "Ultimele 3 luni", - "between": "between", - "around": "around", - "and": "and", + "between": "între", + "around": "aproximativ", + "and": "și", "From": "De la", "To": "La", "Notes": "Note", @@ -53,13 +53,13 @@ "": "", "Result is empty": "Fără rezultat", "Day to day": "Zi cu zi", - "Week to week": "Week to week", + "Week to week": "Săptămâna la săptămână", "Daily Stats": "Statistici zilnice", "Percentile Chart": "Grafic percentile", "Distribution": "Distribuție", "Hourly stats": "Statistici orare", - "netIOB stats": "netIOB stats", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "netIOB stats": "Statistici netIOB", + "temp basals must be rendered to display this report": "bazalele temporare trebuie redate pentru a afișa acest raport", "Weekly success": "Rezultate săptămânale", "No data available": "Fără date", "Low": "Prea jos", @@ -95,7 +95,7 @@ "No API secret hash stored yet. You need to enter API secret.": "Încă nu există cheie API secretă. Aceasta trebuie introdusă.", "Database loaded": "Baza de date încărcată", "Error: Database failed to load": "Eroare: Nu s-a încărcat baza de date", - "Error": "Error", + "Error": "Eroare", "Create new record": "Crează înregistrare nouă", "Save record": "Salvează înregistrarea", "Portions": "Porții", @@ -109,7 +109,7 @@ "Your API secret must be at least 12 characters long": "Cheia API trebuie să aibă mai mult de 12 caractere", "Bad API secret": "Cheie API greșită", "API secret hash stored": "Cheie API înregistrată", - "Status": "Status", + "Status": "Stare", "Not loaded": "Neîncărcat", "Food Editor": "Editor alimente", "Your database": "Baza de date", @@ -119,8 +119,8 @@ "Record": "Înregistrare", "Quick picks": "Selecție rapidă", "Show hidden": "Arată înregistrările ascunse", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "API secret sau cod token", + "Remember this device. (Do not enable this on public computers.)": "Tine minte acest dispozitiv. (Nu activaţi pe calculatoarele publice.)", "Treatments": "Tratamente", "Time": "Ora", "Event Type": "Tip eveniment", @@ -211,7 +211,7 @@ "Exercise": "Activitate fizică", "Pump Site Change": "Schimbare loc pompă", "CGM Sensor Start": "Start senzor", - "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Stop": "Stop senzor CGM", "CGM Sensor Insert": "Schimbare senzor", "Dexcom Sensor Start": "Pornire senzor Dexcom", "Dexcom Sensor Change": "Schimbare senzor Dexcom", @@ -224,9 +224,9 @@ "Amount in units": "Cantitate în unități", "View all treatments": "Vezi toate evenimentele", "Enable Alarms": "Activează alarmele", - "Pump Battery Change": "Pump Battery Change", - "Pump Battery Low Alarm": "Pump Battery Low Alarm", - "Pump Battery change overdue!": "Pump Battery change overdue!", + "Pump Battery Change": "Schimbare baterie pompă", + "Pump Battery Low Alarm": "Alarmă Baterie Scăzută la pompă", + "Pump Battery change overdue!": "Intarziere la schimbarea bateriei de la pompă!", "When enabled an alarm may sound.": "Când este activ, poate suna o alarmă.", "Urgent High Alarm": "Alarmă urgentă hiper", "High Alarm": "Alarmă hiper", @@ -276,7 +276,7 @@ "Carb Time": "Ora carbohidrați", "Language": "Limba", "Add new": "Adaugă nou", - "g": "g", + "g": "gr", "ml": "ml", "pcs": "buc", "Drag&drop food here": "Drag&drop aliment aici", @@ -302,7 +302,7 @@ "Record %1 removed ...": "Înregistrarea %1 a fost ștearsă...", "Error removing record %1": "Eroare la ștergerea înregistrării %1", "Deleting records ...": "Se șterg înregistrările...", - "%1 records deleted": "%1 records deleted", + "%1 records deleted": "1% inregistrari sterse", "Clean Mongo status database": "Curăță tabela despre status din Mongo", "Delete all documents from devicestatus collection": "Șterge toate documentele din colecția de status dispozitiv", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele din colecția devicestatus. Se folosește când încărcarea bateriei nu se afișează corect.", @@ -310,21 +310,21 @@ "Delete all documents from devicestatus collection?": "Șterg toate documentele din colecția devicestatus?", "Database contains %1 records": "Baza de date conține %1 înregistrări", "All records removed ...": "Toate înregistrările au fost șterse.", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", - "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", - "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents": "Delete old documents", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", - "%1 is not a valid number": "%1 is not a valid number", - "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Delete all documents from devicestatus collection older than 30 days": "Șterge toate documentele mai vechi de 30 de zile din starea dispozitivului", + "Number of Days to Keep:": "Numărul de zile de păstrat:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele mai vechi de 30 de zile din starea dispozitivului. Se folosește când încărcarea bateriei nu se afișează corect.", + "Delete old documents from devicestatus collection?": "Șterg toate documentele din colecția starea dispozitivului?", + "Clean Mongo entries (glucose entries) database": "Curătă intrarile in baza de date Mongo (intrări de glicemie)", + "Delete all documents from entries collection older than 180 days": "Șterge toate documentele mai vechi de 180 de zile din starea dispozitivului", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele mai vechi de 180 de zile din starea dispozitivului. Se folosește când încărcarea bateriei nu se afișează corect.", + "Delete old documents": "Șterge toate documentele vechi", + "Delete old documents from entries collection?": "Șterg toate documentele vechi din colecția starea dispozitivului?", + "%1 is not a valid number": "%1 nu este un număr valid", + "%1 is not a valid number - must be more than 2": "%1 nu este un număr valid - trebuie să fie mai mare de 2", + "Clean Mongo treatments database": "Curăță baza de date de tratamente", + "Delete all documents from treatments collection older than 180 days": "Șterge toate documentele mai vechi de 180 de zile din starea dispozitivului", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele mai vechi de 180 de zile din starea dispozitivului. Se folosește când încărcarea bateriei nu se afișează corect.", + "Delete old documents from treatments collection?": "Șterg toate documentele vechi din colecția starea dispozitivului?", "Admin Tools": "Instrumente de administrare", "Nightscout reporting": "Rapoarte Nightscout", "Cancel": "Renunță", @@ -380,7 +380,7 @@ "Add new interval before": "Adaugă un nou interval înainte", "Delete interval": "Șterge interval", "I:C": "ICR", - "ISF": "ISF", + "ISF": "ISF (factor de sensibilitate la insulina)", "Combo Bolus": "Bolus extins", "Difference": "Diferență", "New time": "Oră nouă", @@ -434,7 +434,7 @@ "Subjects - People, Devices, etc": "Subiecte - Persoane, dispozitive, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Fiecare subiect va avea o cheie unică de acces și unul sau mai multe roluri. Apăsați pe cheia de acces pentru a vizualiza subiectul selectat, acest link poate fi distribuit.", "Add new Subject": "Adaugă un Subiect nou", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to %1 Subject": "Imposibil de %1 Subiect", "Unable to delete Subject": "Imposibil de șters Subiectul", "Database contains %1 subjects": "Baza de date are %1 subiecți", "Edit Subject": "Editează Subiectul", @@ -463,9 +463,9 @@ "Active combo bolus start": "Start bolus combinat activ", "Active combo bolus duration": "Durată bolus combinat activ", "Active combo bolus remaining": "Rest de bolus combinat activ", - "BG Delta": "Diferență glicemie", + "BG Delta": "Variația glicemiei", "Elapsed Time": "Timp scurs", - "Absolute Delta": "Diferență absolută", + "Absolute Delta": "Variația absolută", "Interpolated": "Interpolat", "BWP": "Ajutor bolusare (BWP)", "Urgent": "Urgent", @@ -544,7 +544,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Timpul în fluctuație și timpul în fluctuație rapidă măsoară procentul de timp, din perioada examinată, în care glicemia din sânge a avut o variație relativ rapidă sau rapidă. Valorile mici sunt de preferat.", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Schimbarea medie totală zilnică este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de zile. Valorile mici sunt de preferat.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Variația media orară este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de ore din aceeași perioadă. Valorile mici sunt de preferat.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "RMS în afara tintelor se calculează prin insumarea tuturor ridicărilor la pătrat a distanțelor din afara intervalului pentru toate valorile de glicemie din perioada examinată, care se impart apoi la numarul lor si ulterior se calculează rădăcina pătrată a acestui rezultat. Această măsurătoare este similară cu procentajul în interval, dar cu greutate mai mare pe valorile mai mari. Valorile mai mici sunt mai bune.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">aici.", "Mean Total Daily Change": "Variația medie totală zilnică", @@ -556,65 +556,65 @@ "SingleDown": "scădere", "DoubleDown": "scădere bruscă", "DoubleUp": "creștere rapidă", - "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", + "virtAsstUnknown": "Acea valoare este necunoscută în acest moment. Te rugăm să consulți site-ul Nightscout pentru mai multe detalii.", + "virtAsstTitleAR2Forecast": "Predicție AR2", + "virtAsstTitleCurrentBasal": "Bazala actuală", + "virtAsstTitleCurrentCOB": "COB actuali", + "virtAsstTitleCurrentIOB": "IOB actuală", + "virtAsstTitleLaunch": "Bine ați venit la Nightscout", + "virtAsstTitleLoopForecast": "Prognoză Loop", + "virtAsstTitleLastLoop": "Ultima Loop", + "virtAsstTitleOpenAPSForecast": "Predicție OpenAPS", + "virtAsstTitlePumpReservoir": "Insulină rămasă", + "virtAsstTitlePumpBattery": "Baterie pompă", + "virtAsstTitleRawBG": "Glicemie bruta actuala", + "virtAsstTitleUploaderBattery": "Baterie telefon", + "virtAsstTitleCurrentBG": "Glicemie actuala", + "virtAsstTitleFullStatus": "Stare completă", + "virtAsstTitleCGMMode": "Mod CGM", + "virtAsstTitleCGMStatus": "Stare CGM", + "virtAsstTitleCGMSessionAge": "Vechime sesiune CGM", + "virtAsstTitleCGMTxStatus": "Stare transmițător CGM", + "virtAsstTitleCGMTxAge": "Vârsta transmițător CGM", + "virtAsstTitleCGMNoise": "Zgomot CGM", + "virtAsstTitleDelta": "Variatia glicemiei", "virtAsstStatus": "%1 și %2 din %3.", "virtAsstBasal": "%1 bazala curentă este %2 unități pe oră", "virtAsstBasalTemp": "%1 bazala temporară de %2 unități pe oră se va termina la %3", "virtAsstIob": "și mai aveți %1 insulină activă.", "virtAsstIobIntent": "Aveți %1 insulină activă", "virtAsstIobUnits": "%1 unități", - "virtAsstLaunch": "What would you like to check on Nightscout?", - "virtAsstPreamble": "Your", + "virtAsstLaunch": "Ce doriți să verificați pe Nightscout?", + "virtAsstPreamble": "Al tau", "virtAsstPreamble3person": "%1 are ", "virtAsstNoInsulin": "fără", "virtAsstUploadBattery": "Bateria uploaderului este la %1", "virtAsstReservoir": "Mai aveți %1 unități rămase", "virtAsstPumpBattery": "Bateria pompei este la %1 %2", - "virtAsstUploaderBattery": "Your uploader battery is at %1", + "virtAsstUploaderBattery": "Bateria telefonului este la %1", "virtAsstLastLoop": "Ultima decizie loop implementată cu succes a fost %1", "virtAsstLoopNotAvailable": "Extensia loop pare a fi dezactivată", "virtAsstLoopForecastAround": "Potrivit previziunii date de loop se estiemază around %1 pentru următoarele %2", "virtAsstLoopForecastBetween": "Potrivit previziunii date de loop se estiemază between %1 and %2 pentru următoarele %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", + "virtAsstAR2ForecastAround": "Potrivit previziunii AR2 se estimează ca vei fi pe la %1 in următoarele %2", + "virtAsstAR2ForecastBetween": "Potrivit previziunii AR2 se estimează ca vei fi intre %1 si %2 in următoarele %3", "virtAsstForecastUnavailable": "Estimarea este imposibilă pe baza datelor disponibile", "virtAsstRawBG": "Glicemia brută este %1", "virtAsstOpenAPSForecast": "Glicemia estimată de OpenAPS este %1", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstCob3person": "%1 are %2 carbohidrați la bord", + "virtAsstCob": "Ai %1 carbohidrați la bord", + "virtAsstCGMMode": "Modul tău CGM a fost %1 din %2.", + "virtAsstCGMStatus": "Starea CGM-ului tău a fost de %1 din %2.", + "virtAsstCGMSessAge": "Sesiunea dvs. CGM a fost activă de %1 zile și %2 ore.", + "virtAsstCGMSessNotStarted": "Nu există nici o sesiune activă CGM în acest moment.", + "virtAsstCGMTxStatus": "Starea transmițătorului CGM a fost %1 din %2.", + "virtAsstCGMTxAge": "Transmițătorul dvs. CGM are %1 zile vechime.", + "virtAsstCGMNoise": "Zgomotul CGM a fost %1 din %2.", + "virtAsstCGMBattOne": "Bateria CGM-ului a fost de %1 volți din %2.", + "virtAsstCGMBattTwo": "Nivelurile bateriei CGM au fost de %1 volți și %2 volți din %3.", + "virtAsstDelta": "Variatia a fost %1 între %2 și %3.", + "virtAsstUnknownIntentTitle": "Intenție necunoscută", + "virtAsstUnknownIntentText": "Îmi pare rău, nu ştiu ce doriţi.", "Fat [g]": "Grăsimi [g]", "Protein [g]": "Proteine [g]", "Energy [kJ]": "Energie [g]", @@ -623,9 +623,9 @@ "Color": "Culoare", "Simple": "Simplu", "TDD average": "Media Dozei Zilnice Totale de insulină (TDD)", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", + "Bolus average": "Media bolusului", + "Basal average": "Media bazalei", + "Base basal average:": "Media bazalei de bază:", "Carbs average": "Media carbohidraților", "Eating Soon": "Mâncare în curând", "Last entry {0} minutes ago": "Ultima înregistrare acum {0} minute", @@ -640,25 +640,48 @@ "ago": "în trecut", "Last data received": "Ultimele date primite", "Clock View": "Vedere tip ceas", - "Protein": "Protein", - "Fat": "Fat", - "Protein average": "Protein average", - "Fat average": "Fat average", - "Total carbs": "Total carbs", - "Total protein": "Total protein", - "Total fat": "Total fat", - "Database Size": "Database Size", - "Database Size near its limits!": "Database Size near its limits!", - "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", - "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", - "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" -} \ No newline at end of file + "Protein": "Proteine", + "Fat": "Grăsimi", + "Protein average": "Media proteinelor", + "Fat average": "Media grăsimilor", + "Total carbs": "Total carbohidrați", + "Total protein": "Total proteine", + "Total fat": "Total grăsimi", + "Database Size": "Dimensiunea bazei de date", + "Database Size near its limits!": "Mărimea bazei de date se apropie de limita!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Dimensiunea bazei de date este %1 MB din %2 MB. Vă rugăm să faceți o copie de rezervă și să curățați baza de date!", + "Database file size": "Mărimea bazei de date", + "%1 MiB of %2 MiB (%3%)": "%1 MB din %2 MB (%3%)", + "Data size": "Dimensiune date", + "virtAsstDatabaseSize": "%1 MB. Aceasta este %2% din spațiul disponibil pentru baza de date.", + "virtAsstTitleDatabaseSize": "Mărimea bazei de date", + "Carbs/Food/Time": "Carbohidrati/Mâncare/Timp", + "Reads enabled in default permissions": "Citiri activate în permisiunile implicite", + "Data reads enabled": "Citire date activata", + "Data writes enabled": "Scriere date activata", + "Data writes not enabled": "Scriere date neactivata", + "Color prediction lines": "Culoare linii de predicție", + "Release Notes": "Note asupra ediției", + "Check for Updates": "Verificați dacă există actualizări", + "Open Source": "Cod sursă public", + "Nightscout Info": "Informații 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.": "Scopul principal al Loopalyzer este de a vizualiza modul de funcționare a sistemului Loop în buclă închisă. Poate funcționa și cu alte configurații, atât cu buclă închisă, cât și deschisă, și non-buclă. Cu toate acestea, în funcție de uploaderul pe care îl folosiți, cât de frecvent poate captura datele și încărca, și modul în care este capabil să completeze datele care lipsesc, unele grafice pot avea lipsuri sau chiar să fie complet goale. Asigură-te întotdeauna că graficele arată rezonabil. Cel mai bine este să vizualizezi câte o zi pe rand si apoi sa derulezi cu un numar de zile.", + "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 include o funcție de schimbare de timp (Time Shift). Dacă aveți, de exemplu, micul dejun la ora 07:00 într-o zi și la ora 08:00 în ziua următoare, curba glicemiei medii pe aceste două zile va apărea cel mai probabil aplatizata și nu va arăta răspunsul real după un mic dejun. Functia Time Shift va calcula timpul mediu în care aceste mese au fost mâncate şi apoi va schimba toate datele (carbohidraţi, insulină, bazală etc.) în ambele zile, diferenţa de timp corespunzătoare, astfel încât ambele mese să se alinieze cu ora medie de începere a mesei.", + "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.": "În acest exemplu, toate datele din prima zi sunt împinse cu 30 de minute înainte şi toate datele din a doua zi cu 30 de minute înapoi în timp, astfel încât sa apară că aţi avut micul dejun la ora 07:30 în ambele zile. Acest lucru vă permite să vedeţi răspunsul mediu real al glicemiei după masă.", + "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.": "Schimbarea timpului (Time Shift) evidenţiază cu gri perioada de după ora medie de incepere a mesei, pe durata DIA (Acţiunea Insulinei). Deoarece toate valorile de date din toată ziua sunt deplasate, curbele din afara zonei gri pot să nu fie prea exacte.", + "Note that time shift is available only when viewing multiple days.": "Reţineţi că schimbarea de timp (Time Shift) este disponibilă doar când vizualizaţi mai multe zile.", + "Please select a maximum of two weeks duration and click Show again.": "Te rugăm să selectezi maxim două săptămâni și să apeși din nou pe Arată.", + "Show profiles table": "Arată tabelul profilelor", + "Show predictions": "Arată predicții", + "Timeshift on meals larger than": "Deplasare de timp (Time Shift) la mese mai mare ca", + "g carbs": "g carbohidrați", + "consumed between": "consumat între", + "Previous": "Precedent", + "Previous day": "Ziua precedentă", + "Next day": "Ziua următoare", + "Next": "Următorul", + "Temp basal delta": "Variația bazalei temporare", + "Authorized by token": "Autorizat prin cod token", + "Auth role": "Rolul de autentificare", + "view without token": "vizualizare fără cod token" +} diff --git a/translations/ru_RU.json b/translations/ru_RU.json index d4de1f081ca..ad22d3158a0 100644 --- a/translations/ru_RU.json +++ b/translations/ru_RU.json @@ -189,9 +189,9 @@ "Carbs-on-Board": "Активные углеводы COB", "Bolus Wizard Preview": "Калькулятор болюса", "Value Loaded": "Величина загружена", - "Cannula Age": "Катетер проработал", + "Cannula Age": "Катетеру", "Basal Profile": "Профиль Базала", - "Silence for 30 minutes": "Тишина 30 минут", + "Silence for 30 minutes": "Тишина на 30 минут", "Silence for 60 minutes": "Тишина 60 минут", "Silence for 90 minutes": "Тишина 90 минут", "Silence for 120 minutes": "Тишина 120 минут", @@ -246,7 +246,7 @@ "Custom Title": "Произвольное название", "Theme": "Тема", "Default": "По умолчанию", - "Colors": "Цветная", + "Colors": "Цвета", "Colorblind-friendly colors": "Цветовая гамма для людей с нарушениями восприятия цвета", "Reset, and use defaults": "Сбросить и использовать настройки по умолчанию", "Calibrations": "Калибровки", @@ -273,14 +273,14 @@ "Show Plugins": "Показать расширения", "About": "О приложении", "Value in": "Значения в", - "Carb Time": "Время приема углеводов", + "Carb Time": "Времени до приема углеводов", "Language": "Язык", "Add new": "Добавить новый", "g": "г", "ml": "мл", "pcs": "шт", "Drag&drop food here": "Перетащите еду сюда", - "Care Portal": "Портал лечения", + "Care Portal": "Портал терапии", "Medium/Unknown": "Средний/Неизвестный", "IN THE FUTURE": "В БУДУЩЕМ", "Update": "Обновить", @@ -292,7 +292,7 @@ "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": "Найти и удалить данные сенсора из будущего", + "Find and remove entries in the future": "Найти и удалить записи в будущем", "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Эта опция найдет и удалит данные сенсора созданные загрузчиком с неверными датой/временем", "Remove entries in the future": "Удалить данные из будущего", "Loading database ...": "Загрузка базы данных", @@ -348,7 +348,7 @@ "Database records": "Записи в базе данных", "Add new record": "Добавить новую запись", "Remove this record": "Удалить эту запись", - "Clone this record to new": "Клонировать эту запись в новый", + "Clone this record to new": "Клонировать эту запись в новую", "Record valid from": "Запись действительна от", "Stored profiles": "Сохраненные профили", "Timezone": "Часовой пояс", @@ -358,9 +358,9 @@ "Hours:": "час:", "hours": "час", "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)": "Фактор чувствительности к инсулину 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": "Активность углеводов / скорость усвоения", "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)за единицу времени a также количество активных углеводов", "Basal rates [unit/hour]": "Базал [unit/hour]", @@ -660,5 +660,28 @@ "Data reads enabled": "Чтение данных включено", "Data writes enabled": "Запись данных включена", "Data writes not enabled": "Запись данных не включена", - "Color prediction lines": "Color prediction lines" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/sl_SI.json b/translations/sl_SI.json index 5f3876f5d68..64999756373 100644 --- a/translations/sl_SI.json +++ b/translations/sl_SI.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/sv_SE.json b/translations/sv_SE.json index 6b0c5b634b3..aa577808d2f 100644 --- a/translations/sv_SE.json +++ b/translations/sv_SE.json @@ -660,5 +660,28 @@ "Data reads enabled": "Dataläsningar aktiverade", "Data writes enabled": "Dataskrivningar aktiverade", "Data writes not enabled": "Dataskrivningar är inte aktiverade", - "Color prediction lines": "Color prediction lines" -} \ No newline at end of file + "Color prediction lines": "Color prediction lines", + "Release Notes": "Ändringslogg", + "Check for Updates": "Sök efter uppdateringar", + "Open Source": "Öppen källkod", + "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.": "Det primära syftet med Loopalyzer är att visualisera hur Loop slutna loop-systemet fungerar. Det kan fungera med andra installationer också, både stängda och öppna loop, och icke loop. Men beroende på vilken uppladdare du använder, hur ofta den kan samla in dina data och ladda upp, och hur den kan återfylla saknade data vissa grafer kan ha luckor eller till och med vara helt tom. Se alltid till att graferna ser rimliga ut. Bäst är att se en dag i taget och bläddra igenom ett antal dagar först att se.", + "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 innehåller en time shift-funktion. Om du till exempel äter frukost kl 07:00 en dag och kl 08:00 dagen efter din genomsnittliga blodsockerkurva dessa två dagar kommer sannolikt att se tillplattad ut och inte visa det faktiska svaret efter en frukost. Tidsskiftet kommer att beräkna den genomsnittliga tiden dessa måltider äts och sedan flytta alla data (kolhydrater, insulin, basal etc.) under båda dagarna motsvarande tidsskillnad så att båda måltiderna överensstämmer med den genomsnittliga måltiden starttid.", + "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.": "I detta exempel skjuts all data från första dagen 30 minuter framåt i tid och all data från andra dagen 30 minuter bakåt i tiden så det verkar som om du hade haft frukost klockan 07:30 båda dagarna. Detta gör att du kan se din faktiska genomsnittliga blodsockersvar från en måltid.", + "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.": "Tidsskiftet belyser perioden efter den genomsnittliga måltidens starttid i grått, under tiden för DIA (Varaktighet av Insulin Action). Eftersom alla datapunkter hela dagen skiftas kurvorna utanför det gråa området kanske inte är korrekta.", + "Note that time shift is available only when viewing multiple days.": "Observera att tidsförskjutning endast är tillgänglig vid visning av flera dagar.", + "Please select a maximum of two weeks duration and click Show again.": "Välj högst två veckor varaktighet och klicka på Visa igen.", + "Show profiles table": "Visa profiltabellen", + "Show predictions": "Visa förutsägelser", + "Timeshift on meals larger than": "Timeshift på måltider större än", + "g carbs": "g kolhydrater", + "consumed between": "konsumeras mellan", + "Previous": "Föregående", + "Previous day": "Föregående dag", + "Next day": "Nästa dag", + "Next": "Nästa", + "Temp basal delta": "Temp basal delta", + "Authorized by token": "Auktoriserad av token", + "Auth role": "Auth roll", + "view without token": "visa utan token" +} diff --git a/translations/tr_TR.json b/translations/tr_TR.json index dc5e74b64a5..43d8fa67cc3 100644 --- a/translations/tr_TR.json +++ b/translations/tr_TR.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/zh_CN.json b/translations/zh_CN.json index b9178c409f8..8bd6954e6c7 100644 --- a/translations/zh_CN.json +++ b/translations/zh_CN.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} diff --git a/translations/zh_TW.json b/translations/zh_TW.json index 837256a6c7b..b77ff246828 100644 --- a/translations/zh_TW.json +++ b/translations/zh_TW.json @@ -660,5 +660,28 @@ "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" -} \ No newline at end of file + "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": "Timeshift on meals larger than", + "g carbs": "g carbs'", + "consumed between": "consumed between", + "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" +} From 2c30b64c8c79b40e688615b66dd9e91ecbfde71f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 22 Dec 2020 00:12:27 +0200 Subject: [PATCH 052/194] Add a missing localization, fix unit tests --- lib/client/index.js | 3 ++- translations/en/en.json | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/client/index.js b/lib/client/index.js index ca56d4421e5..31eca273ba5 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -814,7 +814,8 @@ client.load = function load (serverSettings, callback) { } function refreshAuthIfNeeded () { - var token = client.browserUtils.queryParms().token || client.authorized.token; + var clientToken = client.authorized ? client.authorized.token : null; + var token = client.browserUtils.queryParms().token || clientToken; if (token && client.authorized) { var renewTime = (client.authorized.exp * 1000) - times.mins(15).msecs - Math.abs((client.authorized.iat * 1000) - client.authorized.lat); var refreshIn = Math.round((renewTime - client.now) / 1000); diff --git a/translations/en/en.json b/translations/en/en.json index 85ba5401e94..cca45f3d4db 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -684,4 +684,5 @@ ,"Authorized by token":"Authorized by token" ,"Auth role":"Auth role" ,"view without token":"view without token" + ,"Remove stored token":"Remove stored token" } From 92cc12ee14e13d7e3b0b41c5884c093fc509f54e Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 22 Dec 2020 11:43:11 +0200 Subject: [PATCH 053/194] Fix a localization key --- lib/admin_plugins/roles.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/admin_plugins/roles.js b/lib/admin_plugins/roles.js index f99c4344449..a054fc48c05 100644 --- a/lib/admin_plugins/roles.js +++ b/lib/admin_plugins/roles.js @@ -17,7 +17,7 @@ module.exports = init; var $status = null; roles.actions = [{ - description: 'Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a seperator.' + description: 'Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.' , buttonLabel: 'Add new Role' , init: function init (client, callback) { $status = $('#admin_' + roles.name + '_0_status'); From 186e9786b3381af2a846675f779fb9bfebcb55db Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 24 Dec 2020 11:26:06 +0200 Subject: [PATCH 054/194] Rename Weekly Success report to Weekly Distribution --- lib/report_plugins/success.js | 4 ++-- translations/en/en.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/report_plugins/success.js b/lib/report_plugins/success.js index a08ef8d045e..62417ac0ef5 100644 --- a/lib/report_plugins/success.js +++ b/lib/report_plugins/success.js @@ -4,7 +4,7 @@ var times = require('../times'); var success = { name: 'success' - , label: 'Weekly success' + , label: 'Weekly Distribution' , pluginType: 'report' }; @@ -17,7 +17,7 @@ module.exports = init; success.html = function html (client) { var translate = client.translate; var ret = - '

' + translate('Weekly Success') + '

' + + '

' + translate('Weekly Distribution') + '

' + '
'; return ret; }; diff --git a/translations/en/en.json b/translations/en/en.json index cca45f3d4db..5a54777cc9f 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -59,7 +59,6 @@ ,"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" - ,"Weekly success":"Weekly success" ,"No data available":"No data available" ,"Low":"Low" ,"In Range":"In Range" @@ -685,4 +684,5 @@ ,"Auth role":"Auth role" ,"view without token":"view without token" ,"Remove stored token":"Remove stored token" + ,"Weekly Distribution":"Weekly Distribution" } From f36048dc14aef881ed6d78f65f9470c6bbd38bdc Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 27 Dec 2020 13:48:59 +0200 Subject: [PATCH 055/194] Fix a bug with auth calls that send a false API secret --- lib/authorization/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/authorization/index.js b/lib/authorization/index.js index f6c45802459..e5ea3f47871 100644 --- a/lib/authorization/index.js +++ b/lib/authorization/index.js @@ -206,7 +206,7 @@ function init (env, ctx) { console.error('Resolving secret/token to permissions failed'); addFailedRequest(data.ip); - callback('All validation failed', {}); + if (callback) { callback('All validation failed', {}); } return {}; }; From fc9fd3425b5ebc476629fd94e62f4db061c92169 Mon Sep 17 00:00:00 2001 From: Ben West Date: Wed, 30 Dec 2020 13:56:40 -0800 Subject: [PATCH 056/194] upgrade minimed-connect-to-nightscout 1.5.0 Update to version available in npm. --- npm-shrinkwrap.json | 5 +++-- package.json | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 17299a3caaf..3cd7c452eef 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -6325,8 +6325,9 @@ } }, "minimed-connect-to-nightscout": { - "version": "github:nightscout/minimed-connect-to-nightscout#2a76725d4b27fd98be8b4eb9f11caba6ec7e3f55", - "from": "github:nightscout/minimed-connect-to-nightscout#wip/rebased/dev", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/minimed-connect-to-nightscout/-/minimed-connect-to-nightscout-1.5.0.tgz", + "integrity": "sha512-GwJHXK8STPAdGh6B8YMyht1XKSwi2hRIMk0+madrIHz9dynSlMHLw2TzfFW2SMW9n0lRWRF8WqPKMNgweEv7/A==", "requires": { "axios": "^0.19.2", "axios-cookiejar-support": "^1.0.0", diff --git a/package.json b/package.json index 74356483325..b5bb73dcf21 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "lodash": "^4.17.20", "memory-cache": "^0.2.0", "mime": "^2.4.6", - "minimed-connect-to-nightscout": "github:nightscout/minimed-connect-to-nightscout#wip/rebased/dev", + "minimed-connect-to-nightscout": "^1.5.0", "moment": "^2.27.0", "moment-locales-webpack-plugin": "^1.2.0", "moment-timezone": "^0.5.31", From 411463e5954b278f2f44b95c6a7ac87b401727bb Mon Sep 17 00:00:00 2001 From: Lennart Goedhart Date: Fri, 1 Jan 2021 21:40:51 +1100 Subject: [PATCH 057/194] Replace Travis build with a GitHub Action (#6690) * Create Docker release workflow for GA * Remove Travis workflow * Remove dependency on Makefile * Update default environment to Node 14 * Use git SHA instead of version for `dev` images --- .github/workflows/main.yml | 113 +++++++++++++++++++++++-------- .nvmrc | 2 +- .travis.yml | 30 -------- Dockerfile.example => Dockerfile | 4 +- Makefile | 21 +++--- 5 files changed, 98 insertions(+), 72 deletions(-) delete mode 100644 .travis.yml rename Dockerfile.example => Dockerfile (76%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e661a61ab7b..3c8e1db7bb6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,34 +1,93 @@ -name: CI test +name: CI test and publish Docker image -on: [push, pull_request] +on: + push: + branches: + - master + - dev + pull_request: + branches: + - master + - dev jobs: - build: - - runs-on: ubuntu-16.04 - + test: + name: Run Tests + runs-on: ubuntu-latest strategy: matrix: - node-version: [12.x] + node-version: [12.x, 14.x] + mongodb-version: [4.2, 4.4] + + steps: + - name: Git Checkout + uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Start MongoDB ${{ matrix.mongodb-version }} + uses: supercharge/mongodb-github-action@1.3.0 + with: + mongodb-version: ${{ matrix.mongodb-version }} + + - name: Install dependencies + run: npm install + - name: Run Tests + run: npm run-script test-ci + - name: Send Coverage + run: npm run-script coverage + + publish_dev: + name: Publish dev branch to Docker Hub + needs: test + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/dev' + env: + DOCKER_IMAGE: nightscout/cgm-remote-monitor + steps: + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASS }} + - name: Clean git Checkout + if: success() + uses: actions/checkout@v2 + - name: Build, tag and push the dev Docker image + if: success() + run: | + docker build --no-cache=true -t ${{ env.DOCKER_IMAGE }}:dev_${{ github.sha }} . + docker image push ${{ env.DOCKER_IMAGE }}:dev_${{ github.sha }} + docker tag ${{ env.DOCKER_IMAGE }}:dev_${{ github.sha }} ${{ env.DOCKER_IMAGE }}:latest_dev + docker image push ${{ env.DOCKER_IMAGE }}:latest_dev + publish_master: + name: Publish master branch to Docker Hub + needs: test + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/master' + env: + DOCKER_IMAGE: nightscout/cgm-remote-monitor steps: - - uses: actions/checkout@v1 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - name: Install dependencies - run: npm install - - name: Install MongoDB - run: | - wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add - - echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list - sudo apt-get update - sudo apt-get install -y mongodb-org - sudo apt-get install -y --allow-downgrades mongodb-org=4.4.0 mongodb-org-server=4.4.0 mongodb-org-shell=4.4.0 mongodb-org-mongos=4.4.0 mongodb-org-tools=4.4.0 - - name: Start MongoDB - run: sudo systemctl start mongod - - name: Run Tests - run: npm run-script test-ci - - name: Send Coverage - run: npm run-script coverage + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASS }} + - name: Clean git Checkout + if: success() + uses: actions/checkout@v2 + - name: get-npm-version + if: success() + id: package-version + uses: martinbeentjes/npm-get-version-action@master + - name: Build, tag and push the master Docker image + if: success() + run: | + docker build --no-cache=true -t ${{ env.DOCKER_IMAGE }}:${{ steps.package-version.outputs.current-version }} . + docker image push ${{ env.DOCKER_IMAGE }}:${{ steps.package-version.outputs.current-version }} + docker tag ${{ env.DOCKER_IMAGE }}:${{ steps.package-version.outputs.current-version }} ${{ env.DOCKER_IMAGE }}:latest + docker image push ${{ env.DOCKER_IMAGE }}:latest diff --git a/.nvmrc b/.nvmrc index 89da89da65c..19c4c189d36 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -10.16.0 \ No newline at end of file +14.15.3 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c62652d2a13..00000000000 --- a/.travis.yml +++ /dev/null @@ -1,30 +0,0 @@ -sudo: required -dist: xenial - -node_js-steps: &node_js-steps - language: node_js - before_install: - - if [[ `npm --version` != "6.4.1" ]]; then npm install -g npm@latest; npm --version; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi - # https://github.com/Homebrew/homebrew-core/issues/26358 - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew unlink python; fi - # "brew install" can succeed but return 1 if it has "caveats". - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install mongodb || true; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew services start mongodb; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install docker || true; fi - script: make travis - after_success: - - nvm version - - if [[ ! -z "$DOCKER_USER" ]]; then docker login -u ${DOCKER_USER} -p ${DOCKER_PASS} && git checkout -- . && git clean -fd . && make docker_release; fi - after_script: make report - services: - - mongodb - - docker -matrix: - allow_failures: - node_js: "node" - include: - - node_js: "10" - <<: *node_js-steps - - node_js: "12" - <<: *node_js-steps diff --git a/Dockerfile.example b/Dockerfile similarity index 76% rename from Dockerfile.example rename to Dockerfile index 89a43f43c15..495d461701d 100644 --- a/Dockerfile.example +++ b/Dockerfile @@ -1,6 +1,6 @@ -FROM node:10-alpine +FROM node:14.15.3-alpine -MAINTAINER Nightscout Contributors +LABEL maintainer="Nightscout Contributors" RUN mkdir -p /opt/app ADD . /opt/app diff --git a/Makefile b/Makefile index 1ca626ab88c..46a3c462131 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ MONGO_SETTINGS=MONGO_CONNECTION=${MONGO_CONNECTION} \ # coverage reporter's ability to instrument the tests correctly. # Hard coding it to the local with our pinned version is bigger for # initial installs, but ensures a consistent environment everywhere. -# On Travis, ./node_modules/.bin and other `nvm` and `npm` bundles are +# On GA, ./node_modules/.bin and other `nvm` and `npm` bundles are # inserted into the default `$PATH` enviroinment, making pointing to # the unwrapped mocha executable necessary. MOCHA=./node_modules/mocha/bin/_mocha @@ -25,7 +25,7 @@ ANALYZED=./coverage/lcov.info # Following token deprecated # export CODACY_REPO_TOKEN=e29ae5cf671f4f918912d9864316207c -DOCKER_IMAGE=nightscout/cgm-remote-monitor-travis +DOCKER_IMAGE=nightscout/cgm-remote-monitor all: test @@ -48,7 +48,7 @@ test_onebyone: test: ${MONGO_SETTINGS} ${MOCHA} --timeout 30000 --exit --bail -R tap ${TESTS} -travis: +ci_tests: python -c 'import os,sys,fcntl; flags = fcntl.fcntl(sys.stdout, fcntl.F_GETFL); fcntl.fcntl(sys.stdout, fcntl.F_SETFL, flags&~os.O_NONBLOCK);' # NODE_ENV=test ${MONGO_SETTINGS} \ # ${ISTANBUL} cover ${MOCHA} --report lcovonly -- --timeout 5000 -R tap ${TESTS} @@ -57,28 +57,25 @@ travis: docker_release: # Get the version from the package.json file $(eval DOCKER_TAG=$(shell cat package.json | jq '.version' | tr -d '"')) - $(eval NODE_VERSION=$(shell cat .nvmrc)) + $(eval BRANCH=$(lastword $(subst /, ,$(GITHUB_REF)))) # - # Create a Dockerfile that contains the correct NodeJS version - cat Dockerfile.example | sed -e "s/^FROM node:.*/FROM node:${NODE_VERSION}/" > Dockerfile # # Rebuild the image. We do this with no-cache so that we have all security upgrades, # since that's more important than fewer layers in the Docker image. docker build --no-cache=true -t $(DOCKER_IMAGE):$(DOCKER_TAG) . - # Push an image to Docker Hub with the version from package.json: - docker push $(DOCKER_IMAGE):$(DOCKER_TAG) # # Push the master branch to Docker hub as 'latest' - if [ "$(TRAVIS_BRANCH)" = "master" ]; then \ + if [ "$(BRANCH)" = "master" ]; then \ docker tag $(DOCKER_IMAGE):$(DOCKER_TAG) $(DOCKER_IMAGE):latest && \ + docker push $(DOCKER_IMAGE):$(DOCKER_TAG) docker push $(DOCKER_IMAGE):latest; \ fi # # Push the dev branch to Docker Hub as 'latest_dev' - if [ "$(TRAVIS_BRANCH)" = "dev" ]; then \ + if [ "$(BRANCH)" = "dev" ]; then \ docker tag $(DOCKER_IMAGE):$(DOCKER_TAG) $(DOCKER_IMAGE):latest_dev && \ + docker push $(DOCKER_IMAGE):$(DOCKER_TAG) docker push $(DOCKER_IMAGE):latest_dev; \ fi - rm -f Dockerfile -.PHONY: all coverage docker_release report test travis +.PHONY: all coverage docker_release report test ci_tests From 6b28a148ee7a080665d0fdd088cff8b05ea43d81 Mon Sep 17 00:00:00 2001 From: Petr Ondrusek <34578008+PetrOndrusek@users.noreply.github.com> Date: Fri, 1 Jan 2021 18:31:19 +0100 Subject: [PATCH 058/194] APIv3: Cache invalidation + refactoring (#6688) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * APIv3: isolating documents from tests (not allowing clashes of calculated identifiers) * removing unused async keyword * fixing api v3 swagger and moving it to /api3-docs * APIv3: adding cachedCollection stub of cachedCollection storage implementation * APIv3: mongo cachedCollection storage implementation * APIv3: testing and debugging cache updates * APIv3: more testing on cache updates * APIv3: fixing bad async functions * APIv3: finishing cache invalidation tests Co-authored-by: Petr Ondrusek Co-authored-by: Petr Ondrůšek Co-authored-by: Sulka Haro --- lib/api3/generic/collection.js | 22 +-- lib/api3/generic/history/operation.js | 6 +- lib/api3/generic/search/operation.js | 7 +- .../storage/mongoCachedCollection/index.js | 147 ++++++++++++++++++ lib/api3/storage/mongoCollection/find.js | 34 ++-- lib/api3/storage/mongoCollection/index.js | 8 +- lib/api3/storage/mongoCollection/modify.js | 16 +- lib/api3/storage/mongoCollection/utils.js | 3 +- lib/server/cache.js | 2 +- tests/api3.create.test.js | 143 ++++++++++++----- tests/api3.delete.test.js | 11 ++ tests/api3.generic.workflow.test.js | 44 +++++- tests/api3.patch.test.js | 19 ++- tests/api3.read.test.js | 64 ++++++-- tests/api3.renderer.test.js | 20 ++- tests/api3.update.test.js | 22 ++- tests/fixtures/api3/cacheMonitor.js | 79 ++++++++++ tests/fixtures/api3/instance.js | 11 +- 18 files changed, 539 insertions(+), 119 deletions(-) create mode 100644 lib/api3/storage/mongoCachedCollection/index.js create mode 100644 tests/fixtures/api3/cacheMonitor.js diff --git a/lib/api3/generic/collection.js b/lib/api3/generic/collection.js index 0a1a29b3915..015af2a13f4 100644 --- a/lib/api3/generic/collection.js +++ b/lib/api3/generic/collection.js @@ -5,7 +5,8 @@ const apiConst = require('../const.json') , dateTools = require('../shared/dateTools') , opTools = require('../shared/operationTools') , stringTools = require('../shared/stringTools') - , CollectionStorage = require('../storage/mongoCollection') + , MongoCollectionStorage = require('../storage/mongoCollection') + , CachedCollectionStorage = require('../storage/mongoCachedCollection') , searchOperation = require('./search/operation') , createOperation = require('./create/operation') , readOperation = require('./read/operation') @@ -26,13 +27,16 @@ function Collection ({ ctx, env, app, colName, storageColName, fallbackGetDate, fallbackDateField }) { const self = this; - + self.colName = colName; self.fallbackGetDate = fallbackGetDate; self.dedupFallbackFields = app.get('API3_DEDUP_FALLBACK_ENABLED') ? dedupFallbackFields : []; self.autoPruneDays = app.setENVTruthy('API3_AUTOPRUNE_' + colName.toUpperCase()); self.nextAutoPrune = new Date(); - self.storage = new CollectionStorage(ctx, env, storageColName); + + const baseStorage = new MongoCollectionStorage(ctx, env, storageColName); + self.storage = new CachedCollectionStorage(ctx, env, colName, baseStorage); + self.fallbackDateField = fallbackDateField; self.mapRoutes = function mapRoutes () { @@ -89,9 +93,9 @@ function Collection ({ ctx, env, app, colName, storageColName, fallbackGetDate, }; - + /** - * Fetch modified date from document (with possible fallback and back-fill to srvModified/srvCreated) + * Fetch modified date from document (with possible fallback and back-fill to srvModified/srvCreated) * @param {Object} doc - document loaded from database */ self.resolveDates = function resolveDates (doc) { @@ -125,12 +129,12 @@ function Collection ({ ctx, env, app, colName, storageColName, fallbackGetDate, * in the background (asynchronously) * */ self.autoPrune = function autoPrune () { - + if (!stringTools.isNumberInString(self.autoPruneDays)) return; - + const autoPruneDays = parseFloat(self.autoPruneDays); - if (autoPruneDays <= 0) + if (autoPruneDays <= 0) return; if (new Date() > self.nextAutoPrune) { @@ -190,4 +194,4 @@ function Collection ({ ctx, env, app, colName, storageColName, fallbackGetDate, } } -module.exports = Collection; \ No newline at end of file +module.exports = Collection; diff --git a/lib/api3/generic/history/operation.js b/lib/api3/generic/history/operation.js index 5151c8b2749..fb3ed0184ec 100644 --- a/lib/api3/generic/history/operation.js +++ b/lib/api3/generic/history/operation.js @@ -27,13 +27,13 @@ async function history (opCtx, fieldsProjector) { if (filter !== null && limit !== null && projection !== null) { - const result = await col.storage.findMany(filter + const result = await col.storage.findMany({ filter , sort , limit , skip , projection , onlyValid - , logicalOperator); + , logicalOperator }); if (!result) throw new Error('empty result'); @@ -150,4 +150,4 @@ function historyOperation (ctx, env, app, col) { }; } -module.exports = historyOperation; \ No newline at end of file +module.exports = historyOperation; diff --git a/lib/api3/generic/search/operation.js b/lib/api3/generic/search/operation.js index c24f978dc27..179f357b503 100644 --- a/lib/api3/generic/search/operation.js +++ b/lib/api3/generic/search/operation.js @@ -35,13 +35,12 @@ async function search (opCtx) { if (filter !== null && sort !== null && limit !== null && skip !== null && projection !== null) { - - const result = await col.storage.findMany(filter + const result = await col.storage.findMany({ filter , sort , limit , skip , projection - , onlyValid); + , onlyValid }); if (!result) throw new Error('empty result'); @@ -76,4 +75,4 @@ function searchOperation (ctx, env, app, col) { }; } -module.exports = searchOperation; \ No newline at end of file +module.exports = searchOperation; diff --git a/lib/api3/storage/mongoCachedCollection/index.js b/lib/api3/storage/mongoCachedCollection/index.js new file mode 100644 index 00000000000..b2fd8f21a55 --- /dev/null +++ b/lib/api3/storage/mongoCachedCollection/index.js @@ -0,0 +1,147 @@ +'use strict'; + +const _ = require('lodash') + +/** + * Storage implementation which wraps mongo baseStorage with caching + * @param {Object} ctx + * @param {Object} env + * @param {string} colName - name of the collection in mongo database + * @param {Object} baseStorage - wrapped mongo storage implementation + */ +function MongoCachedCollection (ctx, env, colName, baseStorage) { + + const self = this; + + self.colName = colName; + + self.identifyingFilter = baseStorage.identifyingFilter; + + self.findOne = (...args) => baseStorage.findOne(...args); + + self.findOneFilter = (...args) => baseStorage.findOneFilter(...args); + + self.findMany = (...args) => baseStorage.findMany(...args); + + + self.insertOne = async (doc) => { + const result = await baseStorage.insertOne(doc, { normalize: false }); + + if (cacheSupported()) { + updateInCache([doc]); + } + + if (doc._id) { + delete doc._id; + } + return result; + } + + + self.replaceOne = async (identifier, doc) => { + const result = await baseStorage.replaceOne(identifier, doc); + + if (cacheSupported()) { + const rawDocs = await baseStorage.findOne(identifier, null, { normalize: false }) + updateInCache([rawDocs[0]]) + } + + return result; + } + + + self.updateOne = async (identifier, setFields) => { + const result = await baseStorage.updateOne(identifier, setFields); + + if (cacheSupported()) { + const rawDocs = await baseStorage.findOne(identifier, null, { normalize: false }) + + if (rawDocs[0].isValid === false) { + deleteInCache(rawDocs) + } + else { + updateInCache([rawDocs[0]]) + } + } + + return result; + } + + self.deleteOne = async (identifier) => { + let invalidateDocs + if (cacheSupported()) { + invalidateDocs = await baseStorage.findOne(identifier, { _id: 1 }, { normalize: false }) + } + + const result = await baseStorage.deleteOne(identifier); + + if (cacheSupported()) { + deleteInCache(invalidateDocs) + } + + return result; + } + + self.deleteManyOr = async (filter) => { + let invalidateDocs + if (cacheSupported()) { + invalidateDocs = await baseStorage.findMany({ filter, + limit: 1000, + skip: 0, + projection: { _id: 1 }, + options: { normalize: false } }); + } + + const result = await baseStorage.deleteManyOr(filter); + + if (cacheSupported()) { + deleteInCache(invalidateDocs) + } + + return result; + } + + self.version = (...args) => baseStorage.version(...args); + + self.getLastModified = (...args) => baseStorage.getLastModified(...args); + + function cacheSupported () { + return ctx.cache + && ctx.cache[colName] + && _.isArray(ctx.cache[colName]); + } + + function updateInCache (doc) { + if (doc && doc.isValid === false) { + deleteInCache([doc._id]) + } + else { + ctx.bus.emit('data-update', { + type: colName + , op: 'update' + , changes: doc + }); + } + } + + function deleteInCache (docs) { + let changes + if (_.isArray(docs)) { + if (docs.length === 0) { + return + } + else if (docs.length === 1 && docs[0]._id) { + const _id = docs[0]._id.toString() + changes = [ _id ] + } + } + + ctx.bus.emit('data-update', { + type: colName + , op: 'remove' + , changes + }); + } +} + +module.exports = MongoCachedCollection; diff --git a/lib/api3/storage/mongoCollection/find.js b/lib/api3/storage/mongoCollection/find.js index bc399dbce98..013d008ec98 100644 --- a/lib/api3/storage/mongoCollection/find.js +++ b/lib/api3/storage/mongoCollection/find.js @@ -10,8 +10,9 @@ const utils = require('./utils') * @param {Object} col * @param {string} identifier * @param {Object} projection + * @param {Object} options */ -function findOne (col, identifier, projection) { +function findOne (col, identifier, projection, options) { return new Promise(function (resolve, reject) { @@ -25,7 +26,9 @@ function findOne (col, identifier, projection) { if (err) { reject(err); } else { - _.each(result, utils.normalizeDoc); + if (!options || options.normalize !== false) { + _.each(result, utils.normalizeDoc); + } resolve(result); } }); @@ -38,8 +41,9 @@ function findOne (col, identifier, projection) { * @param {Object} col * @param {Object} filter specific filter * @param {Object} projection + * @param {Object} options */ -function findOneFilter (col, filter, projection) { +function findOneFilter (col, filter, projection, options) { return new Promise(function (resolve, reject) { @@ -51,7 +55,9 @@ function findOneFilter (col, filter, projection) { if (err) { reject(err); } else { - _.each(result, utils.normalizeDoc); + if (!options || options.normalize !== false) { + _.each(result, utils.normalizeDoc); + } resolve(result); } }); @@ -62,23 +68,25 @@ function findOneFilter (col, filter, projection) { /** * Find many documents matching the filtering criteria */ -function findMany (col, filterDef, sort, limit, skip, projection, onlyValid, logicalOperator = 'and') { - +function findMany (col, args) { + const logicalOperator = args.logicalOperator || 'and'; return new Promise(function (resolve, reject) { - const filter = utils.parseFilter(filterDef, logicalOperator, onlyValid); + const filter = utils.parseFilter(args.filter, logicalOperator, args.onlyValid); col.find(filter) - .sort(sort) - .limit(limit) - .skip(skip) - .project(projection) + .sort(args.sort) + .limit(args.limit) + .skip(args.skip) + .project(args.projection) .toArray(function mongoDone (err, result) { if (err) { reject(err); } else { - _.each(result, utils.normalizeDoc); + if (!args.options || args.options.normalize !== false) { + _.each(result, utils.normalizeDoc); + } resolve(result); } }); @@ -90,4 +98,4 @@ module.exports = { findOne, findOneFilter, findMany -}; \ No newline at end of file +}; diff --git a/lib/api3/storage/mongoCollection/index.js b/lib/api3/storage/mongoCollection/index.js index e6ad0a6cf8b..ef041ce9c1f 100644 --- a/lib/api3/storage/mongoCollection/index.js +++ b/lib/api3/storage/mongoCollection/index.js @@ -18,7 +18,7 @@ function MongoCollection (ctx, env, colName) { self.col = ctx.store.collection(colName); - ctx.store.ensureIndexes(self.col, [ 'identifier', + ctx.store.ensureIndexes(self.col, [ 'identifier', 'srvModified', 'isValid' ]); @@ -64,10 +64,10 @@ function MongoCollection (ctx, env, colName) { /** - * Get timestamp (e.g. srvModified) of the last modified document + * Get timestamp (e.g. srvModified) of the last modified document */ self.getLastModified = function getLastModified (fieldName) { - + return new Promise(function (resolve, reject) { self.col.find() @@ -87,4 +87,4 @@ function MongoCollection (ctx, env, colName) { } } -module.exports = MongoCollection; \ No newline at end of file +module.exports = MongoCollection; diff --git a/lib/api3/storage/mongoCollection/modify.js b/lib/api3/storage/mongoCollection/modify.js index 6552fe40e8c..7183f1c971a 100644 --- a/lib/api3/storage/mongoCollection/modify.js +++ b/lib/api3/storage/mongoCollection/modify.js @@ -1,14 +1,15 @@ 'use strict'; -const utils = require('./utils'); - +const utils = require('./utils') + ; /** * Insert single document * @param {Object} col * @param {Object} doc + * @param {Object} options */ -function insertOne (col, doc) { +function insertOne (col, doc, options) { return new Promise(function (resolve, reject) { @@ -18,7 +19,10 @@ function insertOne (col, doc) { reject(err); } else { const identifier = doc.identifier || result.insertedId.toString(); - delete doc._id; + + if (!options || options.normalize !== false) { + delete doc._id; + } resolve(identifier); } }); @@ -38,7 +42,7 @@ function replaceOne (col, identifier, doc) { const filter = utils.filterForOne(identifier); - col.replaceOne(filter, doc, { }, function mongoDone(err, result) { + col.replaceOne(filter, doc, { upsert: true }, function mongoDone(err, result) { if (err) { reject(err); } else { @@ -120,4 +124,4 @@ module.exports = { updateOne, deleteOne, deleteManyOr -}; \ No newline at end of file +}; diff --git a/lib/api3/storage/mongoCollection/utils.js b/lib/api3/storage/mongoCollection/utils.js index 1b2ab5610d7..a2f7b16520c 100644 --- a/lib/api3/storage/mongoCollection/utils.js +++ b/lib/api3/storage/mongoCollection/utils.js @@ -26,7 +26,6 @@ function normalizeDoc (doc) { * @param {bool} onlyValid */ function parseFilter (filterDef, logicalOperator, onlyValid) { - let filter = { }; if (!filterDef) return filter; @@ -175,4 +174,4 @@ module.exports = { parseFilter, filterForOne, identifyingFilter -}; \ No newline at end of file +}; diff --git a/lib/server/cache.js b/lib/server/cache.js index 88e5f77ca02..5b92e42f58d 100644 --- a/lib/server/cache.js +++ b/lib/server/cache.js @@ -7,7 +7,7 @@ * to be accessed by the persistence layer as data is inserted, updated * or deleted, as well as the periodic dataloader, which polls Mongo * for new inserts. - * + * * Longer term, the cache is planned to allow skipping the Mongo polls * altogether. */ diff --git a/tests/api3.create.test.js b/tests/api3.create.test.js index 22c88d3d16d..d6e1406bec1 100644 --- a/tests/api3.create.test.js +++ b/tests/api3.create.test.js @@ -61,13 +61,15 @@ describe('API3 CREATE', function() { self.app = self.instance.app; self.env = self.instance.env; - self.url = '/api/v3/treatments'; + self.col = 'treatments' + self.url = `/api/v3/${self.col}`; let authResult = await authSubject(self.instance.ctx.authorization.storage); self.subject = authResult.subject; self.token = authResult.token; self.urlToken = `${self.url}?token=${self.token.create}`; + self.cache = self.instance.cacheMonitor; }); @@ -76,6 +78,16 @@ describe('API3 CREATE', function() { }); + beforeEach(() => { + self.cache.clear(); + }); + + + afterEach(() => { + self.cache.shouldBeEmpty(); + }); + + it('should require authentication', async () => { let res = await self.instance.post(`${self.url}`) .send(self.validDoc) @@ -123,6 +135,7 @@ describe('API3 CREATE', function() { let body = await self.get(self.validDoc.identifier); body.should.containEql(self.validDoc); + self.cache.nextShouldEql(self.col, self.validDoc) const ms = body.srvModified % 1000; (body.srvModified - ms).should.equal(lastModified); @@ -130,6 +143,7 @@ describe('API3 CREATE', function() { body.subject.should.equal(self.subject.apiCreate.name); await self.delete(self.validDoc.identifier); + self.cache.nextShouldDeleteLast(self.col) }); @@ -218,13 +232,18 @@ describe('API3 CREATE', function() { it('should accept valid utcOffset', async () => { + const doc = Object.assign({}, self.validDoc, { utcOffset: 120 }); + await self.instance.post(self.urlToken) - .send(Object.assign({}, self.validDoc, { utcOffset: 120 })) + .send(doc) .expect(201); let body = await self.get(self.validDoc.identifier); body.utcOffset.should.equal(120); + self.cache.nextShouldEql(self.col, doc) + await self.delete(self.validDoc.identifier); + self.cache.nextShouldDeleteLast(self.col) }); @@ -279,7 +298,10 @@ describe('API3 CREATE', function() { let body = await self.get(self.validDoc.identifier); body.date.should.equal(1560146828576); body.utcOffset.should.equal(120); + self.cache.nextShouldEql(self.col, body) + await self.delete(self.validDoc.identifier); + self.cache.nextShouldDeleteLast(self.col) }); @@ -295,6 +317,7 @@ describe('API3 CREATE', function() { let createdBody = await self.get(doc.identifier); createdBody.should.containEql(doc); + self.cache.nextShouldEql(self.col, doc) const doc2 = Object.assign({}, doc); let res = await self.instance.post(self.urlToken) @@ -304,6 +327,7 @@ describe('API3 CREATE', function() { res.body.status.should.equal(403); res.body.message.should.equal('Missing permission api:treatments:update'); await self.delete(doc.identifier); + self.cache.nextShouldDeleteLast(self.col) }); @@ -319,6 +343,7 @@ describe('API3 CREATE', function() { let createdBody = await self.get(doc.identifier); createdBody.should.containEql(doc); + self.cache.nextShouldEql(self.col, doc) const doc2 = Object.assign({}, doc, { insulin: 0.5 @@ -330,8 +355,10 @@ describe('API3 CREATE', function() { let updatedBody = await self.get(doc2.identifier); updatedBody.should.containEql(doc2); + self.cache.nextShouldEql(self.col, doc2) await self.delete(doc2.identifier); + self.cache.nextShouldDeleteLast(self.col) }); @@ -339,29 +366,37 @@ describe('API3 CREATE', function() { self.validDoc.date = (new Date()).getTime(); self.validDoc.identifier = utils.randomString('32', 'aA#'); - const doc = Object.assign({}, self.validDoc, { - created_at: new Date(self.validDoc.date).toISOString() + const doc = Object.assign({}, self.validDoc, { + created_at: new Date(self.validDoc.date).toISOString() }); delete doc.identifier; - self.instance.ctx.treatments.create([doc], async (err) => { // let's insert the document in APIv1's way - should.not.exist(err); + await new Promise((resolve, reject) => { + self.instance.ctx.treatments.create([doc], async (err) => { // let's insert the document in APIv1's way + should.not.exist(err); + doc._id = doc._id.toString(); + self.cache.nextShouldEql(self.col, doc) - const doc2 = Object.assign({}, doc, { - insulin: 0.4, - identifier: utils.randomString('32', 'aA#') + err ? reject(err) : resolve(doc); }); - delete doc2._id; // APIv1 updates input document, we must get rid of _id for the next round + }); - await self.instance.post(`${self.url}?token=${self.token.all}`) - .send(doc2) - .expect(204); + const doc2 = Object.assign({}, doc, { + insulin: 0.4, + identifier: utils.randomString('32', 'aA#') + }); + delete doc2._id; // APIv1 updates input document, we must get rid of _id for the next round + + await self.instance.post(`${self.url}?token=${self.token.all}`) + .send(doc2) + .expect(204); - let updatedBody = await self.get(doc2.identifier); - updatedBody.should.containEql(doc2); + let updatedBody = await self.get(doc2.identifier); + updatedBody.should.containEql(doc2); + self.cache.nextShouldEql(self.col, doc2) - await self.delete(doc2.identifier); - }); + await self.delete(doc2.identifier); + self.cache.nextShouldDeleteLast(self.col) }); @@ -369,51 +404,62 @@ describe('API3 CREATE', function() { self.validDoc.date = (new Date()).getTime(); self.validDoc.identifier = utils.randomString('32', 'aA#'); - const doc = Object.assign({}, self.validDoc, { - created_at: new Date(self.validDoc.date).toISOString() + const doc = Object.assign({}, self.validDoc, { + created_at: new Date(self.validDoc.date).toISOString() }); delete doc.identifier; - let p = await new Promise(function(resolve, reject) { - self.instance.ctx.treatments.create([doc], async (err) => { // let's insert the document in APIv1's way + await new Promise((resolve, reject) => { + self.instance.ctx.treatments.create([doc], async (err) => { // let's insert the document in APIv1's way should.not.exist(err); + doc._id = doc._id.toString(); - let oldBody = await self.get(doc._id); - delete doc._id; // APIv1 updates input document, we must get rid of _id for the next round - oldBody.should.containEql(doc); - - const doc2 = Object.assign({}, doc, { - eventType: 'Meal Bolus', - insulin: 0.4, - identifier: utils.randomString('32', 'aA#') - }); + self.cache.nextShouldEql(self.col, doc) + err ? reject(err) : resolve(doc); + }); + }); - await self.instance.post(`${self.url}?token=${self.token.all}`) - .send(doc2) - .expect(201); + const oldBody = await self.get(doc._id); + delete doc._id; // APIv1 updates input document, we must get rid of _id for the next round + oldBody.should.containEql(doc); - let updatedBody = await self.get(doc2.identifier); - updatedBody.should.containEql(doc2); - updatedBody.identifier.should.not.equal(oldBody.identifier); - await self.delete(doc2.identifier); - await self.delete(oldBody.identifier); - resolve('Done!'); - }); + const doc2 = Object.assign({}, doc, { + eventType: 'Meal Bolus', + insulin: 0.4, + identifier: utils.randomString('32', 'aA#') }); + + await self.instance.post(`${self.url}?token=${self.token.all}`) + .send(doc2) + .expect(201); + + let updatedBody = await self.get(doc2.identifier); + updatedBody.should.containEql(doc2); + updatedBody.identifier.should.not.equal(oldBody.identifier); + self.cache.nextShouldEql(self.col, doc2) + + await self.delete(doc2.identifier); + self.cache.nextShouldDeleteLast(self.col) + + await self.delete(oldBody.identifier); + self.cache.nextShouldDeleteLast(self.col) }); it('should overwrite deleted document', async () => { const date1 = new Date() - , identifier = utils.randomString('32', 'aA#'); + , identifier = utils.randomString('32', 'aA#') + , doc = Object.assign({}, self.validDoc, { identifier, date: date1.toISOString() }); await self.instance.post(self.urlToken) - .send(Object.assign({}, self.validDoc, { identifier, date: date1.toISOString() })) + .send(doc) .expect(201); + self.cache.nextShouldEql(self.col, Object.assign({}, doc, { date: date1.getTime() })); await self.instance.delete(`${self.url}/${identifier}?token=${self.token.delete}`) .expect(204); + self.cache.nextShouldDeleteLast(self.col) const date2 = new Date(); let res = await self.instance.post(self.urlToken) @@ -422,17 +468,22 @@ describe('API3 CREATE', function() { res.body.status.should.be.equal(403); res.body.message.should.be.equal('Missing permission api:treatments:update'); + self.cache.shouldBeEmpty() + const doc2 = Object.assign({}, self.validDoc, { identifier, date: date2.toISOString() }); res = await self.instance.post(`${self.url}?token=${self.token.all}`) - .send(Object.assign({}, self.validDoc, { identifier, date: date2.toISOString() })) + .send(doc2) .expect(204); res.body.should.be.empty(); + self.cache.nextShouldEql(self.col, Object.assign({}, doc2, { date: date2.getTime() })); let body = await self.get(identifier); body.date.should.equal(date2.getTime()); body.identifier.should.equal(identifier); + await self.delete(identifier); + self.cache.nextShouldDeleteLast(self.col) }); @@ -451,7 +502,10 @@ describe('API3 CREATE', function() { let body = await self.get(validIdentifier); body.should.containEql(self.validDoc); + self.cache.nextShouldEql(self.col, self.validDoc); + await self.delete(validIdentifier); + self.cache.nextShouldDeleteLast(self.col) }); @@ -470,6 +524,7 @@ describe('API3 CREATE', function() { let body = await self.get(validIdentifier); body.should.containEql(self.validDoc); + self.cache.nextShouldEql(self.col, self.validDoc); delete self.validDoc.identifier; res = await self.instance.post(`${self.url}?token=${self.token.update}`) @@ -479,11 +534,13 @@ describe('API3 CREATE', function() { res.body.should.be.empty(); res.headers.location.should.equal(`${self.url}/${validIdentifier}`); self.validDoc.identifier = validIdentifier; + self.cache.nextShouldEql(self.col, self.validDoc); body = await self.search(self.validDoc.date); body.length.should.equal(1); await self.delete(validIdentifier); + self.cache.nextShouldDeleteLast(self.col) }); }); diff --git a/tests/api3.delete.test.js b/tests/api3.delete.test.js index 7cee15410a0..5ca87a0d57b 100644 --- a/tests/api3.delete.test.js +++ b/tests/api3.delete.test.js @@ -24,6 +24,7 @@ describe('API3 UPDATE', function() { self.subject = authResult.subject; self.token = authResult.token; self.urlToken = `${self.url}?token=${self.token.delete}`; + self.cache = self.instance.cacheMonitor; }); @@ -32,6 +33,16 @@ describe('API3 UPDATE', function() { }); + beforeEach(() => { + self.cache.clear(); + }); + + + afterEach(() => { + self.cache.shouldBeEmpty(); + }); + + it('should require authentication', async () => { let res = await self.instance.delete(`${self.url}/FAKE_IDENTIFIER`) .expect(401); diff --git a/tests/api3.generic.workflow.test.js b/tests/api3.generic.workflow.test.js index 7cfbc53f618..49bd7664d30 100644 --- a/tests/api3.generic.workflow.test.js +++ b/tests/api3.generic.workflow.test.js @@ -31,7 +31,8 @@ describe('Generic REST API3', function() { self.app = self.instance.app; self.env = self.instance.env; - self.urlCol = '/api/v3/treatments'; + self.col = 'treatments'; + self.urlCol = `/api/v3/${self.col}`; self.urlResource = self.urlCol + '/' + self.identifier; self.urlHistory = self.urlCol + '/history'; @@ -40,6 +41,7 @@ describe('Generic REST API3', function() { self.subject = authResult.subject; self.token = authResult.token; self.urlToken = `${self.url}?token=${self.token.create}`; + self.cache = self.instance.cacheMonitor; }); @@ -48,6 +50,16 @@ describe('Generic REST API3', function() { }); + beforeEach(() => { + self.cache.clear(); + }); + + + afterEach(() => { + self.cache.shouldBeEmpty(); + }); + + self.checkHistoryExistence = async function checkHistoryExistence (assertions) { let res = await self.instance.get(`${self.urlHistory}/${self.historyTimestamp}?token=${self.token.read}`) @@ -113,6 +125,8 @@ describe('Generic REST API3', function() { await self.instance.post(`${self.urlCol}?token=${self.token.create}`) .send(self.docOriginal) .expect(201); + + self.cache.nextShouldEql(self.col, self.docOriginal) }); @@ -154,14 +168,17 @@ describe('Generic REST API3', function() { .expect(204); self.docActual.subject = self.subject.apiUpdate.name; + delete self.docActual.srvModified; + + self.cache.nextShouldEql(self.col, self.docActual) }); it('document changed in HISTORY', async () => { await self.checkHistoryExistence(); - }); + }); + - it('document changed in READ', async () => { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); @@ -179,14 +196,18 @@ describe('Generic REST API3', function() { await self.instance.patch(`${self.urlResource}?token=${self.token.update}`) .send({ 'carbs': self.docActual.carbs, 'insulin': self.docActual.insulin }) .expect(204); + + delete self.docActual.srvModified; + + self.cache.nextShouldEql(self.col, self.docActual) }); it('document changed in HISTORY', async () => { await self.checkHistoryExistence(); - }); + }); + - it('document changed in READ', async () => { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); @@ -200,6 +221,8 @@ describe('Generic REST API3', function() { it('soft DELETE', async () => { await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) .expect(204); + + self.cache.nextShouldDeleteLast(self.col) }); @@ -217,19 +240,21 @@ describe('Generic REST API3', function() { res.body.should.have.length(0); }); - + it('document deleted in HISTORY', async () => { await self.checkHistoryExistence(value => { value.isValid.should.be.eql(false); }); - }); - + }); + it('permanent DELETE', async () => { await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) .query({ 'permanent': 'true' }) .expect(204); + + self.cache.nextShouldDeleteLast(self.col) }); @@ -264,6 +289,9 @@ describe('Generic REST API3', function() { delete self.docActual.srvModified; const readOnlyMessage = 'Trying to modify read-only document'; + self.cache.nextShouldEql(self.col, self.docActual) + self.cache.shouldBeEmpty() + res = await self.instance.post(`${self.urlCol}?token=${self.token.update}`) .send(Object.assign({}, self.docActual, { insulin: 0.41 })) .expect(422); diff --git a/tests/api3.patch.test.js b/tests/api3.patch.test.js index 36dccc94bfa..750bb37b745 100644 --- a/tests/api3.patch.test.js +++ b/tests/api3.patch.test.js @@ -20,7 +20,7 @@ describe('API3 PATCH', function() { insulin: 0.3 }; self.validDoc.identifier = opTools.calculateIdentifier(self.validDoc); - + self.timeout(15000); @@ -40,13 +40,15 @@ describe('API3 PATCH', function() { self.app = self.instance.app; self.env = self.instance.env; - self.url = '/api/v3/treatments'; + self.col = 'treatments'; + self.url = `/api/v3/${self.col}`; let authResult = await authSubject(self.instance.ctx.authorization.storage); self.subject = authResult.subject; self.token = authResult.token; self.urlToken = `${self.url}/${self.validDoc.identifier}?token=${self.token.update}`; + self.cache = self.instance.cacheMonitor; }); @@ -55,6 +57,16 @@ describe('API3 PATCH', function() { }); + beforeEach(() => { + self.cache.clear(); + }); + + + afterEach(() => { + self.cache.shouldBeEmpty(); + }); + + it('should require authentication', async () => { let res = await self.instance.patch(`${self.url}/FAKE_IDENTIFIER`) .expect(401); @@ -86,6 +98,7 @@ describe('API3 PATCH', function() { .expect(201); res.body.should.be.empty(); + self.cache.nextShouldEql(self.col, self.validDoc) }); @@ -213,6 +226,8 @@ describe('API3 PATCH', function() { body.insulin.should.equal(0.3); body.subject.should.equal(self.subject.apiCreate.name); body.modifiedBy.should.equal(self.subject.apiUpdate.name); + + self.cache.nextShouldEql(self.col, body) }); }); diff --git a/tests/api3.read.test.js b/tests/api3.read.test.js index d9f73ebf13a..3c7f0eaf964 100644 --- a/tests/api3.read.test.js +++ b/tests/api3.read.test.js @@ -4,13 +4,13 @@ require('should'); -describe('API3 READ', function() { +describe('API3 READ', function () { const self = this , testConst = require('./fixtures/api3/const.json') , instance = require('./fixtures/api3/instance') , authSubject = require('./fixtures/api3/authSubject') , opTools = require('../lib/api3/shared/operationTools') - ; + ; self.validDoc = { date: (new Date()).getTime(), @@ -28,12 +28,14 @@ describe('API3 READ', function() { self.app = self.instance.app; self.env = self.instance.env; - self.url = '/api/v3/devicestatus'; + self.col = 'devicestatus'; + self.url = `/api/v3/${self.col}`; let authResult = await authSubject(self.instance.ctx.authorization.storage); self.subject = authResult.subject; self.token = authResult.token; + self.cache = self.instance.cacheMonitor; }); @@ -42,6 +44,16 @@ describe('API3 READ', function() { }); + beforeEach(() => { + self.cache.clear(); + }); + + + afterEach(() => { + self.cache.shouldBeEmpty(); + }); + + it('should require authentication', async () => { let res = await self.instance.get(`${self.url}/FAKE_IDENTIFIER`) .expect(401); @@ -57,12 +69,16 @@ describe('API3 READ', function() { .expect(404); res.body.should.be.empty(); + + self.cache.shouldBeEmpty() }); it('should not found not existing document', async () => { await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(404); + + self.cache.shouldBeEmpty() }); @@ -81,6 +97,8 @@ describe('API3 READ', function() { res.body.should.have.property('srvModified').which.is.a.Number(); res.body.should.have.property('subject'); self.validDoc.subject = res.body.subject; // let's store subject for later tests + + self.cache.nextShouldEql(self.col, self.validDoc) }); @@ -130,6 +148,7 @@ describe('API3 READ', function() { .expect(204); res.body.should.be.empty(); + self.cache.nextShouldDeleteLast(self.col) res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(410); @@ -143,6 +162,7 @@ describe('API3 READ', function() { .expect(204); res.body.should.be.empty(); + self.cache.nextShouldDeleteLast(self.col) res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(404); @@ -153,28 +173,38 @@ describe('API3 READ', function() { it('should found document created by APIv1', async () => { - const doc = Object.assign({}, self.validDoc, { - created_at: new Date(self.validDoc.date).toISOString() + const doc = Object.assign({}, self.validDoc, { + created_at: new Date(self.validDoc.date).toISOString() }); delete doc.identifier; - self.instance.ctx.devicestatus.create([doc], async (err) => { // let's insert the document in APIv1's way - should.not.exist(err); - const identifier = doc._id.toString(); - delete doc._id; + await new Promise((resolve, reject) => { + self.instance.ctx.devicestatus.create([doc], async (err) => { // let's insert the document in APIv1's way - let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) - .expect(200); + should.not.exist(err); + doc._id = doc._id.toString(); + self.cache.nextShouldEql(self.col, doc) - res.body.should.containEql(doc); + err ? reject(err) : resolve(doc); + }); + }); - res = await self.instance.delete(`${self.url}/${identifier}?permanent=true&token=${self.token.delete}`) - .expect(204); + const identifier = doc._id.toString(); + delete doc._id; - res.body.should.be.empty(); - }); + let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) + .expect(200); + + res.body.should.containEql(doc); + + res = await self.instance.delete(`${self.url}/${identifier}?permanent=true&token=${self.token.delete}`) + .expect(204); + + res.body.should.be.empty(); + self.cache.nextShouldDeleteLast(self.col) }); -}); +}) +; diff --git a/tests/api3.renderer.test.js b/tests/api3.renderer.test.js index 70401897025..f92af5b7d72 100644 --- a/tests/api3.renderer.test.js +++ b/tests/api3.renderer.test.js @@ -41,12 +41,14 @@ describe('API3 output renderers', function() { self.app = self.instance.app; self.env = self.instance.env; - self.url = '/api/v3/entries'; + self.col = 'entries'; + self.url = `/api/v3/${self.col}`; let authResult = await authSubject(self.instance.ctx.authorization.storage); self.subject = authResult.subject; self.token = authResult.token; + self.cache = self.instance.cacheMonitor; }); @@ -55,6 +57,16 @@ describe('API3 output renderers', function() { }); + beforeEach(() => { + self.cache.clear(); + }); + + + afterEach(() => { + self.cache.shouldBeEmpty(); + }); + + /** * Checks if all properties from obj1 are string identical in obj2 * (comparison of properties is made using toString()) @@ -139,7 +151,10 @@ describe('API3 output renderers', function() { } self.doc1json = await createDoc(self.doc1); + self.cache.nextShouldEql(self.col, self.doc1) + self.doc2json = await createDoc(self.doc2); + self.cache.nextShouldEql(self.col, self.doc2) }); @@ -262,7 +277,10 @@ describe('API3 output renderers', function() { } await deleteDoc(self.doc1.identifier); + self.cache.nextShouldDeleteLast(self.col) + await deleteDoc(self.doc2.identifier); + self.cache.nextShouldDeleteLast(self.col) }); }); diff --git a/tests/api3.update.test.js b/tests/api3.update.test.js index 481827b05d6..71f1c021192 100644 --- a/tests/api3.update.test.js +++ b/tests/api3.update.test.js @@ -21,7 +21,7 @@ describe('API3 UPDATE', function() { eventType: 'Correction Bolus', insulin: 0.3 }; - + self.timeout(15000); @@ -41,13 +41,15 @@ describe('API3 UPDATE', function() { self.app = self.instance.app; self.env = self.instance.env; - self.url = '/api/v3/treatments'; + self.col = 'treatments' + self.url = `/api/v3/${self.col}`; let authResult = await authSubject(self.instance.ctx.authorization.storage); self.subject = authResult.subject; self.token = authResult.token; self.urlToken = `${self.url}/${self.validDoc.identifier}?token=${self.token.update}` + self.cache = self.instance.cacheMonitor; }); @@ -56,6 +58,16 @@ describe('API3 UPDATE', function() { }); + beforeEach(() => { + self.cache.clear(); + }); + + + afterEach(() => { + self.cache.shouldBeEmpty(); + }); + + it('should require authentication', async () => { let res = await self.instance.put(`${self.url}/FAKE_IDENTIFIER`) .expect(401); @@ -90,6 +102,7 @@ describe('API3 UPDATE', function() { .expect(201); res.body.should.be.empty(); + self.cache.nextShouldEql(self.col, self.validDoc) const lastModified = new Date(res.headers['last-modified']).getTime(); // Last-Modified has trimmed milliseconds @@ -113,6 +126,7 @@ describe('API3 UPDATE', function() { .expect(204); res.body.should.be.empty(); + self.cache.nextShouldEql(self.col, self.validDoc) const lastModified = new Date(res.headers['last-modified']).getTime(); // Last-Modified has trimmed milliseconds @@ -137,6 +151,7 @@ describe('API3 UPDATE', function() { .expect(204); res.body.should.be.empty(); + self.cache.nextShouldEql(self.col, doc) let body = await self.get(self.validDoc.identifier); body.should.containEql(doc); @@ -270,6 +285,8 @@ describe('API3 UPDATE', function() { .expect(204); res.body.should.be.empty(); + delete self.validDoc.srvModified; + self.cache.nextShouldEql(self.col, self.validDoc) }); @@ -278,6 +295,7 @@ describe('API3 UPDATE', function() { .expect(204); res.body.should.be.empty(); + self.cache.nextShouldDeleteLast(self.col) res = await self.instance.put(self.urlToken) .send(self.validDoc) diff --git a/tests/fixtures/api3/cacheMonitor.js b/tests/fixtures/api3/cacheMonitor.js new file mode 100644 index 00000000000..2c4180b0109 --- /dev/null +++ b/tests/fixtures/api3/cacheMonitor.js @@ -0,0 +1,79 @@ +'use strict'; + +/** + * Cache monitoring mechanism for tracking and checking cache updates. + * @param instance + * @constructor + */ +function CacheMonitor (instance) { + + const self = this; + + let operations = [] + , listening = false; + + instance.ctx.bus.on('data-update', operation => { + if (listening) { + operations.push(operation); + } + }); + + self.listen = () => { + listening = true; + return self; + } + + self.stop = () => { + listening = false; + return self; + } + + self.clear = () => { + operations = []; + return self; + } + + self.shouldBeEmpty = () => { + operations.length.should.equal(0) + } + + self.nextShouldEql = (col, doc) => { + operations.length.should.not.equal(0) + + const operation = operations.shift(); + operation.type.should.equal(col); + operation.op.should.equal('update'); + + if (doc) { + operation.changes.should.be.Array(); + operation.changes.length.should.be.eql(1); + const change = operation.changes[0]; + change.should.containEql(doc); + } + } + + self.nextShouldEqlLast = (col, doc) => { + self.nextShouldEql(col, doc); + self.shouldBeEmpty(); + } + + self.nextShouldDelete = (col, _id) => { + operations.length.should.not.equal(0) + + const operation = operations.shift(); + operation.type.should.equal(col); + operation.op.should.equal('remove'); + + if (_id) { + operation.changes.should.equal(_id); + } + } + + self.nextShouldDeleteLast = (col, _id) => { + self.nextShouldDelete(col, _id); + self.shouldBeEmpty(); + } + +} + +module.exports = CacheMonitor; diff --git a/tests/fixtures/api3/instance.js b/tests/fixtures/api3/instance.js index a7693ab3c40..beaa03da18d 100644 --- a/tests/fixtures/api3/instance.js +++ b/tests/fixtures/api3/instance.js @@ -8,6 +8,7 @@ var fs = require('fs') , request = require('supertest') , websocket = require('../../../lib/server/websocket') , io = require('socket.io-client') + , CacheMonitor = require('./cacheMonitor') ; function configure () { @@ -54,6 +55,7 @@ function configure () { }; + self.bindSocket = function bindSocket (storageSocket, instance) { return new Promise(function (resolve, reject) { @@ -88,9 +90,9 @@ function configure () { /* * Create new web server instance for testing purposes */ - self.create = function createHttpServer ({ - apiSecret = 'this is my long pass phrase', - disableSecurity = false, + self.create = function createHttpServer ({ + apiSecret = 'this is my long pass phrase', + disableSecurity = false, useHttps = true, authDefaultRoles = '', enable = ['careportal', 'api'], @@ -129,6 +131,7 @@ function configure () { instance.baseUrl = `${useHttps ? 'https' : 'http'}://${instance.env.HOSTNAME}:${instance.env.PORT}`; self.addSecuredOperations(instance); + instance.cacheMonitor = new CacheMonitor(instance).listen(); websocket(instance.env, instance.ctx, instance.server); @@ -160,4 +163,4 @@ function configure () { return self; } -module.exports = configure(); \ No newline at end of file +module.exports = configure(); From 923cdad6a26cc94d8ab01e34e5334bc0541d1ada Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Fri, 1 Jan 2021 19:39:07 +0200 Subject: [PATCH 059/194] New Crowdin updates (#6675) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * New translations en.json (Dutch) * New translations en.json (Greek) * New translations en.json (Romanian) * New translations en.json (Finnish) * Update source file en.json * New translations en.json (Romanian) * New translations en.json (Romanian) * New translations en.json (Finnish) * New translations en.json (Romanian) * New translations en.json (Romanian) * New translations en.json (Turkish) * Update source file en.json * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * New translations en.json (Greek) * New translations en.json (French) * New translations en.json (Czech) * New translations en.json (Norwegian Bokmal) * Update source file en.json * New translations en.json (Romanian) * New translations en.json (Norwegian Bokmal) * New translations en.json (Russian) * New translations en.json (Finnish) * New translations en.json (Czech) * New translations en.json (Czech) * Update source file en.json --- translations/bg_BG.json | 5 +- translations/cs_CZ.json | 111 +++++++-------- translations/da_DK.json | 5 +- translations/de_DE.json | 5 +- translations/el_GR.json | 9 +- translations/es_ES.json | 5 +- translations/fi_FI.json | 11 +- translations/fr_FR.json | 85 ++++++------ translations/he_IL.json | 5 +- translations/hr_HR.json | 5 +- translations/hu_HU.json | 5 +- translations/it_IT.json | 5 +- translations/ja_JP.json | 5 +- translations/ko_KR.json | 5 +- translations/nb_NO.json | 7 +- translations/nl_NL.json | 5 +- translations/pl_PL.json | 5 +- translations/pt_BR.json | 5 +- translations/ro_RO.json | 295 ++++++++++++++++++++-------------------- translations/ru_RU.json | 21 +-- translations/sl_SI.json | 5 +- translations/sv_SE.json | 5 +- translations/tr_TR.json | 7 +- translations/zh_CN.json | 5 +- translations/zh_TW.json | 5 +- 25 files changed, 328 insertions(+), 303 deletions(-) diff --git a/translations/bg_BG.json b/translations/bg_BG.json index b1c5e7b9695..ae4c1295b72 100644 --- a/translations/bg_BG.json +++ b/translations/bg_BG.json @@ -60,7 +60,6 @@ "Hourly stats": "Статистика по часове", "netIOB stats": "netIOB татистика", "temp basals must be rendered to display this report": "временните базали трябва да са показани за да се покаже тази това", - "Weekly success": "Седмичен успех", "No data available": "Няма данни за показване", "Low": "Ниска", "In Range": "В граници", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/cs_CZ.json b/translations/cs_CZ.json index f19bd479970..214bebd5b24 100644 --- a/translations/cs_CZ.json +++ b/translations/cs_CZ.json @@ -25,7 +25,7 @@ "Last month": "Poslední měsíc", "Last 3 months": "Poslední 3 měsíce", "between": "mezi", - "around": "kolem", + "around": "okolo", "and": "a", "From": "Od", "To": "Do", @@ -34,9 +34,9 @@ "Insulin": "Inzulín", "Carbs": "Sacharidy", "Notes contain": "Poznámky obsahují", - "Target BG range bottom": "Cílová glykémie spodní", + "Target BG range bottom": "Cílová glykémie dolní", "top": "horní", - "Show": "Zobraz", + "Show": "Zobrazit", "Display": "Zobraz", "Loading": "Nahrávám", "Loading profile": "Nahrávám profil", @@ -47,7 +47,7 @@ "Loading treatments data of": "Nahrávám data ošetření", "Processing data of": "Zpracovávám data", "Portion": "Porce", - "Size": "Rozměr", + "Size": "Velikost", "(none)": "(Žádný)", "None": "Žádný", "": "<Žádný>", @@ -60,7 +60,6 @@ "Hourly stats": "Statistika po hodinách", "netIOB stats": "statistiky netIOB", "temp basals must be rendered to display this report": "pro zobrazení reportu musí být vykresleny dočasné bazály", - "Weekly success": "Statistika po týdnech", "No data available": "Žádná dostupná data", "Low": "Nízká", "In Range": "V rozsahu", @@ -76,10 +75,10 @@ "Readings": "Záznamů", "StDev": "Směrodatná odchylka", "Daily stats report": "Denní statistiky", - "Glucose Percentile report": "Tabulka percentil glykémií", + "Glucose Percentile report": "Tabulka percentilu glykémií", "Glucose distribution": "Rozložení glykémií", "days total": "dní celkem", - "Total per day": "dní celkem", + "Total per day": "Celkem za den", "Overall": "Celkem", "Range": "Rozsah", "% of Readings": "% záznamů", @@ -98,7 +97,7 @@ "Error": "Chyba", "Create new record": "Vytvořit nový záznam", "Save record": "Uložit záznam", - "Portions": "Porcí", + "Portions": "Porce", "Unit": "Jedn", "GI": "GI", "Edit record": "Upravit záznam", @@ -189,7 +188,7 @@ "Carbs-on-Board": "Aktivní sacharidy", "Bolus Wizard Preview": "BWP-Náhled bolusového kalk.", "Value Loaded": "Hodnoty načteny", - "Cannula Age": "CAGE-Stáří kanyly", + "Cannula Age": "Stáří kanyly", "Basal Profile": "Bazál", "Silence for 30 minutes": "Ztlumit na 30 minut", "Silence for 60 minutes": "Ztlumit na 60 minut", @@ -210,13 +209,13 @@ "Question": "Otázka", "Exercise": "Cvičení", "Pump Site Change": "Výměna setu", - "CGM Sensor Start": "Spuštění sensoru", - "CGM Sensor Stop": "Spuštění sensoru", - "CGM Sensor Insert": "Výměna sensoru", - "Dexcom Sensor Start": "Spuštění sensoru", - "Dexcom Sensor Change": "Výměna sensoru", + "CGM Sensor Start": "Spuštění senzoru", + "CGM Sensor Stop": "Zastavení senzoru", + "CGM Sensor Insert": "Výměna senzoru", + "Dexcom Sensor Start": "Spuštění senzoru Dexcom", + "Dexcom Sensor Change": "Výměna senzoru Dexcom", "Insulin Cartridge Change": "Výměna inzulínu", - "D.A.D. Alert": "D.A.D. Upozornění", + "D.A.D. Alert": "Hlášení psa", "Glucose Reading": "Hodnota glykémie", "Measurement Method": "Metoda měření", "Meter": "Glukoměr", @@ -225,9 +224,9 @@ "View all treatments": "Zobraz všechny ošetření", "Enable Alarms": "Povolit alarmy", "Pump Battery Change": "Výměna baterie pumpy", - "Pump Battery Low Alarm": "Upozornění na nízký stav baterie", + "Pump Battery Low Alarm": "Upozornění na nízký stav baterie pumpy", "Pump Battery change overdue!": "Překročen čas pro výměnu baterie!", - "When enabled an alarm may sound.": "Při povoleném alarmu zní zvuk", + "When enabled an alarm may sound.": "Při povoleném alarmu zní zvuk.", "Urgent High Alarm": "Urgentní vysoká glykémie", "High Alarm": "Vysoká glykémie", "Low Alarm": "Nízká glykémie", @@ -236,7 +235,7 @@ "Stale Data: Urgent": "Zastaralá data urgentní", "mins": "min", "Night Mode": "Noční mód", - "When enabled the page will be dimmed from 10pm - 6am.": "Když je povoleno, obrazovka je ztlumena 22:00 - 6:00", + "When enabled the page will be dimmed from 10pm - 6am.": "Když je povoleno, obrazovka je ztlumena 22:00 - 6:00.", "Enable": "Povoleno", "Show Raw BG Data": "Zobraz RAW data", "Never": "Nikdy", @@ -297,7 +296,7 @@ "Remove entries in the future": "Odstraň CGM data v budoucnosti", "Loading database ...": "Nahrávám databázi ...", "Database contains %1 future records": "Databáze obsahuje %1 záznamů v budoucnosti", - "Remove %1 selected records?": "Odstranit %1 vybraných záznamů", + "Remove %1 selected records?": "Odstranit %1 vybraných záznamů?", "Error loading database": "Chyba při nahrávání databáze", "Record %1 removed ...": "Záznam %1 odstraněn ...", "Error removing record %1": "Chyba při odstaňování záznamu %1", @@ -315,16 +314,16 @@ "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Tento úkol odstraní všechny záznamy z tabulky devicestatus. Je to vhodné udělat, pokud se ukazatel stavu baterie neukazuje správně.", "Delete old documents from devicestatus collection?": "Odstranit všechny staré záznamy z tabulky devicestatus?", "Clean Mongo entries (glucose entries) database": "Vymazat záznamy (glykémie) z Mongo databáze", - "Delete all documents from entries collection older than 180 days": "Odstranit z tabulky entries všechny záznamy starší než 180 dní", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Tato úloha odstraní záznamy z tabulky entries, které jsou starší než 180 dní. Je vhodné ji spustit, pokud máte problémy se zobrazováním stavu baterie uploaderu.", + "Delete all documents from entries collection older than 180 days": "Odstranit z kolekce entries všechny záznamy starší než 180 dní", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Tato úloha odstraní záznamy z kolekce entries, které jsou starší než 180 dní. Je vhodné ji spustit, pokud máte problémy se zobrazováním stavu baterie uploaderu.", "Delete old documents": "Smazat staré záznamy", - "Delete old documents from entries collection?": "Odstranit staré záznamy z tabulky entries?", + "Delete old documents from entries collection?": "Odstranit staré záznamy z kolekce entries?", "%1 is not a valid number": "%1 není platné číslo", "%1 is not a valid number - must be more than 2": "%1 není platné číslo - musí být větší než 2", - "Clean Mongo treatments database": "Vyčistit tabulku treatments v Mongo databázi", - "Delete all documents from treatments collection older than 180 days": "Odstranit z tabulky treatments všechny záznamy starší než 180 dní", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Tato úloha odstraní záznamy z tabulky treatments, které jsou starší než 180 dní. Je vhodné ji spustit, pokud máte problémy se zobrazováním stavu baterie uploaderu.", - "Delete old documents from treatments collection?": "Odstranit staré záznamy z tabulky treatments?", + "Clean Mongo treatments database": "Vyčistit kolekci treatments v Mongo databázi", + "Delete all documents from treatments collection older than 180 days": "Odstranit z kolekce treatments všechny záznamy starší než 180 dní", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Tato úloha odstraní záznamy z kolekce treatments, které jsou starší než 180 dní. Je vhodné ji spustit, pokud máte problémy se zobrazováním stavu baterie uploaderu.", + "Delete old documents from treatments collection?": "Odstranit staré záznamy z kolekce treatments?", "Admin Tools": "Nástroje pro správu", "Nightscout reporting": "Nightscout - Výkazy", "Cancel": "Zrušit", @@ -337,7 +336,7 @@ "Percent": "Procenta", "Basal change in %": "Změna bazálu v %", "Basal value": "Hodnota bazálu", - "Absolute basal value": "Hodnota bazálu", + "Absolute basal value": "Absolutní hodnota bazálu", "Announcement": "Oznámení", "Loading temp basal data": "Nahrávám dočasné bazály", "Save current record before changing to new?": "Uložit současný záznam před změnou na nový?", @@ -402,10 +401,10 @@ "Rendering": "Vykresluji", "Loading OpenAPS data of": "Nahrávám OpenAPS data z", "Loading profile switch data": "Nahrávám data přepnutí profilu", - "Redirecting you to the Profile Editor to create a new profile.": "Chybě nastavený profil.\nNení definovaný žádný platný profil k času zobrazení.\nProvádím přesměrování na editor profilu.", + "Redirecting you to the Profile Editor to create a new profile.": "Provádím přesměrování na editor profilu pro zadání nového profilu.", "Pump": "Pumpa", - "Sensor Age": "Stáří senzoru (SAGE)", - "Insulin Age": "Stáří inzulínu (IAGE)", + "Sensor Age": "Stáří senzoru", + "Insulin Age": "Stáří inzulínu", "Temporary target": "Dočasný cíl", "Reason": "Důvod", "Eating soon": "Následuje jídlo", @@ -419,8 +418,8 @@ "Negative temp basal insulin:": "Negativní dočasný bazální inzulín:", "Total basal insulin:": "Celkový bazální inzulín:", "Total daily insulin:": "Celkový denní inzulín:", - "Unable to %1 Role": "Chyba volání %1 Role:", - "Unable to delete Role": "Nelze odstranit Roli:", + "Unable to %1 Role": "Chyba volání %1 Role", + "Unable to delete Role": "Nelze odstranit Roli", "Database contains %1 roles": "Databáze obsahuje %1 rolí", "Edit Role": "Editovat roli", "admin, school, family, etc": "administrátor, škola, rodina atd...", @@ -435,7 +434,7 @@ "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Každý subjekt má svůj unikátní token a 1 nebo více rolí. Klikem na přístupový token se otevře nové okno pro tento subjekt. Tento link je možné sdílet.", "Add new Subject": "Přidat nový subjekt", "Unable to %1 Subject": "Nelze %1 Subjekt", - "Unable to delete Subject": "Nelze odstranit Subjekt:", + "Unable to delete Subject": "Nelze odstranit Subjekt", "Database contains %1 subjects": "Databáze obsahuje %1 subjektů", "Edit Subject": "Editovat subjekt", "person, device, etc": "osoba, zařízeni atd.", @@ -450,8 +449,8 @@ "Check BG": "Zkontrolovat glykémii", "BASAL": "BAZÁL", "Current basal": "Současný bazál", - "Sensitivity": "Citlivost (ISF)", - "Current Carb Ratio": "Sacharidový poměr (I:C)", + "Sensitivity": "Citlivost", + "Current Carb Ratio": "Sacharidový poměr", "Basal timezone": "Časová zóna", "Active profile": "Aktivní profil", "Active temp basal": "Aktivní dočasný bazál", @@ -467,7 +466,7 @@ "Elapsed Time": "Dosažený čas", "Absolute Delta": "Absolutní rozdíl", "Interpolated": "Interpolováno", - "BWP": "KALK", + "BWP": "BWP", "Urgent": "Urgentní", "Warning": "Varování", "Info": "Informativní", @@ -498,16 +497,16 @@ "1h temp basal": "hodinový dočasný bazál", "Cannula change overdue!": "Čas na výměnu set vypršel!", "Time to change cannula": "Čas na výměnu setu", - "Change cannula soon": "Blíží se čas na výměnu setu", + "Change cannula soon": "Blíží se čas výměny setu", "Cannula age %1 hours": "Stáří setu %1 hodin", "Inserted": "Nasazený", "CAGE": "SET", - "COB": "SACH", + "COB": "COB", "Last Carbs": "Poslední sacharidy", "IAGE": "INZ", "Insulin reservoir change overdue!": "Čas na výměnu zásobníku vypršel!", "Time to change insulin reservoir": "Čas na výměnu zásobníku", - "Change insulin reservoir soon": "Blíží se čas na výměnu zásobníku", + "Change insulin reservoir soon": "Blíží se čas výměny zásobníku", "Insulin reservoir age %1 hours": "Stáří zásobníku %1 hodin", "Changed": "Vyměněno", "IOB": "IOB", @@ -527,7 +526,7 @@ "Change/restart sensor soon": "Blíží se čas na výměnu senzoru", "Sensor age %1 days %2 hours": "Stáří senzoru %1 dní %2 hodin", "Sensor Insert": "Výměna sensoru", - "Sensor Start": "Znovuspuštění sensoru", + "Sensor Start": "Spuštění sensoru", "days": "dní", "Insulin distribution": "Rozložení inzulínu", "To see this report, press SHOW while in this view": "Pro zobrazení toho výkazu stiskněte Zobraz na této záložce", @@ -544,7 +543,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Doba měnící se glykémie a rapidně se měnící glykémie měří % času ve zkoumaném období, během kterého se glykémie měnila relativně rychle nebo rapidně. Nižší hodnota je lepší.", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Průměrná celková denní změna je součet absolutních hodnoty všech glykémií za sledované období, děleno počtem dní. Nižší hodnota je lepší.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Průměrná hodinová změna je součet absolutní hodnoty všech glykémií za sledované období, dělených počtem hodin v daném období. Nižší hodnota je lepší.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Mimo dosah RMS se vypočítá tak, že se odečte vzdálenost od rozsahu pro všechny hodnoty glykémie za vyšetřované období, hodnoty se sečtou, vydělí počtem a odmocní. Tato metrika je podobná v procentech z rozsahu, ale hodnoty váhy jsou mnohem vyšší. Nižší hodnoty jsou lepší.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">zde.", "Mean Total Daily Change": "Průměrná celková denní změna", @@ -560,10 +559,10 @@ "virtAsstTitleAR2Forecast": "AR2 predikce", "virtAsstTitleCurrentBasal": "Aktuální bazál", "virtAsstTitleCurrentCOB": "Aktuální COB", - "virtAsstTitleCurrentIOB": "Aktuální COB", + "virtAsstTitleCurrentIOB": "Aktuální IOB", "virtAsstTitleLaunch": "Vítejte v Nightscoutu", - "virtAsstTitleLoopForecast": "Prognóza smyčky", - "virtAsstTitleLastLoop": "Poslední smyčka", + "virtAsstTitleLoopForecast": "Loop predikce", + "virtAsstTitleLastLoop": "Poslední běh", "virtAsstTitleOpenAPSForecast": "OpenAPS predikce", "virtAsstTitlePumpReservoir": "Zbývající inzulín", "virtAsstTitlePumpBattery": "Baterie pumpy", @@ -593,9 +592,9 @@ "virtAsstPumpBattery": "Baterie v pumpě má %1 %2", "virtAsstUploaderBattery": "Baterie uploaderu má %1", "virtAsstLastLoop": "Poslední úšpěšné provedení smyčky %1", - "virtAsstLoopNotAvailable": "Plugin smyčka není patrně povolený", - "virtAsstLoopForecastAround": "Podle přepovědi smyčky je očekávána glykémie around %1 během následujících %2", - "virtAsstLoopForecastBetween": "Podle přepovědi smyčky je očekávána glykémie between %1 and %2 během následujících %3", + "virtAsstLoopNotAvailable": "Plugin Loop není patrně povolený", + "virtAsstLoopForecastAround": "Podle přepovědi smyčky je očekávána glykémie okolo %1 během následujících %2", + "virtAsstLoopForecastBetween": "Podle přepovědi smyčky je očekávána glykémie mezi %1 a %2 během následujících %3", "virtAsstAR2ForecastAround": "Podle AR2 predikce je očekávána glykémie okolo %1 během následujících %2", "virtAsstAR2ForecastBetween": "Podle AR2 predikce je očekávána glykémie mezi %1 a %2 během následujících %3", "virtAsstForecastUnavailable": "S dostupnými daty přepověď není možná", @@ -609,7 +608,7 @@ "virtAsstCGMSessNotStarted": "V tuto chvíli není aktivní žádná relace CGM.", "virtAsstCGMTxStatus": "Stav CGM vysílače byl %1 od %2.", "virtAsstCGMTxAge": "Stáří CGM vysílače je %1 dní.", - "virtAsstCGMNoise": "Šum CGM byl %1 do %2.", + "virtAsstCGMNoise": "Šum CGM byl %1 od %2.", "virtAsstCGMBattOne": "Baterie CGM vysílače byla %1 voltů od %2.", "virtAsstCGMBattTwo": "Stav baterie CGM vysílače byla mezi %1 voltů a %2 voltů od %3.", "virtAsstDelta": "Vaše delta byla %1 mezi %2 a %3.", @@ -620,8 +619,8 @@ "Energy [kJ]": "Energie [kJ]", "Clock Views:": "Hodiny:", "Clock": "Hodiny", - "Color": "Barva", - "Simple": "Jednoduchý", + "Color": "Barevné", + "Simple": "Jednoduché", "TDD average": "Průměrná denní dávka", "Bolus average": "Průměrný bolus", "Basal average": "Průměrný bazál", @@ -640,7 +639,7 @@ "ago": "zpět", "Last data received": "Poslední data přiajata", "Clock View": "Hodiny", - "Protein": "Proteiny", + "Protein": "Bílkoviny", "Fat": "Tuk", "Protein average": "Průměrně bílkovin", "Fat average": "Průměrně tuků", @@ -653,14 +652,14 @@ "Database file size": "Velikost databáze", "%1 MiB of %2 MiB (%3%)": "%1 MiB z %2 MiB (%3%)", "Data size": "Velikost dat", - "virtAsstDatabaseSize": "%1 MiB. To odpovídá %2% dostupného místa databázi.", + "virtAsstDatabaseSize": "%1 MiB. To odpovídá %2% dostupného místa v databázi.", "virtAsstTitleDatabaseSize": "Velikost databáze", "Carbs/Food/Time": "Sacharidy/Jídlo/Čas", "Reads enabled in default permissions": "Ve výchozích oprávněních je čtení povoleno", "Data reads enabled": "Čtení dat povoleno", "Data writes enabled": "Zápis dat povolen", "Data writes not enabled": "Zápis dat není povolen", - "Color prediction lines": "Color prediction lines", + "Color prediction lines": "Barevné křivky předpovědí", "Release Notes": "Poznámky k vydání", "Check for Updates": "Zkontrolovat aktualizace", "Open Source": "Open Source", @@ -673,7 +672,7 @@ "Please select a maximum of two weeks duration and click Show again.": "Vyberte, prosím, dobu trvání maximálně 2 týdny, a klepněte na tlačítko Zobrazit znovu.", "Show profiles table": "Zobrazit tabulku profilů", "Show predictions": "Zobrazit predikce", - "Timeshift on meals larger than": "Časový limit jídla větší než", + "Timeshift on meals larger than": "Časový posun jídla větší než", "g carbs": "g sacharidů", "consumed between": "spotřebováno mezi", "Previous": "Předchozí", @@ -683,5 +682,7 @@ "Temp basal delta": "Rozdíl dočasného bazálu", "Authorized by token": "Autorizováno pomocí tokenu", "Auth role": "Autorizační role", - "view without token": "zobrazit bez tokenu" + "view without token": "zobrazit bez tokenu", + "Remove stored token": "Odstranit uložený token", + "Weekly Distribution": "Týdenní rozložení" } diff --git a/translations/da_DK.json b/translations/da_DK.json index 072df43e684..8d7f0c82238 100644 --- a/translations/da_DK.json +++ b/translations/da_DK.json @@ -60,7 +60,6 @@ "Hourly stats": "Timestatistik", "netIOB stats": "netIOB statistik", "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", - "Weekly success": "Uge resultat", "No data available": "Mangler data", "Low": "Lav", "In Range": "Indenfor intervallet", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/de_DE.json b/translations/de_DE.json index 74afcd61452..d26b52d76d3 100644 --- a/translations/de_DE.json +++ b/translations/de_DE.json @@ -60,7 +60,6 @@ "Hourly stats": "Stündliche Statistik", "netIOB stats": "netIOB Statistiken", "temp basals must be rendered to display this report": "temporäre Basalraten müssen für diesen Report sichtbar sein", - "Weekly success": "Wöchentlicher Erfolg", "No data available": "Keine Daten verfügbar", "Low": "Tief", "In Range": "Im Zielbereich", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/el_GR.json b/translations/el_GR.json index 7d0fec22c84..6613c6f68a7 100644 --- a/translations/el_GR.json +++ b/translations/el_GR.json @@ -60,7 +60,6 @@ "Hourly stats": "Ωριαία Στατιστικά", "netIOB stats": "netIOB stats", "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", - "Weekly success": "Εβδομαδιαία Στατιστικά", "No data available": "Μη διαθέσιμα δεδομένα", "Low": "Χαμηλά", "In Range": "Στο στόχο", @@ -681,7 +680,9 @@ "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" + "Authorized by token": "Πιστοποίηση από Token", + "Auth role": "Πιστοποίηση ρόλου", + "view without token": "view without token", + "Remove stored token": "Αφαίρεση αποθηκευμένου token", + "Weekly Distribution": "Εκτίμηση γλυκοζυλιωμένης - 7 ημέρες" } diff --git a/translations/es_ES.json b/translations/es_ES.json index ff0c38e5b7a..53ec88c5bbc 100644 --- a/translations/es_ES.json +++ b/translations/es_ES.json @@ -60,7 +60,6 @@ "Hourly stats": "Estadísticas por hora", "netIOB stats": "estadísticas netIOB", "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", - "Weekly success": "Resultados semanales", "No data available": "No hay datos disponibles", "Low": "Bajo", "In Range": "En rango", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/fi_FI.json b/translations/fi_FI.json index 9f1366eceac..2a0a4e1817a 100644 --- a/translations/fi_FI.json +++ b/translations/fi_FI.json @@ -60,7 +60,6 @@ "Hourly stats": "Tunneittainen tilasto", "netIOB stats": "netIOB tilasto", "temp basals must be rendered to display this report": "tämä raportti vaatii, että basaalien piirto on päällä", - "Weekly success": "Viikkotilasto", "No data available": "Tietoja ei saatavilla", "Low": "Matala", "In Range": "Tavoitealueella", @@ -119,7 +118,7 @@ "Record": "Tietue", "Quick picks": "Nopeat valinnat", "Show hidden": "Näytä piilotettu", - "Your API secret or token": "API salaisuus tai avain", + "Your API secret or token": "API salaisuus tai tunniste", "Remember this device. (Do not enable this on public computers.)": "Muista tämä laite (Älä valitse julkisilla tietokoneilla)", "Treatments": "Hoitotoimenpiteet", "Time": "Aika", @@ -681,7 +680,9 @@ "Next day": "Seuraava päivä", "Next": "Seuraava", "Temp basal delta": "Tilapäisen basaalin muutos", - "Authorized by token": "Authorized by token", - "Auth role": "Auth role", - "view without token": "view without token" + "Authorized by token": "Kirjautuminen tunnisteella", + "Auth role": "Authentikaatiorooli", + "view without token": "Näytä ilman tunnistetta", + "Remove stored token": "Poista talletettu tunniste", + "Weekly Distribution": "Viikkojakauma" } diff --git a/translations/fr_FR.json b/translations/fr_FR.json index be8fbf8c0b3..2824faeb949 100644 --- a/translations/fr_FR.json +++ b/translations/fr_FR.json @@ -5,7 +5,7 @@ "We": "Me", "Th": "Je", "Fr": "Ve", - "Sa": "Sa", + "Sa": "Sam", "Su": "Di", "Monday": "Lundi", "Tuesday": "Mardi", @@ -60,7 +60,6 @@ "Hourly stats": "Statistiques horaires", "netIOB stats": "statistiques netiob", "temp basals must be rendered to display this report": "la basale temporaire doit être activé pour afficher ce rapport", - "Weekly success": "Résultat hebdomadaire", "No data available": "Pas de données disponibles", "Low": "Bas", "In Range": "dans la norme", @@ -320,7 +319,7 @@ "Delete old documents": "Effacer les anciens documents", "Delete old documents from entries collection?": "Delete old documents from entries collection?", "%1 is not a valid number": "%1 n'est pas un nombre valide", - "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", + "%1 is not a valid number - must be more than 2": "%1 n'est pas un nombre valide - doit être supérieur à 2", "Clean Mongo treatments database": "Nettoyage de la base de données des traitements Mongo", "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", @@ -380,7 +379,7 @@ "Add new interval before": "Ajouter un intervalle de temps avant", "Delete interval": "Effacer l'intervalle", "I:C": "I:C", - "ISF": "ISF", + "ISF": "ISF (Sensibilité à l'insuline)", "Combo Bolus": "Bolus Duo/Combo", "Difference": "Différence", "New time": "Nouveau temps", @@ -424,7 +423,7 @@ "Database contains %1 roles": "La base de données contient %1 rôles", "Edit Role": "Éditer le rôle", "admin, school, family, etc": "Administrateur, école, famille, etc", - "Permissions": "Permissions", + "Permissions": "Autorisations", "Are you sure you want to delete: ": "Êtes-vous sûr de vouloir effacer:", "Each role will have a 1 or more permissions. The * permission is a wildcard, permissions are a hierarchy using : as a separator.": "Chaque rôle aura une ou plusieurs permissions. La permission * est un joker (permission universelle), les permissions sont une hierarchie utilisant : comme séparatuer", "Add new Role": "Ajouter un nouveau rôle", @@ -502,7 +501,7 @@ "Cannula age %1 hours": "âge de la canule %1 heures", "Inserted": "Insérée", "CAGE": "CAGE", - "COB": "COB", + "COB": "COB glucides actifs", "Last Carbs": "Derniers glucides", "IAGE": "IAGE", "Insulin reservoir change overdue!": "Dépassement de date de changement de réservoir d'insuline!", @@ -556,24 +555,24 @@ "SingleDown": "en chute", "DoubleDown": "en chute rapide", "DoubleUp": "en montée rapide", - "virtAsstUnknown": "That value is unknown at the moment. Please see your Nightscout site for more details.", + "virtAsstUnknown": "Cette valeur est inconnue pour le moment. Veuillez consulter votre site Nightscout pour plus de détails.", "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", + "virtAsstTitleCurrentBasal": "Débit basal actuel", + "virtAsstTitleCurrentCOB": "Glucides actuels", + "virtAsstTitleCurrentIOB": "Insuline actuelle", + "virtAsstTitleLaunch": "Bienvenue dans Nightscout", + "virtAsstTitleLoopForecast": "Prévision de Loop", + "virtAsstTitleLastLoop": "Dernière boucle", + "virtAsstTitleOpenAPSForecast": "Prédictions OpenAPS", + "virtAsstTitlePumpReservoir": "Insuline restante", "virtAsstTitlePumpBattery": "Batterie Pompe", "virtAsstTitleRawBG": "Current Raw BG", "virtAsstTitleUploaderBattery": "Uploader Battery", "virtAsstTitleCurrentBG": "Glycémie actuelle", - "virtAsstTitleFullStatus": "Full Status", + "virtAsstTitleFullStatus": "Statut complet", "virtAsstTitleCGMMode": "CGM Mode", "virtAsstTitleCGMStatus": "Statut CGM", - "virtAsstTitleCGMSessionAge": "CGM Session Age", + "virtAsstTitleCGMSessionAge": "L’âge de la session du CGM", "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", "virtAsstTitleCGMTxAge": "CGM Transmitter Age", "virtAsstTitleCGMNoise": "CGM Noise", @@ -656,32 +655,34 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Glucides/Alimentation/Temps", - "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": "Timeshift on meals larger than", - "g carbs": "g carbs'", - "consumed between": "consumed between", - "Previous": "Previous", - "Previous day": "Previous day", - "Next day": "Next day", - "Next": "Next", + "Reads enabled in default permissions": "Lectures activées dans les autorisations par défaut", + "Data reads enabled": "Lectures des données activées", + "Data writes enabled": "Écriture de données activée", + "Data writes not enabled": "Les écritures de données ne sont pas activées", + "Color prediction lines": "Lignes de prédiction de couleurs", + "Release Notes": "Notes de version", + "Check for Updates": "Rechercher des mises à jour", + "Open Source": "Open source. Libre de droit", + "Nightscout Info": "Informations 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.": "Le but principal de Loopalyzer est de visualiser comment le système de boucle fermée Loop fonctionne. Il peut aussi fonctionner avec d'autres configurations, à la fois en boucle fermée et ouverte, et sans boucle. Cependant, en fonction du système que vous utilisez, de la fréquence à laquelle il est capable de capter vos données et de les télécharger, et comment il est en mesure de compléter des données manquantes, certains graphiques peuvent avoir des lacunes ou même être complètement vides. Assurez vous toujours que les graphiques ont l'air raisonnables. Le mieux est de voir un jour à la fois et de faire défiler plusieurs jours d'abord pour voir.", + "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 comprend une fonction de décalage de temps. Si vous prenez le petit déjeuner par exemple à 07h00 un jour et à 08h00 le jour suivant, la courbe de votre glycémie moyenne de ces deux jours sera probablement aplatie et ne montrera pas la tendance réelle après le petit déjeuner. Le décalage de temps calculera le temps moyen entre la consommation de ces repas, puis déplacera toutes les données (glucides, insuline, basal, etc.) pendant les deux jours à la différence de temps correspondante de sorte que les deux repas s'alignent sur une heure moyenne de début du repas.", + "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.": "Dans cet exemple, toutes les données du premier jour sont avancées de 30 minutes dans le temps et toutes les données du deuxième jour sont repoussées de 30 minutes dans le temps, de sorte qu'il apparaît comme si vous aviez pris le petit déjeuner à 07h30 les deux jours. Cela vous permet de voir votre réponse glycémique moyenne réelle à partir d'un repas.", + "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.": "Le décalage de temps met en évidence en gris la période après le temps moyen de démarrage des repas, pour la durée de la DIA (Durée de l'action de l'insuline). Comme tous les points de données de la journée entière sont déplacés, les courbes en dehors de la zone grise peuvent ne pas être précises.", + "Note that time shift is available only when viewing multiple days.": "Notez que le décalage de temps n'est disponible que lors de l'affichage de plusieurs jours.", + "Please select a maximum of two weeks duration and click Show again.": "Veuillez sélectionner une durée maximale de deux semaines et cliquez à nouveau sur Afficher.", + "Show profiles table": "Afficher la table des profils", + "Show predictions": "Afficher les prédictions", + "Timeshift on meals larger than": "Timeshift pour les repas de plus de", + "g carbs": "g glucides", + "consumed between": "consommés entre", + "Previous": "Précédent", + "Previous day": "Jour précédent", + "Next day": "Jour suivant", + "Next": "Suivant", "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Distribution hebdomadaire" } diff --git a/translations/he_IL.json b/translations/he_IL.json index ec18edbb156..987bfa3b81e 100644 --- a/translations/he_IL.json +++ b/translations/he_IL.json @@ -60,7 +60,6 @@ "Hourly stats": "סטטיסטיקה שעתית", "netIOB stats": "netIOB סטטיסטיקת", "temp basals must be rendered to display this report": "חובה לאפשר רמה בזלית זמנית כדי לרות דוח זה", - "Weekly success": "הצלחה שבועית", "No data available": "אין מידע זמין", "Low": "נמוך", "In Range": "בטווח", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/hr_HR.json b/translations/hr_HR.json index 63c2ab48742..1c1c7330d7a 100644 --- a/translations/hr_HR.json +++ b/translations/hr_HR.json @@ -60,7 +60,6 @@ "Hourly stats": "Statistika po satu", "netIOB stats": "netIOB statistika", "temp basals must be rendered to display this report": "temp bazali moraju biti prikazani kako bi se vidio ovaj izvještaj", - "Weekly success": "Tjedni uspjeh", "No data available": "Nema raspoloživih podataka", "Low": "Nizak", "In Range": "U rasponu", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/hu_HU.json b/translations/hu_HU.json index 61e8ccb9af2..c33068f4d8b 100644 --- a/translations/hu_HU.json +++ b/translations/hu_HU.json @@ -60,7 +60,6 @@ "Hourly stats": "Óránkra való szétosztás", "netIOB stats": "netIOB statisztika", "temp basals must be rendered to display this report": "Az átmeneti bazálnak meg kell lennie jelenítve az adott jelentls megtekintéséhez", - "Weekly success": "Heti sikeresség", "No data available": "Nincs elérhető adat", "Low": "Alacsony", "In Range": "Normális", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/it_IT.json b/translations/it_IT.json index 56bf87eb0b5..5b5d975348f 100644 --- a/translations/it_IT.json +++ b/translations/it_IT.json @@ -60,7 +60,6 @@ "Hourly stats": "Statistiche per ore", "netIOB stats": "netIOB statistiche", "temp basals must be rendered to display this report": "le basali temp devono essere renderizzate per visualizzare questo report", - "Weekly success": "Statistiche settimanali", "No data available": "Dati non disponibili", "Low": "Basso", "In Range": "Nell'intervallo", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/ja_JP.json b/translations/ja_JP.json index a354651ae19..4073950133b 100644 --- a/translations/ja_JP.json +++ b/translations/ja_JP.json @@ -60,7 +60,6 @@ "Hourly stats": "1時間統計", "netIOB stats": "netIOB stats", "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", - "Weekly success": "1週間統計", "No data available": "利用できるデータがありません", "Low": "目標血糖値低値", "In Range": "目標血糖値範囲内", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/ko_KR.json b/translations/ko_KR.json index 6feab346652..4bdf9084c93 100644 --- a/translations/ko_KR.json +++ b/translations/ko_KR.json @@ -60,7 +60,6 @@ "Hourly stats": "시간대별 통계", "netIOB stats": "netIOB stats", "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", - "Weekly success": "주간 통계", "No data available": "활용할 수 있는 데이터 없음", "Low": "낮음", "In Range": "범위 안 ", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/nb_NO.json b/translations/nb_NO.json index ce56be99c48..f8fcd5bfb28 100644 --- a/translations/nb_NO.json +++ b/translations/nb_NO.json @@ -60,7 +60,6 @@ "Hourly stats": "Timestatistikk", "netIOB stats": "netIOB statistikk", "temp basals must be rendered to display this report": "midlertidig basal må være synlig for å vise denne rapporten", - "Weekly success": "Ukentlige resultat", "No data available": "Mangler data", "Low": "Lav", "In Range": "Innenfor intervallet", @@ -681,7 +680,9 @@ "Next day": "Neste dag", "Next": "Neste", "Temp basal delta": "Midlertidig basal delta", - "Authorized by token": "Autorisert med tlgangsnøkkel", + "Authorized by token": "Autorisert med tilgangsnøkkel", "Auth role": "Autorisert", - "view without token": "vis uten tilgangsnøkkel" + "view without token": "vis uten tilgangsnøkkel", + "Remove stored token": "Fjern lagret tilgangsnøkkel", + "Weekly Distribution": "Ukentlige resultat" } diff --git a/translations/nl_NL.json b/translations/nl_NL.json index d401525eae8..85d765835a6 100644 --- a/translations/nl_NL.json +++ b/translations/nl_NL.json @@ -60,7 +60,6 @@ "Hourly stats": "Statistieken per uur", "netIOB stats": "netIOB statistieken", "temp basals must be rendered to display this report": "tijdelijk basaal moet zichtbaar zijn voor dit rapport", - "Weekly success": "Wekelijkse successen", "No data available": "Geen gegevens beschikbaar", "Low": "Laag", "In Range": "Binnen bereik", @@ -683,5 +682,7 @@ "Temp basal delta": "Tijdelijk basaal delta", "Authorized by token": "Geautoriseerd met token", "Auth role": "Auth rol", - "view without token": "bekijken zonder token" + "view without token": "bekijken zonder token", + "Remove stored token": "Verwijder opgeslagen token", + "Weekly Distribution": "Wekelijkse spreiding" } diff --git a/translations/pl_PL.json b/translations/pl_PL.json index 7e7b4656037..d7fc3575fce 100644 --- a/translations/pl_PL.json +++ b/translations/pl_PL.json @@ -60,7 +60,6 @@ "Hourly stats": "Statystyki godzinowe", "netIOB stats": "Statystyki netIOP", "temp basals must be rendered to display this report": "Tymczasowa dawka podstawowa jest wymagana aby wyświetlić ten raport", - "Weekly success": "Wyniki tygodniowe", "No data available": "Brak danych", "Low": "Niski", "In Range": "W zakresie", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/pt_BR.json b/translations/pt_BR.json index 7df52dea076..23cdd2166a7 100644 --- a/translations/pt_BR.json +++ b/translations/pt_BR.json @@ -60,7 +60,6 @@ "Hourly stats": "Estatísticas por hora", "netIOB stats": "netIOB stats", "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", - "Weekly success": "Resultados semanais", "No data available": "Não há dados", "Low": "Baixo", "In Range": "Na meta", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/ro_RO.json b/translations/ro_RO.json index 8e29bc99f36..42d9b3ce585 100644 --- a/translations/ro_RO.json +++ b/translations/ro_RO.json @@ -34,23 +34,23 @@ "Insulin": "Insulină", "Carbs": "Carbohidrați", "Notes contain": "Conținut note", - "Target BG range bottom": "Limită de jos a glicemiei", + "Target BG range bottom": "Limita de jos a glicemiei", "top": "Sus", "Show": "Arată", "Display": "Afișează", "Loading": "Se încarcă", - "Loading profile": "Încarc profilul", - "Loading status": "Încarc statusul", - "Loading food database": "Încarc baza de date de alimente", + "Loading profile": "Se încarcă profilul", + "Loading status": "Se încarcă starea", + "Loading food database": "Se încarcă baza de date de alimente", "not displayed": "neafișat", - "Loading CGM data of": "Încarc datele CGM ale lui", + "Loading CGM data of": "Încarc datele CGM pentru", "Loading treatments data of": "Încarc datele despre tratament pentru", "Processing data of": "Procesez datele pentru", "Portion": "Porție", "Size": "Mărime", "(none)": "(fără)", - "None": "fără", - "": "", + "None": "Niciunul", + "": "", "Result is empty": "Fără rezultat", "Day to day": "Zi cu zi", "Week to week": "Săptămâna la săptămână", @@ -60,8 +60,7 @@ "Hourly stats": "Statistici orare", "netIOB stats": "Statistici netIOB", "temp basals must be rendered to display this report": "bazalele temporare trebuie redate pentru a afișa acest raport", - "Weekly success": "Rezultate săptămânale", - "No data available": "Fără date", + "No data available": "Nu există date disponibile", "Low": "Prea jos", "In Range": "În interval", "Period": "Perioada", @@ -74,25 +73,25 @@ "Normal": "Normal", "Median": "Mediană", "Readings": "Valori", - "StDev": "Standarddeviation", + "StDev": "Deviație standard", "Daily stats report": "Raport statistică zilnică", "Glucose Percentile report": "Raport percentile glicemii", "Glucose distribution": "Distribuție glicemie", "days total": "total zile", - "Total per day": "total zile", + "Total per day": "Total pe zi", "Overall": "General", "Range": "Interval", "% of Readings": "% de valori", - "# of Readings": "nr. de valori", + "# of Readings": "# de valori", "Mean": "Medie", "Standard Deviation": "Deviație standard", "Max": "Max", "Min": "Min", - "A1c estimation*": "HbA1C estimată", - "Weekly Success": "Rezultate săptămânale", - "There is not sufficient data to run this report. Select more days.": "Nu sunt sufieciente date pentru acest raport. Selectați mai multe zile.", - "Using stored API secret hash": "Utilizez cheie API secretă", - "No API secret hash stored yet. You need to enter API secret.": "Încă nu există cheie API secretă. Aceasta trebuie introdusă.", + "A1c estimation*": "HbA1C estimată*", + "Weekly Success": "Rezultate Săptămânale", + "There is not sufficient data to run this report. Select more days.": "Nu sunt suficiente date pentru acest raport. Selectați mai multe zile.", + "Using stored API secret hash": "Folosind cheia API secretă stocată", + "No API secret hash stored yet. You need to enter API secret.": "Încă nu există o cheie API secretă stocată. Trebuie să introduci cheia API secretă.", "Database loaded": "Baza de date încărcată", "Error: Database failed to load": "Eroare: Nu s-a încărcat baza de date", "Error": "Eroare", @@ -100,54 +99,54 @@ "Save record": "Salvează înregistrarea", "Portions": "Porții", "Unit": "Unități", - "GI": "CI", + "GI": "GI", "Edit record": "Editează înregistrarea", "Delete record": "Șterge înregistrarea", "Move to the top": "Mergi la început", "Hidden": "Ascuns", - "Hide after use": "Ascunde după folosireaa", - "Your API secret must be at least 12 characters long": "Cheia API trebuie să aibă mai mult de 12 caractere", + "Hide after use": "Ascunde după folosire", + "Your API secret must be at least 12 characters long": "Cheia API trebuie să aibă minim 12 caractere", "Bad API secret": "Cheie API greșită", "API secret hash stored": "Cheie API înregistrată", "Status": "Stare", "Not loaded": "Neîncărcat", "Food Editor": "Editor alimente", - "Your database": "Baza de date", + "Your database": "Baza ta de date", "Filter": "Filtru", "Save": "Salvează", "Clear": "Inițializare", "Record": "Înregistrare", "Quick picks": "Selecție rapidă", "Show hidden": "Arată înregistrările ascunse", - "Your API secret or token": "API secret sau cod token", + "Your API secret or token": "API secret sau cheie de acces", "Remember this device. (Do not enable this on public computers.)": "Tine minte acest dispozitiv. (Nu activaţi pe calculatoarele publice.)", "Treatments": "Tratamente", "Time": "Ora", "Event Type": "Tip eveniment", "Blood Glucose": "Glicemie", "Entered By": "Introdus de", - "Delete this treatment?": "Șterge acest eveniment?", - "Carbs Given": "Carbohidrați", + "Delete this treatment?": "Șterg acest eveniment?", + "Carbs Given": "Carbohidrați administrați", "Insulin Given": "Insulină administrată", "Event Time": "Ora evenimentului", - "Please verify that the data entered is correct": "Verificați conexiunea datelor introduse", + "Please verify that the data entered is correct": "Verificaţi dacă datele introduse sunt corecte", "BG": "Glicemie", "Use BG correction in calculation": "Folosește corecția de glicemie în calcule", - "BG from CGM (autoupdated)": "Glicemie în senzor (automat)", - "BG from meter": "Glicemie în glucometru", + "BG from CGM (autoupdated)": "Glicemie din senzor (automat)", + "BG from meter": "Glicemie din glucometru", "Manual BG": "Glicemie manuală", "Quickpick": "Selecție rapidă", "or": "sau", "Add from database": "Adaugă din baza de date", "Use carbs correction in calculation": "Folosește corecția de carbohidrați în calcule", - "Use COB correction in calculation": "Folosește COB în calcule", + "Use COB correction in calculation": "Folosește corectia COB în calcule", "Use IOB in calculation": "Folosește IOB în calcule", "Other correction": "Alte corecții", "Rounding": "Rotunjire", "Enter insulin correction in treatment": "Introdu corecția de insulină în tratament", "Insulin needed": "Necesar insulină", "Carbs needed": "Necesar carbohidrați", - "Carbs needed if Insulin total is negative value": "Carbohidrați când necesarul de insulină este negativ", + "Carbs needed if Insulin total is negative value": "Carbohidrați necesari dacă insulina totală are valoare negativă", "Basal rate": "Rata bazală", "60 minutes earlier": "acum 60 min", "45 minutes earlier": "acum 45 min", @@ -166,8 +165,8 @@ "Other": "Altul", "Submit Form": "Trimite formularul", "Profile Editor": "Editare profil", - "Reports": "Instrumente raportare", - "Add food from your database": "Adaugă alimente din baza de date", + "Reports": "Rapoarte", + "Add food from your database": "Adaugă alimente din baza ta de date", "Reload database": "Reîncarcă baza de date", "Add": "Adaugă", "Unauthorized": "Neautorizat", @@ -185,16 +184,16 @@ "Linear": "Liniar", "Logarithmic": "Logaritmic", "Logarithmic (Dynamic)": "Logaritmic (Dinamic)", - "Insulin-on-Board": "IOB-Insulină activă", - "Carbs-on-Board": "COB-Carbohidrați activi", - "Bolus Wizard Preview": "BWP-Sugestie de bolusare", + "Insulin-on-Board": "IOB-Insulină activă la bord", + "Carbs-on-Board": "COB-Carbohidrați activi la bord", + "Bolus Wizard Preview": "BWP-Vizualizare asistent de bolusare", "Value Loaded": "Valoare încărcată", "Cannula Age": "CAGE-Vechime canulă", "Basal Profile": "Profil bazală", - "Silence for 30 minutes": "Ignoră pentru 30 minute", - "Silence for 60 minutes": "Ignoră pentru 60 minute", - "Silence for 90 minutes": "Ignoră pentru 90 minure", - "Silence for 120 minutes": "Ignoră pentru 120 minute", + "Silence for 30 minutes": "Silențios pentru 30 minute", + "Silence for 60 minutes": "Silențios pentru 60 minute", + "Silence for 90 minutes": "Silențios pentru 90 minute", + "Silence for 120 minutes": "Silențios pentru 120 minute", "Settings": "Setări", "Units": "Unități", "Date format": "Formatul datei", @@ -210,15 +209,15 @@ "Question": "Întrebare", "Exercise": "Activitate fizică", "Pump Site Change": "Schimbare loc pompă", - "CGM Sensor Start": "Start senzor", + "CGM Sensor Start": "Start senzor CGM", "CGM Sensor Stop": "Stop senzor CGM", - "CGM Sensor Insert": "Schimbare senzor", + "CGM Sensor Insert": "Inserare senzor CGM", "Dexcom Sensor Start": "Pornire senzor Dexcom", "Dexcom Sensor Change": "Schimbare senzor Dexcom", "Insulin Cartridge Change": "Schimbare cartuș insulină", - "D.A.D. Alert": "Alertă câine de serviciu", + "D.A.D. Alert": "Alertă câine special antrenat ca însoțitor", "Glucose Reading": "Valoare glicemie", - "Measurement Method": "Metodă măsurare", + "Measurement Method": "Metoda de măsurare", "Meter": "Glucometru", "Amount in grams": "Cantitate în grame", "Amount in units": "Cantitate în unități", @@ -226,7 +225,7 @@ "Enable Alarms": "Activează alarmele", "Pump Battery Change": "Schimbare baterie pompă", "Pump Battery Low Alarm": "Alarmă Baterie Scăzută la pompă", - "Pump Battery change overdue!": "Intarziere la schimbarea bateriei de la pompă!", + "Pump Battery change overdue!": "Intârziere la schimbarea bateriei de la pompă!", "When enabled an alarm may sound.": "Când este activ, poate suna o alarmă.", "Urgent High Alarm": "Alarmă urgentă hiper", "High Alarm": "Alarmă hiper", @@ -236,37 +235,37 @@ "Stale Data: Urgent": "Date învechite: urgent", "mins": "min", "Night Mode": "Mod nocturn", - "When enabled the page will be dimmed from 10pm - 6am.": "La activare va scădea iluminarea între 22 și 6", + "When enabled the page will be dimmed from 10pm - 6am.": "La activare va scădea iluminarea paginii între 22 și 6.", "Enable": "Activează", "Show Raw BG Data": "Afișează date primare glicemie", "Never": "Niciodată", "Always": "Întotdeauna", - "When there is noise": "Atunci când este diferență", - "When enabled small white dots will be displayed for raw BG data": "La activare vor apărea puncte albe reprezentând citirea brută a glicemiei", - "Custom Title": "Titlu particularizat", + "When there is noise": "Atunci când este zgomot", + "When enabled small white dots will be displayed for raw BG data": "La activare vor apărea puncte albe reprezentând valorile primare ale glicemiei", + "Custom Title": "Titlu personalizat", "Theme": "Temă", - "Default": "Implicită", - "Colors": "Colorată", + "Default": "Implicit", + "Colors": "Culori", "Colorblind-friendly colors": "Culori pentru cei cu deficiențe de vedere", "Reset, and use defaults": "Resetează și folosește setările implicite", "Calibrations": "Calibrări", - "Alarm Test / Smartphone Enable": "Teste alarme / Activează pe smartphone", - "Bolus Wizard": "Calculator sugestie bolus", + "Alarm Test / Smartphone Enable": "Testare alarmă / Activare pe smartphone", + "Bolus Wizard": "Asistent bolusare", "in the future": "în viitor", "time ago": "în trecut", "hr ago": "oră în trecut", - "hrs ago": "h în trecut", - "min ago": "minut în trecut", + "hrs ago": "ore în trecut", + "min ago": "min în trecut", "mins ago": "minute în trecut", "day ago": "zi în trecut", "days ago": "zile în trecut", - "long ago": "timp în trecut", + "long ago": "in urma cu mult timp", "Clean": "Curat", "Light": "Ușor", "Medium": "Mediu", "Heavy": "Puternic", "Treatment type": "Tip tratament", - "Raw BG": "Citire brută a glicemiei", + "Raw BG": "Valorile primară a glicemiei", "Device": "Dispozitiv", "Noise": "Zgomot", "Calibration": "Calibrare", @@ -275,60 +274,60 @@ "Value in": "Valoare în", "Carb Time": "Ora carbohidrați", "Language": "Limba", - "Add new": "Adaugă nou", + "Add new": "Adaugă intrare noua", "g": "gr", "ml": "ml", "pcs": "buc", - "Drag&drop food here": "Drag&drop aliment aici", + "Drag&drop food here": "Apasă&trage aliment aici", "Care Portal": "Care Portal", "Medium/Unknown": "Mediu/Necunoscut", "IN THE FUTURE": "ÎN VIITOR", "Update": "Actualizare", "Order": "Sortare", - "oldest on top": "mai vechi primele", - "newest on top": "mai noi primele", - "All sensor events": "Evenimente legate de senzor", + "oldest on top": "cele mai vechi primele de sus", + "newest on top": "cele mai noi primele de sus", + "All sensor events": "Toate evenimentele legate de senzor", "Remove future items from mongo database": "Șterge date din viitor din baza de date mongo", "Find and remove treatments in the future": "Caută și elimină tratamente din viitor", "This task find and remove treatments in the future.": "Acest instrument curăță tratamentele din viitor.", "Remove treatments in the future": "Șterge tratamentele din viitor", "Find and remove entries in the future": "Caută și elimină valorile din viitor", - "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Instrument de căutare și eliminare a datelor din viitor, create de uploader cu ora setată greșit", + "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Acest instrument caută și elimină datele CGM din viitor, create de uploader cu ora setată greșit.", "Remove entries in the future": "Elimină înregistrările din viitor", - "Loading database ...": "Încarc baza de date", + "Loading database ...": "Se încarcă baza de date...", "Database contains %1 future records": "Baza de date conține %1 înregistrări din viitor", "Remove %1 selected records?": "Șterg %1 înregistrări selectate?", "Error loading database": "Eroare la încărcarea bazei de date", "Record %1 removed ...": "Înregistrarea %1 a fost ștearsă...", "Error removing record %1": "Eroare la ștergerea înregistrării %1", "Deleting records ...": "Se șterg înregistrările...", - "%1 records deleted": "1% inregistrari sterse", + "%1 records deleted": "%1 înregistrări șterse", "Clean Mongo status database": "Curăță tabela despre status din Mongo", "Delete all documents from devicestatus collection": "Șterge toate documentele din colecția de status dispozitiv", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele din colecția devicestatus. Se folosește când încărcarea bateriei nu se afișează corect.", "Delete all documents": "Șterge toate documentele", - "Delete all documents from devicestatus collection?": "Șterg toate documentele din colecția devicestatus?", + "Delete all documents from devicestatus collection?": "Șterg toate documentele din colecția status dispozitiv?", "Database contains %1 records": "Baza de date conține %1 înregistrări", - "All records removed ...": "Toate înregistrările au fost șterse.", + "All records removed ...": "Toate înregistrările au fost șterse...", "Delete all documents from devicestatus collection older than 30 days": "Șterge toate documentele mai vechi de 30 de zile din starea dispozitivului", "Number of Days to Keep:": "Numărul de zile de păstrat:", "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele mai vechi de 30 de zile din starea dispozitivului. Se folosește când încărcarea bateriei nu se afișează corect.", "Delete old documents from devicestatus collection?": "Șterg toate documentele din colecția starea dispozitivului?", "Clean Mongo entries (glucose entries) database": "Curătă intrarile in baza de date Mongo (intrări de glicemie)", - "Delete all documents from entries collection older than 180 days": "Șterge toate documentele mai vechi de 180 de zile din starea dispozitivului", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele mai vechi de 180 de zile din starea dispozitivului. Se folosește când încărcarea bateriei nu se afișează corect.", - "Delete old documents": "Șterge toate documentele vechi", - "Delete old documents from entries collection?": "Șterg toate documentele vechi din colecția starea dispozitivului?", + "Delete all documents from entries collection older than 180 days": "Șterge toate documentele mai vechi de 180 de zile din colectia intrari valori", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele mai vechi de 180 de zile din colectia intrari valori. Se folosește când încărcarea bateriei nu se afișează corect.", + "Delete old documents": "Șterge documentele vechi", + "Delete old documents from entries collection?": "Șterg toate documentele vechi din colecția intrari valori?", "%1 is not a valid number": "%1 nu este un număr valid", - "%1 is not a valid number - must be more than 2": "%1 nu este un număr valid - trebuie să fie mai mare de 2", - "Clean Mongo treatments database": "Curăță baza de date de tratamente", - "Delete all documents from treatments collection older than 180 days": "Șterge toate documentele mai vechi de 180 de zile din starea dispozitivului", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele mai vechi de 180 de zile din starea dispozitivului. Se folosește când încărcarea bateriei nu se afișează corect.", - "Delete old documents from treatments collection?": "Șterg toate documentele vechi din colecția starea dispozitivului?", + "%1 is not a valid number - must be more than 2": "%1 nu este un număr valid - trebuie să fie mai mare decât 2", + "Clean Mongo treatments database": "Curăță baza de date Mongo de tratamente", + "Delete all documents from treatments collection older than 180 days": "Șterge toate documentele mai vechi de 180 de zile din colecția de tratamente", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Acest instrument șterge toate documentele mai vechi de 180 de zile din colecția de tratamente. Se folosește când încărcarea bateriei nu se afișează corect.", + "Delete old documents from treatments collection?": "Șterg documentele vechi din colecția de tratamente?", "Admin Tools": "Instrumente de administrare", "Nightscout reporting": "Rapoarte Nightscout", "Cancel": "Renunță", - "Edit treatment": "Modifică înregistrarea", + "Edit treatment": "Modifică tratament", "Duration": "Durata", "Duration in minutes": "Durata în minute", "Temp Basal": "Bazală temporară", @@ -345,31 +344,31 @@ "Profile": "Profil", "General profile settings": "Setări generale profil", "Title": "Titlu", - "Database records": "Înregistrări", + "Database records": "Baza de date cu înregistrări", "Add new record": "Adaugă înregistrare nouă", "Remove this record": "Șterge această înregistrare", - "Clone this record to new": "Duplică această înregistrare", + "Clone this record to new": "Dublează această înregistrare", "Record valid from": "Înregistare validă de la", "Stored profiles": "Profile salvate", "Timezone": "Fus orar", - "Duration of Insulin Activity (DIA)": "Durata de acțiune a insulinei", - "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.": "Reprezintă durata tipică pentru care insulina are efect. Este diferită la fiecare pacient și pentru fiecare tip de insulină", + "Duration of Insulin Activity (DIA)": "Durata de acțiune a insulinei (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.": "Reprezintă durata tipică pentru care insulina are efect. Este diferită la fiecare pacient și pentru fiecare tip de insulină. De obicei 3-4 ore pentru marea majoritate a insulinelor si pacienților. Uneori se numește și durata de viață a insulinei.", "Insulin to carb ratio (I:C)": "Rată insulină la carbohidrați (ICR)", "Hours:": "Ore:", "hours": "ore", "g/hour": "g/oră", - "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g carbohidrați pentru o unitate de insulină. Câte grame de carbohidrați sunt acoperite de 1U insulină.", + "g carbs per U insulin. The ratio of how many grams of carbohydrates are offset by each U of insulin.": "g carbohidrați pentru o unitate de insulină. Câte grame de carbohidrați sunt acoperite de fiecare unitate de insulină.", "Insulin Sensitivity Factor (ISF)": "Factor de sensilibtate la insulină (ISF)", "mg/dL or mmol/L per U insulin. The ratio of how much BG changes with each U of corrective insulin.": "mg/dL sau mmol/L pentru 1U insulină. Cât de mult influențează glicemia o corecție de o unitate de insulină.", "Carbs activity / absorption rate": "Rata de absorbție", - "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).": "grame pe unitatea de timp. Reprezintă atât schimbarea COB pe unitatea de timp, cât și cantitatea de carbohidrați care ar influența în perioada de timp. Graficele ratei de absorbție sunt mai puțin înțelese decât senzitivitatea la insulină, dar se poate aproxima folosind o întârziere implicită și apoi o rată constantă de aborbție (g/h).", - "Basal rates [unit/hour]": "Rata bazală [unitate/oră]", + "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).": "grame pe unitatea de timp. Reprezintă atât schimbarea COB pe unitatea de timp, cât și cantitatea de carbohidrați care ar influența în perioada de timp. Graficele ratei de absorbție sunt mai puțin înțelese decât senzitivitatea la insulină, dar se poate aproxima folosind o întârziere implicită și apoi o rată constantă de absorbție (gr/oră).", + "Basal rates [unit/hour]": "Rate bazale [unitati/oră]", "Target BG range [mg/dL,mmol/L]": "Intervalul țintă al glicemiei [mg/dL, mmol/L]", "Start of record validity": "De când este valabilă înregistrarea", - "Icicle": "Țurțure", + "Icicle": "Icicle", "Render Basal": "Afișează bazala", "Profile used": "Profil folosit", - "Calculation is in target range.": "Calculul dă o valoare în intervalul țintă.", + "Calculation is in target range.": "Calculul este în intervalul țintă.", "Loading profile records ...": "Se încarcă datele profilului...", "Values loaded.": "Valorile au fost încărcate.", "Default values used.": "Se folosesc valorile implicite.", @@ -379,7 +378,7 @@ "Save current record before switching to new?": "Salvez valoarea curentă înainte de a trece la una nouă?", "Add new interval before": "Adaugă un nou interval înainte", "Delete interval": "Șterge interval", - "I:C": "ICR", + "I:C": "I:C", "ISF": "ISF (factor de sensibilitate la insulina)", "Combo Bolus": "Bolus extins", "Difference": "Diferență", @@ -393,16 +392,16 @@ "Move carbs": "Mutați carbohidrații", "Remove insulin": "Ștergeți insulina", "Remove carbs": "Ștergeți carbohidrații", - "Change treatment time to %1 ?": "Schimbați ora acțiunii cu %1 ?", - "Change carbs time to %1 ?": "Schimbați ora carbohidraților cu %1 ?", - "Change insulin time to %1 ?": "Schimbați ora insulinei cu %1 ?", - "Remove treatment ?": "Ștergeți acțiunea?", - "Remove insulin from treatment ?": "Ștergeți insulina din acțiune?", - "Remove carbs from treatment ?": "Ștergeți carbohidrații din acțiune?", + "Change treatment time to %1 ?": "Schimbați ora tratamentului la %1 ?", + "Change carbs time to %1 ?": "Schimbați ora carbohidraților la %1 ?", + "Change insulin time to %1 ?": "Schimbați ora insulinei la %1 ?", + "Remove treatment ?": "Ștergeți tratamentul?", + "Remove insulin from treatment ?": "Ștergeți insulina din tratament?", + "Remove carbs from treatment ?": "Ștergeți carbohidrații din tratament?", "Rendering": "Se desenează", "Loading OpenAPS data of": "Se încarcă datele OpenAPS pentru", "Loading profile switch data": "Se încarcă datele de schimbare profil", - "Redirecting you to the Profile Editor to create a new profile.": "Setare de profil eronată.\nNu este definit niciun profil pentru perioada afișată.\nMergeți la editorul de profiluri pentru a defini unul nou.", + "Redirecting you to the Profile Editor to create a new profile.": "Redirecționare către editorul de profil pentru a crea un profil nou.", "Pump": "Pompă", "Sensor Age": "Vechimea senzorului", "Insulin Age": "Vechimea insulinei", @@ -415,10 +414,10 @@ "Targets": "Ținte", "Bolus insulin:": "Insulină bolusată:", "Base basal insulin:": "Bazala obișnuită:", - "Positive temp basal insulin:": "Bazala temporară marită:", - "Negative temp basal insulin:": "Bazala temporară micșorată:", - "Total basal insulin:": "Bazala totală:", - "Total daily insulin:": "Insulina totală zilnică:", + "Positive temp basal insulin:": "Bazală temporară marită:", + "Negative temp basal insulin:": "Bazală temporară micșorată:", + "Total basal insulin:": "Bazală totală:", + "Total daily insulin:": "Insulină totală zilnică:", "Unable to %1 Role": "Imposibil de %1 Rolul", "Unable to delete Role": "Imposibil de șters Rolul", "Database contains %1 roles": "Baza de date conține %1 rol(uri)", @@ -446,11 +445,11 @@ "Access Token": "Cheie de acces", "hour ago": "oră în trecut", "hours ago": "ore în trecut", - "Silence for %1 minutes": "Liniște pentru %1 minute", + "Silence for %1 minutes": "Silențios pentru %1 minute", "Check BG": "Verificați glicemia", - "BASAL": "Bazală", - "Current basal": "Bazala curentă", - "Sensitivity": "Sensibilitate la insulină (ISF)", + "BASAL": "BAZALĂ", + "Current basal": "Bazală curentă", + "Sensitivity": "Sensibilitate la insulină", "Current Carb Ratio": "Raport Insulină:Carbohidrați (ICR)", "Basal timezone": "Fus orar pentru bazală", "Active profile": "Profilul activ", @@ -467,23 +466,23 @@ "Elapsed Time": "Timp scurs", "Absolute Delta": "Variația absolută", "Interpolated": "Interpolat", - "BWP": "Ajutor bolusare (BWP)", + "BWP": "BWP", "Urgent": "Urgent", "Warning": "Atenție", "Info": "Informație", "Lowest": "Cea mai mică", - "Snoozing high alarm since there is enough IOB": "Ignoră alarma de hiper deoarece este suficientă insulină activă IOB", + "Snoozing high alarm since there is enough IOB": "Amână alarma de hiper deoarece este suficientă insulină activă IOB", "Check BG, time to bolus?": "Verifică glicemia, poate este necesar un bolus?", "Notice": "Notificare", - "required info missing": "Informații importante lipsă", + "required info missing": "lipsă informații necesare", "Insulin on Board": "Insulină activă (IOB)", "Current target": "Țintă curentă", "Expected effect": "Efect presupus", "Expected outcome": "Rezultat așteptat", "Carb Equivalent": "Echivalență în carbohidrați", - "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Insulină în exces: %1U mai mult decât este necesar pentru a atinge ținta inferioară, fără a ține cont de carbohidrați", - "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Insulină în exces: %1U mai mult decât este necesar pentru a atinge ținta inferioară, ASIGURAȚI-VĂ CĂ INSULINA ESTE ACOPERITĂ DE CARBOHIDRAȚI", - "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U sunt în plus ca insulină activă pentru a atinge ținta inferioară, bazala este prea mare?", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Insulină în exces %1U mai mult decât este necesar pentru a atinge ținta inferioară, fără a ține cont de carbohidrați", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Insulină în exces %1U mai mult decât este necesar pentru a atinge ținta inferioară, ASIGURAȚI-VĂ CĂ INSULINA ACTIVĂ ESTE ACOPERITĂ DE CARBOHIDRAȚI", + "%1U reduction needed in active insulin to reach low target, too much basal?": "%1U de insulină activă e în plus pentru a atinge ținta inferioară, bazala este prea mare?", "basal adjustment out of range, give carbs?": "ajustarea bazalei duce în afara intervalului țintă. Suplimentați carbohirații?", "basal adjustment out of range, give bolus?": "ajustarea bazalei duce în afara intervalului țintă. Suplimentați insulina?", "above high": "peste ținta superioară", @@ -498,14 +497,14 @@ "1h temp basal": "bazală temporară de 1 oră", "Cannula change overdue!": "Depășire termen schimbare canulă!", "Time to change cannula": "Este vremea să schimbați canula", - "Change cannula soon": "Schimbați canula în curând", - "Cannula age %1 hours": "Vechimea canulei în ore: %1", + "Change cannula soon": "În curând trebuie să schimbați canula", + "Cannula age %1 hours": "Vechimea canulei este %1 ore", "Inserted": "Inserat", "CAGE": "VC", "COB": "COB", "Last Carbs": "Ultimii carbohidrați", "IAGE": "VI", - "Insulin reservoir change overdue!": "Termenul de schimbare a rezervorului de insulină a fost depășit", + "Insulin reservoir change overdue!": "Termenul de schimbare a rezervorului de insulină a fost depășit!", "Time to change insulin reservoir": "Este timpul pentru schimbarea rezervorului de insulină", "Change insulin reservoir soon": "Rezervorul de insulină trebuie schimbat în curând", "Insulin reservoir age %1 hours": "Vârsta reservorului de insulină %1 ore", @@ -517,24 +516,24 @@ "Source": "Sursă", "Stale data, check rig?": "Date învechite, verificați uploaderul!", "Last received:": "Ultimile date:", - "%1m ago": "acum %1 minute", - "%1h ago": "acum %1 ore", - "%1d ago": "acum %1 zile", + "%1m ago": "%1 min in urmă", + "%1h ago": "%1 ore in urmă", + "%1d ago": "%1d zile in urmă", "RETRO": "VECHI", "SAGE": "VS", "Sensor change/restart overdue!": "Depășire termen schimbare/restart senzor!", - "Time to change/restart sensor": "Este timpul pentru schimbarea senzorului", - "Change/restart sensor soon": "Schimbați/restartați senzorul în curând", - "Sensor age %1 days %2 hours": "Senzori vechi de %1 zile și %2 ore", + "Time to change/restart sensor": "Este timpul pentru schimbarea/repornirea senzorului", + "Change/restart sensor soon": "În curând trebuie să schimbați/restartați senzorul", + "Sensor age %1 days %2 hours": "Senzor vechi de %1 zile și %2 ore", "Sensor Insert": "Inserția senzorului", "Sensor Start": "Pornirea senzorului", "days": "zile", "Insulin distribution": "Distribuția de insulină", - "To see this report, press SHOW while in this view": "Pentru a vedea acest raport, apăsați butonul SHOW", + "To see this report, press SHOW while in this view": "Pentru a vedea acest raport, apăsați butonul Arată", "AR2 Forecast": "Predicție AR2", "OpenAPS Forecasts": "Predicții OpenAPS", - "Temporary Target": "Țintă temporară", - "Temporary Target Cancel": "Renunțare la ținta temporară", + "Temporary Target": "Țintă Temporară", + "Temporary Target Cancel": "Renunțare la Ținta Temporară", "OpenAPS Offline": "OpenAPS deconectat", "Profiles": "Profile", "Time in fluctuation": "Timp în fluctuație", @@ -545,8 +544,8 @@ "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Schimbarea medie totală zilnică este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de zile. Valorile mici sunt de preferat.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Variația media orară este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de ore din aceeași perioadă. Valorile mici sunt de preferat.", "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "RMS în afara tintelor se calculează prin insumarea tuturor ridicărilor la pătrat a distanțelor din afara intervalului pentru toate valorile de glicemie din perioada examinată, care se impart apoi la numarul lor si ulterior se calculează rădăcina pătrată a acestui rezultat. Această măsurătoare este similară cu procentajul în interval, dar cu greutate mai mare pe valorile mai mari. Valorile mai mici sunt mai bune.", - "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">aici.", + "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">poate fi găsit aici.", "Mean Total Daily Change": "Variația medie totală zilnică", "Mean Hourly Change": "Variația medie orară", "FortyFiveDown": "scădere ușoară", @@ -554,7 +553,7 @@ "Flat": "stabil", "SingleUp": "creștere", "SingleDown": "scădere", - "DoubleDown": "scădere bruscă", + "DoubleDown": "scădere rapidă", "DoubleUp": "creștere rapidă", "virtAsstUnknown": "Acea valoare este necunoscută în acest moment. Te rugăm să consulți site-ul Nightscout pentru mai multe detalii.", "virtAsstTitleAR2Forecast": "Predicție AR2", @@ -562,14 +561,14 @@ "virtAsstTitleCurrentCOB": "COB actuali", "virtAsstTitleCurrentIOB": "IOB actuală", "virtAsstTitleLaunch": "Bine ați venit la Nightscout", - "virtAsstTitleLoopForecast": "Prognoză Loop", - "virtAsstTitleLastLoop": "Ultima Loop", + "virtAsstTitleLoopForecast": "Prognoză buclă", + "virtAsstTitleLastLoop": "Ultima buclă", "virtAsstTitleOpenAPSForecast": "Predicție OpenAPS", "virtAsstTitlePumpReservoir": "Insulină rămasă", "virtAsstTitlePumpBattery": "Baterie pompă", - "virtAsstTitleRawBG": "Glicemie bruta actuala", - "virtAsstTitleUploaderBattery": "Baterie telefon", - "virtAsstTitleCurrentBG": "Glicemie actuala", + "virtAsstTitleRawBG": "Valorile primară a glicemiei actuale", + "virtAsstTitleUploaderBattery": "Baterie telefon uploader", + "virtAsstTitleCurrentBG": "Glicemie actuală", "virtAsstTitleFullStatus": "Stare completă", "virtAsstTitleCGMMode": "Mod CGM", "virtAsstTitleCGMStatus": "Stare CGM", @@ -577,7 +576,7 @@ "virtAsstTitleCGMTxStatus": "Stare transmițător CGM", "virtAsstTitleCGMTxAge": "Vârsta transmițător CGM", "virtAsstTitleCGMNoise": "Zgomot CGM", - "virtAsstTitleDelta": "Variatia glicemiei", + "virtAsstTitleDelta": "Variația glicemiei", "virtAsstStatus": "%1 și %2 din %3.", "virtAsstBasal": "%1 bazala curentă este %2 unități pe oră", "virtAsstBasalTemp": "%1 bazala temporară de %2 unități pe oră se va termina la %3", @@ -594,12 +593,12 @@ "virtAsstUploaderBattery": "Bateria telefonului este la %1", "virtAsstLastLoop": "Ultima decizie loop implementată cu succes a fost %1", "virtAsstLoopNotAvailable": "Extensia loop pare a fi dezactivată", - "virtAsstLoopForecastAround": "Potrivit previziunii date de loop se estiemază around %1 pentru următoarele %2", - "virtAsstLoopForecastBetween": "Potrivit previziunii date de loop se estiemază between %1 and %2 pentru următoarele %3", - "virtAsstAR2ForecastAround": "Potrivit previziunii AR2 se estimează ca vei fi pe la %1 in următoarele %2", - "virtAsstAR2ForecastBetween": "Potrivit previziunii AR2 se estimează ca vei fi intre %1 si %2 in următoarele %3", + "virtAsstLoopForecastAround": "Potrivit previziunii date de loop se estimează că vei fi pe la %1 pentru următoarele %2", + "virtAsstLoopForecastBetween": "Potrivit previziunii date de loop se estimează că vei fi între %1 și %2 pentru următoarele %3", + "virtAsstAR2ForecastAround": "Potrivit previziunii AR2 se estimează că vei fi pe la %1 in următoarele %2", + "virtAsstAR2ForecastBetween": "Potrivit previziunii AR2 se estimează că vei fi intre %1 și %2 in următoarele %3", "virtAsstForecastUnavailable": "Estimarea este imposibilă pe baza datelor disponibile", - "virtAsstRawBG": "Glicemia brută este %1", + "virtAsstRawBG": "Valorile primară a glicemiei este %1", "virtAsstOpenAPSForecast": "Glicemia estimată de OpenAPS este %1", "virtAsstCob3person": "%1 are %2 carbohidrați la bord", "virtAsstCob": "Ai %1 carbohidrați la bord", @@ -617,8 +616,8 @@ "virtAsstUnknownIntentText": "Îmi pare rău, nu ştiu ce doriţi.", "Fat [g]": "Grăsimi [g]", "Protein [g]": "Proteine [g]", - "Energy [kJ]": "Energie [g]", - "Clock Views:": "Vedere tip ceas:", + "Energy [kJ]": "Energie [kJ]", + "Clock Views:": "Vizualizări ceas:", "Clock": "Ceas", "Color": "Culoare", "Simple": "Simplu", @@ -630,7 +629,7 @@ "Eating Soon": "Mâncare în curând", "Last entry {0} minutes ago": "Ultima înregistrare acum {0} minute", "change": "schimbare", - "Speech": "Vorbă", + "Speech": "Vorbire", "Target Top": "Țintă superioară", "Target Bottom": "Țintă inferioară", "Canceled": "Anulat", @@ -648,18 +647,18 @@ "Total protein": "Total proteine", "Total fat": "Total grăsimi", "Database Size": "Dimensiunea bazei de date", - "Database Size near its limits!": "Mărimea bazei de date se apropie de limita!", + "Database Size near its limits!": "Dimensiunea bazei de date se apropie de limita!", "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Dimensiunea bazei de date este %1 MB din %2 MB. Vă rugăm să faceți o copie de rezervă și să curățați baza de date!", - "Database file size": "Mărimea bazei de date", + "Database file size": "Dimensiunea bazei de date", "%1 MiB of %2 MiB (%3%)": "%1 MB din %2 MB (%3%)", "Data size": "Dimensiune date", "virtAsstDatabaseSize": "%1 MB. Aceasta este %2% din spațiul disponibil pentru baza de date.", - "virtAsstTitleDatabaseSize": "Mărimea bazei de date", + "virtAsstTitleDatabaseSize": "Dimensiunea bazei de date", "Carbs/Food/Time": "Carbohidrati/Mâncare/Timp", "Reads enabled in default permissions": "Citiri activate în permisiunile implicite", - "Data reads enabled": "Citire date activata", - "Data writes enabled": "Scriere date activata", - "Data writes not enabled": "Scriere date neactivata", + "Data reads enabled": "Citire date activată", + "Data writes enabled": "Scriere date activată", + "Data writes not enabled": "Scriere date neactivată", "Color prediction lines": "Culoare linii de predicție", "Release Notes": "Note asupra ediției", "Check for Updates": "Verificați dacă există actualizări", @@ -667,13 +666,13 @@ "Nightscout Info": "Informații 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.": "Scopul principal al Loopalyzer este de a vizualiza modul de funcționare a sistemului Loop în buclă închisă. Poate funcționa și cu alte configurații, atât cu buclă închisă, cât și deschisă, și non-buclă. Cu toate acestea, în funcție de uploaderul pe care îl folosiți, cât de frecvent poate captura datele și încărca, și modul în care este capabil să completeze datele care lipsesc, unele grafice pot avea lipsuri sau chiar să fie complet goale. Asigură-te întotdeauna că graficele arată rezonabil. Cel mai bine este să vizualizezi câte o zi pe rand si apoi sa derulezi cu un numar de zile.", "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 include o funcție de schimbare de timp (Time Shift). Dacă aveți, de exemplu, micul dejun la ora 07:00 într-o zi și la ora 08:00 în ziua următoare, curba glicemiei medii pe aceste două zile va apărea cel mai probabil aplatizata și nu va arăta răspunsul real după un mic dejun. Functia Time Shift va calcula timpul mediu în care aceste mese au fost mâncate şi apoi va schimba toate datele (carbohidraţi, insulină, bazală etc.) în ambele zile, diferenţa de timp corespunzătoare, astfel încât ambele mese să se alinieze cu ora medie de începere a mesei.", - "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.": "În acest exemplu, toate datele din prima zi sunt împinse cu 30 de minute înainte şi toate datele din a doua zi cu 30 de minute înapoi în timp, astfel încât sa apară că aţi avut micul dejun la ora 07:30 în ambele zile. Acest lucru vă permite să vedeţi răspunsul mediu real al glicemiei după masă.", - "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.": "Schimbarea timpului (Time Shift) evidenţiază cu gri perioada de după ora medie de incepere a mesei, pe durata DIA (Acţiunea Insulinei). Deoarece toate valorile de date din toată ziua sunt deplasate, curbele din afara zonei gri pot să nu fie prea exacte.", - "Note that time shift is available only when viewing multiple days.": "Reţineţi că schimbarea de timp (Time Shift) este disponibilă doar când vizualizaţi mai multe zile.", + "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.": "În acest exemplu, toate datele din prima zi sunt împinse cu 30 de minute înainte şi toate datele din a doua zi cu 30 de minute înapoi în timp, astfel încât sa apară că aţi avut micul dejun la ora 07:30 în ambele zile. Acest lucru vă permite să vedeţi răspunsul mediu real al glicemiei după o masă.", + "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.": "Deplasarea timpului (Time Shift) evidenţiază cu gri perioada de după ora medie de incepere a mesei, pe durata DIA (Durata de Acţiune a Insulinei). Deoarece toate valorile de date din toată ziua sunt deplasate, curbele din afara zonei gri pot să nu fie prea exacte.", + "Note that time shift is available only when viewing multiple days.": "Reţineţi că deplasarea timpului (Time Shift) este disponibilă doar când vizualizaţi mai multe zile.", "Please select a maximum of two weeks duration and click Show again.": "Te rugăm să selectezi maxim două săptămâni și să apeși din nou pe Arată.", "Show profiles table": "Arată tabelul profilelor", "Show predictions": "Arată predicții", - "Timeshift on meals larger than": "Deplasare de timp (Time Shift) la mese mai mare ca", + "Timeshift on meals larger than": "Deplasarea timpului (Time Shift) la mese mai mare ca", "g carbs": "g carbohidrați", "consumed between": "consumat între", "Previous": "Precedent", @@ -681,7 +680,9 @@ "Next day": "Ziua următoare", "Next": "Următorul", "Temp basal delta": "Variația bazalei temporare", - "Authorized by token": "Autorizat prin cod token", + "Authorized by token": "Autorizat prin cheie de acces", "Auth role": "Rolul de autentificare", - "view without token": "vizualizare fără cod token" + "view without token": "vizualizare fără cheie de acces", + "Remove stored token": "Elimină cheia de acces stocată", + "Weekly Distribution": "Distribuție săptămânală" } diff --git a/translations/ru_RU.json b/translations/ru_RU.json index ad22d3158a0..39a0662d6f6 100644 --- a/translations/ru_RU.json +++ b/translations/ru_RU.json @@ -60,7 +60,6 @@ "Hourly stats": "Почасовая статистика", "netIOB stats": "статистика нетто активн инс netIOB", "temp basals must be rendered to display this report": "для этого отчета требуется прорисовка врем базала", - "Weekly success": "Результаты недели", "No data available": "Нет данных", "Low": "Низкая ГК", "In Range": "В диапазоне", @@ -200,7 +199,7 @@ "Date format": "Формат даты", "12 hours": "12 часов", "24 hours": "24 часа", - "Log a Treatment": "Записать лечение", + "Log a Treatment": "Записать терапию", "BG Check": "Контроль ГК", "Meal Bolus": "Болюс на еду", "Snack Bolus": "Болюс на перекус", @@ -209,11 +208,11 @@ "Note": "Примечания", "Question": "Вопрос", "Exercise": "Нагрузка", - "Pump Site Change": "Смена катетера помпы", - "CGM Sensor Start": "Старт сенсора", - "CGM Sensor Stop": "Стоп сенсор", - "CGM Sensor Insert": "Установка сенсора", - "Dexcom Sensor Start": "Старт сенсора", + "Pump Site Change": "Смена места катетера помпы", + "CGM Sensor Start": "Старт сенсора мониторинга", + "CGM Sensor Stop": "Останов сенсора мониторинга", + "CGM Sensor Insert": "Установка сенсора мониторинга", + "Dexcom Sensor Start": "Старт сенсора Dexcom", "Dexcom Sensor Change": "Замена сенсора Декском", "Insulin Cartridge Change": "Замена картриджа инсулина", "D.A.D. Alert": "Сигнал служебной собаки", @@ -224,9 +223,9 @@ "Amount in units": "Количество в ед.", "View all treatments": "Показать все события", "Enable Alarms": "Активировать сигналы", - "Pump Battery Change": "замена батареи помпы", + "Pump Battery Change": "Замена батареи помпы", "Pump Battery Low Alarm": "Внимание! низкий заряд батареи помпы", - "Pump Battery change overdue!": "пропущен срок замены батареи!", + "Pump Battery change overdue!": "Пропущен срок замены батареи!", "When enabled an alarm may sound.": "При активации может звучать сигнал", "Urgent High Alarm": "Внимание: высокая гликемия ", "High Alarm": "Высокая гликемия", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/sl_SI.json b/translations/sl_SI.json index 64999756373..12c114647ba 100644 --- a/translations/sl_SI.json +++ b/translations/sl_SI.json @@ -60,7 +60,6 @@ "Hourly stats": "Hodinové štatistiky", "netIOB stats": "netIOB stats", "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", - "Weekly success": "Týždenná úspešnosť", "No data available": "Žiadne dostupné dáta", "Low": "Nízka", "In Range": "V rozsahu", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/sv_SE.json b/translations/sv_SE.json index aa577808d2f..b65c266003d 100644 --- a/translations/sv_SE.json +++ b/translations/sv_SE.json @@ -60,7 +60,6 @@ "Hourly stats": "Timmstatistik", "netIOB stats": "netIOB statistik", "temp basals must be rendered to display this report": "temp basal måste vara synlig för denna rapport", - "Weekly success": "Veckoresultat", "No data available": "Data saknas", "Low": "Låg", "In Range": "Inom intervallet", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Auktoriserad av token", "Auth role": "Auth roll", - "view without token": "visa utan token" + "view without token": "visa utan token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/tr_TR.json b/translations/tr_TR.json index 43d8fa67cc3..306be558404 100644 --- a/translations/tr_TR.json +++ b/translations/tr_TR.json @@ -24,7 +24,7 @@ "Last 2 weeks": "Son 2 hafta", "Last month": "Geçen Ay", "Last 3 months": "Son 3 ay", - "between": "between", + "between": "arasında", "around": "around", "and": "and", "From": "Başlangıç", @@ -60,7 +60,6 @@ "Hourly stats": "Saatlik istatistikler", "netIOB stats": "netIOB istatistikleri", "temp basals must be rendered to display this report": "Bu raporu görüntülemek için geçici bazal oluşturulmalıdır", - "Weekly success": "Haftalık başarı", "No data available": "Veri yok", "Low": "Düşük", "In Range": "Hedef alanında", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/zh_CN.json b/translations/zh_CN.json index 8bd6954e6c7..36db372b004 100644 --- a/translations/zh_CN.json +++ b/translations/zh_CN.json @@ -60,7 +60,6 @@ "Hourly stats": "每小时状态", "netIOB stats": "netIOB stats", "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", - "Weekly success": "每周统计", "No data available": "无可用数据", "Low": "低血糖", "In Range": "范围内", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } diff --git a/translations/zh_TW.json b/translations/zh_TW.json index b77ff246828..ae098e428f6 100644 --- a/translations/zh_TW.json +++ b/translations/zh_TW.json @@ -60,7 +60,6 @@ "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", - "Weekly success": "Weekly success", "No data available": "No data available", "Low": "Low", "In Range": "In Range", @@ -683,5 +682,7 @@ "Temp basal delta": "Temp basal delta", "Authorized by token": "Authorized by token", "Auth role": "Auth role", - "view without token": "view without token" + "view without token": "view without token", + "Remove stored token": "Remove stored token", + "Weekly Distribution": "Weekly Distribution" } From 405eb0d86d4031c46c14f8e76bf8643d1d1dd502 Mon Sep 17 00:00:00 2001 From: Tanja <7403966+tanja3981@users.noreply.github.com> Date: Fri, 1 Jan 2021 21:53:36 +0100 Subject: [PATCH 060/194] german translations template for googlehome integration (#6674) Co-authored-by: tanja3981 --- docs/plugins/google-home-templates/de-DE.zip | Bin 0 -> 6553 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/plugins/google-home-templates/de-DE.zip diff --git a/docs/plugins/google-home-templates/de-DE.zip b/docs/plugins/google-home-templates/de-DE.zip new file mode 100644 index 0000000000000000000000000000000000000000..760a24b95bc7477eb81e6d03496ee4b5c84f08b5 GIT binary patch literal 6553 zcmai21yoe++9j3l4(S}aLAn$MaOiFZ7-HxykroLNBm_jdVUU#2p+hU{ z4;N_JnidGe3FPJ+`Z%mzqXiO}5F8N%eJw>t0s-%0`uenN^#9c%k`Sw9g_I1+h@_3A@4DBZJu;k4w9b5Mysu1~1*9qJZ z)>B9E=lKkIYHTz$;+;y<;<4V!#OWFO!r?S_?Kvn(Y>m$~ciYe_VUQXD*;5@DYH5FG zacymM{xh-oTHDW$`Sebly7ow|DcLO2aHrHPc8FN$64O4FR%{T8KX=ni;{%Yzq&Ie5 zYZWH8xz)c(;n+DWz2e9x*TsxL2PD6pgRS~>R7atH^@Y;WR>{msD7awYMbAu|b zwpe!5sU6?O{f^2#>!oq}Z^8722Uo@lnUF9y)Mca4Cqtz~8Pg#+s|oPqfNMz(^LVYd z&9DKu;;}@gUgZ#;j(EadWzCci_q4;}m`DSj1ZwV*$V^f-^_*!nJE>T!lzsn(#B8iO z^zd|uNy}S*%212z+XnRVlWj|yny9(UgCnnVm;;H?-9C(|muImvzV8gLTQi}%Yh|mR zlFixbY$wu$59w_(DI;AZeC;c2fJ7scEdM0vYN7nzjf#vXU>D zTJu@l?^_dH7R=X^93f>W!rJEEBwdgst&Al-q$Zk@Zrn+V^M0wjRihoJs`Jrcz#F6f zNL+bX_@gUQ_nZ8RjAPY3#}Zb7JFLgAu8DZG{j;7v(K_){({Q$JKfNOsATiTLL|2%4 z-kD~LT#*)HXT{YurBO=XRO&GUa8b@+K6RjPEy3%DE!QvlabSl6@oWLQlBx!RrIMpU z-Af}Cctk`T?8V=xZJXx0%r=^Lr@TtGkvAiSXpa4PD8oZ%x9ur>*Ik9PVk)f zNpn71Q4#59v^x-w)`>{4|2f@_4mASxMnI@YNX2*mNrxl|9U@c+@q~aqc%8wX z?hxx=iq!o$fYr`N5b-7Gb*_!`2M64ei$>DGFo<2UEDsBL1?i$`*wc5HSK=OJTNx0W z*$m9-#PG=vmNA{P_2x%-urJ~2<8|^_9O%Z$0e4^aw`*bf`=-ZV2u9=(`fFQZr7y@e zIlXpABbM>ZAy!|elh;^~XVe+T;BnXse*c*Ns%GFQP*)p^FW;qV7yo84@4gZ##Ufs{ z>mN52y8m2^Ibw0{h_#v9{O{fsr`rsj6Km)^c<#Dm6&U<8V26TWXkRU9v+_KEj3&se=};w*_CeRVR~9UA1phWf*o9u z!jc`(X?6DzU#n{FsN70Eu0SLf%8ugWi{c`)Z%4z@WQA%heP;6`l!8AdSJ;yA?&nPa z?lkpk;U(l+^_Dq~g3;T*&_{D+c4QU_OSWC6#Jy$!xjIjj->X$hgV4MpPA`ex{K9|| zuRwcGkM$?;;m4S<62ohP8u^lkn^h%0k@zz)M>{dKg-0Y9X=4jNg}Q?&Rz=qA%y-%x@ z`%?|sG?fGbMh>wWs}sJr{6tQz@r1L8E4<@9!KxBf(LAZJmmzM9OgRh3EWKwwn*zoKSYjkD60frWQDQN^ZNzh`U!j zaPuKeNd-Ia&S1r5o1bE3c;+;EFrDtT;yZs~V_?vX!E2Bhd<^<5!}}rt&ek+=I%c#J zS?XQt$I>2%oRwP$o9b|rn{*H{7m`n+2>3j*4G-Ngt>??b%b1UiGTzICa;xgQFDF#EPnC;S}Fzs-{MBs$yk+AmoPBBSRa# z(I`krREPui?@vlH1gRlVPXv!Wc-4OiRKvyRmqrJ5=b__#ByH;)<CxVw9#R$Fsq;lP!|8#H=L0FpQAcBo#Y4=8e14uww#c(DarwqR zfut1@ixr4b^*qk=efh;uh>1drOuOG8DU%hhLd&ay?A47@zIH5MK`mHP?rvKK*x%Dp z!CtIztFQ7|$b~1XQth+a$!@@9sL7|_1}Q6tAAnm@K?5n}{9&!!1CNa??4tMUtuqXEEat+?h>xX zBdkau1VTj$hJ$3110N}_wpK;8;0S18UVzCb&fJe;r~`UUIwJIxAQy@>NncRWpAWnf z2s7KcYA_|p$P>oMPzZ&}8QXAXP{$ga@N9skvRjbmxcQ5}pNFlHN!~H?u$H|dWnWBo z%J@-~)(eE3u;pYmG>3BVexRrcZ=-54FGYt5y$=-mX7Vy6h(}F#N-1bbu^9X))EN|& zjXbGtm`0S*CH7{VFkXX=P$LuTAlim7J>rF%2ryDtzj8*iPfF@SYA`*{@9oMNJ&e~| zG2juBnY{1yd3pWy>6zVViHPKbX0X>pQHML=jzOuM%Y+xE>`~DIlNRPjp0*G-^iQhW zgP31;S&axeMzI>5loZF*njfXYHA@-?JAIoqgFD*25A|nTy*Q!=lX)EUPEF8&1uxsy ze{?Tq%#JT^zWLIu44JYlX&Re@X7b*flyNat$N<#+aPkM**kuEPxRbLy7#i2hab0^J ziK$c!%|8b3N#0qC5A?xrxFmL)H0`^);H@zq-b5r{QFgd2r=D1@JhfALY9o1tazkP_ z!1Zt_g2a{>|3qS@TO?Kl+gf@#dD82HovdA)!SpJ>$o-4a&Pgzh4nBg&GwF!Fxm;FG z5R5Nbk3KY!y;xxqt}+y-`zhWj3Zxq(C}Q?3R)I(~5$@i0Eweb|(}T=_{3y(rNG(t7 znL*k!R)$#Dn4Ua{CvieIR~Fv{efYM8!8yyk0;wDRGqUz1(rCqyK$;>>DO>R9%!jf1!qZb;5?JF zV#qr2kPt4S+HS}R2*mFmsnCx%Px6>n*xi+aYEPyafAPh)-V&|*h@AATinDl5Pbk6z zN_G7?ua~ZvVCzY_SR!po(mpd2$0ue~xa>j}t=7zWV)BHi+395gKax+qZ1eg;=4y|0 zL5ttwkT=!wN3%Dtftt{QY*s{9ih$Z0Y1=g%}WSw=zx}uCdHV(0T??7T4BcR~j@E`=Do3 zQ5(e_jk*PgvBi=0#DBw_!8+Iz)0l1Ki0y@IE(9FecBlKjLSoipmZ4XvIuC5i1Z%rB zH)brj^1m*O1@Nn%@3^O%6^ReIB*kh}8Ah0PqOO%|q5%qZx_vR<3%w~c>!cDeQ>=&Y z55}=wKR=otV5KKBb*}9|@ zVBhT#M>Q7QrlzlDYLQ=`7U5*$;b6DdkLtGT(UIa(K@UW`m`JcSWjg$tsjKF4UuTJ9 z7w<sb74^TA@Gq3DLSWZ&1C8QMVghlf1XTs<^_4etq*M~bJ^D&o2%2ijK(GbEw zX88dwjI|-gPu-vA(UaA-rJs|BinJ7`J=xtlK9e_!L2S>B=NfmG7rK<-LI!eJ+^76>iA?8{s<^+l^63XD!6Dzfux~*EL=Ob3(`iU9hbHu> z0Fd>juJQns&sKUA+S1}A2Q@VNDKJN{JxfZG<;ESQHuL$*HRX$^RrjLnPYfirLzcT} zVLfsQsCvpA<02=+aF4?)V7j7e4N%BhMBqA-)?qU2VtYwxo}zFZG2*!3r#r?mn@L$HnWEMgdfU zEZ$DTah3qx-CoS{m=ud9G}{(soO1MQG1eA?%O8D&vL$YNP688ws7V&ICz?Hr+ zBI6H%1$9_=yk`l{d9yrV*ZT^h$Mo<7wpQnDoF)Hx^On%h>J=dtF-FU<%7we)@ZQ3j z9WsGNw{z5+-i18yXuZ+2@;_?&cJI_IJv`N1TwMRJcj_*`diV2bv0WMk9qqTLkwTd2 z#7=CT49@c+jGek);~6?b%roSF!0wfv`q9q%?QB1W$uh$M*khhoG#Y+lM#|#{_99`P zwM)E5qgF(b)i^J}Lh0xooMs2aI&30yBX?lM9K4v^ET&H`5;O^aCc&ISTouDOK$Nb% zDBYF2ra;-UHO2k{H%Ml`HBoVCl3d3aiPaOEN#5m&Cyuksp}Pmf6diB%?(XoIpqXO% zG{Javt>uU$XeXv$UbUMd6RcnB_UY=4qP?4w{CdXiaE@2khLaxc;k}{?!+*YNW5pE% z&hbN0GmN9K$2~=z&>m5B-I%C8Wow^ZOPS3fcX|c%#RH}o=z zFd<>jd*i7D(NBZ1&mt~Jsk5hFPjqDJPD6!NW7cbYw^z|pbW-ZfAFg-r{F-_c(%mKl z{@?B~-csJb45GQ02iV=i((hk`&yL{$)L4{Y{sO>LJ4B-3{(Y-7Hdx*VLZ;wuZ!Y^1 z*PH{Qc|81XJHe}xlUgO?PLsousyiA+J84%>reK2L#CDnGclE`NYO2|-3(FMu67F|* zl>AWzY(kCWKv|m$?uRo)lV$JigcfRs{8~f&P3&Z9Qq1d*9QJl2-9Fm)#aJoYM7|o^grrYMRe0(B1qeX+TIA>@&`3K230s3N>G{Q7Uz(QcfiC?hKaMv-0y0;rNA{4NrCvqHe|XA3Pba}_N0qb5EHARM zM2^J0?eB39Da7{ZOXL9G)GJ=0<)&f*OyQI>q`4AQOO6jsXcz@4_ryJZq9$Iz&bcU)J4A2$Fv7;SCw1;@q? zy*LAnv&#aw(Z!R(nhKvXv$#Be;73vQ=ox=IiRl+C5fRP7N_Q#aNwN55n^7ILHX2Q_ z;jC)G{?6Be%gm-jWk5gM@UK7TSRL42@E0Ey6uLh)ac^81TGldwPGuDJ>GQE<^o|Gx z0nEEm$#G-{QVgmc+yYggTW}Nwn0-xr{SPv8`PO%qPn{Lcp!u2DKr{u9^w2nlfY1`CB@nM@_j}Z za-hvHRin;7Ba-K%17U)r4RjL%d((fyohd7k5iOa3$1 z`W}ap27jeGBi@i4&lEDD;{!5rg$h~^41-agCN#0$7!P_!%Jx(H@Pa&S8bwmtG7K$iZUntyq6*S zWuhU!PS?A9_py=@yR$UHBLBVXVz{O8zjo;VkhpL>94m~EKyfd)E6D?uL0BnZmkmQI zIx5Z(NUuEl5D2_(WsQph8`_=@)}nu~qeHUAZAPI^Cdy!TA2T}8qV98KaI8!&?NrJJ zYM*>NzUHHFy@rf?xh4^9kTUMXFLV%-Q}p?}k}QOhxsD6jDZ9G>xJ9YTiwrDf8??yY zLwv-CD{vjtL=aaYduA6lEcj+K*e`n2qK6g7>x=F)+*BqiP|1BH)6XEt8 ze-lCdt`dZ0`UBz5KNNd5kcO64+8$gxb5T-w7OLah%fUO#y`wqe*)gN zfHwoc@4`hi=}*A_HV*uWc-xrV*pJ`Eg7+Ko-;Cs+5Vudqe~0*j{~O{jwfyoke?r_A z-_0@lyIvFihWPtK^-sLp%)XKA?+Qb_;a}hBuUGmH0fT_(cWxfRM*MIQ Date: Sat, 2 Jan 2021 03:26:22 -0700 Subject: [PATCH 061/194] Added support for multiple uploaders in virtual assistant delta calculation (#6559) * Added support for multiple uploaders in delta calculation * Moved moment creation * Moved delta stuff into bgnow plugin * Typo * Removed old implementation * Removed accidental translations * Added new translation key --- lib/plugins/bgnow.js | 30 ++++++++++++++++++++++++++++++ lib/plugins/virtAsstBase.js | 20 -------------------- translations/en/en.json | 1 + 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/lib/plugins/bgnow.js b/lib/plugins/bgnow.js index b57796d10f2..35b96c024b4 100644 --- a/lib/plugins/bgnow.js +++ b/lib/plugins/bgnow.js @@ -166,6 +166,11 @@ function init (ctx) { delta.mean5MinsAgo = delta.interpolated ? recent.mean - delta.absolute / delta.elapsedMins * 5 : recent.mean - delta.absolute; + delta.times = { + recent: recent.mills + , previous: previous.mills + }; + delta.mgdl = Math.round(recent.mean - delta.mean5MinsAgo); delta.scaled = sbx.settings.units === 'mmol' ? @@ -254,6 +259,31 @@ function init (ctx) { }); }; + function virtAsstDelta(next, slots, sbx) { + var delta = sbx.properties.delta; + + next( + translate('virtAsstTitleDelta') + , translate(delta.interpolated ? 'virtAsstDeltaEstimated' : 'virtAsstDelta' + , { + params: [ + delta.display == '+0' ? '0' : delta.display + , moment(delta.times.recent).from(moment(sbx.time)) + , moment(delta.times.previous).from(moment(sbx.time)) + ] + } + ) + ); + } + + bgnow.virtAsst = { + intentHandlers: [{ + intent: "MetricNow" + , metrics: ["delta"] + , intentHandler: virtAsstDelta + }] + }; + return bgnow; } diff --git a/lib/plugins/virtAsstBase.js b/lib/plugins/virtAsstBase.js index 781f56969cf..591bc5a24b9 100644 --- a/lib/plugins/virtAsstBase.js +++ b/lib/plugins/virtAsstBase.js @@ -58,26 +58,6 @@ function init(env, ctx) { callback(translate('virtAsstTitleCurrentBG'), status); }); }, ['bg', 'blood glucose', 'number']); - - // blood sugar delta - configuredPlugin.configureIntentHandler('MetricNow', function (callback, slots, sbx) { - if (sbx.properties.delta && sbx.properties.delta.display) { - entries.list({count: 2}, function(err, records) { - callback( - translate('virtAsstTitleDelta'), - translate('virtAsstDelta', { - params: [ - sbx.properties.delta.display == '+0' ? '0' : sbx.properties.delta.display, - moment(records[0].date).from(moment(sbx.time)), - moment(records[1].date).from(moment(sbx.time)) - ] - }) - ); - }); - } else { - callback(translate('virtAsstTitleDelta'), translate('virtAsstUnknown')); - } - }, ['delta']); }; virtAsstBase.setupVirtAsstHandlers = function (configuredPlugin) { diff --git a/translations/en/en.json b/translations/en/en.json index 5a54777cc9f..1d649d57455 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -612,6 +612,7 @@ ,"virtAsstCGMBattOne":"Your CGM battery was %1 volts as of %2." ,"virtAsstCGMBattTwo":"Your CGM battery levels were %1 volts and %2 volts as of %3." ,"virtAsstDelta":"Your delta was %1 between %2 and %3." + ,"virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3." ,"virtAsstUnknownIntentTitle":"Unknown Intent" ,"virtAsstUnknownIntentText":"I'm sorry, I don't know what you're asking for." ,"Fat [g]":"Fat [g]" From 3c61266118f007261a086490c46364d81285021d Mon Sep 17 00:00:00 2001 From: Caleb Date: Sat, 2 Jan 2021 03:28:03 -0700 Subject: [PATCH 062/194] Removed duplicate translation key (#6699) --- translations/en/en.json | 1 - 1 file changed, 1 deletion(-) diff --git a/translations/en/en.json b/translations/en/en.json index 1d649d57455..89345ce03f4 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -218,7 +218,6 @@ ,"Glucose Reading":"Glucose Reading" ,"Measurement Method":"Measurement Method" ,"Meter":"Meter" - ,"Insulin Given":"Insulin Given" ,"Amount in grams":"Amount in grams" ,"Amount in units":"Amount in units" ,"View all treatments":"View all treatments" From 82a9e18cc8be9a8aca7ad05086c580abdfde1a12 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Mon, 4 Jan 2021 19:10:47 +0200 Subject: [PATCH 063/194] New Crowdin updates (#6700) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * Update source file en.json * New translations en.json (Dutch) * New translations en.json (Norwegian Bokmal) * New translations en.json (Czech) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (German) --- translations/bg_BG.json | 1 + translations/cs_CZ.json | 1 + translations/da_DK.json | 1 + translations/de_DE.json | 59 +++++++++++++++++++++-------------------- translations/el_GR.json | 1 + translations/es_ES.json | 1 + translations/fi_FI.json | 1 + translations/fr_FR.json | 1 + translations/he_IL.json | 1 + translations/hr_HR.json | 1 + translations/hu_HU.json | 1 + translations/it_IT.json | 1 + translations/ja_JP.json | 1 + translations/ko_KR.json | 1 + translations/nb_NO.json | 1 + translations/nl_NL.json | 1 + translations/pl_PL.json | 1 + translations/pt_BR.json | 1 + translations/ro_RO.json | 1 + translations/ru_RU.json | 1 + translations/sl_SI.json | 1 + translations/sv_SE.json | 1 + translations/tr_TR.json | 1 + translations/zh_CN.json | 1 + translations/zh_TW.json | 1 + 25 files changed, 54 insertions(+), 29 deletions(-) diff --git a/translations/bg_BG.json b/translations/bg_BG.json index ae4c1295b72..dccd84a9236 100644 --- a/translations/bg_BG.json +++ b/translations/bg_BG.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Мазнини [гр]", diff --git a/translations/cs_CZ.json b/translations/cs_CZ.json index 214bebd5b24..87d1dad7113 100644 --- a/translations/cs_CZ.json +++ b/translations/cs_CZ.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Baterie CGM vysílače byla %1 voltů od %2.", "virtAsstCGMBattTwo": "Stav baterie CGM vysílače byla mezi %1 voltů a %2 voltů od %3.", "virtAsstDelta": "Vaše delta byla %1 mezi %2 a %3.", + "virtAsstDeltaEstimated": "Vaše odhadovaná delta byla %1 mezi %2 a %3.", "virtAsstUnknownIntentTitle": "Neznámý úmysl", "virtAsstUnknownIntentText": "Je mi líto. Nevím, na co se ptáte.", "Fat [g]": "Tuk [g]", diff --git a/translations/da_DK.json b/translations/da_DK.json index 8d7f0c82238..8585c0e0c22 100644 --- a/translations/da_DK.json +++ b/translations/da_DK.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Fet [g]", diff --git a/translations/de_DE.json b/translations/de_DE.json index d26b52d76d3..69f83fb8c08 100644 --- a/translations/de_DE.json +++ b/translations/de_DE.json @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjekte - Menschen, Geräte, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Jedes Subjekt erhält einen einzigartigen Zugriffsschlüssel und eine oder mehrere Rollen. Klicke auf den Zugriffsschlüssel, um eine neue Ansicht mit dem ausgewählten Subjekt zu erhalten. Dieser geheime Link kann geteilt werden.", "Add new Subject": "Füge ein neues Subjekt hinzu", - "Unable to %1 Subject": "Kann Subjekt %1 nicht löschen", + "Unable to %1 Subject": "Kann Subjekt nicht %1", "Unable to delete Subject": "Kann Subjekt nicht löschen", "Database contains %1 subjects": "Datenbank enthält %1 Subjekte", "Edit Subject": "Editiere Subjekt", @@ -454,7 +454,7 @@ "Basal timezone": "Basal Zeitzone", "Active profile": "Aktives Profil", "Active temp basal": "Aktive temp. Basalrate", - "Active temp basal start": "Start aktive temp. Basalrate", + "Active temp basal start": "Starte aktive temp. Basalrate", "Active temp basal duration": "Dauer aktive temp. Basalrate", "Active temp basal remaining": "Verbleibene Dauer temp. Basalrate", "Basal profile value": "Basal-Profil Wert", @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Dein CGM Akku von %2 war %1 Volt.", "virtAsstCGMBattTwo": "Deine CGM Akkustände von %3 waren %1 Volt und %2 Volt.", "virtAsstDelta": "Dein Delta war %1 zwischen %2 und %3.", + "virtAsstDeltaEstimated": "Dein geschätztes Delta war %1 zwischen %2 und %3.", "virtAsstUnknownIntentTitle": "Unbekanntes Vorhaben", "virtAsstUnknownIntentText": "Tut mir leid, ich hab deine Frage nicht verstanden.", "Fat [g]": "Fett [g]", @@ -656,33 +657,33 @@ "virtAsstTitleDatabaseSize": "Datenbank-Dateigröße", "Carbs/Food/Time": "Kohlenhydrate/Nahrung/Zeit", "Reads enabled in default permissions": "Leseberechtigung aktiviert durch Standardberechtigungen", - "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", + "Data reads enabled": "Daten lesen aktiviert", + "Data writes enabled": "Datenschreibvorgänge aktiviert", + "Data writes not enabled": "Datenschreibvorgänge deaktiviert", + "Color prediction lines": "Farbige Vorhersage-Linien", + "Release Notes": "Versionshinweise", + "Check for Updates": "Nach Updates suchen", "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": "Timeshift on meals larger than", - "g carbs": "g carbs'", - "consumed between": "consumed between", - "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" + "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.": "Der Hauptzweck von Loopalyzer ist die Visualisierung der Leistung des Loop-Closed-Loop-Systems. Es kann auch mit anderen Setups funktionieren, sowohl mit geschlossener als auch mit offener Schleife und ohne Schleife. Abhängig davon, welchen Uploader Sie verwenden, wie häufig Ihre Daten erfasst und hochgeladen werden können und wie fehlende Daten nachgefüllt werden können, können einige Diagramme Lücken aufweisen oder sogar vollständig leer sein. Stellen Sie immer sicher, dass die Grafiken angemessen aussehen. Am besten sehen Sie sich einen Tag nach dem anderen an und scrollen zuerst durch einige Tage, um zu sehen.", + "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 enthält eine Zeitverschiebungsfunktion. Wenn Sie beispielsweise an einem Tag um 07:00 Uhr und am Tag nach Ihrer durchschnittlichen Blutzuckerkurve um 08:00 Uhr frühstücken, sehen diese beiden Tage höchstwahrscheinlich abgeflacht aus und zeigen nach dem Frühstück nicht die tatsächliche Reaktion. Die Zeitverschiebung berechnet die durchschnittliche Zeit, in der diese Mahlzeiten gegessen wurden, und verschiebt dann alle Daten (Kohlenhydrate, Insulin, Basal usw.) an beiden Tagen um den entsprechenden Zeitunterschied, sodass beide Mahlzeiten mit der durchschnittlichen Startzeit der Mahlzeit übereinstimmen.", + "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 diesem Beispiel werden alle Daten vom ersten Tag 30 Minuten vorwärts und alle Daten vom zweiten Tag 30 Minuten rückwärts verschoben, sodass es so aussieht, als hätten Sie an beiden Tagen um 07:30 Uhr gefrühstückt. Auf diese Weise können Sie Ihre tatsächliche durchschnittliche Blutzuckerreaktion nach einer Mahlzeit anzeigen.", + "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.": "Die Zeitverschiebung hebt den Zeitraum nach der durchschnittlichen Beginnzeit der Mahlzeit für die Dauer der DIA (Dauer der Insulinwirkung) grau hervor. Da alle Datenpunkte den ganzen Tag verschoben sind, sind die Kurven außerhalb des grauen Bereichs möglicherweise nicht genau.", + "Note that time shift is available only when viewing multiple days.": "Beachte, dass die Zeitverschiebung nur verfügbar ist, wenn mehrere Tage angezeigt werden.", + "Please select a maximum of two weeks duration and click Show again.": "Bitte wählen Sie eine maximale Dauer von zwei Wochen aus und klicken Sie erneut auf Anzeigen.", + "Show profiles table": "Profiltabelle anzeigen", + "Show predictions": "Vorhersage anzeigen", + "Timeshift on meals larger than": "Zeitverschiebung bei Mahlzeiten größer als", + "g carbs": "g-Kohlenhydrate'", + "consumed between": "Zu sich genommen zwischen", + "Previous": "Vorherige", + "Previous day": "Vorheriger Tag", + "Next day": "Nächster Tag", + "Next": "Nächste", + "Temp basal delta": "Temporäre Basal Delta", + "Authorized by token": "Autorisiert durch Token", + "Auth role": "Auth-Rolle", + "view without token": "Ohne Token anzeigen", + "Remove stored token": "Gespeichertes Token entfernen", + "Weekly Distribution": "Wöchentliche Verteilung" } diff --git a/translations/el_GR.json b/translations/el_GR.json index 6613c6f68a7..80c91bb40c3 100644 --- a/translations/el_GR.json +++ b/translations/el_GR.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Fat [g]", diff --git a/translations/es_ES.json b/translations/es_ES.json index 53ec88c5bbc..64754df51a5 100644 --- a/translations/es_ES.json +++ b/translations/es_ES.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Grasas [g]", diff --git a/translations/fi_FI.json b/translations/fi_FI.json index 2a0a4e1817a..cdd881448c7 100644 --- a/translations/fi_FI.json +++ b/translations/fi_FI.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "CGM akku oli %1 volttia hetkellä %2.", "virtAsstCGMBattTwo": "CGM akun tasot olivat %1 volttia ja %2 volttia hetkellä %3.", "virtAsstDelta": "Muutoksesi oli %1 %2 ja %3 välillä.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Tuntematon intentio", "virtAsstUnknownIntentText": "Anteeksi, en tiedä mitä pyydät.", "Fat [g]": "Rasva [g]", diff --git a/translations/fr_FR.json b/translations/fr_FR.json index 2824faeb949..71a1d3e75b6 100644 --- a/translations/fr_FR.json +++ b/translations/fr_FR.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Votre delta estimé est %1 entre %2 et %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Graisses [g]", diff --git a/translations/he_IL.json b/translations/he_IL.json index 987bfa3b81e..4e9d74e4bd3 100644 --- a/translations/he_IL.json +++ b/translations/he_IL.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "[g] שמן", diff --git a/translations/hr_HR.json b/translations/hr_HR.json index 1c1c7330d7a..9f612a78630 100644 --- a/translations/hr_HR.json +++ b/translations/hr_HR.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Masnoće [g]", diff --git a/translations/hu_HU.json b/translations/hu_HU.json index c33068f4d8b..32909404ac0 100644 --- a/translations/hu_HU.json +++ b/translations/hu_HU.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "A CGM töltöttsége %1 VOLT volt %2-kor", "virtAsstCGMBattTwo": "A CGM töltöttsége %1 és %2 VOLT volt %3-kor", "virtAsstDelta": "A deltád %1 volt %2 és %3 között", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "Sajnálom, nem tudom mit szeretnél tőlem.", "Fat [g]": "Zsír [g]", diff --git a/translations/it_IT.json b/translations/it_IT.json index 5b5d975348f..63aa11d55dc 100644 --- a/translations/it_IT.json +++ b/translations/it_IT.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "La batteria del tuo Sensore era %1 volt da %2.", "virtAsstCGMBattTwo": "I livelli della batteria del Sensore erano %1 volt e %2 volt a partire da %3.", "virtAsstDelta": "Il tuo delta era %1 tra %2 e %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Intenzioni Sconosciute", "virtAsstUnknownIntentText": "Mi dispiace, non so cosa state chiedendo.", "Fat [g]": "Grassi [g]", diff --git a/translations/ja_JP.json b/translations/ja_JP.json index 4073950133b..bdae2d591b3 100644 --- a/translations/ja_JP.json +++ b/translations/ja_JP.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Fat [g]", diff --git a/translations/ko_KR.json b/translations/ko_KR.json index 4bdf9084c93..7790608a30c 100644 --- a/translations/ko_KR.json +++ b/translations/ko_KR.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Fat [g]", diff --git a/translations/nb_NO.json b/translations/nb_NO.json index f8fcd5bfb28..01147da7867 100644 --- a/translations/nb_NO.json +++ b/translations/nb_NO.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "CGM-batteriet ditt var %1 volt som av %2.", "virtAsstCGMBattTwo": "CGM batterinivåene dine var %1 volt og %2 volt som av %3.", "virtAsstDelta": "Din delta var %1 mellom %2 og %3.", + "virtAsstDeltaEstimated": "Din estimerte delta var %1 mellom %2 og %3.", "virtAsstUnknownIntentTitle": "Ukjent hensikt", "virtAsstUnknownIntentText": "Beklager, jeg vet ikke hva du ber om.", "Fat [g]": "Fett [g]", diff --git a/translations/nl_NL.json b/translations/nl_NL.json index 85d765835a6..3ff51e89410 100644 --- a/translations/nl_NL.json +++ b/translations/nl_NL.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Uw CGM batterij was %1 volt sinds %2.", "virtAsstCGMBattTwo": "Uw CGM batterijniveau was %1 volt en %2 volt sinds %3.", "virtAsstDelta": "Je delta was %1 tussen %2 en %3.", + "virtAsstDeltaEstimated": "Je geschatte delta was %1 tussen %2 en %3.", "virtAsstUnknownIntentTitle": "Onbekende Intentie", "virtAsstUnknownIntentText": "Het spijt me, ik weet niet wat je bedoelt.", "Fat [g]": "Vet [g]", diff --git a/translations/pl_PL.json b/translations/pl_PL.json index d7fc3575fce..5dd6f72d24b 100644 --- a/translations/pl_PL.json +++ b/translations/pl_PL.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Tłuszcz [g]", diff --git a/translations/pt_BR.json b/translations/pt_BR.json index 23cdd2166a7..3f6bcd32f18 100644 --- a/translations/pt_BR.json +++ b/translations/pt_BR.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Fat [g]", diff --git a/translations/ro_RO.json b/translations/ro_RO.json index 42d9b3ce585..9f0cdb25db3 100644 --- a/translations/ro_RO.json +++ b/translations/ro_RO.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Bateria CGM-ului a fost de %1 volți din %2.", "virtAsstCGMBattTwo": "Nivelurile bateriei CGM au fost de %1 volți și %2 volți din %3.", "virtAsstDelta": "Variatia a fost %1 între %2 și %3.", + "virtAsstDeltaEstimated": "Variația estimată a fost %1 intre %2 si %3.", "virtAsstUnknownIntentTitle": "Intenție necunoscută", "virtAsstUnknownIntentText": "Îmi pare rău, nu ştiu ce doriţi.", "Fat [g]": "Grăsimi [g]", diff --git a/translations/ru_RU.json b/translations/ru_RU.json index 39a0662d6f6..a69750402d6 100644 --- a/translations/ru_RU.json +++ b/translations/ru_RU.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Батарея мониторинга была %1 вольт по состоянию на %2.", "virtAsstCGMBattTwo": "Уровни заряда аккумулятора были %1 вольт и %2 вольт по состоянию на %3.", "virtAsstDelta": "Дельта была %1 между %2 и %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Неизвестное намерение", "virtAsstUnknownIntentText": "Ваш запрос непонятен", "Fat [g]": "жиры [g]", diff --git a/translations/sl_SI.json b/translations/sl_SI.json index 12c114647ba..7cb94728a1c 100644 --- a/translations/sl_SI.json +++ b/translations/sl_SI.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Fat [g]", diff --git a/translations/sv_SE.json b/translations/sv_SE.json index b65c266003d..ecf852a45a3 100644 --- a/translations/sv_SE.json +++ b/translations/sv_SE.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Ditt CGM batteri var %1 volt från och med %2.", "virtAsstCGMBattTwo": "Dina CGM batterinivåer var %1 volt och %2 volt från och med %3.", "virtAsstDelta": "Ditt delta var %1 mellan %2 och %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Okänd Avsikt", "virtAsstUnknownIntentText": "Jag är ledsen, jag vet inte vad du ber om.", "Fat [g]": "Fett [g]", diff --git a/translations/tr_TR.json b/translations/tr_TR.json index 306be558404..adabab552be 100644 --- a/translations/tr_TR.json +++ b/translations/tr_TR.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Ismeretlen szándék", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Yağ [g]", diff --git a/translations/zh_CN.json b/translations/zh_CN.json index 36db372b004..78bce9212c3 100644 --- a/translations/zh_CN.json +++ b/translations/zh_CN.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "脂肪[g]", diff --git a/translations/zh_TW.json b/translations/zh_TW.json index ae098e428f6..085bfed60e4 100644 --- a/translations/zh_TW.json +++ b/translations/zh_TW.json @@ -612,6 +612,7 @@ "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", "virtAsstUnknownIntentTitle": "Unknown Intent", "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", "Fat [g]": "Fat [g]", From 46e4d172bb69e8b108b9fc5ac96b4218ab3c4729 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Mon, 4 Jan 2021 23:43:16 +0200 Subject: [PATCH 064/194] * Additional unit test for the authorization API * Stop logging the API SECRET --- lib/api/index.js | 4 +- tests/api.security.test.js | 135 +++++++++++++++++++++++++++++ tests/fixtures/api3/authSubject.js | 6 +- 3 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 tests/api.security.test.js diff --git a/lib/api/index.js b/lib/api/index.js index 4b3d6a4fcb6..156ee367a86 100644 --- a/lib/api/index.js +++ b/lib/api/index.js @@ -16,8 +16,10 @@ function create (env, ctx) { // Only allow access to the API if API_SECRET is set on the server. app.disable('api'); if (env.api_secret) { - console.log('API_SECRET', env.api_secret); + console.log('API_SECRET present, enabling API'); app.enable('api'); + } else { + console.log('API_SECRET not found, API disabled'); } if (env.settings.enable) { diff --git a/tests/api.security.test.js b/tests/api.security.test.js new file mode 100644 index 00000000000..87d51246c03 --- /dev/null +++ b/tests/api.security.test.js @@ -0,0 +1,135 @@ +/* eslint require-atomic-updates: 0 */ +'use strict'; + +const request = require('supertest'); +var language = require('../lib/language')(); +require('should'); +const jwt = require('jsonwebtoken'); + +describe('Security of REST API V1', function() { + const self = this + , instance = require('./fixtures/api3/instance') + , authSubject = require('./fixtures/api3/authSubject'); + + this.timeout(30000); + + before(function(done) { + var api = require('../lib/api/'); + self.env = require('../env')(); + self.env.api_secret = 'this is my long pass phrase'; + self.env.settings.authDefaultRoles = 'denied'; + this.wares = require('../lib/middleware/')(self.env); + self.app = require('express')(); + self.app.enable('api'); + require('../lib/server/bootevent')(self.env, language).boot(async function booted (ctx) { + self.app.use('/api/v1', api(self.env, ctx)); + self.app.use('/api/v2/authorization', ctx.authorization.endpoints); + let authResult = await authSubject(ctx.authorization.storage); + self.subject = authResult.subject; + self.token = authResult.token; + + done(); + }); + }); + + it('Should fail on false token', function(done) { + request(self.app) + .get('/api/v2/authorization/request/12345') + .expect(401) + .end(function(err, res) { + console.log(res.error); + res.error.status.should.equal(401); + done(); + }); + }); + + it('Data load should fail unauthenticated', function(done) { + request(self.app) + .get('/api/v1/entries.json') + .expect(401) + .end(function(err, res) { + console.log(res.error); + res.error.status.should.equal(401); + done(); + }); + }); + + it('Should return a JWT on token', function(done) { + const now = Math.round(Date.now() / 1000) - 1; + request(self.app) + .get('/api/v2/authorization/request/' + self.token.read) + .expect(200) + .end(function(err, res) { + const decodedToken = jwt.decode(res.body.token); + decodedToken.accessToken.should.equal(self.token.read); + decodedToken.iat.should.be.aboveOrEqual(now); + decodedToken.exp.should.be.above(decodedToken.iat); + done(); + }); + }); + + it('Data load should succeed with API SECRET', function(done) { + request(self.app) + .get('/api/v1/entries.json') + .set('api-secret', self.env.api_secret) + .expect(200) + .end(function(err, res) { + done(); + }); + }); + + it('Data load should succeed with token in place of a secret', function(done) { + request(self.app) + .get('/api/v1/entries.json') + .set('api-secret', self.token.read) + .expect(200) + .end(function(err, res) { + done(); + }); + }); + + it('Data load should succeed with a bearer token', function(done) { + request(self.app) + .get('/api/v2/authorization/request/' + self.token.read) + .expect(200) + .end(function(err, res) { + const token = res.body.token; + request(self.app) + .get('/api/v1/entries.json') + .set('Authorization', 'Bearer ' + token) + .expect(200) + .end(function(err, res) { + done(); + }); + }); + }); + + it('Data load fail succeed with a false bearer token', function(done) { + request(self.app) + .get('/api/v1/entries.json') + .set('Authorization', 'Bearer 1234567890') + .expect(401) + .end(function(err, res) { + done(); + }); + }); + + it('/verifyauth should return OK for Bearer tokens', function (done) { + request(self.app) + .get('/api/v2/authorization/request/' + self.token.adminAll) + .expect(200) + .end(function(err, res) { + const token = res.body.token; + request(self.app) + .get('/api/v1/verifyauth') + .set('Authorization', 'Bearer ' + token) + .expect(200) + .end(function(err, res) { + res.body.message.message.should.equal('OK'); + res.body.message.isAdmin.should.equal(true); + done(); + }); + }); + }); + +}); diff --git a/tests/fixtures/api3/authSubject.js b/tests/fixtures/api3/authSubject.js index 6036103b0e5..b81272c3696 100644 --- a/tests/fixtures/api3/authSubject.js +++ b/tests/fixtures/api3/authSubject.js @@ -59,6 +59,8 @@ function createTestSubject (authStorage, subjectName, roles) { async function authSubject (authStorage) { + await createRole(authStorage, 'admin', '*'); + await createRole(authStorage, 'readable', '*:*:read'); await createRole(authStorage, 'apiAll', 'api:*:*'); await createRole(authStorage, 'apiAdmin', 'api:*:admin'); await createRole(authStorage, 'apiCreate', 'api:*:create'); @@ -85,7 +87,9 @@ async function authSubject (authStorage) { read: subject.apiRead.accessToken, update: subject.apiUpdate.accessToken, delete: subject.apiDelete.accessToken, - denied: subject.denied.accessToken + denied: subject.denied.accessToken, + adminAll: subject.admin.accessToken, + readable: subject.readable.accessToken }; return {subject, token}; From b078394450f19f4fbfe820acfb990d51a15f8587 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 7 Jan 2021 14:43:53 +0200 Subject: [PATCH 065/194] * Bump version to 14.1.1 * Allow reducing timer length in delays for security tests --- lib/authorization/delaylist.js | 6 ++++-- lib/authorization/index.js | 10 ++++++---- lib/settings.js | 2 ++ npm-shrinkwrap.json | 2 +- package.json | 2 +- swagger.json | 2 +- swagger.yaml | 2 +- tests/verifyauth.test.js | 3 +-- 8 files changed, 17 insertions(+), 12 deletions(-) diff --git a/lib/authorization/delaylist.js b/lib/authorization/delaylist.js index cfc0509e6ab..19e45985baa 100644 --- a/lib/authorization/delaylist.js +++ b/lib/authorization/delaylist.js @@ -1,10 +1,12 @@ 'use strict'; -function init () { +const _ = require('lodash'); + +function init (env) { const ipDelayList = {}; - const DELAY_ON_FAIL = 5000; + const DELAY_ON_FAIL = _.get(env, 'settings.authFailDelay') || 5000; const FAIL_AGE = 60000; const sleep = require('util').promisify(setTimeout); diff --git a/lib/authorization/index.js b/lib/authorization/index.js index e5ea3f47871..5935a2332d3 100644 --- a/lib/authorization/index.js +++ b/lib/authorization/index.js @@ -4,20 +4,22 @@ const _ = require('lodash'); const jwt = require('jsonwebtoken'); const shiroTrie = require('shiro-trie'); -const ipdelaylist = require('./delaylist')(); const consts = require('./../constants'); const sleep = require('util').promisify(setTimeout); -const addFailedRequest = ipdelaylist.addFailedRequest; -const shouldDelayRequest = ipdelaylist.shouldDelayRequest; -const requestSucceeded = ipdelaylist.requestSucceeded; function getRemoteIP (req) { return req.headers['x-forwarded-for'] || req.connection.remoteAddress; } function init (env, ctx) { + + const ipdelaylist = require('./delaylist')(env, ctx); + const addFailedRequest = ipdelaylist.addFailedRequest; + const shouldDelayRequest = ipdelaylist.shouldDelayRequest; + const requestSucceeded = ipdelaylist.requestSucceeded; + var authorization = {}; var storage = authorization.storage = require('./storage')(env, ctx); var defaultRoles = (env.settings.authDefaultRoles || '').split(/[, :]/); diff --git a/lib/settings.js b/lib/settings.js index 837dceffe45..9b220ec746b 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -67,6 +67,7 @@ function init () { , frameName6: '' , frameName7: '' , frameName8: '' + , authFailDelay: 5000 }; var secureSettings = [ @@ -102,6 +103,7 @@ function init () { , bgLow: mapNumber , bgTargetTop: mapNumber , bgTargetBottom: mapNumber + , authFailDelay: mapNumber }; function filterObj(obj, secureKeys) { diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 3cd7c452eef..018c970c18d 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "nightscout", - "version": "14.1.0", + "version": "14.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b5bb73dcf21..56adf27c4f4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nightscout", - "version": "14.1.0", + "version": "14.1.1", "description": "Nightscout acts as a web-based CGM (Continuous Glucose Montinor) to allow multiple caregivers to remotely view a patients glucose data in realtime.", "license": "AGPL-3.0", "author": "Nightscout Team", diff --git a/swagger.json b/swagger.json index cf884499657..8e2c30da288 100755 --- a/swagger.json +++ b/swagger.json @@ -8,7 +8,7 @@ "info": { "title": "Nightscout API", "description": "Own your DData with the Nightscout API", - "version": "14.1.0", + "version": "14.1.1", "license": { "name": "AGPL 3", "url": "https://www.gnu.org/licenses/agpl.txt" diff --git a/swagger.yaml b/swagger.yaml index 29fabdcafd8..8cc72542c5c 100755 --- a/swagger.yaml +++ b/swagger.yaml @@ -4,7 +4,7 @@ servers: info: title: Nightscout API description: Own your DData with the Nightscout API - version: 14.1.0 + version: 14.1.1 license: name: AGPL 3 url: 'https://www.gnu.org/licenses/agpl.txt' diff --git a/tests/verifyauth.test.js b/tests/verifyauth.test.js index ce970f26bab..c03b51573ca 100644 --- a/tests/verifyauth.test.js +++ b/tests/verifyauth.test.js @@ -1,6 +1,5 @@ 'use strict'; -const { geoNaturalEarth1 } = require('d3'); var request = require('supertest'); var language = require('../lib/language')(); require('should'); @@ -70,7 +69,7 @@ describe('verifyauth', function ( ) { function checkTimer(res) { res.body.message.message.should.equal('UNAUTHORIZED'); const delta = Date.now() - time; - delta.should.be.greaterThan(1000); + delta.should.be.greaterThan(49); done(); } From df6d9aadc3eed2afd6f12ff3e75538ab8440466f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 7 Jan 2021 14:45:13 +0200 Subject: [PATCH 066/194] Re-enable partial report test --- tests/reports.test.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/reports.test.js b/tests/reports.test.js index 602ed658e67..3029b32a9e2 100644 --- a/tests/reports.test.js +++ b/tests/reports.test.js @@ -202,7 +202,7 @@ describe('reports', function ( ) { done( ); }); -/* + it ('should produce some html', function (done) { var client = window.Nightscout.client; @@ -258,6 +258,7 @@ describe('reports', function ( ) { $('img.editTreatment:first').click(); $('.ui-button:contains("Save")').click(); + /* var result = $('body').html(); var filesys = require('fs'); var logfile = filesys.createWriteStream('out.txt', { flags: 'a'} ) @@ -273,7 +274,7 @@ describe('reports', function ( ) { result.indexOf('
').should.be.greaterThan(-1); //success result.indexOf('CAL: Scale: 1.10 Intercept: 31102 Slope: 776.91').should.be.greaterThan(-1); //calibrations result.indexOf('Correction Bolus250 (Sensor)0.75').should.be.greaterThan(-1); //treatments - +*/ done(); }); }); @@ -333,5 +334,5 @@ describe('reports', function ( ) { }); }); - */ + }); From 914ba78f363d5c6e94c5522d7b0343ecdbe74761 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 7 Jan 2021 22:46:55 +0200 Subject: [PATCH 067/194] Security improvement batch (#6622) * Adds a new method for the server to push notifies to the client, which require administration privileges from the user. If there are messages in queue but user is not privileged, she is notified of pending messages * Fix unit tests * Increase timeouts on tests * Add translations * * Aggregate admin messages * Send admin message on auth fail * Sending messages over bus * XSS filtering of objects sent over the REST API * Warn users if their instance is world readable * Fix adminnotifies init() * Fix couple issues from Codacy --- .gitignore | 1 - assets/fonts/Nightscout Plugin Icons.json | 11434 +++++++++++++++++++- bin/testdatarunner.js | 117 + env.js | 39 +- lib/adminnotifies.js | 52 + lib/api/adminnotifiesapi.js | 35 + lib/api/devicestatus/index.js | 3 + lib/api/entries/index.js | 5 + lib/api/index.js | 3 + lib/api/profile/index.js | 1 + lib/api/treatments/index.js | 2 + lib/authorization/delaylist.js | 2 - lib/authorization/index.js | 10 +- lib/client/adminnotifiesclient.js | 100 + lib/client/index.js | 4 + lib/server/bootevent.js | 36 +- lib/server/purifier.js | 36 + npm-shrinkwrap.json | 147 +- package.json | 15 +- static/css/drawer.css | 15 +- static/css/main.css | 9 +- tests/XX_clean.test.js | 39 + tests/adminnotifies.test.js | 30 + tests/admintools.test.js | 2 +- tests/api.devicestatus.test.js | 1 + tests/api.treatments.test.js | 4 +- tests/api3.create.test.js | 1 - tests/careportal.test.js | 3 +- tests/pebble.test.js | 3 + tests/reports.test.js | 13 +- tests/security.test.js | 2 +- translations/en/en.json | 8 + views/index.html | 3 + views/partials/toolbar.ejs | 1 + 34 files changed, 12059 insertions(+), 117 deletions(-) create mode 100644 bin/testdatarunner.js create mode 100644 lib/adminnotifies.js create mode 100644 lib/api/adminnotifiesapi.js create mode 100644 lib/client/adminnotifiesclient.js create mode 100644 lib/server/purifier.js create mode 100644 tests/XX_clean.test.js create mode 100644 tests/adminnotifies.test.js diff --git a/.gitignore b/.gitignore index 1cf7ab06f2f..834d6f3e5a7 100644 --- a/.gitignore +++ b/.gitignore @@ -28,5 +28,4 @@ npm-debug.log /cgm-remote-monitor.njsproj /cgm-remote-monitor.sln /obj/Debug -/bin /*.bat diff --git a/assets/fonts/Nightscout Plugin Icons.json b/assets/fonts/Nightscout Plugin Icons.json index 65874c15679..f1ff8306de0 100644 --- a/assets/fonts/Nightscout Plugin Icons.json +++ b/assets/fonts/Nightscout Plugin Icons.json @@ -2,9 +2,11439 @@ "metadata": { "name": "Nightscout Plugin Icons", "lastOpened": 0, - "created": 1580075608590 + "created": 1607277376360 }, "iconSets": [ + { + "selection": [ + { + "ligatures": "home, house", + "name": "home", + "id": 0, + "order": 0 + }, + { + "ligatures": "home2, house2", + "name": "home2", + "id": 1, + "order": 0 + }, + { + "ligatures": "home3, house3", + "name": "home3", + "id": 2, + "order": 0 + }, + { + "ligatures": "office, buildings", + "name": "office", + "id": 3, + "order": 0 + }, + { + "ligatures": "newspaper, news", + "name": "newspaper", + "id": 4, + "order": 0 + }, + { + "ligatures": "pencil, write", + "name": "pencil", + "id": 5, + "order": 0 + }, + { + "ligatures": "pencil2, write2", + "name": "pencil2", + "id": 6, + "order": 0 + }, + { + "ligatures": "quill, feather", + "name": "quill", + "id": 7, + "order": 0 + }, + { + "ligatures": "pen, write3", + "name": "pen", + "id": 8, + "order": 0 + }, + { + "ligatures": "blog, pen2", + "name": "blog", + "id": 9, + "order": 0 + }, + { + "ligatures": "eyedropper, color", + "name": "eyedropper", + "id": 10, + "order": 0 + }, + { + "ligatures": "droplet, color2", + "name": "droplet", + "id": 11, + "order": 0 + }, + { + "ligatures": "paint-format, format", + "name": "paint-format", + "id": 12, + "order": 0 + }, + { + "ligatures": "image, picture", + "name": "image", + "id": 13, + "order": 0 + }, + { + "ligatures": "images, pictures", + "name": "images", + "id": 14, + "order": 0 + }, + { + "ligatures": "camera, photo", + "name": "camera", + "id": 15, + "order": 0 + }, + { + "ligatures": "headphones, headset", + "name": "headphones", + "id": 16, + "order": 0 + }, + { + "ligatures": "music, song", + "name": "music", + "id": 17, + "order": 0 + }, + { + "ligatures": "play, video", + "name": "play", + "id": 18, + "order": 0 + }, + { + "ligatures": "film, video2", + "name": "film", + "id": 19, + "order": 0 + }, + { + "ligatures": "video-camera, video3", + "name": "video-camera", + "id": 20, + "order": 0 + }, + { + "ligatures": "dice, game", + "name": "dice", + "id": 21, + "order": 0 + }, + { + "ligatures": "pacman, game2", + "name": "pacman", + "id": 22, + "order": 0 + }, + { + "ligatures": "spades, cards", + "name": "spades", + "id": 23, + "order": 0 + }, + { + "ligatures": "clubs, cards2", + "name": "clubs", + "id": 24, + "order": 0 + }, + { + "ligatures": "diamonds, cards3", + "name": "diamonds", + "id": 25, + "order": 0 + }, + { + "ligatures": "bullhorn, megaphone", + "name": "bullhorn", + "id": 26, + "order": 3, + "prevSize": 32, + "code": 59674, + "tempChar": "" + }, + { + "ligatures": "connection, wifi", + "name": "connection", + "id": 27, + "order": 0 + }, + { + "ligatures": "podcast, broadcast", + "name": "podcast", + "id": 28, + "order": 0 + }, + { + "ligatures": "feed, wave", + "name": "feed", + "id": 29, + "order": 0 + }, + { + "ligatures": "mic, microphone", + "name": "mic", + "id": 30, + "order": 0 + }, + { + "ligatures": "book, read", + "name": "book", + "id": 31, + "order": 0 + }, + { + "ligatures": "books, library", + "name": "books", + "id": 32, + "order": 0 + }, + { + "ligatures": "library2, bank", + "name": "library", + "id": 33, + "order": 0 + }, + { + "ligatures": "file-text, file", + "name": "file-text", + "id": 34, + "order": 0 + }, + { + "ligatures": "profile, file2", + "name": "profile", + "id": 35, + "order": 0 + }, + { + "ligatures": "file-empty, file3", + "name": "file-empty", + "id": 36, + "order": 0 + }, + { + "ligatures": "files-empty, files", + "name": "files-empty", + "id": 37, + "order": 0 + }, + { + "ligatures": "file-text2, file4", + "name": "file-text2", + "id": 38, + "order": 0 + }, + { + "ligatures": "file-picture, file5", + "name": "file-picture", + "id": 39, + "order": 0 + }, + { + "ligatures": "file-music, file6", + "name": "file-music", + "id": 40, + "order": 0 + }, + { + "ligatures": "file-play, file7", + "name": "file-play", + "id": 41, + "order": 0 + }, + { + "ligatures": "file-video, file8", + "name": "file-video", + "id": 42, + "order": 0 + }, + { + "ligatures": "file-zip, file9", + "name": "file-zip", + "id": 43, + "order": 0 + }, + { + "ligatures": "copy, duplicate", + "name": "copy", + "id": 44, + "order": 0 + }, + { + "ligatures": "paste, clipboard-file", + "name": "paste", + "id": 45, + "order": 0 + }, + { + "ligatures": "stack, layers", + "name": "stack", + "id": 46, + "order": 0 + }, + { + "ligatures": "folder, directory", + "name": "folder", + "id": 47, + "order": 0 + }, + { + "ligatures": "folder-open, directory2", + "name": "folder-open", + "id": 48, + "order": 0 + }, + { + "ligatures": "folder-plus, directory3", + "name": "folder-plus", + "id": 49, + "order": 0 + }, + { + "ligatures": "folder-minus, directory4", + "name": "folder-minus", + "id": 50, + "order": 0 + }, + { + "ligatures": "folder-download, directory5", + "name": "folder-download", + "id": 51, + "order": 0 + }, + { + "ligatures": "folder-upload, directory6", + "name": "folder-upload", + "id": 52, + "order": 0 + }, + { + "ligatures": "price-tag", + "name": "price-tag", + "id": 53, + "order": 0 + }, + { + "ligatures": "price-tags", + "name": "price-tags", + "id": 54, + "order": 0 + }, + { + "ligatures": "barcode", + "name": "barcode", + "id": 55, + "order": 0 + }, + { + "ligatures": "qrcode", + "name": "qrcode", + "id": 56, + "order": 0 + }, + { + "ligatures": "ticket, theater", + "name": "ticket", + "id": 57, + "order": 0 + }, + { + "ligatures": "cart, purchase", + "name": "cart", + "id": 58, + "order": 0 + }, + { + "ligatures": "coin-dollar, money", + "name": "coin-dollar", + "id": 59, + "order": 0 + }, + { + "ligatures": "coin-euro, money2", + "name": "coin-euro", + "id": 60, + "order": 0 + }, + { + "ligatures": "coin-pound, money3", + "name": "coin-pound", + "id": 61, + "order": 0 + }, + { + "ligatures": "coin-yen, money4", + "name": "coin-yen", + "id": 62, + "order": 0 + }, + { + "ligatures": "credit-card, money5", + "name": "credit-card", + "id": 63, + "order": 0 + }, + { + "ligatures": "calculator, compute", + "name": "calculator", + "id": 64, + "order": 0 + }, + { + "ligatures": "lifebuoy, support", + "name": "lifebuoy", + "id": 65, + "order": 0 + }, + { + "ligatures": "phone, telephone", + "name": "phone", + "id": 66, + "order": 0 + }, + { + "ligatures": "phone-hang-up, telephone2", + "name": "phone-hang-up", + "id": 67, + "order": 0 + }, + { + "ligatures": "address-book, contact", + "name": "address-book", + "id": 68, + "order": 0 + }, + { + "ligatures": "envelop, mail", + "name": "envelop", + "id": 69, + "order": 0 + }, + { + "ligatures": "pushpin, pin", + "name": "pushpin", + "id": 70, + "order": 0 + }, + { + "ligatures": "location, map-marker", + "name": "location", + "id": 71, + "order": 0 + }, + { + "ligatures": "location2, map-marker2", + "name": "location2", + "id": 72, + "order": 0 + }, + { + "ligatures": "compass, direction", + "name": "compass", + "id": 73, + "order": 0 + }, + { + "ligatures": "compass2, direction2", + "name": "compass2", + "id": 74, + "order": 0 + }, + { + "ligatures": "map, guide", + "name": "map", + "id": 75, + "order": 0 + }, + { + "ligatures": "map2, guide2", + "name": "map2", + "id": 76, + "order": 0 + }, + { + "ligatures": "history, time", + "name": "history", + "id": 77, + "order": 0 + }, + { + "ligatures": "clock, time2", + "name": "clock", + "id": 78, + "order": 0 + }, + { + "ligatures": "clock2, time3", + "name": "clock2", + "id": 79, + "order": 0 + }, + { + "ligatures": "alarm, time4", + "name": "alarm", + "id": 80, + "order": 0 + }, + { + "ligatures": "bell, alarm2", + "name": "bell", + "id": 81, + "order": 0 + }, + { + "ligatures": "stopwatch, time5", + "name": "stopwatch", + "id": 82, + "order": 0 + }, + { + "ligatures": "calendar, date", + "name": "calendar", + "id": 83, + "order": 0 + }, + { + "ligatures": "printer, print", + "name": "printer", + "id": 84, + "order": 0 + }, + { + "ligatures": "keyboard, typing", + "name": "keyboard", + "id": 85, + "order": 0 + }, + { + "ligatures": "display, screen", + "name": "display", + "id": 86, + "order": 0 + }, + { + "ligatures": "laptop, computer", + "name": "laptop", + "id": 87, + "order": 0 + }, + { + "ligatures": "mobile, cell-phone", + "name": "mobile", + "id": 88, + "order": 0 + }, + { + "ligatures": "mobile2, cell-phone2", + "name": "mobile2", + "id": 89, + "order": 0 + }, + { + "ligatures": "tablet, mobile3", + "name": "tablet", + "id": 90, + "order": 0 + }, + { + "ligatures": "tv, television", + "name": "tv", + "id": 91, + "order": 0 + }, + { + "ligatures": "drawer, box", + "name": "drawer", + "id": 92, + "order": 0 + }, + { + "ligatures": "drawer2, box2", + "name": "drawer2", + "id": 93, + "order": 0 + }, + { + "ligatures": "box-add, box3", + "name": "box-add", + "id": 94, + "order": 0 + }, + { + "ligatures": "box-remove, box4", + "name": "box-remove", + "id": 95, + "order": 0 + }, + { + "ligatures": "download, save", + "name": "download", + "id": 96, + "order": 0 + }, + { + "ligatures": "upload, load", + "name": "upload", + "id": 97, + "order": 0 + }, + { + "ligatures": "floppy-disk, save2", + "name": "floppy-disk", + "id": 98, + "order": 0 + }, + { + "ligatures": "drive, save3", + "name": "drive", + "id": 99, + "order": 0 + }, + { + "ligatures": "database, db", + "name": "database", + "id": 100, + "order": 0 + }, + { + "ligatures": "undo, ccw", + "name": "undo", + "id": 101, + "order": 0 + }, + { + "ligatures": "redo, cw", + "name": "redo", + "id": 102, + "order": 0 + }, + { + "ligatures": "undo2, left", + "name": "undo2", + "id": 103, + "order": 0 + }, + { + "ligatures": "redo2, right", + "name": "redo2", + "id": 104, + "order": 0 + }, + { + "ligatures": "forward, right2", + "name": "forward", + "id": 105, + "order": 0 + }, + { + "ligatures": "reply, left2", + "name": "reply", + "id": 106, + "order": 0 + }, + { + "ligatures": "bubble, comment", + "name": "bubble", + "id": 107, + "order": 0 + }, + { + "ligatures": "bubbles, comments", + "name": "bubbles", + "id": 108, + "order": 0 + }, + { + "ligatures": "bubbles2, comments2", + "name": "bubbles2", + "id": 109, + "order": 0 + }, + { + "ligatures": "bubble2, comment2", + "name": "bubble2", + "id": 110, + "order": 0 + }, + { + "ligatures": "bubbles3, comments3", + "name": "bubbles3", + "id": 111, + "order": 0 + }, + { + "ligatures": "bubbles4, comments4", + "name": "bubbles4", + "id": 112, + "order": 0 + }, + { + "ligatures": "user, profile2", + "name": "user", + "id": 113, + "order": 0 + }, + { + "ligatures": "users, group", + "name": "users", + "id": 114, + "order": 0 + }, + { + "ligatures": "user-plus, user2", + "name": "user-plus", + "id": 115, + "order": 0 + }, + { + "ligatures": "user-minus, user3", + "name": "user-minus", + "id": 116, + "order": 0 + }, + { + "ligatures": "user-check, user4", + "name": "user-check", + "id": 117, + "order": 0 + }, + { + "ligatures": "user-tie, user5", + "name": "user-tie", + "id": 118, + "order": 0 + }, + { + "ligatures": "quotes-left, ldquo", + "name": "quotes-left", + "id": 119, + "order": 0 + }, + { + "ligatures": "quotes-right, rdquo", + "name": "quotes-right", + "id": 120, + "order": 0 + }, + { + "ligatures": "hour-glass, loading", + "name": "hour-glass", + "id": 121, + "order": 0 + }, + { + "ligatures": "spinner, loading2", + "name": "spinner", + "id": 122, + "order": 0 + }, + { + "ligatures": "spinner2, loading3", + "name": "spinner2", + "id": 123, + "order": 0 + }, + { + "ligatures": "spinner3, loading4", + "name": "spinner3", + "id": 124, + "order": 0 + }, + { + "ligatures": "spinner4, loading5", + "name": "spinner4", + "id": 125, + "order": 0 + }, + { + "ligatures": "spinner5, loading6", + "name": "spinner5", + "id": 126, + "order": 0 + }, + { + "ligatures": "spinner6, loading7", + "name": "spinner6", + "id": 127, + "order": 0 + }, + { + "ligatures": "spinner7, loading8", + "name": "spinner7", + "id": 128, + "order": 0 + }, + { + "ligatures": "spinner8, loading9", + "name": "spinner8", + "id": 129, + "order": 0 + }, + { + "ligatures": "spinner9, loading10", + "name": "spinner9", + "id": 130, + "order": 0 + }, + { + "ligatures": "spinner10, loading11", + "name": "spinner10", + "id": 131, + "order": 0 + }, + { + "ligatures": "spinner11, loading12", + "name": "spinner11", + "id": 132, + "order": 0 + }, + { + "ligatures": "binoculars, lookup", + "name": "binoculars", + "id": 133, + "order": 0 + }, + { + "ligatures": "search, magnifier", + "name": "search", + "id": 134, + "order": 0 + }, + { + "ligatures": "zoom-in, magnifier2", + "name": "zoom-in", + "id": 135, + "order": 0 + }, + { + "ligatures": "zoom-out, magnifier3", + "name": "zoom-out", + "id": 136, + "order": 0 + }, + { + "ligatures": "enlarge, expand", + "name": "enlarge", + "id": 137, + "order": 0 + }, + { + "ligatures": "shrink, collapse", + "name": "shrink", + "id": 138, + "order": 0 + }, + { + "ligatures": "enlarge2, expand2", + "name": "enlarge2", + "id": 139, + "order": 0 + }, + { + "ligatures": "shrink2, collapse2", + "name": "shrink2", + "id": 140, + "order": 0 + }, + { + "ligatures": "key, password", + "name": "key", + "id": 141, + "order": 0 + }, + { + "ligatures": "key2, password2", + "name": "key2", + "id": 142, + "order": 0 + }, + { + "ligatures": "lock, secure", + "name": "lock", + "id": 143, + "order": 0 + }, + { + "ligatures": "unlocked, lock-open", + "name": "unlocked", + "id": 144, + "order": 0 + }, + { + "ligatures": "wrench, tool", + "name": "wrench", + "id": 145, + "order": 0 + }, + { + "ligatures": "equalizer, sliders", + "name": "equalizer", + "id": 146, + "order": 0 + }, + { + "ligatures": "equalizer2, sliders2", + "name": "equalizer2", + "id": 147, + "order": 0 + }, + { + "ligatures": "cog, gear", + "name": "cog", + "id": 148, + "order": 0 + }, + { + "ligatures": "cogs, gears", + "name": "cogs", + "id": 149, + "order": 0 + }, + { + "ligatures": "hammer, tool2", + "name": "hammer", + "id": 150, + "order": 0 + }, + { + "ligatures": "magic-wand, wizard", + "name": "magic-wand", + "id": 151, + "order": 0 + }, + { + "ligatures": "aid-kit, health", + "name": "aid-kit", + "id": 152, + "order": 0 + }, + { + "ligatures": "bug, virus", + "name": "bug", + "id": 153, + "order": 0 + }, + { + "ligatures": "pie-chart, stats", + "name": "pie-chart", + "id": 154, + "order": 0 + }, + { + "ligatures": "stats-dots, stats2", + "name": "stats-dots", + "id": 155, + "order": 0 + }, + { + "ligatures": "stats-bars, stats3", + "name": "stats-bars", + "id": 156, + "order": 0 + }, + { + "ligatures": "stats-bars2, stats4", + "name": "stats-bars2", + "id": 157, + "order": 0 + }, + { + "ligatures": "trophy, cup", + "name": "trophy", + "id": 158, + "order": 0 + }, + { + "ligatures": "gift, present", + "name": "gift", + "id": 159, + "order": 0 + }, + { + "ligatures": "glass, drink", + "name": "glass", + "id": 160, + "order": 0 + }, + { + "ligatures": "glass2, drink2", + "name": "glass2", + "id": 161, + "order": 0 + }, + { + "ligatures": "mug, drink3", + "name": "mug", + "id": 162, + "order": 0 + }, + { + "ligatures": "spoon-knife, food", + "name": "spoon-knife", + "id": 163, + "order": 0 + }, + { + "ligatures": "leaf, nature", + "name": "leaf", + "id": 164, + "order": 0 + }, + { + "ligatures": "rocket, jet", + "name": "rocket", + "id": 165, + "order": 0 + }, + { + "ligatures": "meter, gauge", + "name": "meter", + "id": 166, + "order": 0 + }, + { + "ligatures": "meter2, gauge2", + "name": "meter2", + "id": 167, + "order": 0 + }, + { + "ligatures": "hammer2, gavel", + "name": "hammer2", + "id": 168, + "order": 0 + }, + { + "ligatures": "fire, flame", + "name": "fire", + "id": 169, + "order": 0 + }, + { + "ligatures": "lab, beta", + "name": "lab", + "id": 170, + "order": 0 + }, + { + "ligatures": "magnet, attract", + "name": "magnet", + "id": 171, + "order": 0 + }, + { + "ligatures": "bin, trashcan", + "name": "bin", + "id": 172, + "order": 0 + }, + { + "ligatures": "bin2, trashcan2", + "name": "bin2", + "id": 173, + "order": 0 + }, + { + "ligatures": "briefcase, portfolio", + "name": "briefcase", + "id": 174, + "order": 0 + }, + { + "ligatures": "airplane, travel", + "name": "airplane", + "id": 175, + "order": 0 + }, + { + "ligatures": "truck, transit", + "name": "truck", + "id": 176, + "order": 0 + }, + { + "ligatures": "road, asphalt", + "name": "road", + "id": 177, + "order": 0 + }, + { + "ligatures": "accessibility", + "name": "accessibility", + "id": 178, + "order": 0 + }, + { + "ligatures": "target, goal", + "name": "target", + "id": 179, + "order": 0 + }, + { + "ligatures": "shield, security", + "name": "shield", + "id": 180, + "order": 0 + }, + { + "ligatures": "power, lightning", + "name": "power", + "id": 181, + "order": 0 + }, + { + "ligatures": "switch", + "name": "switch", + "id": 182, + "order": 0 + }, + { + "ligatures": "power-cord, plugin", + "name": "power-cord", + "id": 183, + "order": 0 + }, + { + "ligatures": "clipboard, board", + "name": "clipboard", + "id": 184, + "order": 0 + }, + { + "ligatures": "list-numbered, options", + "name": "list-numbered", + "id": 185, + "order": 0 + }, + { + "ligatures": "list, todo", + "name": "list", + "id": 186, + "order": 0 + }, + { + "ligatures": "list2, todo2", + "name": "list2", + "id": 187, + "order": 0 + }, + { + "ligatures": "tree, branches", + "name": "tree", + "id": 188, + "order": 0 + }, + { + "ligatures": "menu, list3", + "name": "menu", + "id": 189, + "order": 0 + }, + { + "ligatures": "menu2, options2", + "name": "menu2", + "id": 190, + "order": 0 + }, + { + "ligatures": "menu3, options3", + "name": "menu3", + "id": 191, + "order": 0 + }, + { + "ligatures": "menu4, options4", + "name": "menu4", + "id": 192, + "order": 0 + }, + { + "ligatures": "cloud, weather", + "name": "cloud", + "id": 193, + "order": 0 + }, + { + "ligatures": "cloud-download, cloud2", + "name": "cloud-download", + "id": 194, + "order": 0 + }, + { + "ligatures": "cloud-upload, cloud3", + "name": "cloud-upload", + "id": 195, + "order": 0 + }, + { + "ligatures": "cloud-check, cloud4", + "name": "cloud-check", + "id": 196, + "order": 0 + }, + { + "ligatures": "download2, save4", + "name": "download2", + "id": 197, + "order": 0 + }, + { + "ligatures": "upload2, load2", + "name": "upload2", + "id": 198, + "order": 0 + }, + { + "ligatures": "download3, save5", + "name": "download3", + "id": 199, + "order": 0 + }, + { + "ligatures": "upload3, load3", + "name": "upload3", + "id": 200, + "order": 0 + }, + { + "ligatures": "sphere, globe", + "name": "sphere", + "id": 201, + "order": 0 + }, + { + "ligatures": "earth, globe2", + "name": "earth", + "id": 202, + "order": 0 + }, + { + "ligatures": "link, chain", + "name": "link", + "id": 203, + "order": 0 + }, + { + "ligatures": "flag, report", + "name": "flag", + "id": 204, + "order": 0 + }, + { + "ligatures": "attachment, paperclip", + "name": "attachment", + "id": 205, + "order": 0 + }, + { + "ligatures": "eye, views", + "name": "eye", + "id": 206, + "order": 0 + }, + { + "ligatures": "eye-plus, views2", + "name": "eye-plus", + "id": 207, + "order": 0 + }, + { + "ligatures": "eye-minus, views3", + "name": "eye-minus", + "id": 208, + "order": 0 + }, + { + "ligatures": "eye-blocked, views4", + "name": "eye-blocked", + "id": 209, + "order": 0 + }, + { + "ligatures": "bookmark, ribbon", + "name": "bookmark", + "id": 210, + "order": 0 + }, + { + "ligatures": "bookmarks, ribbons", + "name": "bookmarks", + "id": 211, + "order": 0 + }, + { + "ligatures": "sun, weather2", + "name": "sun", + "id": 212, + "order": 0 + }, + { + "ligatures": "contrast", + "name": "contrast", + "id": 213, + "order": 0 + }, + { + "ligatures": "brightness-contrast", + "name": "brightness-contrast", + "id": 214, + "order": 0 + }, + { + "ligatures": "star-empty, rate", + "name": "star-empty", + "id": 215, + "order": 0 + }, + { + "ligatures": "star-half, rate2", + "name": "star-half", + "id": 216, + "order": 0 + }, + { + "ligatures": "star-full, rate3", + "name": "star-full", + "id": 217, + "order": 0 + }, + { + "ligatures": "heart, like", + "name": "heart", + "id": 218, + "order": 0 + }, + { + "ligatures": "heart-broken, heart2", + "name": "heart-broken", + "id": 219, + "order": 0 + }, + { + "ligatures": "man, male", + "name": "man", + "id": 220, + "order": 0 + }, + { + "ligatures": "woman, female", + "name": "woman", + "id": 221, + "order": 0 + }, + { + "ligatures": "man-woman, toilet", + "name": "man-woman", + "id": 222, + "order": 0 + }, + { + "ligatures": "happy, emoticon", + "name": "happy", + "id": 223, + "order": 0 + }, + { + "ligatures": "happy2, emoticon2", + "name": "happy2", + "id": 224, + "order": 0 + }, + { + "ligatures": "smile, emoticon3", + "name": "smile", + "id": 225, + "order": 0 + }, + { + "ligatures": "smile2, emoticon4", + "name": "smile2", + "id": 226, + "order": 0 + }, + { + "ligatures": "tongue, emoticon5", + "name": "tongue", + "id": 227, + "order": 0 + }, + { + "ligatures": "tongue2, emoticon6", + "name": "tongue2", + "id": 228, + "order": 0 + }, + { + "ligatures": "sad, emoticon7", + "name": "sad", + "id": 229, + "order": 0 + }, + { + "ligatures": "sad2, emoticon8", + "name": "sad2", + "id": 230, + "order": 0 + }, + { + "ligatures": "wink, emoticon9", + "name": "wink", + "id": 231, + "order": 0 + }, + { + "ligatures": "wink2, emoticon10", + "name": "wink2", + "id": 232, + "order": 0 + }, + { + "ligatures": "grin, emoticon11", + "name": "grin", + "id": 233, + "order": 0 + }, + { + "ligatures": "grin2, emoticon12", + "name": "grin2", + "id": 234, + "order": 0 + }, + { + "ligatures": "cool, emoticon13", + "name": "cool", + "id": 235, + "order": 0 + }, + { + "ligatures": "cool2, emoticon14", + "name": "cool2", + "id": 236, + "order": 0 + }, + { + "ligatures": "angry, emoticon15", + "name": "angry", + "id": 237, + "order": 0 + }, + { + "ligatures": "angry2, emoticon16", + "name": "angry2", + "id": 238, + "order": 0 + }, + { + "ligatures": "evil, emoticon17", + "name": "evil", + "id": 239, + "order": 0 + }, + { + "ligatures": "evil2, emoticon18", + "name": "evil2", + "id": 240, + "order": 0 + }, + { + "ligatures": "shocked, emoticon19", + "name": "shocked", + "id": 241, + "order": 0 + }, + { + "ligatures": "shocked2, emoticon20", + "name": "shocked2", + "id": 242, + "order": 0 + }, + { + "ligatures": "baffled, emoticon21", + "name": "baffled", + "id": 243, + "order": 0 + }, + { + "ligatures": "baffled2, emoticon22", + "name": "baffled2", + "id": 244, + "order": 0 + }, + { + "ligatures": "confused, emoticon23", + "name": "confused", + "id": 245, + "order": 0 + }, + { + "ligatures": "confused2, emoticon24", + "name": "confused2", + "id": 246, + "order": 0 + }, + { + "ligatures": "neutral, emoticon25", + "name": "neutral", + "id": 247, + "order": 0 + }, + { + "ligatures": "neutral2, emoticon26", + "name": "neutral2", + "id": 248, + "order": 0 + }, + { + "ligatures": "hipster, emoticon27", + "name": "hipster", + "id": 249, + "order": 0 + }, + { + "ligatures": "hipster2, emoticon28", + "name": "hipster2", + "id": 250, + "order": 0 + }, + { + "ligatures": "wondering, emoticon29", + "name": "wondering", + "id": 251, + "order": 0 + }, + { + "ligatures": "wondering2, emoticon30", + "name": "wondering2", + "id": 252, + "order": 0 + }, + { + "ligatures": "sleepy, emoticon31", + "name": "sleepy", + "id": 253, + "order": 0 + }, + { + "ligatures": "sleepy2, emoticon32", + "name": "sleepy2", + "id": 254, + "order": 0 + }, + { + "ligatures": "frustrated, emoticon33", + "name": "frustrated", + "id": 255, + "order": 0 + }, + { + "ligatures": "frustrated2, emoticon34", + "name": "frustrated2", + "id": 256, + "order": 0 + }, + { + "ligatures": "crying, emoticon35", + "name": "crying", + "id": 257, + "order": 0 + }, + { + "ligatures": "crying2, emoticon36", + "name": "crying2", + "id": 258, + "order": 0 + }, + { + "ligatures": "point-up, finger", + "name": "point-up", + "id": 259, + "order": 0 + }, + { + "ligatures": "point-right, finger2", + "name": "point-right", + "id": 260, + "order": 0 + }, + { + "ligatures": "point-down, finger3", + "name": "point-down", + "id": 261, + "order": 0 + }, + { + "ligatures": "point-left, finger4", + "name": "point-left", + "id": 262, + "order": 0 + }, + { + "ligatures": "warning, sign", + "name": "warning", + "id": 263, + "order": 0 + }, + { + "ligatures": "notification, warning2", + "name": "notification", + "id": 264, + "order": 0 + }, + { + "ligatures": "question, help", + "name": "question", + "id": 265, + "order": 0 + }, + { + "ligatures": "plus, add", + "name": "plus", + "id": 266, + "order": 0 + }, + { + "ligatures": "minus, subtract", + "name": "minus", + "id": 267, + "order": 0 + }, + { + "ligatures": "info, information", + "name": "info", + "id": 268, + "order": 0 + }, + { + "ligatures": "cancel-circle, close", + "name": "cancel-circle", + "id": 269, + "order": 0 + }, + { + "ligatures": "blocked, forbidden", + "name": "blocked", + "id": 270, + "order": 0 + }, + { + "ligatures": "cross, cancel", + "name": "cross", + "id": 271, + "order": 0 + }, + { + "ligatures": "checkmark, tick", + "name": "checkmark", + "id": 272, + "order": 0 + }, + { + "ligatures": "checkmark2, tick2", + "name": "checkmark2", + "id": 273, + "order": 0 + }, + { + "ligatures": "spell-check, spelling", + "name": "spell-check", + "id": 274, + "order": 0 + }, + { + "ligatures": "enter, signin", + "name": "enter", + "id": 275, + "order": 0 + }, + { + "ligatures": "exit, signout", + "name": "exit", + "id": 276, + "order": 0 + }, + { + "ligatures": "play2, player", + "name": "play2", + "id": 277, + "order": 0 + }, + { + "ligatures": "pause, player2", + "name": "pause", + "id": 278, + "order": 0 + }, + { + "ligatures": "stop, player3", + "name": "stop", + "id": 279, + "order": 0 + }, + { + "ligatures": "previous, player4", + "name": "previous", + "id": 280, + "order": 0 + }, + { + "ligatures": "next, player5", + "name": "next", + "id": 281, + "order": 0 + }, + { + "ligatures": "backward, player6", + "name": "backward", + "id": 282, + "order": 0 + }, + { + "ligatures": "forward2, player7", + "name": "forward2", + "id": 283, + "order": 0 + }, + { + "ligatures": "play3, player8", + "name": "play3", + "id": 284, + "order": 0 + }, + { + "ligatures": "pause2, player9", + "name": "pause2", + "id": 285, + "order": 0 + }, + { + "ligatures": "stop2, player10", + "name": "stop2", + "id": 286, + "order": 0 + }, + { + "ligatures": "backward2, player11", + "name": "backward2", + "id": 287, + "order": 0 + }, + { + "ligatures": "forward3, player12", + "name": "forward3", + "id": 288, + "order": 0 + }, + { + "ligatures": "first, player13", + "name": "first", + "id": 289, + "order": 0 + }, + { + "ligatures": "last, player14", + "name": "last", + "id": 290, + "order": 0 + }, + { + "ligatures": "previous2, player15", + "name": "previous2", + "id": 291, + "order": 0 + }, + { + "ligatures": "next2, player16", + "name": "next2", + "id": 292, + "order": 0 + }, + { + "ligatures": "eject, player17", + "name": "eject", + "id": 293, + "order": 0 + }, + { + "ligatures": "volume-high, volume", + "name": "volume-high", + "id": 294, + "order": 0 + }, + { + "ligatures": "volume-medium, volume2", + "name": "volume-medium", + "id": 295, + "order": 0 + }, + { + "ligatures": "volume-low, volume3", + "name": "volume-low", + "id": 296, + "order": 0 + }, + { + "ligatures": "volume-mute, volume4", + "name": "volume-mute", + "id": 297, + "order": 0 + }, + { + "ligatures": "volume-mute2, volume5", + "name": "volume-mute2", + "id": 298, + "order": 0 + }, + { + "ligatures": "volume-increase, volume6", + "name": "volume-increase", + "id": 299, + "order": 0 + }, + { + "ligatures": "volume-decrease, volume7", + "name": "volume-decrease", + "id": 300, + "order": 0 + }, + { + "ligatures": "loop, repeat", + "name": "loop", + "id": 301, + "order": 0 + }, + { + "ligatures": "loop2, repeat2", + "name": "loop2", + "id": 302, + "order": 0 + }, + { + "ligatures": "infinite", + "name": "infinite", + "id": 303, + "order": 0 + }, + { + "ligatures": "shuffle, random", + "name": "shuffle", + "id": 304, + "order": 0 + }, + { + "ligatures": "arrow-up-left, up-left", + "name": "arrow-up-left", + "id": 305, + "order": 0 + }, + { + "ligatures": "arrow-up, up", + "name": "arrow-up", + "id": 306, + "order": 0 + }, + { + "ligatures": "arrow-up-right, up-right", + "name": "arrow-up-right", + "id": 307, + "order": 0 + }, + { + "ligatures": "arrow-right, right3", + "name": "arrow-right", + "id": 308, + "order": 0 + }, + { + "ligatures": "arrow-down-right, down-right", + "name": "arrow-down-right", + "id": 309, + "order": 0 + }, + { + "ligatures": "arrow-down, down", + "name": "arrow-down", + "id": 310, + "order": 0 + }, + { + "ligatures": "arrow-down-left, down-left", + "name": "arrow-down-left", + "id": 311, + "order": 0 + }, + { + "ligatures": "arrow-left, left3", + "name": "arrow-left", + "id": 312, + "order": 0 + }, + { + "ligatures": "arrow-up-left2, up-left2", + "name": "arrow-up-left2", + "id": 313, + "order": 0 + }, + { + "ligatures": "arrow-up2, up2", + "name": "arrow-up2", + "id": 314, + "order": 0 + }, + { + "ligatures": "arrow-up-right2, up-right2", + "name": "arrow-up-right2", + "id": 315, + "order": 0 + }, + { + "ligatures": "arrow-right2, right4", + "name": "arrow-right2", + "id": 316, + "order": 0 + }, + { + "ligatures": "arrow-down-right2, down-right2", + "name": "arrow-down-right2", + "id": 317, + "order": 0 + }, + { + "ligatures": "arrow-down2, down2", + "name": "arrow-down2", + "id": 318, + "order": 0 + }, + { + "ligatures": "arrow-down-left2, down-left2", + "name": "arrow-down-left2", + "id": 319, + "order": 0 + }, + { + "ligatures": "arrow-left2, left4", + "name": "arrow-left2", + "id": 320, + "order": 0 + }, + { + "ligatures": "circle-up, up3", + "name": "circle-up", + "id": 321, + "order": 0 + }, + { + "ligatures": "circle-right, right5", + "name": "circle-right", + "id": 322, + "order": 0 + }, + { + "ligatures": "circle-down, down3", + "name": "circle-down", + "id": 323, + "order": 0 + }, + { + "ligatures": "circle-left, left5", + "name": "circle-left", + "id": 324, + "order": 0 + }, + { + "ligatures": "tab, arrows", + "name": "tab", + "id": 325, + "order": 0 + }, + { + "ligatures": "move-up, sort", + "name": "move-up", + "id": 326, + "order": 0 + }, + { + "ligatures": "move-down, sort2", + "name": "move-down", + "id": 327, + "order": 0 + }, + { + "ligatures": "sort-alpha-asc, arrange", + "name": "sort-alpha-asc", + "id": 328, + "order": 0 + }, + { + "ligatures": "sort-alpha-desc, arrange2", + "name": "sort-alpha-desc", + "id": 329, + "order": 0 + }, + { + "ligatures": "sort-numeric-asc, arrange3", + "name": "sort-numeric-asc", + "id": 330, + "order": 0 + }, + { + "ligatures": "sort-numberic-desc, arrange4", + "name": "sort-numberic-desc", + "id": 331, + "order": 0 + }, + { + "ligatures": "sort-amount-asc, arrange5", + "name": "sort-amount-asc", + "id": 332, + "order": 0 + }, + { + "ligatures": "sort-amount-desc, arrange6", + "name": "sort-amount-desc", + "id": 333, + "order": 0 + }, + { + "ligatures": "command, cmd", + "name": "command", + "id": 334, + "order": 0 + }, + { + "ligatures": "shift", + "name": "shift", + "id": 335, + "order": 0 + }, + { + "ligatures": "ctrl, control", + "name": "ctrl", + "id": 336, + "order": 0 + }, + { + "ligatures": "opt, option", + "name": "opt", + "id": 337, + "order": 0 + }, + { + "ligatures": "checkbox-checked, checkbox", + "name": "checkbox-checked", + "id": 338, + "order": 0 + }, + { + "ligatures": "checkbox-unchecked, checkbox2", + "name": "checkbox-unchecked", + "id": 339, + "order": 0 + }, + { + "ligatures": "radio-checked, radio-button", + "name": "radio-checked", + "id": 340, + "order": 0 + }, + { + "ligatures": "radio-checked2, radio-button2", + "name": "radio-checked2", + "id": 341, + "order": 0 + }, + { + "ligatures": "radio-unchecked, radio-button3", + "name": "radio-unchecked", + "id": 342, + "order": 0 + }, + { + "ligatures": "crop, resize", + "name": "crop", + "id": 343, + "order": 0 + }, + { + "ligatures": "make-group", + "name": "make-group", + "id": 344, + "order": 0 + }, + { + "ligatures": "ungroup", + "name": "ungroup", + "id": 345, + "order": 0 + }, + { + "ligatures": "scissors, cut", + "name": "scissors", + "id": 346, + "order": 0 + }, + { + "ligatures": "filter, funnel", + "name": "filter", + "id": 347, + "order": 0 + }, + { + "ligatures": "font, typeface", + "name": "font", + "id": 348, + "order": 0 + }, + { + "ligatures": "ligature, typography", + "name": "ligature", + "id": 349, + "order": 0 + }, + { + "ligatures": "ligature2, typography2", + "name": "ligature2", + "id": 350, + "order": 0 + }, + { + "ligatures": "text-height, wysiwyg", + "name": "text-height", + "id": 351, + "order": 0 + }, + { + "ligatures": "text-width, wysiwyg2", + "name": "text-width", + "id": 352, + "order": 0 + }, + { + "ligatures": "font-size, wysiwyg3", + "name": "font-size", + "id": 353, + "order": 0 + }, + { + "ligatures": "bold, wysiwyg4", + "name": "bold", + "id": 354, + "order": 0 + }, + { + "ligatures": "underline, wysiwyg5", + "name": "underline", + "id": 355, + "order": 0 + }, + { + "ligatures": "italic, wysiwyg6", + "name": "italic", + "id": 356, + "order": 0 + }, + { + "ligatures": "strikethrough, wysiwyg7", + "name": "strikethrough", + "id": 357, + "order": 0 + }, + { + "ligatures": "omega, wysiwyg8", + "name": "omega", + "id": 358, + "order": 0 + }, + { + "ligatures": "sigma, wysiwyg9", + "name": "sigma", + "id": 359, + "order": 0 + }, + { + "ligatures": "page-break, wysiwyg10", + "name": "page-break", + "id": 360, + "order": 0 + }, + { + "ligatures": "superscript, wysiwyg11", + "name": "superscript", + "id": 361, + "order": 0 + }, + { + "ligatures": "subscript, wysiwyg12", + "name": "subscript", + "id": 362, + "order": 0 + }, + { + "ligatures": "superscript2, wysiwyg13", + "name": "superscript2", + "id": 363, + "order": 0 + }, + { + "ligatures": "subscript2, wysiwyg14", + "name": "subscript2", + "id": 364, + "order": 0 + }, + { + "ligatures": "text-color, wysiwyg15", + "name": "text-color", + "id": 365, + "order": 0 + }, + { + "ligatures": "pagebreak, wysiwyg16", + "name": "pagebreak", + "id": 366, + "order": 0 + }, + { + "ligatures": "clear-formatting, wysiwyg17", + "name": "clear-formatting", + "id": 367, + "order": 0 + }, + { + "ligatures": "table, wysiwyg18", + "name": "table", + "id": 368, + "order": 0 + }, + { + "ligatures": "table2, wysiwyg19", + "name": "table2", + "id": 369, + "order": 0 + }, + { + "ligatures": "insert-template, wysiwyg20", + "name": "insert-template", + "id": 370, + "order": 0 + }, + { + "ligatures": "pilcrow, wysiwyg21", + "name": "pilcrow", + "id": 371, + "order": 0 + }, + { + "ligatures": "ltr, wysiwyg22", + "name": "ltr", + "id": 372, + "order": 0 + }, + { + "ligatures": "rtl, wysiwyg23", + "name": "rtl", + "id": 373, + "order": 0 + }, + { + "ligatures": "section, wysiwyg24", + "name": "section", + "id": 374, + "order": 0 + }, + { + "ligatures": "paragraph-left, wysiwyg25", + "name": "paragraph-left", + "id": 375, + "order": 0 + }, + { + "ligatures": "paragraph-center, wysiwyg26", + "name": "paragraph-center", + "id": 376, + "order": 0 + }, + { + "ligatures": "paragraph-right, wysiwyg27", + "name": "paragraph-right", + "id": 377, + "order": 0 + }, + { + "ligatures": "paragraph-justify, wysiwyg28", + "name": "paragraph-justify", + "id": 378, + "order": 0 + }, + { + "ligatures": "indent-increase, wysiwyg29", + "name": "indent-increase", + "id": 379, + "order": 0 + }, + { + "ligatures": "indent-decrease, wysiwyg30", + "name": "indent-decrease", + "id": 380, + "order": 0 + }, + { + "ligatures": "share, out", + "name": "share", + "id": 381, + "order": 0 + }, + { + "ligatures": "new-tab, out2", + "name": "new-tab", + "id": 382, + "order": 0 + }, + { + "ligatures": "embed, code", + "name": "embed", + "id": 383, + "order": 0 + }, + { + "ligatures": "embed2, code2", + "name": "embed2", + "id": 384, + "order": 0 + }, + { + "ligatures": "terminal, console", + "name": "terminal", + "id": 385, + "order": 0 + }, + { + "ligatures": "share2, social", + "name": "share2", + "id": 386, + "order": 0 + }, + { + "ligatures": "mail2, contact2", + "name": "mail", + "id": 387, + "order": 0 + }, + { + "ligatures": "mail3, contact3", + "name": "mail2", + "id": 388, + "order": 0 + }, + { + "ligatures": "mail4, contact4", + "name": "mail3", + "id": 389, + "order": 0 + }, + { + "ligatures": "mail5, contact5", + "name": "mail4", + "id": 390, + "order": 0 + }, + { + "name": "amazon", + "ligatures": "amazon, brand", + "id": 391, + "order": 0 + }, + { + "name": "google", + "ligatures": "google, brand2", + "id": 392, + "order": 0 + }, + { + "name": "google2", + "ligatures": "google2, brand3", + "id": 393, + "order": 0 + }, + { + "name": "google3", + "ligatures": "google3, brand4", + "id": 394, + "order": 0 + }, + { + "ligatures": "google-plus, brand5", + "name": "google-plus", + "id": 395, + "order": 0 + }, + { + "ligatures": "google-plus2, brand6", + "name": "google-plus2", + "id": 396, + "order": 0 + }, + { + "ligatures": "google-plus3, brand7", + "name": "google-plus3", + "id": 397, + "order": 0 + }, + { + "name": "hangouts", + "ligatures": "hangouts, brand8", + "id": 398, + "order": 0 + }, + { + "ligatures": "google-drive, brand9", + "name": "google-drive", + "id": 399, + "order": 0 + }, + { + "ligatures": "facebook, brand10", + "name": "facebook", + "id": 400, + "order": 0 + }, + { + "ligatures": "facebook2, brand11", + "name": "facebook2", + "id": 401, + "order": 0 + }, + { + "ligatures": "instagram, brand12", + "name": "instagram", + "id": 402, + "order": 0 + }, + { + "name": "whatsapp", + "ligatures": "whatsapp, brand13", + "id": 403, + "order": 0 + }, + { + "name": "spotify", + "ligatures": "spotify, brand14", + "id": 404, + "order": 0 + }, + { + "name": "telegram", + "ligatures": "telegram, brand15", + "id": 405, + "order": 0 + }, + { + "ligatures": "twitter, brand16", + "name": "twitter", + "id": 406, + "order": 0 + }, + { + "name": "vine", + "ligatures": "vine, brand17", + "id": 407, + "order": 0 + }, + { + "name": "vk", + "ligatures": "vk, brand18", + "id": 408, + "order": 0 + }, + { + "name": "renren", + "ligatures": "renren, brand19", + "id": 409, + "order": 0 + }, + { + "name": "sina-weibo", + "ligatures": "sina-weibo, brand20", + "id": 410, + "order": 0 + }, + { + "ligatures": "feed2, rss", + "name": "rss", + "id": 411, + "order": 0 + }, + { + "ligatures": "feed3, rss2", + "name": "rss2", + "id": 412, + "order": 0 + }, + { + "ligatures": "youtube, brand21", + "name": "youtube", + "id": 413, + "order": 0 + }, + { + "ligatures": "youtube2, brand22", + "name": "youtube2", + "id": 414, + "order": 0 + }, + { + "ligatures": "twitch, brand23", + "name": "twitch", + "id": 415, + "order": 0 + }, + { + "ligatures": "vimeo, brand24", + "name": "vimeo", + "id": 416, + "order": 0 + }, + { + "ligatures": "vimeo2, brand25", + "name": "vimeo2", + "id": 417, + "order": 0 + }, + { + "ligatures": "lanyrd, brand26", + "name": "lanyrd", + "id": 418, + "order": 0 + }, + { + "ligatures": "flickr, brand27", + "name": "flickr", + "id": 419, + "order": 0 + }, + { + "ligatures": "flickr2, brand28", + "name": "flickr2", + "id": 420, + "order": 0 + }, + { + "ligatures": "flickr3, brand29", + "name": "flickr3", + "id": 421, + "order": 0 + }, + { + "ligatures": "flickr4, brand30", + "name": "flickr4", + "id": 422, + "order": 0 + }, + { + "ligatures": "dribbble, brand31", + "name": "dribbble", + "id": 423, + "order": 0 + }, + { + "name": "behance", + "ligatures": "behance, brand32", + "id": 424, + "order": 0 + }, + { + "name": "behance2", + "ligatures": "behance2, brand33", + "id": 425, + "order": 0 + }, + { + "ligatures": "deviantart, brand34", + "name": "deviantart", + "id": 426, + "order": 0 + }, + { + "name": "500px", + "ligatures": "500px, brand35", + "id": 427, + "order": 0 + }, + { + "ligatures": "steam, brand36", + "name": "steam", + "id": 428, + "order": 0 + }, + { + "ligatures": "steam2, brand37", + "name": "steam2", + "id": 429, + "order": 0 + }, + { + "ligatures": "dropbox, brand38", + "name": "dropbox", + "id": 430, + "order": 0 + }, + { + "ligatures": "onedrive, brand39", + "name": "onedrive", + "id": 431, + "order": 0 + }, + { + "ligatures": "github, brand40", + "name": "github", + "id": 432, + "order": 0 + }, + { + "name": "npm", + "ligatures": "npm, brand41", + "id": 433, + "order": 0 + }, + { + "name": "basecamp", + "ligatures": "basecamp, brand42", + "id": 434, + "order": 0 + }, + { + "name": "trello", + "ligatures": "trello, brand43", + "id": 435, + "order": 0 + }, + { + "ligatures": "wordpress, brand44", + "name": "wordpress", + "id": 436, + "order": 0 + }, + { + "ligatures": "joomla, brand45", + "name": "joomla", + "id": 437, + "order": 0 + }, + { + "ligatures": "ello, brand46", + "name": "ello", + "id": 438, + "order": 0 + }, + { + "ligatures": "blogger, brand47", + "name": "blogger", + "id": 439, + "order": 0 + }, + { + "ligatures": "blogger2, brand48", + "name": "blogger2", + "id": 440, + "order": 0 + }, + { + "ligatures": "tumblr, brand49", + "name": "tumblr", + "id": 441, + "order": 0 + }, + { + "ligatures": "tumblr2, brand50", + "name": "tumblr2", + "id": 442, + "order": 0 + }, + { + "ligatures": "yahoo, brand51", + "name": "yahoo", + "id": 443, + "order": 0 + }, + { + "name": "yahoo2", + "ligatures": "yahoo2", + "id": 444, + "order": 0 + }, + { + "ligatures": "tux, brand52", + "name": "tux", + "id": 445, + "order": 0 + }, + { + "ligatures": "apple, brand53", + "name": "appleinc", + "id": 446, + "order": 0 + }, + { + "ligatures": "finder, brand54", + "name": "finder", + "id": 447, + "order": 0 + }, + { + "ligatures": "android, brand55", + "name": "android", + "id": 448, + "order": 0 + }, + { + "ligatures": "windows, brand56", + "name": "windows", + "id": 449, + "order": 0 + }, + { + "ligatures": "windows8, brand57", + "name": "windows8", + "id": 450, + "order": 0 + }, + { + "ligatures": "soundcloud, brand58", + "name": "soundcloud", + "id": 451, + "order": 0 + }, + { + "ligatures": "soundcloud2, brand59", + "name": "soundcloud2", + "id": 452, + "order": 0 + }, + { + "ligatures": "skype, brand60", + "name": "skype", + "id": 453, + "order": 0 + }, + { + "ligatures": "reddit, brand61", + "name": "reddit", + "id": 454, + "order": 0 + }, + { + "name": "hackernews", + "ligatures": "hackernews, brand62", + "id": 455, + "order": 0 + }, + { + "name": "wikipedia", + "ligatures": "wikipedia, brand63", + "id": 456, + "order": 0 + }, + { + "ligatures": "linkedin, brand64", + "name": "linkedin", + "id": 457, + "order": 0 + }, + { + "ligatures": "linkedin2, brand65", + "name": "linkedin2", + "id": 458, + "order": 0 + }, + { + "ligatures": "lastfm, brand66", + "name": "lastfm", + "id": 459, + "order": 0 + }, + { + "ligatures": "lastfm2, brand67", + "name": "lastfm2", + "id": 460, + "order": 0 + }, + { + "ligatures": "delicious, brand68", + "name": "delicious", + "id": 461, + "order": 0 + }, + { + "name": "stumbleupon", + "ligatures": "stumbleupon, brand69", + "id": 462, + "order": 0 + }, + { + "ligatures": "stumbleupon2, brand70", + "name": "stumbleupon2", + "id": 463, + "order": 0 + }, + { + "ligatures": "stackoverflow, brand71", + "name": "stackoverflow", + "id": 464, + "order": 0 + }, + { + "name": "pinterest", + "ligatures": "pinterest, brand72", + "id": 465, + "order": 0 + }, + { + "ligatures": "pinterest2, brand73", + "name": "pinterest2", + "id": 466, + "order": 0 + }, + { + "ligatures": "xing, brand74", + "name": "xing", + "id": 467, + "order": 0 + }, + { + "ligatures": "xing2, brand75", + "name": "xing2", + "codes": [ + 61231 + ], + "id": 468, + "order": 0 + }, + { + "ligatures": "flattr, brand76", + "name": "flattr", + "id": 469, + "order": 0 + }, + { + "ligatures": "foursquare, brand77", + "name": "foursquare", + "id": 470, + "order": 0 + }, + { + "ligatures": "yelp, brand78", + "name": "yelp", + "id": 471, + "order": 0 + }, + { + "ligatures": "paypal, brand79", + "name": "paypal", + "codes": [ + 61234 + ], + "id": 472, + "order": 0 + }, + { + "ligatures": "chrome, browser", + "name": "chrome", + "id": 473, + "order": 0 + }, + { + "ligatures": "firefox, browser2", + "name": "firefox", + "id": 474, + "order": 0 + }, + { + "ligatures": "IE, browser3", + "name": "IE", + "id": 475, + "order": 0 + }, + { + "name": "edge", + "ligatures": "edge, browser4", + "id": 476, + "order": 0 + }, + { + "ligatures": "safari, browser5", + "name": "safari", + "id": 477, + "order": 0 + }, + { + "ligatures": "opera, browser6", + "name": "opera", + "id": 478, + "order": 0 + }, + { + "ligatures": "file-pdf, file10", + "name": "file-pdf", + "id": 479, + "order": 0 + }, + { + "ligatures": "file-openoffice, file11", + "name": "file-openoffice", + "id": 480, + "order": 0 + }, + { + "ligatures": "file-word, file12", + "name": "file-word", + "id": 481, + "order": 0 + }, + { + "ligatures": "file-excel, file13", + "name": "file-excel", + "id": 482, + "order": 0 + }, + { + "ligatures": "libreoffice, file14", + "name": "libreoffice", + "id": 483, + "order": 0 + }, + { + "ligatures": "html-five, w3c", + "name": "html-five", + "id": 484, + "order": 0 + }, + { + "ligatures": "html-five2, w3c2", + "name": "html-five2", + "id": 485, + "order": 0 + }, + { + "ligatures": "css3, w3c3", + "name": "css3", + "id": 486, + "order": 0 + }, + { + "ligatures": "git, brand80", + "name": "git", + "id": 487, + "order": 0 + }, + { + "ligatures": "codepen, brand81", + "name": "codepen", + "id": 488, + "order": 0 + }, + { + "ligatures": "svg", + "name": "svg", + "id": 489, + "order": 0 + }, + { + "ligatures": "IcoMoon, icomoon", + "name": "IcoMoon", + "id": 490, + "order": 0 + } + ], + "id": 3, + "metadata": { + "name": "IcoMoon - Free", + "licenseURL": "https://icomoon.io/#icons-icomoon", + "license": "GPL or CC BY 4.0", + "designerURL": "http://keyamoon.com", + "designer": "Keyamoon", + "url": "https://icomoon.io/#icons-icomoon" + }, + "height": 1024, + "prevSize": 32, + "icons": [ + { + "id": 0, + "paths": [ + "M1024 590.444l-512-397.426-512 397.428v-162.038l512-397.426 512 397.428zM896 576v384h-256v-256h-256v256h-256v-384l384-288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "home", + "house" + ], + "defaultCode": 59648, + "grid": 16 + }, + { + "id": 1, + "paths": [ + "M512 32l-512 512 96 96 96-96v416h256v-192h128v192h256v-416l96 96 96-96-512-512zM512 448c-35.346 0-64-28.654-64-64s28.654-64 64-64c35.346 0 64 28.654 64 64s-28.654 64-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "home", + "house" + ], + "defaultCode": 59649, + "grid": 16 + }, + { + "id": 2, + "paths": [ + "M1024 608l-192-192v-288h-128v160l-192-192-512 512v32h128v320h320v-192h128v192h320v-320h128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "home", + "house" + ], + "defaultCode": 59650, + "grid": 16 + }, + { + "id": 3, + "paths": [ + "M0 1024h512v-1024h-512v1024zM320 128h128v128h-128v-128zM320 384h128v128h-128v-128zM320 640h128v128h-128v-128zM64 128h128v128h-128v-128zM64 384h128v128h-128v-128zM64 640h128v128h-128v-128zM576 320h448v64h-448zM576 1024h128v-256h192v256h128v-576h-448z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "office", + "buildings", + "work" + ], + "defaultCode": 59651, + "grid": 16 + }, + { + "id": 4, + "paths": [ + "M896 256v-128h-896v704c0 35.346 28.654 64 64 64h864c53.022 0 96-42.978 96-96v-544h-128zM832 832h-768v-640h768v640zM128 320h640v64h-640zM512 448h256v64h-256zM512 576h256v64h-256zM512 704h192v64h-192zM128 448h320v320h-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "newspaper", + "news", + "paper" + ], + "defaultCode": 59652, + "grid": 16 + }, + { + "id": 5, + "paths": [ + "M864 0c88.364 0 160 71.634 160 160 0 36.020-11.91 69.258-32 96l-64 64-224-224 64-64c26.742-20.090 59.978-32 96-32zM64 736l-64 288 288-64 592-592-224-224-592 592zM715.578 363.578l-448 448-55.156-55.156 448-448 55.156 55.156z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pencil", + "write", + "edit" + ], + "defaultCode": 59653, + "grid": 16 + }, + { + "id": 6, + "paths": [ + "M384 640l128-64 448-448-64-64-448 448-64 128zM289.3 867.098c-31.632-66.728-65.666-100.762-132.396-132.394l99.096-272.792 128-77.912 384-384h-192l-384 384-192 640 640-192 384-384v-192l-384 384-77.912 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pencil", + "write", + "edit" + ], + "defaultCode": 59654, + "grid": 16 + }, + { + "id": 7, + "paths": [ + "M0 1024c128-384 463-1024 1024-1024-263 211-384 704-576 704s-192 0-192 0l-192 320h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "quill", + "feather", + "write", + "edit" + ], + "defaultCode": 59655, + "grid": 16 + }, + { + "id": 8, + "paths": [ + "M1018.17 291.89l-286.058-286.058c-9.334-9.334-21.644-7.234-27.356 4.666l-38.354 79.904 267.198 267.198 79.904-38.354c11.9-5.712 14-18.022 4.666-27.356z", + "M615.384 135.384l-263.384 21.95c-17.5 2.166-32.080 5.898-37.090 28.752-0.006 0.024-0.012 0.042-0.018 0.066-71.422 343.070-314.892 677.848-314.892 677.848l57.374 57.374 271.986-271.99c-5.996-12.53-9.36-26.564-9.36-41.384 0-53.020 42.98-96 96-96s96 42.98 96 96-42.98 96-96 96c-14.82 0-28.852-3.364-41.384-9.36l-271.988 271.986 57.372 57.374c0 0 334.778-243.47 677.848-314.892 0.024-0.006 0.042-0.012 0.066-0.018 22.854-5.010 26.586-19.59 28.752-37.090l21.95-263.384-273.232-273.232z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pen", + "write", + "edit" + ], + "defaultCode": 59656, + "grid": 16 + }, + { + "id": 9, + "paths": [ + "M384 0v96c73.482 0 144.712 14.37 211.716 42.71 64.768 27.394 122.958 66.632 172.948 116.624s89.228 108.18 116.624 172.948c28.342 67.004 42.712 138.238 42.712 211.718h96c0-353.46-286.54-640-640-640z", + "M384 192v96c94.022 0 182.418 36.614 248.9 103.098 66.486 66.484 103.1 154.878 103.1 248.902h96c0-247.422-200.576-448-448-448z", + "M480 384l-64 64-224 64-192 416 25.374 25.374 232.804-232.804c-1.412-5.286-2.178-10.84-2.178-16.57 0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64c-5.732 0-11.282-0.764-16.568-2.178l-232.804 232.804 25.372 25.374 416-192 64-224 64-64-160-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "blog", + "pen", + "feed", + "publish", + "broadcast", + "write" + ], + "defaultCode": 59657, + "grid": 16 + }, + { + "id": 10, + "paths": [ + "M986.51 37.49c-49.988-49.986-131.032-49.986-181.020 0l-172.118 172.118-121.372-121.372-135.764 135.764 106.426 106.426-472.118 472.118c-8.048 8.048-11.468 18.958-10.3 29.456h-0.244v160c0 17.674 14.328 32 32 32h160c0 0 2.664 0 4 0 9.212 0 18.426-3.516 25.456-10.544l472.118-472.118 106.426 106.426 135.764-135.764-121.372-121.372 172.118-172.118c49.986-49.988 49.986-131.032 0-181.020zM173.090 960h-109.090v-109.090l469.574-469.572 109.088 109.088-469.572 469.574z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eyedropper", + "color", + "color-picker", + "sample" + ], + "defaultCode": 59658, + "grid": 16 + }, + { + "id": 11, + "paths": [ + "M864.626 473.162c-65.754-183.44-205.11-348.15-352.626-473.162-147.516 125.012-286.87 289.722-352.626 473.162-40.664 113.436-44.682 236.562 12.584 345.4 65.846 125.14 198.632 205.438 340.042 205.438s274.196-80.298 340.040-205.44c57.27-108.838 53.25-231.962 12.586-345.398zM738.764 758.956c-43.802 83.252-132.812 137.044-226.764 137.044-55.12 0-108.524-18.536-152.112-50.652 13.242 1.724 26.632 2.652 40.112 2.652 117.426 0 228.668-67.214 283.402-171.242 44.878-85.292 40.978-173.848 23.882-244.338 14.558 28.15 26.906 56.198 36.848 83.932 22.606 63.062 40.024 156.34-5.368 242.604z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "droplet", + "color", + "water" + ], + "defaultCode": 59659, + "grid": 16 + }, + { + "id": 12, + "paths": [ + "M1024 576v-384h-192v-64c0-35.2-28.8-64-64-64h-704c-35.2 0-64 28.8-64 64v192c0 35.2 28.8 64 64 64h704c35.2 0 64-28.8 64-64v-64h128v256h-576v128h-32c-17.674 0-32 14.326-32 32v320c0 17.674 14.326 32 32 32h128c17.674 0 32-14.326 32-32v-320c0-17.674-14.326-32-32-32h-32v-64h576zM768 192h-704v-64h704v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paint-format", + "format", + "color" + ], + "defaultCode": 59660, + "grid": 16 + }, + { + "id": 13, + "paths": [ + "M959.884 128c0.040 0.034 0.082 0.076 0.116 0.116v767.77c-0.034 0.040-0.076 0.082-0.116 0.116h-895.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.772c0.034-0.040 0.076-0.082 0.114-0.114h895.77zM960 64h-896c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h896c35.2 0 64-28.8 64-64v-768c0-35.2-28.8-64-64-64v0z", + "M832 288c0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96 96 42.98 96 96z", + "M896 832h-768v-128l224-384 256 320h64l224-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "image", + "picture", + "photo", + "graphic" + ], + "defaultCode": 59661, + "grid": 16 + }, + { + "id": 14, + "paths": [ + "M1088 128h-64v-64c0-35.2-28.8-64-64-64h-896c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h64v64c0 35.2 28.8 64 64 64h896c35.2 0 64-28.8 64-64v-768c0-35.2-28.8-64-64-64zM128 192v640h-63.886c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v63.884h-768c-35.2 0-64 28.8-64 64v0zM1088 959.884c-0.034 0.040-0.076 0.082-0.116 0.116h-895.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v767.768z", + "M960 352c0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96 96 42.98 96 96z", + "M1024 896h-768v-128l224-384 256 320h64l224-192z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "images", + "pictures", + "photos", + "graphics" + ], + "defaultCode": 59662, + "grid": 16 + }, + { + "id": 15, + "paths": [ + "M304 608c0 114.876 93.124 208 208 208s208-93.124 208-208-93.124-208-208-208-208 93.124-208 208zM960 256h-224c-16-64-32-128-96-128h-256c-64 0-80 64-96 128h-224c-35.2 0-64 28.8-64 64v576c0 35.2 28.8 64 64 64h896c35.2 0 64-28.8 64-64v-576c0-35.2-28.8-64-64-64zM512 892c-156.85 0-284-127.148-284-284 0-156.85 127.15-284 284-284 156.852 0 284 127.15 284 284 0 156.852-127.146 284-284 284zM960 448h-128v-64h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "camera", + "photo", + "picture", + "image" + ], + "defaultCode": 59663, + "grid": 16 + }, + { + "id": 16, + "paths": [ + "M288 576h-64v448h64c17.6 0 32-14.4 32-32v-384c0-17.6-14.4-32-32-32z", + "M736 576c-17.602 0-32 14.4-32 32v384c0 17.6 14.398 32 32 32h64v-448h-64z", + "M1024 512c0-282.77-229.23-512-512-512s-512 229.23-512 512c0 61.412 10.83 120.29 30.656 174.848-19.478 33.206-30.656 71.87-30.656 113.152 0 112.846 83.448 206.188 192 221.716v-443.418c-31.914 4.566-61.664 15.842-87.754 32.378-5.392-26.718-8.246-54.364-8.246-82.676 0-229.75 186.25-416 416-416s416 186.25 416 416c0 28.314-2.83 55.968-8.22 82.696-26.1-16.546-55.854-27.848-87.78-32.418v443.44c108.548-15.532 192-108.874 192-221.714 0-41.274-11.178-79.934-30.648-113.138 19.828-54.566 30.648-113.452 30.648-174.866z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "headphones", + "headset", + "music", + "audio" + ], + "defaultCode": 59664, + "grid": 16 + }, + { + "id": 17, + "paths": [ + "M960 0h64v736c0 88.366-100.29 160-224 160s-224-71.634-224-160c0-88.368 100.29-160 224-160 62.684 0 119.342 18.4 160 48.040v-368.040l-512 113.778v494.222c0 88.366-100.288 160-224 160s-224-71.634-224-160c0-88.368 100.288-160 224-160 62.684 0 119.342 18.4 160 48.040v-624.040l576-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "music", + "song", + "audio", + "sound", + "note" + ], + "defaultCode": 59665, + "grid": 16 + }, + { + "id": 18, + "paths": [ + "M981.188 160.108c-143.632-20.65-302.332-32.108-469.186-32.108-166.86 0-325.556 11.458-469.194 32.108-27.53 107.726-42.808 226.75-42.808 351.892 0 125.14 15.278 244.166 42.808 351.89 143.638 20.652 302.336 32.11 469.194 32.11 166.854 0 325.552-11.458 469.186-32.11 27.532-107.724 42.812-226.75 42.812-351.89 0-125.142-15.28-244.166-42.812-351.892zM384.002 704v-384l320 192-320 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "play", + "video", + "movie" + ], + "defaultCode": 59666, + "grid": 16 + }, + { + "id": 19, + "paths": [ + "M0 128v768h1024v-768h-1024zM192 832h-128v-128h128v128zM192 576h-128v-128h128v128zM192 320h-128v-128h128v128zM768 832h-512v-640h512v640zM960 832h-128v-128h128v128zM960 576h-128v-128h128v128zM960 320h-128v-128h128v128zM384 320v384l256-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "film", + "video", + "movie", + "tape", + "play" + ], + "defaultCode": 59667, + "grid": 16 + }, + { + "id": 20, + "paths": [ + "M384 288c0-88.366 71.634-160 160-160s160 71.634 160 160c0 88.366-71.634 160-160 160s-160-71.634-160-160zM0 288c0-88.366 71.634-160 160-160s160 71.634 160 160c0 88.366-71.634 160-160 160s-160-71.634-160-160zM768 608v-96c0-35.2-28.8-64-64-64h-640c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h640c35.2 0 64-28.8 64-64v-96l256 160v-448l-256 160zM640 768h-512v-192h512v192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "video-camera", + "video", + "media", + "film", + "movie" + ], + "defaultCode": 59668, + "grid": 16 + }, + { + "id": 21, + "paths": [ + "M864 192h-512c-88 0-160 72-160 160v512c0 88 72 160 160 160h512c88 0 160-72 160-160v-512c0-88-72-160-160-160zM416 896c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM416 512c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM608 704c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM800 896c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM800 512c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM828.76 128c-14.93-72.804-79.71-128-156.76-128h-512c-88 0-160 72-160 160v512c0 77.046 55.196 141.83 128 156.76v-636.76c0-35.2 28.8-64 64-64h636.76z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "dice", + "game", + "chance", + "luck", + "random", + "gample" + ], + "defaultCode": 59669, + "grid": 16 + }, + { + "id": 22, + "paths": [ + "M964.73 178.804c-93.902-109.45-233.21-178.804-388.73-178.804-282.77 0-512 229.23-512 512s229.23 512 512 512c155.52 0 294.828-69.356 388.728-178.804l-324.728-333.196 324.73-333.196zM704 120.602c39.432 0 71.398 31.964 71.398 71.398 0 39.432-31.966 71.398-71.398 71.398s-71.398-31.966-71.398-71.398c0-39.432 31.966-71.398 71.398-71.398z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pacman", + "game", + "arcade" + ], + "defaultCode": 59670, + "grid": 16 + }, + { + "id": 23, + "paths": [ + "M817.57 348.15c-193.566-143.858-260.266-259.018-305.566-348.148v0c-0.004 0-0.004-0.002-0.004-0.002v0.002c-45.296 89.13-112 204.292-305.566 348.148-330.036 245.286-19.376 587.668 253.758 399.224-17.796 116.93-78.53 202.172-140.208 238.882v37.744h384.032v-37.74c-61.682-36.708-122.41-121.954-140.212-238.884 273.136 188.446 583.8-153.94 253.766-399.226z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spades", + "cards", + "poker" + ], + "defaultCode": 59671, + "grid": 16 + }, + { + "id": 24, + "paths": [ + "M786.832 392.772c-59.032 0-112.086 24.596-149.852 64.694-15.996 16.984-43.762 37.112-73.8 54.81 14.11-53.868 58.676-121.7 89.628-151.456 39.64-38.17 63.984-91.83 63.984-151.5 0.006-114.894-91.476-208.096-204.788-209.32-113.32 1.222-204.796 94.426-204.796 209.318 0 59.672 24.344 113.33 63.986 151.5 30.954 29.756 75.52 97.588 89.628 151.456-30.042-17.7-57.806-37.826-73.8-54.81-37.768-40.098-90.82-64.694-149.85-64.694-114.386 0-207.080 93.664-207.080 209.328 0 115.638 92.692 209.338 207.080 209.338 59.042 0 112.082-25.356 149.85-65.452 16.804-17.872 46.444-40.138 78.292-58.632-3.002 147.692-73.532 256.168-145.318 298.906v37.742h384.014v-37.74c-71.792-42.736-142.32-151.216-145.32-298.906 31.852 18.494 61.488 40.768 78.292 58.632 37.766 40.094 90.808 65.452 149.852 65.452 114.386 0 207.078-93.7 207.078-209.338-0.002-115.664-92.692-209.328-207.080-209.328z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clubs", + "cards", + "poker" + ], + "defaultCode": 59672, + "grid": 16 + }, + { + "id": 25, + "paths": [ + "M512 0l-320 512 320 512 320-512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "diamonds", + "cards", + "poker" + ], + "defaultCode": 59673, + "grid": 16 + }, + { + "id": 26, + "paths": [ + "M1024 429.256c0-200.926-58.792-363.938-131.482-365.226 0.292-0.006 0.578-0.030 0.872-0.030h-82.942c0 0-194.8 146.336-475.23 203.754-8.56 45.292-14.030 99.274-14.030 161.502s5.466 116.208 14.030 161.5c280.428 57.418 475.23 203.756 475.23 203.756h82.942c-0.292 0-0.578-0.024-0.872-0.032 72.696-1.288 131.482-164.298 131.482-365.224zM864.824 739.252c-9.382 0-19.532-9.742-24.746-15.548-12.63-14.064-24.792-35.96-35.188-63.328-23.256-61.232-36.066-143.31-36.066-231.124 0-87.81 12.81-169.89 36.066-231.122 10.394-27.368 22.562-49.266 35.188-63.328 5.214-5.812 15.364-15.552 24.746-15.552 9.38 0 19.536 9.744 24.744 15.552 12.634 14.064 24.796 35.958 35.188 63.328 23.258 61.23 36.068 143.312 36.068 231.122 0 87.804-12.81 169.888-36.068 231.124-10.39 27.368-22.562 49.264-35.188 63.328-5.208 5.806-15.36 15.548-24.744 15.548zM251.812 429.256c0-51.95 3.81-102.43 11.052-149.094-47.372 6.554-88.942 10.324-140.34 10.324-67.058 0-67.058 0-67.058 0l-55.466 94.686v88.17l55.46 94.686c0 0 0 0 67.060 0 51.398 0 92.968 3.774 140.34 10.324-7.236-46.664-11.048-97.146-11.048-149.096zM368.15 642.172l-127.998-24.51 81.842 321.544c4.236 16.634 20.744 25.038 36.686 18.654l118.556-47.452c15.944-6.376 22.328-23.964 14.196-39.084l-123.282-229.152zM864.824 548.73c-3.618 0-7.528-3.754-9.538-5.992-4.87-5.42-9.556-13.86-13.562-24.408-8.962-23.6-13.9-55.234-13.9-89.078s4.938-65.478 13.9-89.078c4.006-10.548 8.696-18.988 13.562-24.408 2.010-2.24 5.92-5.994 9.538-5.994 3.616 0 7.53 3.756 9.538 5.994 4.87 5.42 9.556 13.858 13.56 24.408 8.964 23.598 13.902 55.234 13.902 89.078 0 33.842-4.938 65.478-13.902 89.078-4.004 10.548-8.696 18.988-13.56 24.408-2.008 2.238-5.92 5.992-9.538 5.992z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bullhorn", + "megaphone", + "announcement", + "advertisement", + "news" + ], + "defaultCode": 59674, + "grid": 16 + }, + { + "id": 27, + "paths": [ + "M640 576c105.87 0 201.87 43.066 271.402 112.598l-90.468 90.468c-46.354-46.356-110.356-75.066-180.934-75.066s-134.578 28.71-180.934 75.066l-90.468-90.468c69.532-69.532 165.532-112.598 271.402-112.598zM187.452 507.452c120.88-120.88 281.598-187.452 452.548-187.452s331.668 66.572 452.55 187.452l-90.51 90.508c-96.706-96.704-225.28-149.96-362.040-149.96-136.762 0-265.334 53.256-362.038 149.962l-90.51-90.51zM988.784 134.438c106.702 45.132 202.516 109.728 284.782 191.996v0l-90.508 90.508c-145.056-145.056-337.92-224.942-543.058-224.942-205.14 0-398 79.886-543.058 224.942l-90.51-90.51c82.268-82.266 178.082-146.862 284.784-191.994 110.504-46.738 227.852-70.438 348.784-70.438s238.278 23.7 348.784 70.438zM576 896c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" + ], + "width": 1280, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "connection", + "wifi", + "wave" + ], + "defaultCode": 59675, + "grid": 16 + }, + { + "id": 28, + "paths": [ + "M1024 512c0-282.77-229.23-512-512-512s-512 229.23-512 512c0 220.054 138.836 407.664 333.686 480.068l-13.686 31.932h384l-13.686-31.932c194.85-72.404 333.686-260.014 333.686-480.068zM486.79 634.826c-22.808-9.788-38.79-32.436-38.79-58.826 0-35.346 28.654-64 64-64s64 28.654 64 64c0 26.39-15.978 49.044-38.786 58.834l-25.214-58.834-25.21 58.826zM538.268 637.292c58.092-12.118 101.732-63.602 101.732-125.292 0-70.694-57.306-128-128-128-70.692 0-128 57.306-128 128 0 61.692 43.662 113.122 101.76 125.228l-74.624 174.122c-91.23-39.15-155.136-129.784-155.136-235.35 0-141.384 114.616-268 256-268s256 126.616 256 268c0 105.566-63.906 196.2-155.136 235.35l-74.596-174.058zM688.448 987.708l-73.924-172.486c126.446-42.738 217.476-162.346 217.476-303.222 0-176.73-143.268-320-320-320-176.73 0-320 143.27-320 320 0 140.876 91.030 260.484 217.476 303.222l-73.924 172.486c-159.594-68.488-271.386-227.034-271.386-411.708 0-247.332 200.502-459.834 447.834-459.834s447.834 212.502 447.834 459.834c0 184.674-111.792 343.22-271.386 411.708z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "podcast", + "broadcast", + "live", + "radio", + "feed" + ], + "defaultCode": 59676, + "grid": 16 + }, + { + "id": 29, + "paths": [ + "M384 512c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM664.348 230.526c99.852 54.158 167.652 159.898 167.652 281.474s-67.8 227.316-167.652 281.474c44.066-70.126 71.652-170.27 71.652-281.474s-27.586-211.348-71.652-281.474zM288 512c0 111.204 27.584 211.348 71.652 281.474-99.852-54.16-167.652-159.898-167.652-281.474s67.8-227.314 167.652-281.474c-44.068 70.126-71.652 170.27-71.652 281.474zM96 512c0 171.9 54.404 326.184 140.652 431.722-142.302-90.948-236.652-250.314-236.652-431.722s94.35-340.774 236.652-431.722c-86.248 105.538-140.652 259.822-140.652 431.722zM787.352 80.28c142.298 90.946 236.648 250.312 236.648 431.72s-94.35 340.774-236.648 431.72c86.244-105.536 140.648-259.82 140.648-431.72s-54.404-326.184-140.648-431.72z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "feed", + "wave", + "radio", + "live", + "broadcast" + ], + "defaultCode": 59677, + "grid": 16 + }, + { + "id": 30, + "paths": [ + "M480 704c88.366 0 160-71.634 160-160v-384c0-88.366-71.634-160-160-160s-160 71.634-160 160v384c0 88.366 71.636 160 160 160zM704 448v96c0 123.71-100.29 224-224 224-123.712 0-224-100.29-224-224v-96h-64v96c0 148.238 112.004 270.3 256 286.22v129.78h-128v64h320v-64h-128v-129.78c143.994-15.92 256-137.982 256-286.22v-96h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mic", + "microphone", + "voice", + "audio" + ], + "defaultCode": 59678, + "grid": 16 + }, + { + "id": 31, + "paths": [ + "M896 128v832h-672c-53.026 0-96-42.98-96-96s42.974-96 96-96h608v-768h-640c-70.398 0-128 57.6-128 128v768c0 70.4 57.602 128 128 128h768v-896h-64z", + "M224.056 832v0c-0.018 0.002-0.038 0-0.056 0-17.672 0-32 14.326-32 32s14.328 32 32 32c0.018 0 0.038-0.002 0.056-0.002v0.002h607.89v-64h-607.89z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "book", + "read", + "reading" + ], + "defaultCode": 59679, + "grid": 16 + }, + { + "id": 32, + "paths": [ + "M224 128h-192c-17.6 0-32 14.4-32 32v704c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-704c0-17.6-14.4-32-32-32zM192 320h-128v-64h128v64z", + "M544 128h-192c-17.6 0-32 14.4-32 32v704c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-704c0-17.6-14.4-32-32-32zM512 320h-128v-64h128v64z", + "M765.088 177.48l-171.464 86.394c-15.716 7.918-22.096 27.258-14.178 42.976l287.978 571.548c7.918 15.718 27.258 22.098 42.976 14.178l171.464-86.392c15.716-7.92 22.096-27.26 14.178-42.974l-287.978-571.55c-7.92-15.718-27.26-22.1-42.976-14.18z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "books", + "library", + "archive" + ], + "defaultCode": 59680, + "grid": 16 + }, + { + "id": 33, + "paths": [ + "M1024 960v-64h-64v-384h64v-64h-192v64h64v384h-192v-384h64v-64h-192v64h64v384h-192v-384h64v-64h-192v64h64v384h-192v-384h64v-64h-192v64h64v384h-64v64h-64v64h1088v-64h-64z", + "M512 0h64l512 320v64h-1088v-64l512-320z" + ], + "width": 1088, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "library", + "bank", + "building" + ], + "defaultCode": 59681, + "grid": 16 + }, + { + "id": 34, + "paths": [ + "M864 0h-768c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h768c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM832 896h-704v-768h704v768zM256 448h448v64h-448zM256 576h448v64h-448zM256 704h448v64h-448zM256 320h448v64h-448z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-text", + "file", + "document", + "list", + "paper" + ], + "defaultCode": 59682, + "grid": 16 + }, + { + "id": 35, + "paths": [ + "M864 0h-768c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h768c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM832 896h-704v-768h704v768zM256 576h448v64h-448zM256 704h448v64h-448zM320 288c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM480 384h-128c-52.8 0-96 28.8-96 64v64h320v-64c0-35.2-43.2-64-96-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "profile", + "file", + "document", + "page", + "user", + "paper" + ], + "defaultCode": 59683, + "grid": 16 + }, + { + "id": 36, + "paths": [ + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-empty", + "file", + "document", + "paper", + "page", + "new", + "empty", + "blank" + ], + "defaultCode": 59684, + "grid": 16 + }, + { + "id": 37, + "paths": [ + "M917.806 357.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-368c-44.114 0-80 35.888-80 80v736c0 44.112 35.886 80 80 80h608c44.112 0 80-35.888 80-80v-496c0-14.332-4.372-39.35-42.194-90.924zM785.374 302.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-608c-8.672 0-16-7.328-16-16v-736c0-8.672 7.328-16 16-16 0 0 367.956-0.002 368 0v224c0 17.672 14.324 32 32 32h224v496z", + "M602.924 42.196c-51.574-37.822-76.592-42.196-90.924-42.196h-368c-44.112 0-80 35.888-80 80v736c0 38.632 27.528 70.958 64 78.39v-814.39c0-8.672 7.328-16 16-16h486.876c-9.646-7.92-19.028-15.26-27.952-21.804z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "files-empty", + "files", + "documents", + "papers", + "pages" + ], + "defaultCode": 59685, + "grid": 16 + }, + { + "id": 38, + "paths": [ + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z", + "M736 832h-448c-17.672 0-32-14.326-32-32s14.328-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32z", + "M736 704h-448c-17.672 0-32-14.326-32-32s14.328-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32z", + "M736 576h-448c-17.672 0-32-14.326-32-32s14.328-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-text", + "file", + "document", + "list", + "paper", + "page" + ], + "defaultCode": 59686, + "grid": 16 + }, + { + "id": 39, + "paths": [ + "M832 896h-640v-128l192-320 263 320 185-128v256z", + "M832 480c0 53.020-42.98 96-96 96-53.022 0-96-42.98-96-96s42.978-96 96-96c53.020 0 96 42.98 96 96z", + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-picture", + "file", + "document", + "file-image" + ], + "defaultCode": 59687, + "grid": 16 + }, + { + "id": 40, + "paths": [ + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z", + "M756.288 391.252c-7.414-6.080-17.164-8.514-26.562-6.632l-320 64c-14.958 2.994-25.726 16.126-25.726 31.38v236.876c-18.832-8.174-40.678-12.876-64-12.876-70.692 0-128 42.98-128 96s57.308 96 128 96 128-42.98 128-96v-229.766l256-51.202v133.842c-18.832-8.174-40.678-12.876-64-12.876-70.692 0-128 42.98-128 96s57.308 96 128 96 128-42.98 128-96v-319.998c0-9.586-4.298-18.668-11.712-24.748z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-music", + "file", + "document", + "file-song", + "file-audio" + ], + "defaultCode": 59688, + "grid": 16 + }, + { + "id": 41, + "paths": [ + "M384 384l320 224-320 224v-448z", + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-play", + "file", + "document", + "file-media", + "file-video" + ], + "defaultCode": 59689, + "grid": 16 + }, + { + "id": 42, + "paths": [ + "M917.806 229.076c-22.208-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.594-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.882 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0 0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.98 17.78 50.678 41.878 81.374 72.572v0 0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.32 32 32 32h224v624z", + "M256 512h320v320h-320v-320z", + "M576 640l192-128v320l-192-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-video", + "file", + "document", + "file-camera" + ], + "defaultCode": 59690, + "grid": 16 + }, + { + "id": 43, + "paths": [ + "M917.806 229.076c-22.208-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.884 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0 0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.98 17.78 50.678 41.878 81.374 72.572v0 0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.322 32 32 32h224v624z", + "M256 64h128v64h-128v-64z", + "M384 128h128v64h-128v-64z", + "M256 192h128v64h-128v-64z", + "M384 256h128v64h-128v-64z", + "M256 320h128v64h-128v-64z", + "M384 384h128v64h-128v-64z", + "M256 448h128v64h-128v-64z", + "M384 512h128v64h-128v-64z", + "M256 848c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-80v-64h-128v272zM448 768v64h-128v-64h128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-zip", + "file", + "document", + "file-compressed", + "file-type", + "file-format" + ], + "defaultCode": 59691, + "grid": 16 + }, + { + "id": 44, + "paths": [ + "M640 256v-256h-448l-192 192v576h384v256h640v-768h-384zM192 90.51v101.49h-101.49l101.49-101.49zM64 704v-448h192v-192h320v192l-192 192v256h-320zM576 346.51v101.49h-101.49l101.49-101.49zM960 960h-512v-448h192v-192h320v640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "copy", + "duplicate", + "files", + "pages", + "papers", + "documents" + ], + "defaultCode": 59692, + "grid": 16 + }, + { + "id": 45, + "paths": [ + "M704 128h-128v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-128v128h512v-128zM512 128h-128v-63.886c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114v63.886zM832 320v-160c0-17.6-14.4-32-32-32h-64v64h32v128h-192l-192 192v256h-256v-576h32v-64h-64c-17.602 0-32 14.4-32 32v640c0 17.6 14.398 32 32 32h288v192h640v-704h-192zM576 410.51v101.49h-101.49l101.49-101.49zM960 960h-512v-384h192v-192h320v576z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paste", + "clipboard-file" + ], + "defaultCode": 59693, + "grid": 16 + }, + { + "id": 46, + "paths": [ + "M1024 320l-512-256-512 256 512 256 512-256zM512 148.97l342.058 171.030-342.058 171.030-342.058-171.030 342.058-171.030zM921.444 460.722l102.556 51.278-512 256-512-256 102.556-51.278 409.444 204.722zM921.444 652.722l102.556 51.278-512 256-512-256 102.556-51.278 409.444 204.722z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stack", + "layers" + ], + "defaultCode": 59694, + "grid": 16 + }, + { + "id": 47, + "paths": [ + "M448 128l128 128h448v704h-1024v-832z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder", + "directory", + "category", + "browse" + ], + "defaultCode": 59695, + "grid": 16 + }, + { + "id": 48, + "paths": [ + "M832 960l192-512h-832l-192 512zM128 384l-128 576v-832h288l128 128h416v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-open", + "directory", + "category", + "browse" + ], + "defaultCode": 59696, + "grid": 16 + }, + { + "id": 49, + "paths": [ + "M576 256l-128-128h-448v832h1024v-704h-448zM704 704h-128v128h-128v-128h-128v-128h128v-128h128v128h128v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-plus", + "directory", + "folder-add" + ], + "defaultCode": 59697, + "grid": 16 + }, + { + "id": 50, + "paths": [ + "M576 256l-128-128h-448v832h1024v-704h-448zM704 704h-384v-128h384v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-minus", + "directory", + "folder-remove" + ], + "defaultCode": 59698, + "grid": 16 + }, + { + "id": 51, + "paths": [ + "M576 256l-128-128h-448v832h1024v-704h-448zM512 864l-224-224h160v-256h128v256h160l-224 224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-download", + "directory", + "folder-save" + ], + "defaultCode": 59699, + "grid": 16 + }, + { + "id": 52, + "paths": [ + "M576 256l-128-128h-448v832h1024v-704h-448zM512 480l224 224h-160v256h-128v-256h-160l224-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-upload", + "directory", + "folder-load" + ], + "defaultCode": 59700, + "grid": 16 + }, + { + "id": 53, + "paths": [ + "M976 0h-384c-26.4 0-63.274 15.274-81.942 33.942l-476.116 476.116c-18.668 18.668-18.668 49.214 0 67.882l412.118 412.118c18.668 18.668 49.214 18.668 67.882 0l476.118-476.118c18.666-18.666 33.94-55.54 33.94-81.94v-384c0-26.4-21.6-48-48-48zM736 384c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "price-tag" + ], + "defaultCode": 59701, + "grid": 16 + }, + { + "id": 54, + "paths": [ + "M1232 0h-384c-26.4 0-63.274 15.274-81.942 33.942l-476.116 476.116c-18.668 18.668-18.668 49.214 0 67.882l412.118 412.118c18.668 18.668 49.214 18.668 67.882 0l476.118-476.118c18.666-18.666 33.94-55.54 33.94-81.94v-384c0-26.4-21.6-48-48-48zM992 384c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96z", + "M128 544l544-544h-80c-26.4 0-63.274 15.274-81.942 33.942l-476.116 476.116c-18.668 18.668-18.668 49.214 0 67.882l412.118 412.118c18.668 18.668 49.214 18.668 67.882 0l30.058-30.058-416-416z" + ], + "width": 1280, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "price-tags" + ], + "defaultCode": 59702, + "grid": 16 + }, + { + "id": 55, + "paths": [ + "M0 128h128v640h-128zM192 128h64v640h-64zM320 128h64v640h-64zM512 128h64v640h-64zM768 128h64v640h-64zM960 128h64v640h-64zM640 128h32v640h-32zM448 128h32v640h-32zM864 128h32v640h-32zM0 832h64v64h-64zM192 832h64v64h-64zM320 832h64v64h-64zM640 832h64v64h-64zM960 832h64v64h-64zM768 832h128v64h-128zM448 832h128v64h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "barcode" + ], + "defaultCode": 59703, + "grid": 16 + }, + { + "id": 56, + "paths": [ + "M320 64h-256v256h256v-256zM384 0v0 384h-384v-384h384zM128 128h128v128h-128zM960 64h-256v256h256v-256zM1024 0v0 384h-384v-384h384zM768 128h128v128h-128zM320 704h-256v256h256v-256zM384 640v0 384h-384v-384h384zM128 768h128v128h-128zM448 0h64v64h-64zM512 64h64v64h-64zM448 128h64v64h-64zM512 192h64v64h-64zM448 256h64v64h-64zM512 320h64v64h-64zM448 384h64v64h-64zM448 512h64v64h-64zM512 576h64v64h-64zM448 640h64v64h-64zM512 704h64v64h-64zM448 768h64v64h-64zM512 832h64v64h-64zM448 896h64v64h-64zM512 960h64v64h-64zM960 512h64v64h-64zM64 512h64v64h-64zM128 448h64v64h-64zM0 448h64v64h-64zM256 448h64v64h-64zM320 512h64v64h-64zM384 448h64v64h-64zM576 512h64v64h-64zM640 448h64v64h-64zM704 512h64v64h-64zM768 448h64v64h-64zM832 512h64v64h-64zM896 448h64v64h-64zM960 640h64v64h-64zM576 640h64v64h-64zM640 576h64v64h-64zM704 640h64v64h-64zM832 640h64v64h-64zM896 576h64v64h-64zM960 768h64v64h-64zM576 768h64v64h-64zM640 704h64v64h-64zM768 704h64v64h-64zM832 768h64v64h-64zM896 704h64v64h-64zM960 896h64v64h-64zM640 832h64v64h-64zM704 896h64v64h-64zM768 832h64v64h-64zM832 896h64v64h-64zM640 960h64v64h-64zM768 960h64v64h-64zM896 960h64v64h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "qrcode" + ], + "defaultCode": 59704, + "grid": 16 + }, + { + "id": 57, + "paths": [ + "M575.996 320l127.998 127.998-255.994 255.994-127.998-127.998zM1001.526 297.504l-73.516-73.516-32.008 32.008c-16.378 16.38-39.010 26.51-64 26.51-49.988 0-90.514-40.522-90.514-90.51 0-25.002 10.14-47.638 26.534-64.018l31.988-31.986-73.518-73.516c-29.968-29.968-79.008-29.968-108.976 0l-595.040 595.038c-29.966 29.968-29.966 79.010 0 108.976l73.52 73.518 31.962-31.964c16.382-16.406 39.030-26.552 64.044-26.552 49.988 0 90.51 40.524 90.51 90.51 0 25.006-10.14 47.64-26.534 64.022l-31.984 31.986 73.516 73.518c29.966 29.966 79.008 29.966 108.976 0l595.040-595.040c29.964-29.976 29.964-79.016 0-108.984zM448.002 831.996l-256-256 384-384 256 256-384 384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ticket", + "theater", + "cinema" + ], + "defaultCode": 59705, + "grid": 16 + }, + { + "id": 58, + "paths": [ + "M384 928c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M1024 928c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M1024 512v-384h-768c0-35.346-28.654-64-64-64h-192v64h128l48.074 412.054c-29.294 23.458-48.074 59.5-48.074 99.946 0 70.696 57.308 128 128 128h768v-64h-768c-35.346 0-64-28.654-64-64 0-0.218 0.014-0.436 0.016-0.656l831.984-127.344z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cart", + "purchase", + "ecommerce", + "shopping" + ], + "defaultCode": 59706, + "grid": 16 + }, + { + "id": 59, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480 0 265.098 214.904 480 480 480 265.098 0 480-214.902 480-480 0-265.096-214.902-480-480-480zM480 928c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM512 512v-128h128v-64h-128v-64h-64v64h-128v256h128v128h-128v64h128v64h64v-64h128.002l-0.002-256h-128zM448 512h-64v-128h64v128zM576.002 704h-64.002v-128h64.002v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "coin-dollar", + "money", + "cash", + "currency-dollar" + ], + "defaultCode": 59707, + "grid": 16 + }, + { + "id": 60, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480s214.904 480 480 480c265.098 0 480-214.902 480-480s-214.902-480-480-480zM480 928c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.076 0 384 171.922 384 384s-171.924 384-384 384z", + "M670.824 644.34c-15.27-8.884-34.862-3.708-43.75 11.57-17.256 29.662-49.088 48.090-83.074 48.090h-128c-41.716 0-77.286-26.754-90.496-64h154.496c17.672 0 32-14.326 32-32s-14.328-32-32-32h-160v-64h160c17.672 0 32-14.328 32-32s-14.328-32-32-32h-154.496c13.21-37.246 48.78-64 90.496-64h128c33.986 0 65.818 18.426 83.074 48.090 8.888 15.276 28.478 20.456 43.752 11.568 15.276-8.888 20.456-28.476 11.568-43.752-28.672-49.288-81.702-79.906-138.394-79.906h-128c-77.268 0-141.914 55.056-156.78 128h-35.22c-17.672 0-32 14.328-32 32s14.328 32 32 32h32v64h-32c-17.672 0-32 14.326-32 32s14.328 32 32 32h35.22c14.866 72.944 79.512 128 156.78 128h128c56.692 0 109.72-30.62 138.394-79.91 8.888-15.276 3.708-34.864-11.57-43.75z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "coin-euro", + "money", + "cash", + "currency-euro" + ], + "defaultCode": 59708, + "grid": 16 + }, + { + "id": 61, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480s214.904 480 480 480c265.098 0 480-214.902 480-480s-214.902-480-480-480zM480 928c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384 384s-171.926 384-384 384z", + "M608 704h-224v-128h96c17.672 0 32-14.326 32-32s-14.328-32-32-32h-96v-32c0-52.934 43.066-96 96-96 34.17 0 66.042 18.404 83.18 48.030 8.85 15.298 28.426 20.526 43.722 11.676 15.296-8.848 20.526-28.424 11.676-43.722-28.538-49.336-81.638-79.984-138.578-79.984-88.224 0-160 71.776-160 160v32h-32c-17.672 0-32 14.326-32 32s14.328 32 32 32h32v192h288c17.674 0 32-14.326 32-32s-14.326-32-32-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "coin-pound", + "money", + "cash", + "currency-pound" + ], + "defaultCode": 59709, + "grid": 16 + }, + { + "id": 62, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480s214.904 480 480 480c265.098 0 480-214.902 480-480s-214.902-480-480-480zM480 928c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.076 0 384 171.922 384 384s-171.924 384-384 384z", + "M608 576c17.674 0 32-14.326 32-32s-14.326-32-32-32h-68.208l94.832-142.25c9.804-14.704 5.83-34.572-8.876-44.376-14.704-9.802-34.572-5.83-44.376 8.876l-101.372 152.062-101.374-152.062c-9.804-14.706-29.672-18.68-44.376-8.876-14.706 9.804-18.678 29.672-8.876 44.376l94.834 142.25h-68.208c-17.672 0-32 14.326-32 32s14.328 32 32 32h96v64h-96c-17.672 0-32 14.326-32 32s14.328 32 32 32h96v96c0 17.674 14.328 32 32 32s32-14.326 32-32v-96h96c17.674 0 32-14.326 32-32s-14.326-32-32-32h-96v-64h96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "coin-yen", + "money", + "cash", + "currency-yen" + ], + "defaultCode": 59710, + "grid": 16 + }, + { + "id": 63, + "paths": [ + "M928 128h-832c-52.8 0-96 43.2-96 96v576c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-576c0-52.8-43.2-96-96-96zM96 192h832c17.346 0 32 14.654 32 32v96h-896v-96c0-17.346 14.654-32 32-32zM928 832h-832c-17.346 0-32-14.654-32-32v-288h896v288c0 17.346-14.654 32-32 32zM128 640h64v128h-64zM256 640h64v128h-64zM384 640h64v128h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "credit-card", + "money", + "payment", + "ecommerce" + ], + "defaultCode": 59711, + "grid": 16 + }, + { + "id": 64, + "paths": [ + "M384 64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.796 64 64 64h320c35.2 0 64-28.8 64-64v-320c0-35.2-28.8-64-64-64zM384 320h-320v-64h320v64zM896 64h-320c-35.204 0-64 28.8-64 64v832c0 35.2 28.796 64 64 64h320c35.2 0 64-28.8 64-64v-832c0-35.2-28.8-64-64-64zM896 640h-320v-64h320v64zM896 448h-320v-64h320v64zM384 576h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.796 64 64 64h320c35.2 0 64-28.8 64-64v-320c0-35.2-28.8-64-64-64zM384 832h-128v128h-64v-128h-128v-64h128v-128h64v128h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "calculator", + "compute", + "math", + "arithmetic", + "sum" + ], + "defaultCode": 59712, + "grid": 16 + }, + { + "id": 65, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM320 512c0-106.040 85.96-192 192-192s192 85.96 192 192-85.96 192-192 192-192-85.96-192-192zM925.98 683.476v0l-177.42-73.49c12.518-30.184 19.44-63.276 19.44-97.986s-6.922-67.802-19.44-97.986l177.42-73.49c21.908 52.822 34.020 110.73 34.020 171.476s-12.114 118.654-34.020 171.476v0zM683.478 98.020v0 0l-73.49 177.42c-30.184-12.518-63.276-19.44-97.988-19.44s-67.802 6.922-97.986 19.44l-73.49-177.422c52.822-21.904 110.732-34.018 171.476-34.018 60.746 0 118.654 12.114 171.478 34.020zM98.020 340.524l177.422 73.49c-12.518 30.184-19.442 63.276-19.442 97.986s6.922 67.802 19.44 97.986l-177.42 73.49c-21.906-52.822-34.020-110.73-34.020-171.476s12.114-118.654 34.020-171.476zM340.524 925.98l73.49-177.42c30.184 12.518 63.276 19.44 97.986 19.44s67.802-6.922 97.986-19.44l73.49 177.42c-52.822 21.904-110.73 34.020-171.476 34.020-60.744 0-118.654-12.114-171.476-34.020z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lifebuoy", + "support", + "help" + ], + "defaultCode": 59713, + "grid": 16 + }, + { + "id": 66, + "paths": [ + "M704 640c-64 64-64 128-128 128s-128-64-192-128-128-128-128-192 64-64 128-128-128-256-192-256-192 192-192 192c0 128 131.5 387.5 256 512s384 256 512 256c0 0 192-128 192-192s-192-256-256-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "phone", + "telephone", + "contact", + "support", + "call" + ], + "defaultCode": 59714, + "grid": 16 + }, + { + "id": 67, + "paths": [ + "M1017.378 575.994c8.004 55.482 13.216 131.392-11.664 160.446-41.142 48.044-301.712 48.044-301.712-48.042 0-48.398 42.856-80.134 1.712-128.178-40.472-47.262-113.026-48.030-193.714-48.042-80.686 0.012-153.242 0.78-193.714 48.042-41.142 48.046 1.714 79.78 1.714 128.178 0 96.086-260.57 96.086-301.714 48.044-24.878-29.054-19.668-104.964-11.662-160.446 6.16-37.038 21.724-76.996 71.548-127.994 0-0.002 0.002-0.002 0.002-0.004 74.738-69.742 187.846-126.738 429.826-127.968v-0.030c1.344 0 2.664 0.010 4 0.014 1.338-0.004 2.656-0.014 4-0.014v0.028c241.98 1.23 355.088 58.226 429.826 127.968 0.002 0.002 0.002 0.004 0.002 0.004 49.824 50.996 65.39 90.954 71.55 127.994z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "phone-hang-up", + "telephone", + "contact", + "support", + "call" + ], + "defaultCode": 59715, + "grid": 16 + }, + { + "id": 68, + "paths": [ + "M192 0v1024h768v-1024h-768zM576 256.33c70.51 0 127.67 57.16 127.67 127.67s-57.16 127.67-127.67 127.67-127.67-57.16-127.67-127.67 57.16-127.67 127.67-127.67v0zM768 768h-384v-64c0-70.696 57.306-128 128-128v0h128c70.696 0 128 57.304 128 128v64z", + "M64 64h96v192h-96v-192z", + "M64 320h96v192h-96v-192z", + "M64 576h96v192h-96v-192z", + "M64 832h96v192h-96v-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "address-book", + "contact", + "book", + "contacts" + ], + "defaultCode": 59716, + "grid": 16 + }, + { + "id": 69, + "paths": [ + "M928 128h-832c-52.8 0-96 43.2-96 96v640c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-640c0-52.8-43.2-96-96-96zM398.74 550.372l-270.74 210.892v-501.642l270.74 290.75zM176.38 256h671.24l-335.62 252-335.62-252zM409.288 561.698l102.712 110.302 102.71-110.302 210.554 270.302h-626.528l210.552-270.302zM625.26 550.372l270.74-290.75v501.642l-270.74-210.892z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "envelop", + "mail", + "email", + "contact", + "letter" + ], + "defaultCode": 59717, + "grid": 16 + }, + { + "id": 70, + "paths": [ + "M544 0l-96 96 96 96-224 256h-224l176 176-272 360.616v39.384h39.384l360.616-272 176 176v-224l256-224 96 96 96-96-480-480zM448 544l-64-64 224-224 64 64-224 224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pushpin", + "pin" + ], + "defaultCode": 59718, + "grid": 16 + }, + { + "id": 71, + "paths": [ + "M512 0c-176.732 0-320 143.268-320 320 0 320 320 704 320 704s320-384 320-704c0-176.732-143.27-320-320-320zM512 512c-106.040 0-192-85.96-192-192s85.96-192 192-192 192 85.96 192 192-85.96 192-192 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "location", + "map-marker", + "pin" + ], + "defaultCode": 59719, + "grid": 16 + }, + { + "id": 72, + "paths": [ + "M512 0c-176.732 0-320 143.268-320 320 0 320 320 704 320 704s320-384 320-704c0-176.732-143.27-320-320-320zM512 516c-108.248 0-196-87.752-196-196s87.752-196 196-196 196 87.752 196 196-87.752 196-196 196zM388 320c0-68.483 55.517-124 124-124s124 55.517 124 124c0 68.483-55.517 124-124 124s-124-55.517-124-124z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "location", + "map-marker", + "pin" + ], + "defaultCode": 59720, + "grid": 16 + }, + { + "id": 73, + "paths": [ + "M544.010 1024.004c-2.296 0-4.622-0.25-6.94-0.764-14.648-3.25-25.070-16.238-25.070-31.24v-480h-480c-15.002 0-27.992-10.422-31.24-25.070-3.25-14.646 4.114-29.584 17.708-35.928l960-448c12.196-5.688 26.644-3.144 36.16 6.372 9.516 9.514 12.060 23.966 6.372 36.16l-448 960c-5.342 11.44-16.772 18.47-28.99 18.47zM176.242 448h367.758c17.674 0 32 14.328 32 32v367.758l349.79-749.546-749.548 349.788z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "compass", + "direction", + "location" + ], + "defaultCode": 59721, + "grid": 16 + }, + { + "id": 74, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM96 512c0-229.75 186.25-416 416-416 109.574 0 209.232 42.386 283.534 111.628l-411.534 176.372-176.372 411.534c-69.242-74.302-111.628-173.96-111.628-283.534zM585.166 585.166l-256.082 109.75 109.75-256.082 146.332 146.332zM512 928c-109.574 0-209.234-42.386-283.532-111.628l411.532-176.372 176.372-411.532c69.242 74.298 111.628 173.958 111.628 283.532 0 229.75-186.25 416-416 416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "compass", + "direction", + "location" + ], + "defaultCode": 59722, + "grid": 16 + }, + { + "id": 75, + "paths": [ + "M0 192l320-128v768l-320 128z", + "M384 32l320 192v736l-320-160z", + "M768 224l256-192v768l-256 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "map", + "guide" + ], + "defaultCode": 59723, + "grid": 16 + }, + { + "id": 76, + "paths": [ + "M672 192l-320-128-352 128v768l352-128 320 128 352-128v-768l-352 128zM384 145.73l256 102.4v630.138l-256-102.398v-630.14zM64 236.828l256-93.090v631.8l-256 93.088v-631.798zM960 787.172l-256 93.092v-631.8l256-93.090v631.798z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "map", + "guide" + ], + "defaultCode": 59724, + "grid": 16 + }, + { + "id": 77, + "paths": [ + "M640 64c247.424 0 448 200.576 448 448s-200.576 448-448 448v-96c94.024 0 182.418-36.614 248.902-103.098s103.098-154.878 103.098-248.902c0-94.022-36.614-182.418-103.098-248.902s-154.878-103.098-248.902-103.098c-94.022 0-182.418 36.614-248.902 103.098-51.14 51.138-84.582 115.246-97.306 184.902h186.208l-224 256-224-256h164.57c31.060-217.102 217.738-384 443.43-384zM832 448v128h-256v-320h128v192z" + ], + "width": 1088, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "history", + "time", + "archive", + "past" + ], + "defaultCode": 59725, + "grid": 16 + }, + { + "id": 78, + "paths": [ + "M658.744 749.256l-210.744-210.746v-282.51h128v229.49l173.256 173.254zM512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clock", + "time", + "schedule" + ], + "defaultCode": 59726, + "grid": 16 + }, + { + "id": 79, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM658.744 749.256l-210.744-210.746v-282.51h128v229.49l173.256 173.254-90.512 90.512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clock", + "time", + "schedule" + ], + "defaultCode": 59727, + "grid": 16 + }, + { + "id": 80, + "paths": [ + "M512 128c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448zM512 936c-198.824 0-360-161.178-360-360 0-198.824 161.176-360 360-360 198.822 0 360 161.176 360 360 0 198.822-161.178 360-360 360zM934.784 287.174c16.042-28.052 25.216-60.542 25.216-95.174 0-106.040-85.96-192-192-192-61.818 0-116.802 29.222-151.92 74.596 131.884 27.236 245.206 105.198 318.704 212.578v0zM407.92 74.596c-35.116-45.374-90.102-74.596-151.92-74.596-106.040 0-192 85.96-192 192 0 34.632 9.174 67.122 25.216 95.174 73.5-107.38 186.822-185.342 318.704-212.578z", + "M512 576v-256h-64v320h256v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "alarm", + "time", + "clock" + ], + "defaultCode": 59728, + "grid": 16 + }, + { + "id": 81, + "paths": [ + "M1025.5 800c0-288-256-224-256-448 0-18.56-1.788-34.42-5.048-47.928-16.83-113.018-92.156-203.72-189.772-231.36 0.866-3.948 1.32-8.032 1.32-12.21 0-33.278-28.8-60.502-64-60.502s-64 27.224-64 60.5c0 4.18 0.456 8.264 1.32 12.21-109.47 30.998-190.914 141.298-193.254 273.442-0.040 1.92-0.066 3.864-0.066 5.846 0 224.002-256 160.002-256 448.002 0 76.226 170.59 139.996 398.97 156.080 21.524 40.404 64.056 67.92 113.030 67.92s91.508-27.516 113.030-67.92c228.38-16.084 398.97-79.854 398.97-156.080 0-0.228-0.026-0.456-0.028-0.682l1.528 0.682zM826.246 854.096c-54.23 14.47-118.158 24.876-186.768 30.648-5.704-65.418-60.582-116.744-127.478-116.744s-121.774 51.326-127.478 116.744c-68.608-5.772-132.538-16.178-186.768-30.648-74.63-19.914-110.31-42.19-123.368-54.096 13.058-11.906 48.738-34.182 123.368-54.096 86.772-23.152 198.372-35.904 314.246-35.904s227.474 12.752 314.246 35.904c74.63 19.914 110.31 42.19 123.368 54.096-13.058 11.906-48.738 34.182-123.368 54.096z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bell", + "alarm", + "notification" + ], + "defaultCode": 59729, + "grid": 16 + }, + { + "id": 82, + "paths": [ + "M512.002 193.212v-65.212h128v-64c0-35.346-28.654-64-64.002-64h-191.998c-35.346 0-64 28.654-64 64v64h128v65.212c-214.798 16.338-384 195.802-384 414.788 0 229.75 186.25 416 416 416s416-186.25 416-416c0-218.984-169.202-398.448-384-414.788zM706.276 834.274c-60.442 60.44-140.798 93.726-226.274 93.726s-165.834-33.286-226.274-93.726c-60.44-60.44-93.726-140.8-93.726-226.274s33.286-165.834 93.726-226.274c58.040-58.038 134.448-91.018 216.114-93.548l-21.678 314.020c-1.86 26.29 12.464 37.802 31.836 37.802s33.698-11.512 31.836-37.802l-21.676-314.022c81.666 2.532 158.076 35.512 216.116 93.55 60.44 60.44 93.726 140.8 93.726 226.274s-33.286 165.834-93.726 226.274z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stopwatch", + "time", + "speed", + "meter", + "chronometer" + ], + "defaultCode": 59730, + "grid": 16 + }, + { + "id": 83, + "paths": [ + "M320 384h128v128h-128zM512 384h128v128h-128zM704 384h128v128h-128zM128 768h128v128h-128zM320 768h128v128h-128zM512 768h128v128h-128zM320 576h128v128h-128zM512 576h128v128h-128zM704 576h128v128h-128zM128 576h128v128h-128zM832 0v64h-128v-64h-448v64h-128v-64h-128v1024h960v-1024h-128zM896 960h-832v-704h832v704z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "calendar", + "date", + "schedule", + "time", + "day" + ], + "defaultCode": 59731, + "grid": 16 + }, + { + "id": 84, + "paths": [ + "M256 64h512v128h-512v-128z", + "M960 256h-896c-35.2 0-64 28.8-64 64v320c0 35.2 28.794 64 64 64h192v256h512v-256h192c35.2 0 64-28.8 64-64v-320c0-35.2-28.8-64-64-64zM128 448c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.652 64-64 64zM704 896h-384v-320h384v320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "printer", + "print" + ], + "defaultCode": 59732, + "grid": 16 + }, + { + "id": 85, + "paths": [ + "M1088 128h-1024c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h1024c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM640 256h128v128h-128v-128zM832 448v128h-128v-128h128zM448 256h128v128h-128v-128zM640 448v128h-128v-128h128zM256 256h128v128h-128v-128zM448 448v128h-128v-128h128zM128 256h64v128h-64v-128zM128 448h128v128h-128v-128zM192 768h-64v-128h64v128zM768 768h-512v-128h512v128zM1024 768h-192v-128h192v128zM1024 576h-128v-128h128v128zM1024 384h-192v-128h192v128z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "keyboard", + "typing", + "type" + ], + "defaultCode": 59733, + "grid": 16 + }, + { + "id": 86, + "paths": [ + "M0 64v640h1024v-640h-1024zM960 640h-896v-512h896v512zM672 768h-320l-32 128-64 64h512l-64-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "display", + "screen", + "monitor", + "computer", + "desktop", + "pc" + ], + "defaultCode": 59734, + "grid": 16 + }, + { + "id": 87, + "paths": [ + "M896 704v-512c0-35.2-28.8-64-64-64h-640c-35.2 0-64 28.8-64 64v512h-128v192h1024v-192h-128zM640 832h-256v-64h256v64zM832 704h-640v-511.886c0.034-0.040 0.076-0.082 0.114-0.114h639.77c0.040 0.034 0.082 0.076 0.116 0.116v511.884z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "laptop", + "computer", + "pc" + ], + "defaultCode": 59735, + "grid": 16 + }, + { + "id": 88, + "paths": [ + "M736 0h-448c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h448c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM384 48h256v32h-256v-32zM512 960c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.654 64-64 64zM768 768h-512v-640h512v640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mobile", + "cell-phone", + "handheld" + ], + "defaultCode": 59736, + "grid": 16 + }, + { + "id": 89, + "paths": [ + "M768 0h-576c-35.2 0-64 28.798-64 64v896c0 35.2 28.798 64 64 64h576c35.2 0 64-28.8 64-64v-896c0-35.202-28.8-64-64-64zM480 977.782c-27.492 0-49.782-22.29-49.782-49.782s22.29-49.782 49.782-49.782 49.782 22.29 49.782 49.782-22.29 49.782-49.782 49.782zM768 832h-576v-704h576v704z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mobile", + "cell-phone", + "handheld", + "tablet", + "phablet" + ], + "defaultCode": 59737, + "grid": 16 + }, + { + "id": 90, + "paths": [ + "M800 0h-640c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h640c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM480 992c-17.672 0-32-14.326-32-32s14.328-32 32-32 32 14.326 32 32-14.328 32-32 32zM768 896h-576v-768h576v768z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tablet", + "mobile" + ], + "defaultCode": 59738, + "grid": 16 + }, + { + "id": 91, + "paths": [ + "M981.188 288.108c-88.808-12.768-183.382-22.016-282.076-27.22l164.888-164.888-64-64-224.558 224.556c-21.006-0.368-42.156-0.556-63.442-0.556v0l-256-256-64 64 194.196 194.196c-120.922 4.242-236.338 14.524-343.386 29.912-27.532 107.726-42.81 226.752-42.81 351.892s15.278 244.166 42.804 351.89c143.642 20.652 302.34 32.11 469.196 32.11s325.55-11.458 469.188-32.11c27.534-107.724 42.812-226.75 42.812-351.89s-15.278-244.166-42.812-351.892zM863.892 874.594c-107.73 13.766-226.75 21.406-351.892 21.406s-244.166-7.64-351.892-21.406c-20.648-71.816-32.108-151.166-32.108-234.594 0-83.43 11.458-162.78 32.108-234.596 107.726-13.766 226.75-21.404 351.892-21.404 125.136 0 244.162 7.638 351.886 21.404 20.656 71.816 32.114 151.166 32.114 234.596 0 83.428-11.458 162.778-32.108 234.594z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tv", + "television", + "show" + ], + "defaultCode": 59739, + "grid": 16 + }, + { + "id": 92, + "paths": [ + "M1016.988 652.010l-256-320c-6.074-7.592-15.266-12.010-24.988-12.010h-448c-9.72 0-18.916 4.418-24.988 12.010l-256 320c-4.538 5.674-7.012 12.724-7.012 19.99v288c0 35.346 28.654 64 64 64h896c35.348 0 64-28.654 64-64v-288c0-7.266-2.472-14.316-7.012-19.99zM960 704h-224l-128 128h-192l-128-128h-224v-20.776l239.38-299.224h417.24l239.38 299.224v20.776z", + "M736 512h-448c-17.672 0-32-14.328-32-32s14.328-32 32-32h448c17.674 0 32 14.328 32 32s-14.326 32-32 32z", + "M800 640h-576c-17.672 0-32-14.326-32-32s14.328-32 32-32h576c17.674 0 32 14.326 32 32s-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "drawer", + "box", + "inbox", + "archive", + "category" + ], + "defaultCode": 59740, + "grid": 16 + }, + { + "id": 93, + "paths": [ + "M1016.988 652.010l-256-320c-6.074-7.592-15.266-12.010-24.988-12.010h-448c-9.72 0-18.916 4.418-24.988 12.010l-256 320c-4.538 5.674-7.012 12.724-7.012 19.99v288c0 35.346 28.654 64 64 64h896c35.348 0 64-28.654 64-64v-288c0-7.266-2.472-14.316-7.012-19.99zM960 704h-224l-128 128h-192l-128-128h-224v-20.776l239.38-299.224h417.24l239.38 299.224v20.776z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "drawer", + "box", + "inbox", + "archive", + "category" + ], + "defaultCode": 59741, + "grid": 16 + }, + { + "id": 94, + "paths": [ + "M832 64h-640l-192 192v672c0 17.674 14.326 32 32 32h960c17.672 0 32-14.326 32-32v-672l-192-192zM512 832l-320-256h192v-192h256v192h192l-320 256zM154.51 192l64-64h586.978l64 64h-714.978z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "box-add", + "box", + "download", + "storage", + "inbox", + "archive" + ], + "defaultCode": 59742, + "grid": 16 + }, + { + "id": 95, + "paths": [ + "M832 64h-640l-192 192v672c0 17.674 14.326 32 32 32h960c17.672 0 32-14.326 32-32v-672l-192-192zM640 640v192h-256v-192h-192l320-256 320 256h-192zM154.51 192l64-64h586.976l64 64h-714.976z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "box-remove", + "box", + "upload", + "storage", + "outbox", + "archive" + ], + "defaultCode": 59743, + "grid": 16 + }, + { + "id": 96, + "paths": [ + "M512 576l256-256h-192v-256h-128v256h-192zM744.726 471.272l-71.74 71.742 260.080 96.986-421.066 157.018-421.066-157.018 260.080-96.986-71.742-71.742-279.272 104.728v256l512 192 512-192v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "download", + "save", + "store", + "arrow" + ], + "defaultCode": 59744, + "grid": 16 + }, + { + "id": 97, + "paths": [ + "M448 576h128v-256h192l-256-256-256 256h192zM640 432v98.712l293.066 109.288-421.066 157.018-421.066-157.018 293.066-109.288v-98.712l-384 144v256l512 192 512-192v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "upload", + "load", + "arrow" + ], + "defaultCode": 59745, + "grid": 16 + }, + { + "id": 98, + "paths": [ + "M896 0h-896v1024h1024v-896l-128-128zM512 128h128v256h-128v-256zM896 896h-768v-768h64v320h576v-320h74.978l53.022 53.018v714.982z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "floppy-disk", + "save" + ], + "defaultCode": 59746, + "grid": 16 + }, + { + "id": 99, + "paths": [ + "M192 896h640c106.038 0 192-85.96 192-192h-1024c0 106.040 85.962 192 192 192zM832 768h64v64h-64v-64zM960 128h-896l-64 512h1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "drive", + "save", + "hdd", + "hard-disk" + ], + "defaultCode": 59747, + "grid": 16 + }, + { + "id": 100, + "paths": [ + "M512 0c-282.77 0-512 71.634-512 160v128c0 88.366 229.23 160 512 160s512-71.634 512-160v-128c0-88.366-229.23-160-512-160z", + "M512 544c-282.77 0-512-71.634-512-160v192c0 88.366 229.23 160 512 160s512-71.634 512-160v-192c0 88.366-229.23 160-512 160z", + "M512 832c-282.77 0-512-71.634-512-160v192c0 88.366 229.23 160 512 160s512-71.634 512-160v-192c0 88.366-229.23 160-512 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "database", + "db", + "server", + "host", + "storage", + "save", + "datecenter" + ], + "defaultCode": 59748, + "grid": 16 + }, + { + "id": 101, + "paths": [ + "M512 64c-141.384 0-269.376 57.32-362.032 149.978l-149.968-149.978v384h384l-143.532-143.522c69.496-69.492 165.492-112.478 271.532-112.478 212.068 0 384 171.924 384 384 0 114.696-50.292 217.636-130.018 288l84.666 96c106.302-93.816 173.352-231.076 173.352-384 0-282.77-229.23-512-512-512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "undo", + "ccw", + "arrow" + ], + "defaultCode": 59749, + "grid": 16 + }, + { + "id": 102, + "paths": [ + "M0 576c0 152.924 67.048 290.184 173.35 384l84.666-96c-79.726-70.364-130.016-173.304-130.016-288 0-212.076 171.93-384 384-384 106.042 0 202.038 42.986 271.53 112.478l-143.53 143.522h384v-384l-149.97 149.978c-92.654-92.658-220.644-149.978-362.030-149.978-282.77 0-512 229.23-512 512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "redo", + "cw", + "arrow" + ], + "defaultCode": 59750, + "grid": 16 + }, + { + "id": 103, + "paths": [ + "M761.862 1024c113.726-206.032 132.888-520.306-313.862-509.824v253.824l-384-384 384-384v248.372c534.962-13.942 594.57 472.214 313.862 775.628z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "undo", + "left", + "arrow-left" + ], + "defaultCode": 59751, + "grid": 16 + }, + { + "id": 104, + "paths": [ + "M576 248.372v-248.372l384 384-384 384v-253.824c-446.75-10.482-427.588 303.792-313.86 509.824-280.712-303.414-221.1-789.57 313.86-775.628z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "redo", + "right", + "arrow-right" + ], + "defaultCode": 59752, + "grid": 16 + }, + { + "id": 105, + "paths": [ + "M262.14 0c-113.728 206.032-132.89 520.304 313.86 509.824v-253.824l384 384-384 384v-248.372c-534.96 13.942-594.572-472.214-313.86-775.628z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "forward", + "right", + "arrow-right" + ], + "defaultCode": 59753, + "grid": 16 + }, + { + "id": 106, + "paths": [ + "M448 775.628v248.372l-384-384 384-384v253.824c446.75 10.48 427.588-303.792 313.862-509.824 280.71 303.414 221.1 789.57-313.862 775.628z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "reply", + "left", + "arrow-left" + ], + "defaultCode": 59754, + "grid": 16 + }, + { + "id": 107, + "paths": [ + "M512 64c282.77 0 512 186.25 512 416 0 229.752-229.23 416-512 416-27.156 0-53.81-1.734-79.824-5.044-109.978 109.978-241.25 129.7-368.176 132.596v-26.916c68.536-33.578 128-94.74 128-164.636 0-9.754-0.758-19.33-2.164-28.696-115.796-76.264-189.836-192.754-189.836-323.304 0-229.75 229.23-416 512-416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubble", + "comment", + "chat", + "talk" + ], + "defaultCode": 59755, + "grid": 16 + }, + { + "id": 108, + "paths": [ + "M1088 901.166c0 45.5 26.028 84.908 64 104.184v15.938c-10.626 1.454-21.472 2.224-32.5 2.224-68.008 0-129.348-28.528-172.722-74.264-26.222 6.982-54.002 10.752-82.778 10.752-159.058 0-288-114.616-288-256s128.942-256 288-256c159.058 0 288 114.616 288 256 0 55.348-19.764 106.592-53.356 148.466-6.824 14.824-10.644 31.312-10.644 48.7zM512 0c278.458 0 504.992 180.614 511.836 405.52-49.182-21.92-103.586-33.52-159.836-33.52-95.56 0-185.816 33.446-254.138 94.178-70.846 62.972-109.862 147.434-109.862 237.822 0 44.672 9.544 87.888 27.736 127.788-5.228 0.126-10.468 0.212-15.736 0.212-27.156 0-53.81-1.734-79.824-5.044-109.978 109.978-241.25 129.7-368.176 132.596v-26.916c68.536-33.578 128-94.74 128-164.636 0-9.754-0.758-19.33-2.164-28.696-115.796-76.264-189.836-192.754-189.836-323.304 0-229.75 229.23-416 512-416z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubbles", + "comments", + "chat", + "talk" + ], + "defaultCode": 59756, + "grid": 16 + }, + { + "id": 109, + "paths": [ + "M480 0v0c265.096 0 480 173.914 480 388.448s-214.904 388.448-480 388.448c-25.458 0-50.446-1.62-74.834-4.71-103.106 102.694-222.172 121.108-341.166 123.814v-25.134c64.252-31.354 116-88.466 116-153.734 0-9.106-0.712-18.048-2.030-26.794-108.558-71.214-177.97-179.988-177.97-301.89 0-214.534 214.904-388.448 480-388.448zM996 870.686c0 55.942 36.314 104.898 92 131.772v21.542c-103.126-2.318-197.786-18.102-287.142-106.126-21.14 2.65-42.794 4.040-64.858 4.040-95.47 0-183.408-25.758-253.614-69.040 144.674-0.506 281.26-46.854 384.834-130.672 52.208-42.252 93.394-91.826 122.414-147.348 30.766-58.866 46.366-121.582 46.366-186.406 0-10.448-0.45-20.836-1.258-31.168 72.57 59.934 117.258 141.622 117.258 231.676 0 104.488-60.158 197.722-154.24 258.764-1.142 7.496-1.76 15.16-1.76 22.966z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubbles", + "comments", + "chat", + "talk" + ], + "defaultCode": 59757, + "grid": 16 + }, + { + "id": 110, + "paths": [ + "M512 192c-54.932 0-107.988 8.662-157.694 25.742-46.712 16.054-88.306 38.744-123.628 67.444-66.214 53.798-102.678 122.984-102.678 194.814 0 40.298 11.188 79.378 33.252 116.152 22.752 37.92 56.982 72.586 98.988 100.252 30.356 19.992 50.78 51.948 56.176 87.894 1.8 11.984 2.928 24.088 3.37 36.124 7.47-6.194 14.75-12.846 21.88-19.976 24.154-24.152 56.78-37.49 90.502-37.49 5.368 0 10.762 0.336 16.156 1.024 20.974 2.666 42.398 4.020 63.676 4.020 54.934 0 107.988-8.66 157.694-25.742 46.712-16.054 88.306-38.744 123.628-67.444 66.214-53.796 102.678-122.984 102.678-194.814s-36.464-141.016-102.678-194.814c-35.322-28.698-76.916-51.39-123.628-67.444-49.706-17.080-102.76-25.742-157.694-25.742zM512 64v0c282.77 0 512 186.25 512 416 0 229.752-229.23 416-512 416-27.156 0-53.81-1.734-79.824-5.044-109.978 109.978-241.25 129.7-368.176 132.596v-26.916c68.536-33.578 128-94.74 128-164.636 0-9.754-0.758-19.33-2.164-28.696-115.796-76.264-189.836-192.754-189.836-323.304 0-229.75 229.23-416 512-416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubble", + "comment", + "chat", + "talk" + ], + "defaultCode": 59758, + "grid": 16 + }, + { + "id": 111, + "paths": [ + "M1088 901.166c0 45.5 26.028 84.908 64 104.184v15.938c-10.626 1.454-21.472 2.224-32.5 2.224-68.008 0-129.348-28.528-172.722-74.264-26.222 6.982-54.002 10.752-82.778 10.752-159.058 0-288-114.616-288-256s128.942-256 288-256c159.058 0 288 114.616 288 256 0 55.348-19.764 106.592-53.356 148.466-6.824 14.824-10.644 31.312-10.644 48.7zM230.678 221.186c-66.214 53.798-102.678 122.984-102.678 194.814 0 40.298 11.188 79.378 33.252 116.15 22.752 37.92 56.982 72.586 98.988 100.252 30.356 19.992 50.78 51.948 56.176 87.894 1.8 11.984 2.928 24.088 3.37 36.124 7.47-6.194 14.75-12.846 21.88-19.976 24.154-24.152 56.78-37.49 90.502-37.49 5.368 0 10.762 0.336 16.156 1.024 20.948 2.662 42.344 4.016 63.594 4.020v128c-27.128-0.002-53.754-1.738-79.742-5.042-109.978 109.978-241.25 129.7-368.176 132.596v-26.916c68.536-33.578 128-94.74 128-164.636 0-9.754-0.758-19.33-2.164-28.696-115.796-76.264-189.836-192.754-189.836-323.304 0-229.75 229.23-416 512-416 278.458 0 504.992 180.614 511.836 405.52-41.096-18.316-85.84-29.422-132.262-32.578-11.53-56.068-45.402-108.816-98.252-151.756-35.322-28.698-76.916-51.39-123.628-67.444-49.706-17.080-102.76-25.742-157.694-25.742-54.932 0-107.988 8.662-157.694 25.742-46.712 16.054-88.306 38.744-123.628 67.444z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubbles", + "comments", + "chat", + "talk" + ], + "defaultCode": 59759, + "grid": 16 + }, + { + "id": 112, + "paths": [ + "M480 128c-50.666 0-99.582 7.95-145.386 23.628-42.924 14.694-81.114 35.436-113.502 61.646-60.044 48.59-93.112 110.802-93.112 175.174 0 35.99 10.066 70.948 29.92 103.898 20.686 34.34 51.898 65.794 90.26 90.958 30.44 19.968 50.936 51.952 56.362 87.95 0.902 5.99 1.63 12.006 2.18 18.032 2.722-2.52 5.424-5.114 8.114-7.794 24.138-24.040 56.688-37.312 90.322-37.312 5.348 0 10.718 0.336 16.094 1.018 19.36 2.452 39.124 3.696 58.748 3.696 50.666 0 99.58-7.948 145.384-23.628 42.926-14.692 81.116-35.434 113.504-61.644 60.046-48.59 93.112-110.802 93.112-175.174s-33.066-126.582-93.112-175.174c-32.388-26.212-70.578-46.952-113.504-61.646-45.804-15.678-94.718-23.628-145.384-23.628zM480 0v0c265.096 0 480 173.914 480 388.448s-214.904 388.448-480 388.448c-25.458 0-50.446-1.62-74.834-4.71-103.106 102.694-222.172 121.108-341.166 123.814v-25.134c64.252-31.354 116-88.466 116-153.734 0-9.106-0.712-18.048-2.030-26.794-108.558-71.214-177.97-179.988-177.97-301.89 0-214.534 214.904-388.448 480-388.448zM996 870.686c0 55.942 36.314 104.898 92 131.772v21.542c-103.126-2.318-197.786-18.102-287.142-106.126-21.14 2.65-42.794 4.040-64.858 4.040-95.47 0-183.408-25.758-253.614-69.040 144.674-0.506 281.26-46.854 384.834-130.672 52.208-42.252 93.394-91.826 122.414-147.348 30.766-58.866 46.366-121.582 46.366-186.406 0-10.448-0.45-20.836-1.258-31.168 72.57 59.934 117.258 141.622 117.258 231.676 0 104.488-60.158 197.722-154.24 258.764-1.142 7.496-1.76 15.16-1.76 22.966z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubbles", + "comments", + "chat", + "talk" + ], + "defaultCode": 59760, + "grid": 16 + }, + { + "id": 113, + "paths": [ + "M576 706.612v-52.78c70.498-39.728 128-138.772 128-237.832 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h896c0-128.968-166.898-235.64-384-253.388z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user", + "profile", + "avatar", + "person", + "member" + ], + "defaultCode": 59761, + "grid": 16 + }, + { + "id": 114, + "paths": [ + "M768 770.612v-52.78c70.498-39.728 128-138.772 128-237.832 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h896c0-128.968-166.898-235.64-384-253.388z", + "M327.196 795.328c55.31-36.15 124.080-63.636 199.788-80.414-15.054-17.784-28.708-37.622-40.492-59.020-30.414-55.234-46.492-116.058-46.492-175.894 0-86.042 0-167.31 30.6-233.762 29.706-64.504 83.128-104.496 159.222-119.488-16.914-76.48-61.94-126.75-181.822-126.75-192 0-192 128.942-192 288 0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h279.006c14.518-12.91 30.596-25.172 48.19-36.672z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "users", + "group", + "team", + "members", + "community", + "collaborate" + ], + "defaultCode": 59762, + "grid": 16 + }, + { + "id": 115, + "paths": [ + "M384 736c0-151.234 95.874-280.486 230.032-330.2 16.28-36.538 25.968-77.164 25.968-117.8 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h397.306c-8.664-30.53-13.306-62.732-13.306-96z", + "M736 448c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.056 0 288-128.942 288-288s-128.942-288-288-288zM896 768h-128v128h-64v-128h-128v-64h128v-128h64v128h128v64z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user-plus", + "user", + "user-add", + "profile", + "avatar", + "person", + "member" + ], + "defaultCode": 59763, + "grid": 16 + }, + { + "id": 116, + "paths": [ + "M384 736c0-151.234 95.874-280.486 230.032-330.2 16.28-36.538 25.968-77.164 25.968-117.8 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h397.306c-8.664-30.53-13.306-62.732-13.306-96z", + "M736 448c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.056 0 288-128.942 288-288s-128.942-288-288-288zM896 768h-320v-64h320v64z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user-minus", + "user", + "user-remove", + "profile", + "avatar", + "person", + "member" + ], + "defaultCode": 59764, + "grid": 16 + }, + { + "id": 117, + "paths": [ + "M960 608l-288 288-96-96-64 64 160 160 352-352z", + "M448 768h320v-115.128c-67.22-39.2-156.308-66.11-256-74.26v-52.78c70.498-39.728 128-138.772 128-237.832 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h448v-64z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user-check", + "user", + "user-tick", + "profile", + "avatar", + "person", + "member" + ], + "defaultCode": 59765, + "grid": 16 + }, + { + "id": 118, + "paths": [ + "M320 192c0-106.039 85.961-192 192-192s192 85.961 192 192c0 106.039-85.961 192-192 192s-192-85.961-192-192zM768.078 448h-35.424l-199.104 404.244 74.45-372.244-96-96-96 96 74.45 372.244-199.102-404.244h-35.424c-127.924 0-127.924 85.986-127.924 192v320h768v-320c0-106.014 0-192-127.922-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user-tie", + "user", + "user-employee", + "profile", + "avatar", + "person", + "member", + "job", + "official" + ], + "defaultCode": 59766, + "grid": 16 + }, + { + "id": 119, + "paths": [ + "M225 448c123.712 0 224 100.29 224 224 0 123.712-100.288 224-224 224s-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.634 11.636-22.252 24.016-31.83 37.020 11.438-1.8 23.16-2.746 35.104-2.746zM801 448c123.71 0 224 100.29 224 224 0 123.712-100.29 224-224 224s-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.636 11.636-22.254 24.016-31.832 37.020 11.44-1.8 23.16-2.746 35.106-2.746z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "quotes-left", + "ldquo" + ], + "defaultCode": 59767, + "grid": 16 + }, + { + "id": 120, + "paths": [ + "M800 640c-123.712 0-224-100.29-224-224 0-123.712 100.288-224 224-224s224 100.288 224 224l1 32c0 247.424-200.576 448-448 448v-128c85.474 0 165.834-33.286 226.274-93.726 11.634-11.636 22.252-24.016 31.83-37.020-11.438 1.8-23.16 2.746-35.104 2.746zM224 640c-123.71 0-224-100.29-224-224 0-123.712 100.29-224 224-224s224 100.288 224 224l1 32c0 247.424-200.576 448-448 448v-128c85.474 0 165.834-33.286 226.274-93.726 11.636-11.636 22.254-24.016 31.832-37.020-11.44 1.8-23.16 2.746-35.106 2.746z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "quotes-right", + "rdquo" + ], + "defaultCode": 59768, + "grid": 16 + }, + { + "id": 121, + "paths": [ + "M728.992 512c137.754-87.334 231.008-255.208 231.008-448 0-21.676-1.192-43.034-3.478-64h-889.042c-2.29 20.968-3.48 42.326-3.48 64 0 192.792 93.254 360.666 231.006 448-137.752 87.334-231.006 255.208-231.006 448 0 21.676 1.19 43.034 3.478 64h889.042c2.288-20.966 3.478-42.324 3.478-64 0.002-192.792-93.252-360.666-231.006-448zM160 960c0-186.912 80.162-345.414 224-397.708v-100.586c-143.838-52.29-224-210.792-224-397.706v0h704c0 186.914-80.162 345.416-224 397.706v100.586c143.838 52.294 224 210.796 224 397.708h-704zM619.626 669.594c-71.654-40.644-75.608-93.368-75.626-125.366v-64.228c0-31.994 3.804-84.914 75.744-125.664 38.504-22.364 71.808-56.348 97.048-98.336h-409.582c25.266 42.032 58.612 76.042 97.166 98.406 71.654 40.644 75.606 93.366 75.626 125.366v64.228c0 31.992-3.804 84.914-75.744 125.664-72.622 42.18-126.738 125.684-143.090 226.336h501.67c-16.364-100.708-70.53-184.248-143.212-226.406z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hour-glass", + "loading", + "busy", + "wait" + ], + "defaultCode": 59769, + "grid": 16 + }, + { + "id": 122, + "paths": [ + "M384 128c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM655.53 240.47c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM832 512c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM719.53 783.53c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM448.002 896c0 0 0 0 0 0 0-35.346 28.654-64 64-64s64 28.654 64 64c0 0 0 0 0 0 0 35.346-28.654 64-64 64s-64-28.654-64-64zM176.472 783.53c0 0 0 0 0 0 0-35.346 28.654-64 64-64s64 28.654 64 64c0 0 0 0 0 0 0 35.346-28.654 64-64 64s-64-28.654-64-64zM144.472 240.47c0 0 0 0 0 0 0-53.019 42.981-96 96-96s96 42.981 96 96c0 0 0 0 0 0 0 53.019-42.981 96-96 96s-96-42.981-96-96zM56 512c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.765-32.235 72-72 72s-72-32.235-72-72z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59770, + "grid": 16 + }, + { + "id": 123, + "paths": [ + "M1024 512c-1.278-66.862-15.784-133.516-42.576-194.462-26.704-61-65.462-116.258-113.042-161.92-47.552-45.696-103.944-81.82-164.984-105.652-61.004-23.924-126.596-35.352-191.398-33.966-64.81 1.282-129.332 15.374-188.334 41.356-59.048 25.896-112.542 63.47-156.734 109.576-44.224 46.082-79.16 100.708-102.186 159.798-23.114 59.062-34.128 122.52-32.746 185.27 1.286 62.76 14.964 125.148 40.134 182.206 25.088 57.1 61.476 108.828 106.11 151.548 44.61 42.754 97.472 76.504 154.614 98.72 57.118 22.304 118.446 32.902 179.142 31.526 60.708-1.29 120.962-14.554 176.076-38.914 55.15-24.282 105.116-59.48 146.366-102.644 41.282-43.14 73.844-94.236 95.254-149.43 13.034-33.458 21.88-68.4 26.542-103.798 1.246 0.072 2.498 0.12 3.762 0.12 35.346 0 64-28.652 64-64 0-1.796-0.094-3.572-0.238-5.332h0.238zM922.306 681.948c-23.472 53.202-57.484 101.4-99.178 141.18-41.67 39.81-91 71.186-144.244 91.79-53.228 20.678-110.29 30.452-166.884 29.082-56.604-1.298-112.596-13.736-163.82-36.474-51.25-22.666-97.684-55.49-135.994-95.712-38.338-40.198-68.528-87.764-88.322-139.058-19.87-51.284-29.228-106.214-27.864-160.756 1.302-54.552 13.328-108.412 35.254-157.69 21.858-49.3 53.498-93.97 92.246-130.81 38.73-36.868 84.53-65.87 133.874-84.856 49.338-19.060 102.136-28.006 154.626-26.644 52.5 1.306 104.228 12.918 151.562 34.034 47.352 21.050 90.256 51.502 125.624 88.782 35.396 37.258 63.21 81.294 81.39 128.688 18.248 47.392 26.782 98.058 25.424 148.496h0.238c-0.144 1.76-0.238 3.536-0.238 5.332 0 33.012 24.992 60.174 57.086 63.624-6.224 34.822-16.53 68.818-30.78 100.992z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59771, + "grid": 16 + }, + { + "id": 124, + "paths": [ + "M512 303.096c-32.964 0-59.686-26.724-59.686-59.686v-179.060c0-32.964 26.722-59.686 59.686-59.686 32.962 0 59.688 26.722 59.688 59.686v179.060c0 32.964-26.726 59.686-59.688 59.686z", + "M512 996.956c-20.602 0-37.304-16.702-37.304-37.304v-179.060c0-20.602 16.702-37.304 37.304-37.304 20.604 0 37.304 16.704 37.304 37.304v179.060c0 20.602-16.7 37.304-37.304 37.304z", + "M377.756 335.36c-19.34 0-38.146-10.034-48.512-27.988l-89.53-155.070c-15.452-26.764-6.282-60.986 20.482-76.438 26.762-15.45 60.986-6.284 76.438 20.482l89.53 155.072c15.452 26.764 6.282 60.986-20.482 76.438-8.81 5.084-18.432 7.504-27.926 7.504z", + "M735.856 933.256c-11.602 0-22.886-6.022-29.108-16.792l-89.53-155.070c-9.27-16.056-3.77-36.592 12.29-45.864 16.056-9.264 36.59-3.77 45.864 12.292l89.532 155.068c9.27 16.058 3.768 36.592-12.292 45.864-5.286 3.048-11.060 4.502-16.756 4.502z", + "M279.344 429.94c-8.86 0-17.838-2.256-26.064-7.006l-155.072-89.53c-24.978-14.422-33.538-46.362-19.116-71.342 14.42-24.978 46.364-33.538 71.342-19.116l155.070 89.53c24.98 14.422 33.538 46.362 19.116 71.34-9.668 16.756-27.226 26.124-45.276 26.124z", + "M899.648 765.674c-5.064 0-10.196-1.29-14.894-4.004l-155.068-89.53c-14.274-8.24-19.164-26.494-10.924-40.768 8.242-14.276 26.496-19.166 40.766-10.924l155.070 89.532c14.274 8.24 19.164 26.492 10.924 40.766-5.53 9.574-15.562 14.928-25.874 14.928z", + "M243.41 560.496h-179.060c-26.784 0-48.496-21.712-48.496-48.496s21.712-48.496 48.496-48.496h179.060c26.784 0 48.496 21.712 48.496 48.496s-21.712 48.496-48.496 48.496z", + "M959.65 541.844c-0.002 0 0 0 0 0h-179.060c-16.482-0.002-29.844-13.364-29.844-29.844s13.364-29.844 29.844-29.844c0.002 0 0 0 0 0h179.060c16.482 0 29.844 13.362 29.844 29.844 0 16.48-13.364 29.844-29.844 29.844z", + "M124.366 780.598c-15.472 0-30.518-8.028-38.81-22.39-12.362-21.41-5.026-48.79 16.384-61.148l155.072-89.532c21.41-12.368 48.79-5.028 61.15 16.384 12.362 21.412 5.026 48.79-16.384 61.15l-155.072 89.53c-7.050 4.070-14.748 6.006-22.34 6.006z", + "M744.632 407.552c-10.314 0-20.346-5.352-25.874-14.926-8.24-14.274-3.35-32.526 10.924-40.768l155.070-89.528c14.272-8.236 32.526-3.352 40.768 10.922 8.24 14.274 3.35 32.526-10.924 40.768l-155.070 89.528c-4.7 2.714-9.83 4.004-14.894 4.004z", + "M288.136 940.716c-6.962 0-14.016-1.774-20.48-5.504-19.626-11.332-26.35-36.428-15.020-56.054l89.53-155.070c11.33-19.628 36.426-26.352 56.054-15.022 19.626 11.332 26.35 36.43 15.020 56.054l-89.53 155.072c-7.598 13.166-21.392 20.524-35.574 20.524z", + "M646.266 309.242c-5.062 0-10.196-1.29-14.894-4.002-14.274-8.242-19.164-26.494-10.924-40.766l89.534-155.070c8.24-14.274 26.492-19.166 40.766-10.922 14.274 8.242 19.164 26.494 10.924 40.766l-89.532 155.070c-5.53 9.57-15.56 14.924-25.874 14.924z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59772, + "grid": 16 + }, + { + "id": 125, + "paths": [ + "M192 512c0-12.18 0.704-24.196 2.030-36.022l-184.98-60.104c-5.916 31.14-9.050 63.264-9.050 96.126 0 147.23 62.166 279.922 161.654 373.324l114.284-157.296c-52.124-56.926-83.938-132.758-83.938-216.028zM832 512c0 83.268-31.812 159.102-83.938 216.028l114.284 157.296c99.488-93.402 161.654-226.094 161.654-373.324 0-32.862-3.132-64.986-9.048-96.126l-184.98 60.104c1.324 11.828 2.028 23.842 2.028 36.022zM576 198.408c91.934 18.662 169.544 76.742 214.45 155.826l184.978-60.102c-73.196-155.42-222.24-268.060-399.428-290.156v194.432zM233.55 354.232c44.906-79.084 122.516-137.164 214.45-155.826v-194.43c-177.188 22.096-326.23 134.736-399.426 290.154l184.976 60.102zM644.556 803.328c-40.39 18.408-85.272 28.672-132.556 28.672s-92.166-10.264-132.554-28.67l-114.292 157.31c73.206 40.366 157.336 63.36 246.846 63.36s173.64-22.994 246.848-63.36l-114.292-157.312z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59773, + "grid": 16 + }, + { + "id": 126, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 256c141.384 0 256 114.616 256 256s-114.616 256-256 256-256-114.616-256-256 114.616-256 256-256zM817.47 817.47c-81.594 81.594-190.080 126.53-305.47 126.53-115.392 0-223.876-44.936-305.47-126.53s-126.53-190.078-126.53-305.47c0-115.39 44.936-223.876 126.53-305.47l67.882 67.882c0 0 0 0 0 0-131.006 131.006-131.006 344.17 0 475.176 63.462 63.462 147.838 98.412 237.588 98.412 89.748 0 174.124-34.95 237.588-98.412 131.006-131.006 131.006-344.168 0-475.176l67.882-67.882c81.594 81.594 126.53 190.080 126.53 305.47 0 115.392-44.936 223.876-126.53 305.47z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59774, + "grid": 16 + }, + { + "id": 127, + "paths": [ + "M384 128c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM790.994 512c0 0 0 0 0 0 0-57.993 47.013-105.006 105.006-105.006s105.006 47.013 105.006 105.006c0 0 0 0 0 0 0 57.993-47.013 105.006-105.006 105.006s-105.006-47.013-105.006-105.006zM688.424 783.53c0-52.526 42.58-95.106 95.106-95.106s95.106 42.58 95.106 95.106c0 52.526-42.58 95.106-95.106 95.106s-95.106-42.58-95.106-95.106zM425.862 896c0-47.573 38.565-86.138 86.138-86.138s86.138 38.565 86.138 86.138c0 47.573-38.565 86.138-86.138 86.138s-86.138-38.565-86.138-86.138zM162.454 783.53c0-43.088 34.93-78.018 78.018-78.018s78.018 34.93 78.018 78.018c0 43.088-34.93 78.018-78.018 78.018s-78.018-34.93-78.018-78.018zM57.338 512c0-39.026 31.636-70.662 70.662-70.662s70.662 31.636 70.662 70.662c0 39.026-31.636 70.662-70.662 70.662s-70.662-31.636-70.662-70.662zM176.472 240.472c0 0 0 0 0 0 0-35.346 28.654-64 64-64s64 28.654 64 64c0 0 0 0 0 0 0 35.346-28.654 64-64 64s-64-28.654-64-64zM899.464 240.472c0 64.024-51.906 115.934-115.936 115.934-64.024 0-115.936-51.91-115.936-115.934 0-64.032 51.912-115.934 115.936-115.934 64.030 0 115.936 51.902 115.936 115.934z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59775, + "grid": 16 + }, + { + "id": 128, + "paths": [ + "M416 928c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM0 512c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM832 512c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM121.844 217.844c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM710.156 806.156c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM121.844 806.156c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM710.156 217.844c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59776, + "grid": 16 + }, + { + "id": 129, + "paths": [ + "M512 1024c-136.76 0-265.334-53.258-362.040-149.96-96.702-96.706-149.96-225.28-149.96-362.040 0-96.838 27.182-191.134 78.606-272.692 50-79.296 120.664-143.372 204.356-185.3l43 85.832c-68.038 34.084-125.492 86.186-166.15 150.67-41.746 66.208-63.812 142.798-63.812 221.49 0 229.382 186.618 416 416 416s416-186.618 416-416c0-78.692-22.066-155.282-63.81-221.49-40.66-64.484-98.114-116.584-166.15-150.67l43-85.832c83.692 41.928 154.358 106.004 204.356 185.3 51.422 81.558 78.604 175.854 78.604 272.692 0 136.76-53.258 265.334-149.96 362.040-96.706 96.702-225.28 149.96-362.040 149.96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59777, + "grid": 16 + }, + { + "id": 130, + "paths": [ + "M512 0c-278.748 0-505.458 222.762-511.848 499.974 5.92-241.864 189.832-435.974 415.848-435.974 229.75 0 416 200.576 416 448 0 53.020 42.98 96 96 96s96-42.98 96-96c0-282.77-229.23-512-512-512zM512 1024c278.748 0 505.458-222.762 511.848-499.974-5.92 241.864-189.832 435.974-415.848 435.974-229.75 0-416-200.576-416-448 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 282.77 229.23 512 512 512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59778, + "grid": 16 + }, + { + "id": 131, + "paths": [ + "M0.042 513.618l-0.022 0.004c0 0 0.012 0.090 0.028 0.222 0.11 3.878 0.55 7.676 1.322 11.352 0.204 1.746 0.428 3.66 0.674 5.774 0.222 1.886 0.46 3.914 0.718 6.078 0.374 2.566 0.77 5.292 1.19 8.176 0.856 5.746 1.8 12.124 2.908 18.958 1.348 6.446 2.804 13.414 4.364 20.864 0.71 3.718 1.776 7.504 2.786 11.406 1.024 3.89 2.078 7.894 3.16 12.004 0.566 2.042 1.040 4.132 1.708 6.208 0.656 2.074 1.32 4.176 1.988 6.3 1.348 4.234 2.726 8.566 4.136 12.988 0.352 1.106 0.708 2.21 1.064 3.324 0.408 1.102 0.814 2.208 1.226 3.316 0.826 2.218 1.658 4.458 2.502 6.714 1.696 4.496 3.422 9.078 5.18 13.742 1.968 4.566 3.97 9.214 6.004 13.934 1.018 2.348 2.044 4.714 3.078 7.098 1.048 2.376 2.27 4.704 3.408 7.074 2.322 4.714 4.678 9.496 7.062 14.332 2.47 4.786 5.208 9.512 7.846 14.328 1.336 2.398 2.68 4.808 4.028 7.23 1.368 2.41 2.902 4.75 4.356 7.14 2.95 4.738 5.93 9.524 8.934 14.348 12.64 18.894 26.676 37.566 42.21 55.278 15.712 17.578 32.726 34.25 50.692 49.602 18.18 15.136 37.264 28.902 56.726 41.114 19.604 12.036 39.644 22.312 59.376 31.144 5.004 2.040 9.964 4.062 14.878 6.066 2.462 0.972 4.868 2.032 7.336 2.918 2.47 0.868 4.93 1.734 7.376 2.594 4.898 1.684 9.678 3.468 14.484 4.992 4.832 1.43 9.604 2.844 14.312 4.242 2.356 0.672 4.66 1.426 7.004 2.012 2.346 0.574 4.676 1.14 6.986 1.704 4.606 1.118 9.142 2.214 13.604 3.296 4.5 0.868 8.926 1.722 13.27 2.558 2.166 0.41 4.31 0.82 6.434 1.222 1.062 0.2 2.118 0.398 3.166 0.598 1.060 0.148 2.118 0.292 3.166 0.442 4.192 0.582 8.292 1.152 12.3 1.71 1.998 0.274 3.972 0.546 5.922 0.816 1.946 0.286 3.904 0.378 5.814 0.57 3.822 0.336 7.544 0.664 11.164 0.98 3.616 0.304 7.104 0.688 10.526 0.738 0.23 0.008 0.452 0.016 0.682 0.026 0.614 34.812 29.008 62.846 63.968 62.846 0.542 0 1.080-0.028 1.62-0.042v0.022c0 0 0.090-0.012 0.224-0.028 3.878-0.11 7.674-0.55 11.35-1.322 1.748-0.204 3.662-0.426 5.776-0.672 1.884-0.222 3.912-0.462 6.076-0.718 2.566-0.376 5.292-0.772 8.176-1.192 5.746-0.856 12.124-1.8 18.958-2.908 6.446-1.348 13.414-2.804 20.864-4.362 3.718-0.712 7.504-1.778 11.406-2.786 3.892-1.026 7.894-2.080 12.004-3.162 2.044-0.566 4.132-1.040 6.208-1.708 2.074-0.656 4.174-1.318 6.3-1.988 4.232-1.348 8.564-2.726 12.988-4.134 1.104-0.354 2.21-0.708 3.324-1.066 1.1-0.406 2.206-0.814 3.316-1.226 2.216-0.824 4.456-1.658 6.714-2.5 4.496-1.698 9.078-3.424 13.74-5.182 4.568-1.968 9.216-3.97 13.936-6.004 2.348-1.018 4.714-2.044 7.098-3.078 2.376-1.048 4.702-2.27 7.074-3.408 4.714-2.322 9.494-4.678 14.33-7.062 4.786-2.47 9.512-5.208 14.328-7.846 2.398-1.336 4.808-2.678 7.23-4.028 2.41-1.366 4.75-2.9 7.14-4.354 4.738-2.952 9.524-5.93 14.35-8.936 18.89-12.64 37.564-26.674 55.278-42.21 17.574-15.712 34.248-32.726 49.602-50.69 15.136-18.182 28.902-37.264 41.112-56.728 12.036-19.602 22.314-39.644 31.142-59.376 2.042-5.002 4.062-9.964 6.068-14.878 0.974-2.462 2.032-4.868 2.918-7.334 0.87-2.472 1.732-4.932 2.592-7.376 1.686-4.898 3.468-9.678 4.994-14.484 1.432-4.832 2.846-9.604 4.24-14.31 0.674-2.358 1.43-4.66 2.016-7.004 0.57-2.348 1.138-4.676 1.702-6.988 1.118-4.606 2.216-9.14 3.296-13.602 0.868-4.502 1.72-8.928 2.558-13.272 0.41-2.164 0.818-4.308 1.222-6.434 0.2-1.060 0.398-2.116 0.596-3.164 0.148-1.062 0.296-2.118 0.444-3.168 0.582-4.19 1.152-8.292 1.708-12.3 0.278-1.996 0.55-3.97 0.82-5.922 0.284-1.946 0.376-3.902 0.568-5.812 0.336-3.822 0.664-7.546 0.98-11.164 0.304-3.616 0.686-7.106 0.738-10.528 0.020-0.534 0.040-1.044 0.058-1.574 35.224-0.146 63.732-28.738 63.732-63.992 0-0.542-0.028-1.080-0.042-1.62h0.022c0 0-0.012-0.090-0.028-0.224-0.11-3.878-0.55-7.674-1.322-11.35-0.204-1.748-0.428-3.662-0.674-5.776-0.222-1.886-0.46-3.914-0.718-6.076-0.374-2.566-0.77-5.294-1.19-8.176-0.856-5.746-1.8-12.124-2.908-18.958-1.348-6.444-2.804-13.414-4.364-20.862-0.71-3.72-1.776-7.506-2.786-11.408-1.024-3.892-2.078-7.894-3.16-12.002-0.566-2.044-1.040-4.134-1.708-6.208-0.656-2.076-1.32-4.174-1.988-6.3-1.348-4.234-2.726-8.566-4.136-12.99-0.352-1.102-0.708-2.21-1.064-3.324-0.408-1.1-0.814-2.206-1.226-3.316-0.826-2.216-1.658-4.454-2.502-6.714-1.696-4.498-3.422-9.080-5.18-13.74-1.968-4.57-3.97-9.216-6.004-13.936-1.020-2.348-2.044-4.714-3.078-7.098-1.048-2.376-2.27-4.702-3.408-7.076-2.322-4.714-4.678-9.494-7.062-14.33-2.47-4.786-5.208-9.512-7.846-14.328-1.336-2.398-2.68-4.808-4.028-7.23-1.368-2.41-2.902-4.75-4.356-7.14-2.95-4.74-5.93-9.524-8.934-14.35-12.64-18.892-26.676-37.564-42.21-55.278-15.712-17.576-32.726-34.25-50.692-49.602-18.18-15.136-37.264-28.902-56.726-41.112-19.604-12.036-39.644-22.314-59.376-31.142-5.004-2.040-9.964-4.062-14.878-6.068-2.462-0.974-4.868-2.032-7.336-2.918-2.47-0.87-4.93-1.734-7.376-2.592-4.898-1.684-9.678-3.468-14.484-4.994-4.832-1.432-9.604-2.846-14.312-4.242-2.356-0.672-4.66-1.428-7.004-2.014-2.346-0.572-4.676-1.138-6.986-1.702-4.606-1.118-9.142-2.216-13.604-3.298-4.5-0.868-8.926-1.72-13.27-2.558-2.166-0.412-4.31-0.82-6.434-1.222-1.062-0.2-2.118-0.398-3.166-0.596-1.060-0.148-2.118-0.296-3.166-0.442-4.192-0.584-8.292-1.154-12.3-1.71-1.998-0.276-3.972-0.55-5.922-0.82-1.946-0.284-3.904-0.376-5.814-0.57-3.822-0.336-7.544-0.664-11.164-0.98-3.616-0.304-7.104-0.686-10.526-0.738-0.852-0.032-1.674-0.062-2.512-0.092-0.65-34.78-29.028-62.778-63.966-62.778-0.542 0-1.080 0.028-1.62 0.042l-0.002-0.022c0 0-0.090 0.012-0.222 0.028-3.878 0.11-7.676 0.55-11.352 1.322-1.748 0.204-3.662 0.426-5.776 0.672-1.884 0.222-3.912 0.462-6.076 0.718-2.566 0.376-5.292 0.772-8.176 1.192-5.746 0.856-12.124 1.8-18.958 2.908-6.446 1.348-13.414 2.804-20.864 4.362-3.718 0.712-7.504 1.778-11.406 2.786-3.892 1.026-7.894 2.080-12.004 3.162-2.044 0.566-4.132 1.040-6.208 1.708-2.074 0.656-4.174 1.318-6.3 1.988-4.232 1.348-8.564 2.726-12.988 4.134-1.104 0.354-2.21 0.708-3.324 1.066-1.1 0.406-2.206 0.814-3.316 1.226-2.216 0.824-4.456 1.658-6.714 2.5-4.496 1.698-9.078 3.424-13.74 5.182-4.568 1.968-9.216 3.97-13.936 6.004-2.348 1.018-4.714 2.044-7.098 3.078-2.376 1.048-4.702 2.27-7.074 3.408-4.714 2.322-9.494 4.678-14.33 7.062-4.786 2.47-9.512 5.208-14.328 7.846-2.398 1.336-4.808 2.678-7.23 4.028-2.41 1.366-4.75 2.9-7.14 4.354-4.738 2.952-9.524 5.93-14.35 8.936-18.89 12.64-37.564 26.674-55.278 42.21-17.574 15.712-34.248 32.726-49.602 50.69-15.136 18.182-28.902 37.264-41.112 56.728-12.036 19.602-22.314 39.644-31.142 59.376-2.042 5.002-4.062 9.964-6.068 14.878-0.974 2.462-2.032 4.868-2.918 7.334-0.87 2.472-1.732 4.932-2.592 7.376-1.686 4.898-3.468 9.678-4.994 14.484-1.432 4.832-2.846 9.604-4.24 14.31-0.674 2.358-1.43 4.66-2.016 7.004-0.57 2.348-1.138 4.676-1.702 6.988-1.118 4.606-2.216 9.14-3.296 13.602-0.868 4.502-1.72 8.928-2.558 13.272-0.41 2.164-0.818 4.308-1.222 6.434-0.2 1.060-0.398 2.116-0.596 3.164-0.148 1.062-0.296 2.118-0.444 3.168-0.582 4.19-1.152 8.292-1.708 12.3-0.278 1.996-0.55 3.97-0.82 5.922-0.284 1.946-0.376 3.902-0.568 5.812-0.336 3.822-0.664 7.546-0.98 11.164-0.304 3.616-0.686 7.106-0.738 10.528-0.020 0.548-0.040 1.076-0.058 1.62-34.376 1.112-61.902 29.304-61.902 63.946 0 0.542 0.028 1.078 0.042 1.618zM73.518 448.706c0.042-0.196 0.086-0.384 0.128-0.58 0.644-3.248 1.632-6.542 2.556-9.942 0.934-3.388 1.894-6.876 2.88-10.454 0.516-1.78 0.934-3.602 1.546-5.406 0.596-1.802 1.202-3.628 1.81-5.476 1.218-3.682 2.464-7.45 3.736-11.294 0.316-0.958 0.634-1.924 0.956-2.892 0.37-0.954 0.74-1.914 1.114-2.876 0.746-1.924 1.5-3.868 2.26-5.83 1.52-3.904 3.070-7.882 4.646-11.93 1.768-3.96 3.566-7.99 5.392-12.080 0.908-2.038 1.824-4.090 2.746-6.156 0.932-2.060 2.036-4.072 3.052-6.126 2.070-4.084 4.17-8.222 6.294-12.412 2.202-4.142 4.654-8.224 6.998-12.392 1.184-2.074 2.374-4.16 3.57-6.256 1.21-2.086 2.586-4.102 3.876-6.166 2.616-4.098 5.256-8.232 7.918-12.402 11.234-16.298 23.632-32.398 37.33-47.638 13.874-15.104 28.842-29.404 44.598-42.548 15.974-12.928 32.686-24.65 49.676-35.022 17.13-10.194 34.6-18.838 51.734-26.258 4.35-1.7 8.662-3.382 12.934-5.050 2.136-0.812 4.216-1.71 6.36-2.444 2.146-0.714 4.28-1.428 6.404-2.136 4.25-1.386 8.382-2.888 12.548-4.142 4.184-1.174 8.314-2.332 12.392-3.474 2.038-0.55 4.026-1.19 6.054-1.662 2.030-0.458 4.044-0.914 6.044-1.368 3.978-0.91 7.896-1.806 11.748-2.688 3.888-0.686 7.71-1.36 11.462-2.022 1.868-0.33 3.716-0.658 5.546-0.98 0.914-0.162 1.824-0.324 2.728-0.484 0.916-0.112 1.828-0.222 2.734-0.332 3.612-0.448 7.148-0.882 10.604-1.31 1.72-0.216 3.422-0.432 5.102-0.644 1.674-0.226 3.364-0.266 5.010-0.408 3.292-0.238 6.498-0.472 9.616-0.7 3.11-0.218 6.11-0.524 9.058-0.508 5.848-0.132 11.32-0.256 16.38-0.372 4.664 0.168 8.948 0.324 12.818 0.462 1.914 0.054 3.726 0.108 5.432 0.156 2.122 0.134 4.108 0.26 5.958 0.378 2.13 0.138 4.060 0.266 5.82 0.38 3.256 0.51 6.592 0.782 9.99 0.782 0.466 0 0.93-0.026 1.396-0.036 0.132 0.008 0.224 0.014 0.224 0.014v-0.020c31.14-0.778 56.75-23.784 61.556-53.754 0.542 0.12 1.064 0.236 1.612 0.356 3.246 0.644 6.542 1.632 9.942 2.556 3.386 0.934 6.876 1.894 10.454 2.88 1.778 0.516 3.602 0.934 5.404 1.546 1.802 0.596 3.63 1.202 5.478 1.812 3.68 1.218 7.448 2.464 11.292 3.736 0.96 0.316 1.924 0.634 2.892 0.956 0.956 0.37 1.914 0.74 2.876 1.112 1.926 0.746 3.868 1.5 5.83 2.26 3.904 1.52 7.884 3.070 11.932 4.646 3.96 1.768 7.988 3.566 12.080 5.392 2.038 0.908 4.088 1.824 6.156 2.746 2.060 0.932 4.072 2.036 6.126 3.054 4.082 2.070 8.222 4.17 12.41 6.294 4.144 2.202 8.226 4.654 12.394 6.998 2.074 1.184 4.16 2.374 6.256 3.572 2.086 1.21 4.102 2.586 6.166 3.876 4.098 2.616 8.23 5.256 12.402 7.918 16.296 11.234 32.398 23.632 47.636 37.33 15.104 13.874 29.406 28.842 42.55 44.598 12.928 15.974 24.648 32.686 35.020 49.676 10.196 17.13 18.84 34.6 26.26 51.736 1.698 4.348 3.382 8.662 5.050 12.932 0.812 2.136 1.71 4.216 2.444 6.36 0.714 2.146 1.428 4.28 2.136 6.404 1.386 4.25 2.888 8.384 4.142 12.548 1.174 4.184 2.33 8.316 3.474 12.392 0.55 2.038 1.19 4.026 1.66 6.054 0.46 2.030 0.916 4.046 1.368 6.046 0.91 3.978 1.808 7.896 2.688 11.748 0.688 3.888 1.362 7.71 2.024 11.462 0.33 1.868 0.656 3.716 0.98 5.548 0.162 0.914 0.324 1.824 0.484 2.728 0.11 0.916 0.222 1.828 0.332 2.734 0.446 3.612 0.882 7.148 1.31 10.604 0.216 1.72 0.432 3.42 0.642 5.1 0.226 1.674 0.268 3.364 0.41 5.010 0.238 3.292 0.472 6.498 0.7 9.616 0.218 3.11 0.524 6.11 0.508 9.058 0.132 5.848 0.256 11.32 0.372 16.38-0.168 4.664-0.324 8.948-0.462 12.818-0.054 1.914-0.108 3.726-0.156 5.432-0.134 2.122-0.26 4.108-0.378 5.958-0.138 2.13-0.266 4.060-0.38 5.82-0.498 3.256-0.768 6.592-0.768 9.99 0 0.468 0.026 0.93 0.036 1.396-0.008 0.132-0.016 0.224-0.016 0.224h0.022c0.768 30.766 23.236 56.128 52.682 61.37-0.066 0.296-0.13 0.584-0.198 0.884-0.644 3.248-1.632 6.542-2.556 9.942-0.934 3.388-1.894 6.876-2.88 10.454-0.516 1.78-0.934 3.602-1.546 5.406-0.596 1.802-1.202 3.628-1.81 5.476-1.218 3.682-2.464 7.45-3.736 11.294-0.316 0.958-0.634 1.924-0.956 2.892-0.37 0.954-0.74 1.914-1.114 2.876-0.746 1.924-1.5 3.868-2.26 5.83-1.52 3.904-3.070 7.882-4.646 11.93-1.768 3.96-3.566 7.99-5.392 12.080-0.908 2.038-1.824 4.090-2.746 6.156-0.932 2.060-2.036 4.072-3.052 6.126-2.070 4.084-4.17 8.222-6.294 12.412-2.202 4.142-4.654 8.224-6.998 12.392-1.184 2.074-2.374 4.16-3.57 6.256-1.21 2.086-2.586 4.102-3.876 6.166-2.616 4.098-5.256 8.232-7.918 12.402-11.234 16.298-23.632 32.398-37.33 47.638-13.874 15.104-28.842 29.404-44.598 42.548-15.974 12.928-32.686 24.65-49.676 35.022-17.13 10.194-34.6 18.838-51.734 26.258-4.35 1.7-8.662 3.382-12.934 5.050-2.136 0.812-4.216 1.71-6.36 2.444-2.146 0.714-4.28 1.428-6.404 2.136-4.25 1.386-8.382 2.888-12.548 4.142-4.184 1.174-8.314 2.332-12.392 3.474-2.038 0.55-4.026 1.19-6.054 1.662-2.030 0.458-4.044 0.914-6.044 1.368-3.978 0.91-7.896 1.806-11.748 2.688-3.888 0.686-7.71 1.36-11.462 2.022-1.868 0.33-3.716 0.658-5.546 0.98-0.914 0.162-1.824 0.324-2.728 0.484-0.916 0.112-1.828 0.222-2.734 0.332-3.612 0.448-7.148 0.882-10.604 1.31-1.72 0.216-3.422 0.432-5.102 0.644-1.674 0.226-3.364 0.266-5.010 0.408-3.292 0.238-6.498 0.472-9.616 0.7-3.11 0.218-6.11 0.524-9.058 0.508-5.848 0.132-11.32 0.256-16.38 0.372-4.664-0.168-8.948-0.324-12.818-0.462-1.914-0.054-3.726-0.108-5.432-0.156-2.122-0.134-4.108-0.26-5.958-0.378-2.13-0.138-4.060-0.266-5.82-0.38-3.256-0.51-6.592-0.782-9.99-0.782-0.466 0-0.93 0.026-1.396 0.036-0.132-0.008-0.224-0.014-0.224-0.014v0.020c-31.004 0.774-56.524 23.586-61.488 53.364-3.2-0.64-6.446-1.61-9.792-2.522-3.386-0.934-6.876-1.894-10.454-2.878-1.778-0.516-3.602-0.938-5.404-1.546-1.802-0.598-3.63-1.204-5.478-1.812-3.68-1.218-7.448-2.464-11.292-3.738-0.96-0.316-1.924-0.632-2.892-0.954-0.956-0.372-1.914-0.742-2.876-1.114-1.926-0.746-3.868-1.5-5.83-2.258-3.904-1.524-7.884-3.070-11.932-4.648-3.96-1.77-7.988-3.566-12.080-5.39-2.038-0.91-4.088-1.824-6.156-2.746-2.060-0.934-4.072-2.036-6.126-3.054-4.082-2.070-8.222-4.172-12.41-6.296-4.144-2.2-8.226-4.652-12.394-6.996-2.074-1.184-4.16-2.376-6.256-3.57-2.086-1.21-4.102-2.586-6.166-3.878-4.098-2.614-8.23-5.254-12.402-7.918-16.296-11.23-32.398-23.632-47.636-37.328-15.104-13.876-29.406-28.84-42.55-44.598-12.928-15.972-24.648-32.684-35.020-49.676-10.196-17.128-18.84-34.602-26.26-51.734-1.698-4.352-3.382-8.664-5.050-12.934-0.812-2.136-1.71-4.218-2.444-6.36-0.714-2.148-1.428-4.282-2.136-6.406-1.386-4.25-2.888-8.382-4.142-12.546-1.174-4.184-2.33-8.316-3.474-12.394-0.55-2.036-1.19-4.024-1.66-6.054-0.46-2.028-0.916-4.042-1.368-6.042-0.91-3.98-1.808-7.898-2.688-11.75-0.688-3.886-1.362-7.71-2.024-11.46-0.33-1.868-0.656-3.718-0.98-5.546-0.162-0.914-0.324-1.824-0.484-2.73-0.11-0.914-0.222-1.828-0.332-2.734-0.446-3.61-0.882-7.148-1.31-10.602-0.216-1.722-0.432-3.422-0.642-5.102-0.226-1.676-0.268-3.364-0.41-5.012-0.238-3.29-0.472-6.496-0.7-9.614-0.218-3.11-0.524-6.11-0.508-9.058-0.132-5.848-0.256-11.32-0.372-16.382 0.168-4.664 0.324-8.946 0.462-12.816 0.054-1.914 0.108-3.726 0.156-5.434 0.134-2.122 0.26-4.106 0.378-5.958 0.138-2.128 0.266-4.058 0.38-5.82 0.496-3.26 0.766-6.596 0.766-9.994 0-0.466-0.026-0.93-0.036-1.396 0.008-0.132 0.016-0.224 0.016-0.224h-0.022c-0.78-31.38-24.134-57.154-54.44-61.674z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59779, + "grid": 16 + }, + { + "id": 132, + "paths": [ + "M1024 384h-384l143.53-143.53c-72.53-72.526-168.96-112.47-271.53-112.47s-199 39.944-271.53 112.47c-72.526 72.53-112.47 168.96-112.47 271.53s39.944 199 112.47 271.53c72.53 72.526 168.96 112.47 271.53 112.47s199-39.944 271.528-112.472c6.056-6.054 11.86-12.292 17.456-18.668l96.32 84.282c-93.846 107.166-231.664 174.858-385.304 174.858-282.77 0-512-229.23-512-512s229.23-512 512-512c141.386 0 269.368 57.326 362.016 149.984l149.984-149.984v384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "refresh", + "repeat", + "busy", + "wait", + "arrow" + ], + "defaultCode": 59780, + "grid": 16 + }, + { + "id": 133, + "paths": [ + "M64 0h384v64h-384zM576 0h384v64h-384zM952 320h-56v-256h-256v256h-256v-256h-256v256h-56c-39.6 0-72 32.4-72 72v560c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-376h128v376c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-560c0-39.6-32.4-72-72-72zM348 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32zM544 512h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32zM924 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "binoculars", + "lookup", + "search", + "find" + ], + "defaultCode": 59781, + "grid": 16 + }, + { + "id": 134, + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384s171.922 384 384 384c95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "search", + "magnifier", + "magnifying-glass", + "inspect", + "find" + ], + "defaultCode": 59782, + "grid": 16 + }, + { + "id": 135, + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384s171.922 384 384 384c95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM448 192h-128v128h-128v128h128v128h128v-128h128v-128h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "zoom-in", + "magnifier", + "magnifier-plus", + "enlarge" + ], + "defaultCode": 59783, + "grid": 16 + }, + { + "id": 136, + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384s171.922 384 384 384c95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM192 320h384v128h-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "zoom-out", + "magnifier", + "magnifier-minus", + "reduce" + ], + "defaultCode": 59784, + "grid": 16 + }, + { + "id": 137, + "paths": [ + "M1024 0h-416l160 160-192 192 96 96 192-192 160 160z", + "M1024 1024v-416l-160 160-192-192-96 96 192 192-160 160z", + "M0 1024h416l-160-160 192-192-96-96-192 192-160-160z", + "M0 0v416l160-160 192 192 96-96-192-192 160-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "enlarge", + "expand", + "maximize", + "fullscreen" + ], + "defaultCode": 59785, + "grid": 16 + }, + { + "id": 138, + "paths": [ + "M576 448h416l-160-160 192-192-96-96-192 192-160-160z", + "M576 576v416l160-160 192 192 96-96-192-192 160-160z", + "M448 575.996h-416l160 160-192 192 96 96 192-192 160 160z", + "M448 448v-416l-160 160-192-192-96 96 192 192-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shrink", + "collapse", + "minimize", + "contract" + ], + "defaultCode": 59786, + "grid": 16 + }, + { + "id": 139, + "paths": [ + "M1024 0v416l-160-160-192 192-96-96 192-192-160-160zM448 672l-192 192 160 160h-416v-416l160 160 192-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "enlarge", + "expand", + "maximize", + "fullscreen" + ], + "defaultCode": 59787, + "grid": 16 + }, + { + "id": 140, + "paths": [ + "M448 576v416l-160-160-192 192-96-96 192-192-160-160zM1024 96l-192 192 160 160h-416v-416l160 160 192-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shrink", + "collapse", + "minimize", + "contract" + ], + "defaultCode": 59788, + "grid": 16 + }, + { + "id": 141, + "paths": [ + "M704 0c-176.73 0-320 143.268-320 320 0 20.026 1.858 39.616 5.376 58.624l-389.376 389.376v192c0 35.346 28.654 64 64 64h64v-64h128v-128h128v-128h128l83.042-83.042c34.010 12.316 70.696 19.042 108.958 19.042 176.73 0 320-143.268 320-320s-143.27-320-320-320zM799.874 320.126c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "key", + "password", + "login", + "signin" + ], + "defaultCode": 59789, + "grid": 16 + }, + { + "id": 142, + "paths": [ + "M1002.132 314.242l-101.106-101.104c-24.792-24.794-65.37-65.368-90.162-90.164l-101.106-101.104c-24.792-24.794-68.954-29.166-98.13-9.716l-276.438 184.292c-29.176 19.452-40.218 61.028-24.536 92.39l70.486 140.974c2.154 4.306 4.646 8.896 7.39 13.66l-356.53 356.53-32 224h192v-64h128v-128h128v-128h128v-71.186c6.396 3.812 12.534 7.216 18.192 10.044l140.97 70.488c31.366 15.682 72.94 4.638 92.39-24.538l184.294-276.44c19.454-29.172 15.078-73.33-9.714-98.126zM150.628 854.626l-45.254-45.254 311.572-311.57 45.254 45.254-311.572 311.57zM917.020 423.764l-45.256 45.256c-12.446 12.444-32.808 12.444-45.254 0l-271.53-271.53c-12.446-12.444-12.446-32.81 0-45.254l45.256-45.256c12.446-12.444 32.808-12.444 45.254 0l271.53 271.53c12.446 12.444 12.446 32.81 0 45.254z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "key", + "password", + "login", + "signin" + ], + "defaultCode": 59790, + "grid": 16 + }, + { + "id": 143, + "paths": [ + "M592 448h-16v-192c0-105.87-86.13-192-192-192h-128c-105.87 0-192 86.13-192 192v192h-16c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h544c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48zM192 256c0-35.29 28.71-64 64-64h128c35.29 0 64 28.71 64 64v192h-256v-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lock", + "secure", + "private", + "encrypted" + ], + "defaultCode": 59791, + "grid": 16 + }, + { + "id": 144, + "paths": [ + "M768 64c105.87 0 192 86.13 192 192v192h-128v-192c0-35.29-28.71-64-64-64h-128c-35.29 0-64 28.71-64 64v192h16c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48h-544c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h400v-192c0-105.87 86.13-192 192-192h128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "unlocked", + "lock-open" + ], + "defaultCode": 59792, + "grid": 16 + }, + { + "id": 145, + "paths": [ + "M1002.934 817.876l-460.552-394.76c21.448-40.298 33.618-86.282 33.618-135.116 0-159.058-128.942-288-288-288-29.094 0-57.172 4.332-83.646 12.354l166.39 166.39c24.89 24.89 24.89 65.62 0 90.51l-101.49 101.49c-24.89 24.89-65.62 24.89-90.51 0l-166.39-166.39c-8.022 26.474-12.354 54.552-12.354 83.646 0 159.058 128.942 288 288 288 48.834 0 94.818-12.17 135.116-33.62l394.76 460.552c22.908 26.724 62.016 28.226 86.904 3.338l101.492-101.492c24.888-24.888 23.386-63.994-3.338-86.902z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wrench", + "tool", + "fix", + "settings", + "control", + "options", + "preferences" + ], + "defaultCode": 59793, + "grid": 16 + }, + { + "id": 146, + "paths": [ + "M448 128v-16c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576zM256 256v-128h128v128h-128zM832 432c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-576v128h576v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h192v-128h-192v-16zM640 576v-128h128v128h-128zM448 752c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576v-16zM256 896v-128h128v128h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "equalizer", + "sliders", + "settings", + "preferences", + "dashboard", + "control" + ], + "defaultCode": 59794, + "grid": 16 + }, + { + "id": 147, + "paths": [ + "M896 448h16c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h-128v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v576h128v-576zM768 256h128v128h-128v-128zM592 832c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-576h-128v576h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v192h128v-192h16zM448 640h128v128h-128v-128zM272 448c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h-128v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v576h128v-576h16zM128 256h128v128h-128v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "equalizer", + "sliders", + "settings", + "preferences", + "dashboard", + "control" + ], + "defaultCode": 59795, + "grid": 16 + }, + { + "id": 148, + "paths": [ + "M933.79 610.25c-53.726-93.054-21.416-212.304 72.152-266.488l-100.626-174.292c-28.75 16.854-62.176 26.518-97.846 26.518-107.536 0-194.708-87.746-194.708-195.99h-201.258c0.266 33.41-8.074 67.282-25.958 98.252-53.724 93.056-173.156 124.702-266.862 70.758l-100.624 174.292c28.97 16.472 54.050 40.588 71.886 71.478 53.638 92.908 21.512 211.92-71.708 266.224l100.626 174.292c28.65-16.696 61.916-26.254 97.4-26.254 107.196 0 194.144 87.192 194.7 194.958h201.254c-0.086-33.074 8.272-66.57 25.966-97.218 53.636-92.906 172.776-124.594 266.414-71.012l100.626-174.29c-28.78-16.466-53.692-40.498-71.434-71.228zM512 719.332c-114.508 0-207.336-92.824-207.336-207.334 0-114.508 92.826-207.334 207.336-207.334 114.508 0 207.332 92.826 207.332 207.334-0.002 114.51-92.824 207.334-207.332 207.334z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cog", + "gear", + "preferences", + "settings", + "generate", + "control", + "options" + ], + "defaultCode": 59796, + "grid": 16 + }, + { + "id": 149, + "paths": [ + "M363.722 722.052l41.298-57.816-45.254-45.256-57.818 41.296c-10.722-5.994-22.204-10.774-34.266-14.192l-11.682-70.084h-64l-11.68 70.086c-12.062 3.418-23.544 8.198-34.266 14.192l-57.818-41.298-45.256 45.256 41.298 57.816c-5.994 10.72-10.774 22.206-14.192 34.266l-70.086 11.682v64l70.086 11.682c3.418 12.060 8.198 23.544 14.192 34.266l-41.298 57.816 45.254 45.256 57.818-41.296c10.722 5.994 22.204 10.774 34.266 14.192l11.682 70.084h64l11.68-70.086c12.062-3.418 23.544-8.198 34.266-14.192l57.818 41.296 45.254-45.256-41.298-57.816c5.994-10.72 10.774-22.206 14.192-34.266l70.088-11.68v-64l-70.086-11.682c-3.418-12.060-8.198-23.544-14.192-34.266zM224 864c-35.348 0-64-28.654-64-64s28.652-64 64-64 64 28.654 64 64-28.652 64-64 64zM1024 384v-64l-67.382-12.25c-1.242-8.046-2.832-15.978-4.724-23.79l57.558-37.1-24.492-59.128-66.944 14.468c-4.214-6.91-8.726-13.62-13.492-20.13l39.006-56.342-45.256-45.254-56.342 39.006c-6.512-4.766-13.22-9.276-20.13-13.494l14.468-66.944-59.128-24.494-37.1 57.558c-7.812-1.892-15.744-3.482-23.79-4.724l-12.252-67.382h-64l-12.252 67.382c-8.046 1.242-15.976 2.832-23.79 4.724l-37.098-57.558-59.128 24.492 14.468 66.944c-6.91 4.216-13.62 8.728-20.13 13.494l-56.342-39.006-45.254 45.254 39.006 56.342c-4.766 6.51-9.278 13.22-13.494 20.13l-66.944-14.468-24.492 59.128 57.558 37.1c-1.892 7.812-3.482 15.742-4.724 23.79l-67.384 12.252v64l67.382 12.25c1.242 8.046 2.832 15.978 4.724 23.79l-57.558 37.1 24.492 59.128 66.944-14.468c4.216 6.91 8.728 13.618 13.494 20.13l-39.006 56.342 45.254 45.256 56.342-39.006c6.51 4.766 13.22 9.276 20.13 13.492l-14.468 66.944 59.128 24.492 37.102-57.558c7.81 1.892 15.742 3.482 23.788 4.724l12.252 67.384h64l12.252-67.382c8.044-1.242 15.976-2.832 23.79-4.724l37.1 57.558 59.128-24.492-14.468-66.944c6.91-4.216 13.62-8.726 20.13-13.492l56.342 39.006 45.256-45.256-39.006-56.342c4.766-6.512 9.276-13.22 13.492-20.13l66.944 14.468 24.492-59.13-57.558-37.1c1.892-7.812 3.482-15.742 4.724-23.79l67.382-12.25zM672 491.2c-76.878 0-139.2-62.322-139.2-139.2s62.32-139.2 139.2-139.2 139.2 62.322 139.2 139.2c0 76.878-62.32 139.2-139.2 139.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cogs", + "gears", + "preferences", + "settings", + "generate", + "control", + "options" + ], + "defaultCode": 59797, + "grid": 16 + }, + { + "id": 150, + "paths": [ + "M1009.996 828.976l-301.544-301.544c-18.668-18.668-49.214-18.668-67.882 0l-22.626 22.626-184-184 302.056-302.058h-320l-142.058 142.058-14.060-14.058h-67.882v67.882l14.058 14.058-206.058 206.060 160 160 206.058-206.058 184 184-22.626 22.626c-18.668 18.668-18.668 49.214 0 67.882l301.544 301.544c18.668 18.668 49.214 18.668 67.882 0l113.136-113.136c18.67-18.666 18.67-49.214 0.002-67.882z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hammer", + "tool", + "fix", + "make", + "generate", + "work", + "build" + ], + "defaultCode": 59798, + "grid": 16 + }, + { + "id": 151, + "paths": [ + "M256 192l-128-128h-64v64l128 128zM320 0h64v128h-64zM576 320h128v64h-128zM640 128v-64h-64l-128 128 64 64zM0 320h128v64h-128zM320 576h64v128h-64zM64 576v64h64l128-128-64-64zM1010 882l-636.118-636.118c-18.668-18.668-49.214-18.668-67.882 0l-60.118 60.118c-18.668 18.668-18.668 49.214 0 67.882l636.118 636.118c18.668 18.668 49.214 18.668 67.882 0l60.118-60.118c18.668-18.668 18.668-49.214 0-67.882zM480 544l-192-192 64-64 192 192-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "magic-wand", + "wizard" + ], + "defaultCode": 59799, + "grid": 16 + }, + { + "id": 152, + "paths": [ + "M896 256h-192v-128c0-35.2-28.8-64-64-64h-256c-35.2 0-64 28.8-64 64v128h-192c-70.4 0-128 57.6-128 128v512c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v-512c0-70.4-57.6-128-128-128zM384 128h256v128h-256v-128zM768 704h-192v192h-128v-192h-192v-128h192v-192h128v192h192v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "aid-kit", + "health", + "medicine", + "medical" + ], + "defaultCode": 59800, + "grid": 16 + }, + { + "id": 153, + "paths": [ + "M1024 576v-64h-193.29c-5.862-72.686-31.786-139.026-71.67-192.25h161.944l70.060-280.24-62.090-15.522-57.94 231.76h-174.68c-0.892-0.694-1.796-1.374-2.698-2.056 6.71-19.502 10.362-40.422 10.362-62.194 0.002-105.76-85.958-191.498-191.998-191.498s-192 85.738-192 191.5c0 21.772 3.65 42.692 10.362 62.194-0.9 0.684-1.804 1.362-2.698 2.056h-174.68l-57.94-231.76-62.090 15.522 70.060 280.24h161.944c-39.884 53.222-65.806 119.562-71.668 192.248h-193.29v64h193.37c3.802 45.664 15.508 88.812 33.638 127.75h-123.992l-70.060 280.238 62.090 15.524 57.94-231.762h112.354c58.692 78.032 147.396 127.75 246.66 127.75s187.966-49.718 246.662-127.75h112.354l57.94 231.762 62.090-15.524-70.060-280.238h-123.992c18.13-38.938 29.836-82.086 33.636-127.75h193.37z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bug", + "virus", + "error" + ], + "defaultCode": 59801, + "grid": 16 + }, + { + "id": 154, + "paths": [ + "M448 576v-448c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448c0-72.034-17.028-140.084-47.236-200.382l-400.764 200.382zM912.764 247.618c-73.552-146.816-225.374-247.618-400.764-247.618v448l400.764-200.382z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pie-chart", + "stats", + "statistics", + "graph" + ], + "defaultCode": 59802, + "grid": 16 + }, + { + "id": 155, + "paths": [ + "M128 896h896v128h-1024v-1024h128zM288 832c-53.020 0-96-42.98-96-96s42.98-96 96-96c2.828 0 5.622 0.148 8.388 0.386l103.192-171.986c-9.84-15.070-15.58-33.062-15.58-52.402 0-53.020 42.98-96 96-96s96 42.98 96 96c0 19.342-5.74 37.332-15.58 52.402l103.192 171.986c2.766-0.238 5.56-0.386 8.388-0.386 2.136 0 4.248 0.094 6.35 0.23l170.356-298.122c-10.536-15.408-16.706-34.036-16.706-54.11 0-53.020 42.98-96 96-96s96 42.98 96 96c0 53.020-42.98 96-96 96-2.14 0-4.248-0.094-6.35-0.232l-170.356 298.124c10.536 15.406 16.706 34.036 16.706 54.11 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-19.34 5.74-37.332 15.578-52.402l-103.19-171.984c-2.766 0.238-5.56 0.386-8.388 0.386s-5.622-0.146-8.388-0.386l-103.192 171.986c9.84 15.068 15.58 33.060 15.58 52.4 0 53.020-42.98 96-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stats-dots", + "stats", + "plot", + "statistics", + "chart" + ], + "defaultCode": 59803, + "grid": 16 + }, + { + "id": 156, + "paths": [ + "M0 832h1024v128h-1024zM128 576h128v192h-128zM320 320h128v448h-128zM512 512h128v256h-128zM704 128h128v640h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stats-bars", + "stats", + "statistics", + "chart" + ], + "defaultCode": 59804, + "grid": 16 + }, + { + "id": 157, + "paths": [ + "M288 384h-192c-17.6 0-32 14.4-32 32v576c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-576c0-17.6-14.4-32-32-32zM288 960h-192v-256h192v256zM608 256h-192c-17.6 0-32 14.4-32 32v704c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-704c0-17.6-14.4-32-32-32zM608 960h-192v-320h192v320zM928 128h-192c-17.6 0-32 14.4-32 32v832c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-832c0-17.6-14.4-32-32-32zM928 960h-192v-384h192v384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stats-bars", + "stats", + "statistics", + "chart" + ], + "defaultCode": 59805, + "grid": 16 + }, + { + "id": 158, + "paths": [ + "M832 192v-128h-640v128h-192v128c0 106.038 85.958 192 192 192 20.076 0 39.43-3.086 57.62-8.802 46.174 66.008 116.608 113.796 198.38 130.396v198.406h-64c-70.694 0-128 57.306-128 128h512c0-70.694-57.306-128-128-128h-64v-198.406c81.772-16.6 152.206-64.386 198.38-130.396 18.19 5.716 37.544 8.802 57.62 8.802 106.042 0 192-85.962 192-192v-128h-192zM192 436c-63.962 0-116-52.038-116-116v-64h116v64c0 40.186 7.43 78.632 20.954 114.068-6.802 1.246-13.798 1.932-20.954 1.932zM948 320c0 63.962-52.038 116-116 116-7.156 0-14.152-0.686-20.954-1.932 13.524-35.436 20.954-73.882 20.954-114.068v-64h116v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "trophy", + "cup", + "prize", + "award", + "winner", + "tournament" + ], + "defaultCode": 59806, + "grid": 16 + }, + { + "id": 159, + "paths": [ + "M771.516 320c18.126-12.88 35.512-27.216 51.444-43.148 33.402-33.402 55.746-74.5 62.912-115.722 7.858-45.186-3.672-87.14-31.63-115.1-22.3-22.298-52.51-34.086-87.364-34.086-49.632 0-101.922 23.824-143.46 65.362-66.476 66.476-105.226 158.238-126.076 223.722-15.44-65.802-46.206-154.644-106.018-214.458-32.094-32.092-73.114-48.57-111.846-48.57-31.654 0-61.78 11.004-84.26 33.486-49.986 49.988-43.232 137.786 15.086 196.104 20.792 20.792 45.098 38.062 70.72 52.412h-217.024v256h64v448h768v-448.002h64v-256h-188.484zM674.326 128.218c27.724-27.724 62.322-44.274 92.55-44.274 10.7 0 25.708 2.254 36.45 12.998 26.030 26.028 11.412 86.308-31.28 128.998-43.946 43.946-103.060 74.168-154.432 94.060h-50.672c18.568-57.548 52.058-136.456 107.384-191.782zM233.934 160.89c-0.702-9.12-0.050-26.248 12.196-38.494 10.244-10.244 23.788-12.396 33.348-12.396v0c21.258 0 43.468 10.016 60.932 27.48 33.872 33.872 61.766 87.772 80.668 155.876 0.51 1.84 1.008 3.67 1.496 5.486-1.816-0.486-3.646-0.984-5.486-1.496-68.104-18.904-122.002-46.798-155.874-80.67-15.828-15.826-25.77-36.16-27.28-55.786zM448 960h-256v-416h256v416zM448 512h-320v-128h320v128zM832 960h-256v-416h256v416zM896 512h-320v-128h320v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "gift", + "present", + "box" + ], + "defaultCode": 59807, + "grid": 16 + }, + { + "id": 160, + "paths": [ + "M777.784 16.856c-5.576-10.38-16.406-16.856-28.19-16.856h-475.188c-11.784 0-22.614 6.476-28.19 16.856-35.468 66.020-54.216 143.184-54.216 223.144 0 105.412 32.372 204.828 91.154 279.938 45.428 58.046 102.48 96.54 164.846 112.172v327.89h-96c-17.672 0-32 14.326-32 32s14.328 32 32 32h320c17.674 0 32-14.326 32-32s-14.326-32-32-32h-96v-327.89c62.368-15.632 119.418-54.124 164.846-112.172 58.782-75.11 91.154-174.526 91.154-279.938 0-79.96-18.748-157.122-54.216-223.144zM294.1 64h435.8c24.974 52.902 38.1 113.338 38.1 176 0 5.364-0.108 10.696-0.296 16h-511.406c-0.19-5.304-0.296-10.636-0.296-16-0.002-62.664 13.126-123.098 38.098-176z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "glass", + "drink", + "beverage", + "wine" + ], + "defaultCode": 59808, + "grid": 16 + }, + { + "id": 161, + "paths": [ + "M889.162 179.77c7.568-9.632 8.972-22.742 3.62-33.758-5.356-11.018-16.532-18.012-28.782-18.012h-704c-12.25 0-23.426 6.994-28.78 18.012-5.356 11.018-3.95 24.126 3.618 33.758l313.162 398.57v381.66h-96c-17.672 0-32 14.326-32 32s14.328 32 32 32h320c17.674 0 32-14.326 32-32s-14.326-32-32-32h-96v-381.66l313.162-398.57zM798.162 192l-100.572 128h-371.18l-100.57-128h572.322z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "glass", + "drink", + "beverage", + "wine" + ], + "defaultCode": 59809, + "grid": 16 + }, + { + "id": 162, + "paths": [ + "M960 320h-192v-96c0-88.366-171.922-160-384-160s-384 71.634-384 160v640c0 88.366 171.922 160 384 160s384-71.634 384-160v-96h192c35.346 0 64-28.654 64-64v-320c0-35.346-28.654-64-64-64zM176.056 258.398c-36.994-12.19-59.408-25.246-71.41-34.398 12.004-9.152 34.416-22.208 71.41-34.398 57.942-19.090 131.79-29.602 207.944-29.602s150.004 10.512 207.944 29.602c36.994 12.188 59.408 25.246 71.41 34.398-12.002 9.152-34.416 22.208-71.41 34.398-57.94 19.090-131.79 29.602-207.944 29.602s-150.002-10.512-207.944-29.602zM896 640h-128v-192h128v192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mug", + "drink", + "glass", + "beverage" + ], + "defaultCode": 59810, + "grid": 16 + }, + { + "id": 163, + "paths": [ + "M224 0c-106.040 0-192 100.288-192 224 0 105.924 63.022 194.666 147.706 217.998l-31.788 518.124c-2.154 35.132 24.882 63.878 60.082 63.878h32c35.2 0 62.236-28.746 60.082-63.878l-31.788-518.124c84.684-23.332 147.706-112.074 147.706-217.998 0-123.712-85.96-224-192-224zM869.334 0l-53.334 320h-40l-26.666-320h-26.668l-26.666 320h-40l-53.334-320h-26.666v416c0 17.672 14.326 32 32 32h83.338l-31.42 512.122c-2.154 35.132 24.882 63.878 60.082 63.878h32c35.2 0 62.236-28.746 60.082-63.878l-31.42-512.122h83.338c17.674 0 32-14.328 32-32v-416h-26.666z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spoon-knife", + "food", + "restaurant" + ], + "defaultCode": 59811, + "grid": 16 + }, + { + "id": 164, + "paths": [ + "M1011.328 134.496c-110.752-83.928-281.184-134.034-455.91-134.034-216.12 0-392.226 75.456-483.16 207.020-42.708 61.79-66.33 134.958-70.208 217.474-3.454 73.474 8.884 154.726 36.684 242.146 94.874-284.384 359.82-507.102 665.266-507.102 0 0-285.826 75.232-465.524 308.192-0.112 0.138-2.494 3.090-6.614 8.698-36.080 48.278-67.538 103.162-91.078 165.328-39.87 94.83-76.784 224.948-76.784 381.782h128c0 0-19.43-122.222 14.36-262.79 55.89 7.556 105.858 11.306 150.852 11.306 117.678 0 201.37-25.46 263.388-80.124 55.568-48.978 86.198-114.786 118.624-184.456 49.524-106.408 105.654-227.010 268.654-320.152 9.33-5.332 15.362-14.992 16.056-25.716s-4.040-21.080-12.606-27.572z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "leaf", + "nature", + "plant", + "tea", + "green", + "vegan", + "vegetarian" + ], + "defaultCode": 59812, + "grid": 16 + }, + { + "id": 165, + "paths": [ + "M704 64l-320 320h-192l-192 256c0 0 203.416-56.652 322.066-30.084l-322.066 414.084 421.902-328.144c58.838 134.654-37.902 328.144-37.902 328.144l256-192v-192l320-320 64-320-320 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "rocket", + "jet", + "speed", + "spaceship", + "fast" + ], + "defaultCode": 59813, + "grid": 16 + }, + { + "id": 166, + "paths": [ + "M512 64c282.77 0 512 229.23 512 512 0 192.792-106.576 360.666-264.008 448h-495.984c-157.432-87.334-264.008-255.208-264.008-448 0-282.77 229.23-512 512-512zM801.914 865.914c77.438-77.44 120.086-180.398 120.086-289.914h-90v-64h85.038c-7.014-44.998-21.39-88.146-42.564-128h-106.474v-64h64.284c-9.438-11.762-19.552-23.096-30.37-33.914-46.222-46.22-101.54-80.038-161.914-99.798v69.712h-64v-85.040c-20.982-3.268-42.36-4.96-64-4.96s-43.018 1.69-64 4.96v85.040h-64v-69.712c-60.372 19.76-115.692 53.576-161.914 99.798-10.818 10.818-20.932 22.152-30.37 33.914h64.284v64h-106.476c-21.174 39.854-35.552 83.002-42.564 128h85.040v64h-90c0 109.516 42.648 212.474 120.086 289.914 10.71 10.71 21.924 20.728 33.56 30.086h192.354l36.572-512h54.856l36.572 512h192.354c11.636-9.358 22.852-19.378 33.56-30.086z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "meter", + "gauge", + "dashboard", + "speedometer", + "performance" + ], + "defaultCode": 59814, + "grid": 16 + }, + { + "id": 167, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM302.836 834.152c11.106-30.632 17.164-63.688 17.164-98.152 0-124.35-78.81-230.292-189.208-270.606 10.21-84.924 48.254-163.498 109.678-224.924 72.53-72.526 168.96-112.47 271.53-112.47s199 39.944 271.53 112.47c61.428 61.426 99.468 140 109.682 224.924-110.402 40.314-189.212 146.256-189.212 270.606 0 34.468 6.060 67.52 17.166 98.15-61.706 40.242-133.77 61.85-209.166 61.85-75.394 0-147.458-21.608-209.164-61.848zM551.754 640.996c13.878 3.494 24.246 16.080 24.246 31.004v64c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32v-64c0-14.924 10.368-27.51 24.246-31.004l23.754-448.996h32l23.754 448.996z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "meter", + "gauge", + "dashboard", + "speedometer", + "performance" + ], + "defaultCode": 59815, + "grid": 16 + }, + { + "id": 168, + "paths": [ + "M1010.174 915.75l-548.634-499.458 25.534-25.598c20.894-20.954 32.188-48.030 33.918-75.61 1.002-0.45 2.002-0.912 2.958-1.442l102.99-64.402c13.934-16.392 12.916-42.268-2.284-57.502l-179.12-179.608c-15.19-15.234-40.998-16.262-57.344-2.284l-64.236 103.268c-0.526 0.966-0.99 1.966-1.44 2.974-27.502 1.736-54.5 13.056-75.398 34.006l-97.428 97.702c-20.898 20.956-32.184 48.026-33.918 75.604-1.004 0.45-2.004 0.916-2.964 1.446l-102.986 64.406c-13.942 16.39-12.916 42.264 2.276 57.496l179.12 179.604c15.194 15.238 40.996 16.262 57.35 2.286l64.228-103.27c0.528-0.958 0.988-1.96 1.442-2.966 27.502-1.738 54.504-13.050 75.398-34.004l28.292-28.372 498.122 550.114c14.436 15.944 36.7 18.518 49.474 5.712l50.356-50.488c12.764-12.808 10.196-35.132-5.706-49.614z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hammer", + "gavel", + "rules", + "justice", + "legal" + ], + "defaultCode": 59816, + "grid": 16 + }, + { + "id": 169, + "paths": [ + "M321.008 1024c-68.246-142.008-31.902-223.378 20.55-300.044 57.44-83.956 72.244-167.066 72.244-167.066s45.154 58.7 27.092 150.508c79.772-88.8 94.824-230.28 82.782-284.464 180.314 126.012 257.376 398.856 153.522 601.066 552.372-312.532 137.398-780.172 65.154-832.85 24.082 52.676 28.648 141.85-20 185.126-82.352-312.276-285.972-376.276-285.972-376.276 24.082 161.044-87.296 337.144-194.696 468.73-3.774-64.216-7.782-108.528-41.55-169.98-7.58 116.656-96.732 211.748-120.874 328.628-32.702 158.286 24.496 274.18 241.748 396.622z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "fire", + "flame", + "hot", + "popular" + ], + "defaultCode": 59817, + "grid": 16 + }, + { + "id": 170, + "paths": [ + "M956.29 804.482l-316.29-527.024v-213.458h32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-320c-17.6 0-32 14.4-32 32s14.4 32 32 32h32v213.458l-316.288 527.024c-72.442 120.734-16.512 219.518 124.288 219.518h640c140.8 0 196.73-98.784 124.29-219.518zM241.038 640l206.962-344.938v-231.062h128v231.062l206.964 344.938h-541.926z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lab", + "beta", + "beaker", + "test", + "experiment" + ], + "defaultCode": 59818, + "grid": 16 + }, + { + "id": 171, + "paths": [ + "M896 0h-256l64 576c0 106.040-85.96 192-192 192s-192-85.96-192-192l64-576h-256l-64 576c0 247.424 200.576 448 448 448s448-200.576 448-448l-64-576zM777.874 841.874c-71.018 71.014-165.44 110.126-265.874 110.126s-194.856-39.112-265.872-110.126c-70.116-70.118-109.13-163.048-110.11-262.054l36.092-324.82h111.114l-35.224 317.010v3.99c0 70.518 27.46 136.814 77.324 186.676 49.862 49.864 116.158 77.324 186.676 77.324s136.814-27.46 186.676-77.324c49.864-49.862 77.324-116.158 77.324-186.676v-3.988l-0.44-3.962-34.782-313.050h111.114l36.090 324.818c-0.98 99.006-39.994 191.938-110.108 262.056z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "magnet", + "attract" + ], + "defaultCode": 59819, + "grid": 16 + }, + { + "id": 172, + "paths": [ + "M128 320v640c0 35.2 28.8 64 64 64h576c35.2 0 64-28.8 64-64v-640h-704zM320 896h-64v-448h64v448zM448 896h-64v-448h64v448zM576 896h-64v-448h64v448zM704 896h-64v-448h64v448z", + "M848 128h-208v-80c0-26.4-21.6-48-48-48h-224c-26.4 0-48 21.6-48 48v80h-208c-26.4 0-48 21.6-48 48v80h832v-80c0-26.4-21.6-48-48-48zM576 128h-192v-63.198h192v63.198z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bin", + "trashcan", + "remove", + "delete", + "recycle", + "dispose" + ], + "defaultCode": 59820, + "grid": 16 + }, + { + "id": 173, + "paths": [ + "M192 1024h640l64-704h-768zM640 128v-128h-256v128h-320v192l64-64h768l64 64v-192h-320zM576 128h-128v-64h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bin", + "trashcan", + "remove", + "delete", + "recycle", + "dispose" + ], + "defaultCode": 59821, + "grid": 16 + }, + { + "id": 174, + "paths": [ + "M960 256h-256v-64c0-35.2-28.8-64-64-64h-256c-35.204 0-64 28.8-64 64v64h-256c-35.2 0-64 28.8-64 64v576c0 35.202 28.796 64 64 64h896c35.2 0 64-28.798 64-64v-576c0-35.2-28.8-64-64-64zM384 192.116c0.034-0.040 0.074-0.082 0.114-0.116h255.772c0.042 0.034 0.082 0.076 0.118 0.116v63.884h-256.004v-63.884zM960 512h-128v96c0 17.602-14.4 32-32 32h-64c-17.604 0-32-14.398-32-32v-96h-384v96c0 17.602-14.4 32-32 32h-64c-17.602 0-32-14.398-32-32v-96h-128v-64h896v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "briefcase", + "portfolio", + "suitcase", + "work", + "job", + "employee" + ], + "defaultCode": 59822, + "grid": 16 + }, + { + "id": 175, + "paths": [ + "M768 639.968l-182.82-182.822 438.82-329.15-128.010-127.996-548.52 219.442-172.7-172.706c-49.78-49.778-119.302-61.706-154.502-26.508-35.198 35.198-23.268 104.726 26.51 154.5l172.686 172.684-219.464 548.582 127.99 128.006 329.19-438.868 182.826 182.828v255.98h127.994l63.992-191.988 191.988-63.996v-127.992l-255.98 0.004z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "airplane", + "travel", + "flight", + "plane", + "transport", + "fly", + "vacation" + ], + "defaultCode": 59823, + "grid": 16 + }, + { + "id": 176, + "paths": [ + "M1024 576l-128-256h-192v-128c0-35.2-28.8-64-64-64h-576c-35.2 0-64 28.8-64 64v512l64 64h81.166c-10.898 18.832-17.166 40.678-17.166 64 0 70.692 57.308 128 128 128s128-57.308 128-128c0-23.322-6.268-45.168-17.166-64h354.334c-10.898 18.832-17.168 40.678-17.168 64 0 70.692 57.308 128 128 128s128-57.308 128-128c0-23.322-6.27-45.168-17.168-64h81.168v-192zM704 576v-192h132.668l96 192h-228.668z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "truck", + "transit", + "transport", + "delivery", + "vehicle" + ], + "defaultCode": 59824, + "grid": 16 + }, + { + "id": 177, + "paths": [ + "M704 1024h320l-256-1024h-192l32 256h-192l32-256h-192l-256 1024h320l32-256h320l32 256zM368 640l32-256h224l32 256h-288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "road", + "asphalt", + "travel" + ], + "defaultCode": 59825, + "grid": 16 + }, + { + "id": 178, + "paths": [ + "M416 96c0-53.018 42.98-96 96-96s96 42.982 96 96c0 53.020-42.98 96-96 96s-96-42.98-96-96z", + "M640 320l329.596-142.172-23.77-59.424-401.826 137.596h-64l-401.826-137.596-23.77 59.424 329.596 142.172v256l-131.27 424.57 59.84 22.7 185.716-415.27h27.428l185.716 415.27 59.84-22.7-131.27-424.57z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "accessibility" + ], + "defaultCode": 59826, + "grid": 16 + }, + { + "id": 179, + "paths": [ + "M1024 448h-100.924c-27.64-178.24-168.836-319.436-347.076-347.076v-100.924h-128v100.924c-178.24 27.64-319.436 168.836-347.076 347.076h-100.924v128h100.924c27.64 178.24 168.836 319.436 347.076 347.076v100.924h128v-100.924c178.24-27.64 319.436-168.836 347.076-347.076h100.924v-128zM792.822 448h-99.762c-19.284-54.55-62.51-97.778-117.060-117.060v-99.762c107.514 24.49 192.332 109.31 216.822 216.822zM512 576c-35.346 0-64-28.654-64-64s28.654-64 64-64c35.346 0 64 28.654 64 64s-28.654 64-64 64zM448 231.178v99.762c-54.55 19.282-97.778 62.51-117.060 117.060h-99.762c24.49-107.512 109.31-192.332 216.822-216.822zM231.178 576h99.762c19.282 54.55 62.51 97.778 117.060 117.060v99.762c-107.512-24.49-192.332-109.308-216.822-216.822zM576 792.822v-99.762c54.55-19.284 97.778-62.51 117.060-117.060h99.762c-24.49 107.514-109.308 192.332-216.822 216.822z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "target", + "goal", + "location", + "spot" + ], + "defaultCode": 59827, + "grid": 16 + }, + { + "id": 180, + "paths": [ + "M960 0l-448 128-448-128c0 0-4.5 51.698 0 128l448 140.090 448-140.090c4.498-76.302 0-128 0-128zM72.19 195.106c23.986 250.696 113.49 672.234 439.81 828.894 326.32-156.66 415.824-578.198 439.81-828.894l-439.81 165.358-439.81-165.358z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shield", + "security", + "defense", + "protection", + "anti virus" + ], + "defaultCode": 59828, + "grid": 16 + }, + { + "id": 181, + "paths": [ + "M384 0l-384 512h384l-256 512 896-640h-512l384-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "power", + "lightning", + "bolt", + "electricity" + ], + "defaultCode": 59829, + "grid": 16 + }, + { + "id": 182, + "paths": [ + "M640 146.588v135.958c36.206 15.804 69.5 38.408 98.274 67.18 60.442 60.44 93.726 140.8 93.726 226.274s-33.286 165.834-93.726 226.274c-60.44 60.44-140.798 93.726-226.274 93.726s-165.834-33.286-226.274-93.726c-60.44-60.44-93.726-140.8-93.726-226.274s33.286-165.834 93.726-226.274c28.774-28.774 62.068-51.378 98.274-67.182v-135.956c-185.048 55.080-320 226.472-320 429.412 0 247.424 200.578 448 448 448 247.424 0 448-200.576 448-448 0-202.94-134.95-374.332-320-429.412zM448 0h128v512h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "switch" + ], + "defaultCode": 59830, + "grid": 16 + }, + { + "id": 183, + "paths": [ + "M1024 282.5l-90.506-90.5-178.746 178.752-101.5-101.502 178.75-178.75-90.5-90.5-178.75 178.75-114.748-114.75-86.626 86.624 512.002 512 86.624-86.622-114.752-114.752 178.752-178.75z", + "M794.040 673.79l-443.824-443.824c-95.818 114.904-204.52 292.454-129.396 445.216l-132.248 132.248c-31.112 31.114-31.112 82.024 0 113.136l14.858 14.858c31.114 31.114 82.026 31.114 113.138 0l132.246-132.244c152.764 75.132 330.318-33.566 445.226-129.39z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "power-cord", + "plugin", + "extension" + ], + "defaultCode": 59831, + "grid": 16 + }, + { + "id": 184, + "paths": [ + "M928 128h-288c0-70.692-57.306-128-128-128-70.692 0-128 57.308-128 128h-288c-17.672 0-32 14.328-32 32v832c0 17.674 14.328 32 32 32h832c17.674 0 32-14.326 32-32v-832c0-17.672-14.326-32-32-32zM512 64c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64s28.654-64 64-64zM896 960h-768v-768h128v96c0 17.672 14.328 32 32 32h448c17.674 0 32-14.328 32-32v-96h128v768z", + "M448 858.51l-205.254-237.254 58.508-58.51 146.746 114.744 274.742-242.744 58.514 58.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clipboard", + "board", + "signup", + "register", + "agreement" + ], + "defaultCode": 59832, + "grid": 16 + }, + { + "id": 185, + "paths": [ + "M384 832h640v128h-640zM384 448h640v128h-640zM384 64h640v128h-640zM192 0v256h-64v-192h-64v-64zM128 526v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM256 704v320h-192v-64h128v-64h-128v-64h128v-64h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "list-numbered", + "options" + ], + "defaultCode": 59833, + "grid": 16 + }, + { + "id": 186, + "paths": [ + "M0 0h256v256h-256zM384 64h640v128h-640zM0 384h256v256h-256zM384 448h640v128h-640zM0 768h256v256h-256zM384 832h640v128h-640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "list", + "todo", + "bullet", + "menu", + "options" + ], + "defaultCode": 59834, + "grid": 16 + }, + { + "id": 187, + "paths": [ + "M384 64h640v128h-640v-128zM384 448h640v128h-640v-128zM384 832h640v128h-640v-128zM0 128c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM0 512c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM0 896c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "list", + "todo", + "bullet", + "menu", + "options" + ], + "defaultCode": 59835, + "grid": 16 + }, + { + "id": 188, + "paths": [ + "M976 768h-16v-208c0-61.756-50.242-112-112-112h-272v-128h16c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v128h-272c-61.756 0-112 50.244-112 112v208h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h256v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h256v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48zM192 960h-128v-128h128v128zM576 960h-128v-128h128v128zM448 256v-128h128v128h-128zM960 960h-128v-128h128v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tree", + "branches", + "inheritance" + ], + "defaultCode": 59836, + "grid": 16 + }, + { + "id": 189, + "paths": [ + "M64 192h896v192h-896zM64 448h896v192h-896zM64 704h896v192h-896z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "menu", + "list", + "options", + "lines", + "hamburger" + ], + "defaultCode": 59837, + "grid": 16 + }, + { + "id": 190, + "paths": [ + "M0 192h896v192h-896v-192zM0 448h896v192h-896v-192zM0 704h896v192h-896v-192z", + "M992 576l192 192 192-192z", + "M1376 512l-192-192-192 192z" + ], + "width": 1408, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "menu", + "options", + "hamburger" + ], + "defaultCode": 59838, + "grid": 16 + }, + { + "id": 191, + "paths": [ + "M0 192h896v192h-896v-192zM0 448h896v192h-896v-192zM0 704h896v192h-896v-192z", + "M992 448l192 192 192-192z" + ], + "width": 1408, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "menu", + "options", + "hamburger" + ], + "defaultCode": 59839, + "grid": 16 + }, + { + "id": 192, + "paths": [ + "M0 192h896v192h-896v-192zM0 448h896v192h-896v-192zM0 704h896v192h-896v-192z", + "M992 640l192-192 192 192z" + ], + "width": 1408, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "menu", + "options", + "hamburger" + ], + "defaultCode": 59840, + "grid": 16 + }, + { + "id": 193, + "paths": [ + "M1024 657.542c0-82.090-56.678-150.9-132.996-169.48-3.242-128.7-108.458-232.062-237.862-232.062-75.792 0-143.266 35.494-186.854 90.732-24.442-31.598-62.69-51.96-105.708-51.96-73.81 0-133.642 59.874-133.642 133.722 0 6.436 0.48 12.76 1.364 18.954-11.222-2.024-22.766-3.138-34.57-3.138-106.998-0.002-193.732 86.786-193.732 193.842 0 107.062 86.734 193.848 193.73 193.848l656.262-0.012c96.138-0.184 174.008-78.212 174.008-174.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cloud", + "weather" + ], + "defaultCode": 59841, + "grid": 16 + }, + { + "id": 194, + "paths": [ + "M891.004 360.060c-3.242-128.698-108.458-232.060-237.862-232.060-75.792 0-143.266 35.494-186.854 90.732-24.442-31.598-62.69-51.96-105.708-51.96-73.81 0-133.642 59.876-133.642 133.722 0 6.436 0.48 12.76 1.364 18.954-11.222-2.024-22.766-3.138-34.57-3.138-106.998-0.002-193.732 86.786-193.732 193.842 0 107.062 86.734 193.848 193.73 193.848h91.76l226.51 234.51 226.51-234.51 111.482-0.012c96.138-0.184 174.008-78.21 174.008-174.446 0-82.090-56.678-150.9-132.996-169.482zM512 832l-192-192h128v-192h128v192h128l-192 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cloud-download", + "cloud", + "save", + "download" + ], + "defaultCode": 59842, + "grid": 16 + }, + { + "id": 195, + "paths": [ + "M892.268 386.49c2.444-11.11 3.732-22.648 3.732-34.49 0-88.366-71.634-160-160-160-14.222 0-28.014 1.868-41.132 5.352-24.798-77.352-97.29-133.352-182.868-133.352-87.348 0-161.054 58.336-184.326 138.17-22.742-6.622-46.792-10.17-71.674-10.17-141.384 0-256 114.616-256 256 0 141.388 114.616 256 256 256h128v192h256v-192h224c88.366 0 160-71.632 160-160 0-78.72-56.854-144.162-131.732-157.51zM576 640v192h-128v-192h-160l224-224 224 224h-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cloud-upload", + "cloud", + "load", + "upload" + ], + "defaultCode": 59843, + "grid": 16 + }, + { + "id": 196, + "paths": [ + "M892.268 514.49c2.442-11.108 3.732-22.646 3.732-34.49 0-88.366-71.634-160-160-160-14.224 0-28.014 1.868-41.134 5.352-24.796-77.352-97.288-133.352-182.866-133.352-87.348 0-161.054 58.336-184.326 138.17-22.742-6.62-46.792-10.17-71.674-10.17-141.384 0-256 114.616-256 256 0 141.382 114.616 256 256 256h608c88.366 0 160-71.632 160-160 0-78.718-56.854-144.16-131.732-157.51zM416 768l-160-160 64-64 96 96 224-224 64 64-288 288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cloud-check", + "cloud", + "synced" + ], + "defaultCode": 59844, + "grid": 16 + }, + { + "id": 197, + "paths": [ + "M896 512h-160l-224 224-224-224h-160l-128 256v64h1024v-64l-128-256zM0 896h1024v64h-1024v-64zM576 320v-256h-128v256h-224l288 288 288-288h-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "download", + "save", + "store" + ], + "defaultCode": 59845, + "grid": 16 + }, + { + "id": 198, + "paths": [ + "M0 896h1024v64h-1024zM1024 768v64h-1024v-64l128-256h256v128h256v-128h256zM224 320l288-288 288 288h-224v256h-128v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "upload", + "load", + "open" + ], + "defaultCode": 59846, + "grid": 16 + }, + { + "id": 199, + "paths": [ + "M736 448l-256 256-256-256h160v-384h192v384zM480 704h-480v256h960v-256h-480zM896 832h-128v-64h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "download", + "save", + "store" + ], + "defaultCode": 59847, + "grid": 16 + }, + { + "id": 200, + "paths": [ + "M480 704h-480v256h960v-256h-480zM896 832h-128v-64h128v64zM224 320l256-256 256 256h-160v320h-192v-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "upload", + "load", + "open" + ], + "defaultCode": 59848, + "grid": 16 + }, + { + "id": 201, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480 0 265.098 214.904 480 480 480 265.098 0 480-214.902 480-480 0-265.096-214.902-480-480-480zM751.59 704c8.58-40.454 13.996-83.392 15.758-128h127.446c-3.336 44.196-13.624 87.114-30.68 128h-112.524zM208.41 384c-8.58 40.454-13.996 83.392-15.758 128h-127.444c3.336-44.194 13.622-87.114 30.678-128h112.524zM686.036 384c9.614 40.962 15.398 83.854 17.28 128h-191.316v-128h174.036zM512 320v-187.338c14.59 4.246 29.044 11.37 43.228 21.37 26.582 18.74 52.012 47.608 73.54 83.486 14.882 24.802 27.752 52.416 38.496 82.484h-155.264zM331.232 237.516c21.528-35.878 46.956-64.748 73.54-83.486 14.182-10 28.638-17.124 43.228-21.37v187.34h-155.264c10.746-30.066 23.616-57.68 38.496-82.484zM448 384v128h-191.314c1.88-44.146 7.666-87.038 17.278-128h174.036zM95.888 704c-17.056-40.886-27.342-83.804-30.678-128h127.444c1.762 44.608 7.178 87.546 15.758 128h-112.524zM256.686 576h191.314v128h-174.036c-9.612-40.96-15.398-83.854-17.278-128zM448 768v187.34c-14.588-4.246-29.044-11.372-43.228-21.37-26.584-18.74-52.014-47.61-73.54-83.486-14.882-24.804-27.75-52.418-38.498-82.484h155.266zM628.768 850.484c-21.528 35.876-46.958 64.746-73.54 83.486-14.184 9.998-28.638 17.124-43.228 21.37v-187.34h155.266c-10.746 30.066-23.616 57.68-38.498 82.484zM512 704v-128h191.314c-1.88 44.146-7.666 87.040-17.28 128h-174.034zM767.348 512c-1.762-44.608-7.178-87.546-15.758-128h112.524c17.056 40.886 27.344 83.806 30.68 128h-127.446zM830.658 320h-95.9c-18.638-58.762-44.376-110.294-75.316-151.428 42.536 20.34 81.058 47.616 114.714 81.272 21.48 21.478 40.362 44.938 56.502 70.156zM185.844 249.844c33.658-33.658 72.18-60.932 114.714-81.272-30.942 41.134-56.676 92.666-75.316 151.428h-95.898c16.138-25.218 35.022-48.678 56.5-70.156zM129.344 768h95.898c18.64 58.762 44.376 110.294 75.318 151.43-42.536-20.34-81.058-47.616-114.714-81.274-21.48-21.478-40.364-44.938-56.502-70.156zM774.156 838.156c-33.656 33.658-72.18 60.934-114.714 81.274 30.942-41.134 56.678-92.668 75.316-151.43h95.9c-16.14 25.218-35.022 48.678-56.502 70.156z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sphere", + "globe", + "internet" + ], + "defaultCode": 59849, + "grid": 16 + }, + { + "id": 202, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 960.002c-62.958 0-122.872-13.012-177.23-36.452l233.148-262.29c5.206-5.858 8.082-13.422 8.082-21.26v-96c0-17.674-14.326-32-32-32-112.99 0-232.204-117.462-233.374-118.626-6-6.002-14.14-9.374-22.626-9.374h-128c-17.672 0-32 14.328-32 32v192c0 12.122 6.848 23.202 17.69 28.622l110.31 55.156v187.886c-116.052-80.956-192-215.432-192-367.664 0-68.714 15.49-133.806 43.138-192h116.862c8.488 0 16.626-3.372 22.628-9.372l128-128c6-6.002 9.372-14.14 9.372-22.628v-77.412c40.562-12.074 83.518-18.588 128-18.588 70.406 0 137.004 16.26 196.282 45.2-4.144 3.502-8.176 7.164-12.046 11.036-36.266 36.264-56.236 84.478-56.236 135.764s19.97 99.5 56.236 135.764c36.434 36.432 85.218 56.264 135.634 56.26 3.166 0 6.342-0.080 9.518-0.236 13.814 51.802 38.752 186.656-8.404 372.334-0.444 1.744-0.696 3.488-0.842 5.224-81.324 83.080-194.7 134.656-320.142 134.656z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "earth", + "globe", + "language", + "web", + "internet", + "sphere", + "planet" + ], + "defaultCode": 59850, + "grid": 16 + }, + { + "id": 203, + "paths": [ + "M440.236 635.766c-13.31 0-26.616-5.076-36.77-15.23-95.134-95.136-95.134-249.934 0-345.070l192-192c46.088-46.086 107.36-71.466 172.534-71.466s126.448 25.38 172.536 71.464c95.132 95.136 95.132 249.934 0 345.070l-87.766 87.766c-20.308 20.308-53.23 20.308-73.54 0-20.306-20.306-20.306-53.232 0-73.54l87.766-87.766c54.584-54.586 54.584-143.404 0-197.99-26.442-26.442-61.6-41.004-98.996-41.004s-72.552 14.562-98.996 41.006l-192 191.998c-54.586 54.586-54.586 143.406 0 197.992 20.308 20.306 20.306 53.232 0 73.54-10.15 10.152-23.462 15.23-36.768 15.23z", + "M256 1012c-65.176 0-126.45-25.38-172.534-71.464-95.134-95.136-95.134-249.934 0-345.070l87.764-87.764c20.308-20.306 53.234-20.306 73.54 0 20.308 20.306 20.308 53.232 0 73.54l-87.764 87.764c-54.586 54.586-54.586 143.406 0 197.992 26.44 26.44 61.598 41.002 98.994 41.002s72.552-14.562 98.998-41.006l192-191.998c54.584-54.586 54.584-143.406 0-197.992-20.308-20.308-20.306-53.232 0-73.54 20.306-20.306 53.232-20.306 73.54 0.002 95.132 95.134 95.132 249.932 0.002 345.068l-192.002 192c-46.090 46.088-107.364 71.466-172.538 71.466z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "link", + "chain", + "url", + "uri", + "anchor" + ], + "defaultCode": 59851, + "grid": 16 + }, + { + "id": 204, + "paths": [ + "M0 0h128v1024h-128v-1024z", + "M832 643.002c82.624 0 154.57-19.984 192-49.5v-512c-37.43 29.518-109.376 49.502-192 49.502s-154.57-19.984-192-49.502v512c37.43 29.516 109.376 49.5 192 49.5z", + "M608 32.528c-46.906-19.94-115.52-32.528-192-32.528-96.396 0-180.334 19.984-224 49.502v512c43.666-29.518 127.604-49.502 224-49.502 76.48 0 145.094 12.588 192 32.528v-512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flag", + "report", + "mark" + ], + "defaultCode": 59852, + "grid": 16 + }, + { + "id": 205, + "paths": [ + "M665.832 327.048l-64.952-64.922-324.81 324.742c-53.814 53.792-53.814 141.048 0 194.844 53.804 53.792 141.060 53.792 194.874 0l389.772-389.708c89.714-89.662 89.714-235.062 0-324.726-89.666-89.704-235.112-89.704-324.782 0l-409.23 409.178c-0.29 0.304-0.612 0.576-0.876 0.846-125.102 125.096-125.102 327.856 0 452.906 125.054 125.056 327.868 125.056 452.988 0 0.274-0.274 0.516-0.568 0.82-0.876l0.032 0.034 279.332-279.292-64.986-64.92-279.33 279.262c-0.296 0.268-0.564 0.57-0.846 0.844-89.074 89.058-233.98 89.058-323.076 0-89.062-89.042-89.062-233.922 0-322.978 0.304-0.304 0.604-0.582 0.888-0.846l-0.046-0.060 409.28-409.166c53.712-53.738 141.144-53.738 194.886 0 53.712 53.734 53.712 141.148 0 194.84l-389.772 389.7c-17.936 17.922-47.054 17.922-64.972 0-17.894-17.886-17.894-47.032 0-64.92l324.806-324.782z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "attachment", + "paperclip" + ], + "defaultCode": 59853, + "grid": 16 + }, + { + "id": 206, + "paths": [ + "M512 192c-223.318 0-416.882 130.042-512 320 95.118 189.958 288.682 320 512 320 223.312 0 416.876-130.042 512-320-95.116-189.958-288.688-320-512-320zM764.45 361.704c60.162 38.374 111.142 89.774 149.434 150.296-38.292 60.522-89.274 111.922-149.436 150.296-75.594 48.218-162.89 73.704-252.448 73.704-89.56 0-176.858-25.486-252.452-73.704-60.158-38.372-111.138-89.772-149.432-150.296 38.292-60.524 89.274-111.924 149.434-150.296 3.918-2.5 7.876-4.922 11.86-7.3-9.96 27.328-15.41 56.822-15.41 87.596 0 141.382 114.616 256 256 256 141.382 0 256-114.618 256-256 0-30.774-5.452-60.268-15.408-87.598 3.978 2.378 7.938 4.802 11.858 7.302v0zM512 416c0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96 96 42.982 96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eye", + "views", + "vision", + "visit" + ], + "defaultCode": 59854, + "grid": 16 + }, + { + "id": 207, + "paths": [ + "M1024 128h-128v-128h-128v128h-128v128h128v128h128v-128h128z", + "M863.862 446.028c18.436 20.478 35.192 42.53 50.022 65.972-38.292 60.522-89.274 111.922-149.436 150.296-75.594 48.218-162.89 73.704-252.448 73.704-89.56 0-176.86-25.486-252.454-73.704-60.156-38.372-111.136-89.772-149.43-150.296 38.292-60.524 89.274-111.924 149.434-150.296 3.918-2.5 7.876-4.922 11.862-7.3-9.962 27.328-15.412 56.822-15.412 87.596 0 141.382 114.616 256 256 256 141.38 0 256-114.618 256-256 0-0.692-0.018-1.38-0.024-2.072-109.284-28.138-190.298-126.63-191.932-244.31-21.026-2.38-42.394-3.618-64.044-3.618-223.318 0-416.882 130.042-512 320 95.118 189.958 288.682 320 512 320 223.31 0 416.876-130.042 512-320-17.64-35.23-38.676-68.394-62.65-99.054-29.28 17.178-62.272 28.71-97.488 33.082zM416 320c53.020 0 96 42.982 96 96 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eye-plus", + "views", + "vision", + "visit" + ], + "defaultCode": 59855, + "grid": 16 + }, + { + "id": 208, + "paths": [ + "M640 128h384v128h-384v-128z", + "M870.32 320h-294.32v-124.388c-21.014-2.376-42.364-3.612-64-3.612-223.318 0-416.882 130.042-512 320 95.118 189.958 288.682 320 512 320 223.31 0 416.876-130.042 512-320-37.396-74.686-90.020-140.1-153.68-192zM416 320c53.020 0 96 42.982 96 96 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96zM764.448 662.296c-75.594 48.218-162.89 73.704-252.448 73.704-89.56 0-176.86-25.486-252.454-73.704-60.156-38.372-111.136-89.772-149.43-150.296 38.292-60.524 89.274-111.924 149.434-150.296 3.918-2.5 7.876-4.922 11.862-7.3-9.962 27.328-15.412 56.822-15.412 87.596 0 141.382 114.616 256 256 256 141.38 0 256-114.618 256-256 0-30.774-5.454-60.268-15.408-87.598 3.976 2.378 7.938 4.802 11.858 7.302 60.162 38.374 111.142 89.774 149.434 150.296-38.292 60.522-89.274 111.922-149.436 150.296z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eye-minus", + "views", + "vision", + "visit" + ], + "defaultCode": 59856, + "grid": 16 + }, + { + "id": 209, + "paths": [ + "M945.942 14.058c-18.746-18.744-49.136-18.744-67.882 0l-202.164 202.164c-51.938-15.754-106.948-24.222-163.896-24.222-223.318 0-416.882 130.042-512 320 41.122 82.124 100.648 153.040 173.022 207.096l-158.962 158.962c-18.746 18.746-18.746 49.136 0 67.882 9.372 9.374 21.656 14.060 33.94 14.060s24.568-4.686 33.942-14.058l864-864c18.744-18.746 18.744-49.138 0-67.884zM416 320c42.24 0 78.082 27.294 90.92 65.196l-121.724 121.724c-37.902-12.838-65.196-48.68-65.196-90.92 0-53.020 42.98-96 96-96zM110.116 512c38.292-60.524 89.274-111.924 149.434-150.296 3.918-2.5 7.876-4.922 11.862-7.3-9.962 27.328-15.412 56.822-15.412 87.596 0 54.89 17.286 105.738 46.7 147.418l-60.924 60.924c-52.446-36.842-97.202-83.882-131.66-138.342z", + "M768 442c0-27.166-4.256-53.334-12.102-77.898l-321.808 321.808c24.568 7.842 50.742 12.090 77.91 12.090 141.382 0 256-114.618 256-256z", + "M830.026 289.974l-69.362 69.362c1.264 0.786 2.53 1.568 3.786 2.368 60.162 38.374 111.142 89.774 149.434 150.296-38.292 60.522-89.274 111.922-149.436 150.296-75.594 48.218-162.89 73.704-252.448 73.704-38.664 0-76.902-4.76-113.962-14.040l-76.894 76.894c59.718 21.462 123.95 33.146 190.856 33.146 223.31 0 416.876-130.042 512-320-45.022-89.916-112.118-166.396-193.974-222.026z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eye-blocked", + "views", + "vision", + "visit", + "banned", + "blocked", + "forbidden", + "private" + ], + "defaultCode": 59857, + "grid": 16 + }, + { + "id": 210, + "paths": [ + "M192 0v1024l320-320 320 320v-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bookmark", + "ribbon" + ], + "defaultCode": 59858, + "grid": 16 + }, + { + "id": 211, + "paths": [ + "M256 128v896l320-320 320 320v-896zM768 0h-640v896l64-64v-768h576z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bookmarks", + "ribbons" + ], + "defaultCode": 59859, + "grid": 16 + }, + { + "id": 212, + "paths": [ + "M512 832c35.346 0 64 28.654 64 64v64c0 35.346-28.654 64-64 64s-64-28.654-64-64v-64c0-35.346 28.654-64 64-64zM512 192c-35.346 0-64-28.654-64-64v-64c0-35.346 28.654-64 64-64s64 28.654 64 64v64c0 35.346-28.654 64-64 64zM960 448c35.346 0 64 28.654 64 64s-28.654 64-64 64h-64c-35.348 0-64-28.654-64-64s28.652-64 64-64h64zM192 512c0 35.346-28.654 64-64 64h-64c-35.346 0-64-28.654-64-64s28.654-64 64-64h64c35.346 0 64 28.654 64 64zM828.784 738.274l45.256 45.258c24.992 24.99 24.992 65.516 0 90.508-24.994 24.992-65.518 24.992-90.51 0l-45.256-45.256c-24.992-24.99-24.992-65.516 0-90.51 24.994-24.992 65.518-24.992 90.51 0zM195.216 285.726l-45.256-45.256c-24.994-24.994-24.994-65.516 0-90.51s65.516-24.994 90.51 0l45.256 45.256c24.994 24.994 24.994 65.516 0 90.51s-65.516 24.994-90.51 0zM828.784 285.726c-24.992 24.992-65.516 24.992-90.51 0-24.992-24.994-24.992-65.516 0-90.51l45.256-45.254c24.992-24.994 65.516-24.994 90.51 0 24.992 24.994 24.992 65.516 0 90.51l-45.256 45.254zM195.216 738.274c24.992-24.992 65.518-24.992 90.508 0 24.994 24.994 24.994 65.52 0 90.51l-45.254 45.256c-24.994 24.992-65.516 24.992-90.51 0s-24.994-65.518 0-90.508l45.256-45.258z", + "M512 256c-141.384 0-256 114.616-256 256 0 141.382 114.616 256 256 256 141.382 0 256-114.618 256-256 0-141.384-114.616-256-256-256zM512 672c-88.366 0-160-71.634-160-160s71.634-160 160-160 160 71.634 160 160-71.634 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sun", + "weather" + ], + "defaultCode": 59860, + "grid": 16 + }, + { + "id": 213, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM128 512c0-212.078 171.922-384 384-384v768c-212.078 0-384-171.922-384-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "contrast" + ], + "defaultCode": 59861, + "grid": 16 + }, + { + "id": 214, + "paths": [ + "M512 256c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.616-256-256-256zM512 672v-320c88.224 0 160 71.776 160 160s-71.776 160-160 160zM512 832c35.346 0 64 28.654 64 64v64c0 35.346-28.654 64-64 64s-64-28.654-64-64v-64c0-35.346 28.654-64 64-64zM512 192c-35.346 0-64-28.654-64-64v-64c0-35.346 28.654-64 64-64s64 28.654 64 64v64c0 35.346-28.654 64-64 64zM960 448c35.346 0 64 28.654 64 64s-28.654 64-64 64h-64c-35.346 0-64-28.654-64-64s28.654-64 64-64h64zM192 512c0 35.346-28.654 64-64 64h-64c-35.346 0-64-28.654-64-64s28.654-64 64-64h64c35.346 0 64 28.654 64 64zM828.784 738.274l45.256 45.256c24.992 24.992 24.992 65.516 0 90.51-24.994 24.992-65.518 24.992-90.51 0l-45.256-45.256c-24.992-24.992-24.992-65.516 0-90.51 24.994-24.992 65.518-24.992 90.51 0zM195.216 285.726l-45.256-45.256c-24.994-24.994-24.994-65.516 0-90.51s65.516-24.994 90.51 0l45.256 45.256c24.994 24.994 24.994 65.516 0 90.51s-65.516 24.994-90.51 0zM828.784 285.726c-24.992 24.992-65.516 24.992-90.51 0-24.992-24.994-24.992-65.516 0-90.51l45.256-45.254c24.992-24.994 65.516-24.994 90.51 0 24.992 24.994 24.992 65.516 0 90.51l-45.256 45.254zM195.216 738.274c24.992-24.992 65.516-24.992 90.508 0 24.994 24.994 24.994 65.518 0 90.51l-45.254 45.256c-24.994 24.992-65.516 24.992-90.51 0-24.994-24.994-24.994-65.518 0-90.51l45.256-45.256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "brightness-contrast" + ], + "defaultCode": 59862, + "grid": 16 + }, + { + "id": 215, + "paths": [ + "M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538zM512 753.498l-223.462 117.48 42.676-248.83-180.786-176.222 249.84-36.304 111.732-226.396 111.736 226.396 249.836 36.304-180.788 176.222 42.678 248.83-223.462-117.48z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "star-empty", + "rate", + "star", + "favorite", + "bookmark" + ], + "defaultCode": 59863, + "grid": 16 + }, + { + "id": 216, + "paths": [ + "M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538zM512 753.498l-0.942 0.496 0.942-570.768 111.736 226.396 249.836 36.304-180.788 176.222 42.678 248.83-223.462-117.48z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "star-half", + "rate", + "star" + ], + "defaultCode": 59864, + "grid": 16 + }, + { + "id": 217, + "paths": [ + "M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "star-full", + "rate", + "star", + "favorite", + "bookmark" + ], + "defaultCode": 59865, + "grid": 16 + }, + { + "id": 218, + "paths": [ + "M755.188 64c-107.63 0-200.258 87.554-243.164 179-42.938-91.444-135.578-179-243.216-179-148.382 0-268.808 120.44-268.808 268.832 0 301.846 304.5 380.994 512.022 679.418 196.154-296.576 511.978-387.206 511.978-679.418 0-148.392-120.43-268.832-268.812-268.832z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "heart", + "like", + "love", + "favorite" + ], + "defaultCode": 59866, + "grid": 16 + }, + { + "id": 219, + "paths": [ + "M755.188 64c148.382 0 268.812 120.44 268.812 268.832 0 292.21-315.824 382.842-511.978 679.418-207.522-298.424-512.022-377.572-512.022-679.418 0-148.392 120.426-268.832 268.808-268.832 60.354 0 115.99 27.53 160.796 67.834l-77.604 124.166 224 128-128 320 352-384-224-128 61.896-92.846c35.42-21.768 75.21-35.154 117.292-35.154z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "heart-broken", + "heart", + "like", + "love" + ], + "defaultCode": 59867, + "grid": 16 + }, + { + "id": 220, + "paths": [ + "M576 96c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M576 256h-192c-35.346 0-64 28.654-64 64v320h64v384h80v-384h32v384h80v-384h64v-320c0-35.346-28.652-64-64-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "man", + "male", + "gender", + "sex" + ], + "defaultCode": 59868, + "grid": 16 + }, + { + "id": 221, + "paths": [ + "M576 96c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M719 512l49-35.5-133.286-206.116c-5.92-8.98-15.958-14.384-26.714-14.384h-256c-10.756 0-20.792 5.404-26.714 14.384l-133.286 206.116 49 35.5 110.644-143.596 38.458 89.74-134.102 245.856h122.666l21.334 320h64v-320h32v320h64l21.334-320h122.666l-134.104-245.858 38.458-89.74 110.646 143.598z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "woman", + "female", + "gender", + "sex" + ], + "defaultCode": 59869, + "grid": 16 + }, + { + "id": 222, + "paths": [ + "M256 96c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M832 96c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M256 256h-192c-35.346 0-64 28.654-64 64v320h64v384h80v-384h32v384h80v-384h64v-320c0-35.346-28.652-64-64-64z", + "M975 512l49-35.5-133.286-206.116c-5.92-8.98-15.958-14.384-26.714-14.384h-256c-10.756 0-20.792 5.404-26.714 14.384l-133.286 206.116 49 35.5 110.644-143.596 38.458 89.74-134.102 245.856h122.666l21.334 320h64v-320h32v320h64l21.334-320h122.666l-134.104-245.858 38.458-89.74 110.646 143.598z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "man-woman", + "toilet", + "bathroom", + "sex", + "gender" + ], + "defaultCode": 59870, + "grid": 16 + }, + { + "id": 223, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM512 598.76c115.95 0 226.23-30.806 320-84.92-14.574 178.438-153.128 318.16-320 318.16-166.868 0-305.422-139.872-320-318.304 93.77 54.112 204.050 85.064 320 85.064zM256 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96zM640 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "happy", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59871, + "grid": 16 + }, + { + "id": 224, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.348 0 64 42.98 64 96s-28.652 96-64 96-64-42.98-64-96 28.652-96 64-96zM320 256c35.346 0 64 42.98 64 96s-28.654 96-64 96-64-42.98-64-96 28.654-96 64-96zM512 896c-166.868 0-305.422-139.872-320-318.304 93.77 54.114 204.050 85.064 320 85.064s226.23-30.806 320-84.92c-14.574 178.438-153.128 318.16-320 318.16z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "happy", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59872, + "grid": 16 + }, + { + "id": 225, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM704.098 627.26l82.328 49.396c-55.962 93.070-157.916 155.344-274.426 155.344s-218.464-62.274-274.426-155.344l82.328-49.396c39.174 65.148 110.542 108.74 192.098 108.74s152.924-43.592 192.098-108.74z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "smile", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59873, + "grid": 16 + }, + { + "id": 226, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM512 832c-116.51 0-218.464-62.274-274.426-155.344l82.328-49.396c39.174 65.148 110.542 108.74 192.098 108.74s152.924-43.592 192.098-108.74l82.328 49.396c-55.962 93.070-157.916 155.344-274.426 155.344z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "smile", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59874, + "grid": 16 + }, + { + "id": 227, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM768 576v64h-64v96c0 53.020-42.98 96-96 96s-96-42.98-96-96v-96h-256v-64h512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tongue", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59875, + "grid": 16 + }, + { + "id": 228, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM768 640h-64v96c0 53.020-42.98 96-96 96s-96-42.98-96-96v-96h-256v-64h512v64zM704 384c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.654 64-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tongue", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59876, + "grid": 16 + }, + { + "id": 229, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM319.902 780.74l-82.328-49.396c55.962-93.070 157.916-155.344 274.426-155.344 116.508 0 218.462 62.274 274.426 155.344l-82.328 49.396c-39.174-65.148-110.542-108.74-192.098-108.74-81.558 0-152.924 43.592-192.098 108.74z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sad", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59877, + "grid": 16 + }, + { + "id": 230, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM704.098 780.74c-39.174-65.148-110.544-108.74-192.098-108.74-81.556 0-152.924 43.592-192.098 108.74l-82.328-49.396c55.96-93.070 157.916-155.344 274.426-155.344 116.508 0 218.464 62.274 274.426 155.344l-82.328 49.396z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sad", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59878, + "grid": 16 + }, + { + "id": 231, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM542.74 711.028c140.248-27.706 249.11-91.542 288.454-176.594-21.654 167.956-161.518 297.566-330.85 297.566-119.242 0-223.858-64.282-282.892-160.948 70.41 55.058 194.534 65.808 325.288 39.976zM640 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96zM352 371.5c-41.796 0-77.334 15.656-90.516 37.5-3.54-5.866-5.484-32.174-5.484-38.75 0-31.066 42.98-56.25 96-56.25s96 25.184 96 56.25c0 6.576-1.944 32.884-5.484 38.75-13.182-21.844-48.72-37.5-90.516-37.5z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wink", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59879, + "grid": 16 + }, + { + "id": 232, + "paths": [ + "M512 0c-282.77 0-512 229.228-512 512 0 282.77 229.228 512 512 512 282.77 0 512-229.23 512-512 0-282.772-229.23-512-512-512zM704 256c35.346 0 64 42.98 64 96s-28.654 96-64 96-64-42.98-64-96 28.654-96 64-96zM352 312.062c59.646 0 102 22.332 102 57.282 0 7.398 3.812 42.994-0.17 49.594-14.828-24.576-54.81-42.188-101.83-42.188s-87.002 17.612-101.83 42.188c-3.982-6.6-0.17-42.196-0.17-49.594 0-34.95 42.354-57.282 102-57.282zM500.344 832c-119.242 0-223.858-64.28-282.892-160.952 70.41 55.060 194.534 65.81 325.288 39.978 140.248-27.706 249.11-91.542 288.454-176.594-21.654 167.96-161.518 297.568-330.85 297.568z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wink", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59880, + "grid": 16 + }, + { + "id": 233, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM192 512v64c0 140.8 115.2 256 256 256h128c140.8 0 256-115.2 256-256v-64h-640zM384 756.988c-26.538-9.458-50.924-24.822-71.544-45.446-36.406-36.402-56.456-84.54-56.456-135.542h128v180.988zM576 768h-128v-192h128v192zM711.544 711.542c-20.624 20.624-45.010 35.988-71.544 45.446v-180.988h128c0 51.002-20.048 99.14-56.456 135.542zM225.352 384c0.002 0 0 0 0 0 9.768 0 18.108-7.056 19.724-16.69 6.158-36.684 37.668-63.31 74.924-63.31s68.766 26.626 74.924 63.31c1.616 9.632 9.956 16.69 19.722 16.69 9.768 0 18.108-7.056 19.724-16.688 1.082-6.436 1.628-12.934 1.628-19.312 0-63.962-52.038-116-116-116s-116 52.038-116 116c0 6.378 0.548 12.876 1.628 19.312 1.62 9.632 9.96 16.688 19.726 16.688zM609.352 384c0.002 0 0 0 0 0 9.77 0 18.112-7.056 19.724-16.69 6.158-36.684 37.668-63.31 74.924-63.31s68.766 26.626 74.924 63.31c1.616 9.632 9.958 16.69 19.722 16.69s18.108-7.056 19.722-16.688c1.082-6.436 1.628-12.934 1.628-19.312 0-63.962-52.038-116-116-116s-116 52.038-116 116c0 6.378 0.544 12.876 1.626 19.312 1.624 9.632 9.964 16.688 19.73 16.688z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "grin", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59881, + "grid": 16 + }, + { + "id": 234, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.226 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM704 236c63.962 0 116 52.038 116 116 0 6.378-0.546 12.876-1.628 19.312-1.618 9.632-9.958 16.688-19.724 16.688s-18.108-7.056-19.722-16.69c-6.16-36.684-37.67-53.31-74.926-53.31s-68.766 16.626-74.924 53.31c-1.616 9.632-9.956 16.69-19.722 16.69-0.002 0 0 0-0.002 0-9.766 0-18.106-7.056-19.722-16.688-1.084-6.436-1.63-12.934-1.63-19.312 0-63.962 52.038-116 116-116zM320 236c63.962 0 116 52.038 116 116 0 6.378-0.548 12.876-1.628 19.312-1.618 9.632-9.956 16.688-19.724 16.688s-18.106-7.056-19.722-16.69c-6.16-36.684-37.67-53.31-74.926-53.31s-68.766 16.626-74.924 53.31c-1.616 9.632-9.956 16.69-19.722 16.69 0 0 0 0 0 0-9.766 0-18.106-7.056-19.724-16.688-1.082-6.436-1.63-12.934-1.63-19.312 0-63.962 52.038-116 116-116zM192 576h192v247.846c-110.094-28.606-192-129.124-192-247.846zM448 832v-256h128v256h-128zM640 823.846v-247.846h192c0 118.722-81.904 219.24-192 247.846z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "grin", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59882, + "grid": 16 + }, + { + "id": 235, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM800 256c17.6 0 32 14.4 32 32v96c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64h-128c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-96c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v32h128v-32c0-17.6 14.4-32 32-32h192zM512 768c93.208 0 174.772-49.818 219.546-124.278l54.88 32.934c-55.966 93.070-157.916 155.344-274.426 155.344-48.458 0-94.384-10.796-135.54-30.082l33.162-55.278c31.354 13.714 65.964 21.36 102.378 21.36z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cool", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59883, + "grid": 16 + }, + { + "id": 236, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.226 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM512 832c-48.458 0-94.384-10.796-135.542-30.082l33.162-55.276c31.356 13.712 65.966 21.358 102.38 21.358 93.208 0 174.772-49.818 219.542-124.278l54.882 32.934c-55.964 93.070-157.914 155.344-274.424 155.344zM832 384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64h-128c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-96c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v32h128v-32c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cool", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59884, + "grid": 16 + }, + { + "id": 237, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM704.098 780.74c-39.174-65.148-110.544-108.74-192.098-108.74-81.556 0-152.924 43.592-192.098 108.74l-82.328-49.396c55.96-93.070 157.916-155.344 274.426-155.344 116.508 0 218.464 62.274 274.426 155.344l-82.328 49.396zM767.042 280.24c4.284 17.144-6.14 34.518-23.282 38.804-17.626 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-1.17 0.036-2.33 0.098-3.484 2.032-47.454 45.212-78.946 81.592-97.138 34.742-17.37 69.102-26.060 70.548-26.422 17.146-4.288 34.518 6.138 38.806 23.284zM256.958 280.24c4.288-17.146 21.66-27.572 38.806-23.284 1.446 0.362 35.806 9.052 70.548 26.422 36.38 18.192 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.314 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.31-16.9-56.936-21.35-17.142-4.286-27.566-21.66-23.282-38.804z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "angry", + "emoticon", + "smiley", + "face", + "rage" + ], + "defaultCode": 59885, + "grid": 16 + }, + { + "id": 238, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM576.094 380.516c2.032-47.454 45.21-78.948 81.592-97.138 34.742-17.372 69.104-26.060 70.548-26.422 17.146-4.288 34.52 6.138 38.806 23.284s-6.138 34.518-23.284 38.806c-17.624 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64s-64-28.654-64-64c0.002-1.17 0.038-2.332 0.1-3.486zM256.958 280.24c4.288-17.146 21.66-27.572 38.806-23.284 1.446 0.362 35.806 9.052 70.548 26.422 36.38 18.192 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.314 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.31-16.9-56.936-21.35-17.142-4.286-27.566-21.66-23.282-38.804zM704.098 780.74c-39.174-65.148-110.544-108.74-192.098-108.74-81.556 0-152.924 43.592-192.098 108.74l-82.328-49.396c55.96-93.070 157.916-155.344 274.426-155.344 116.508 0 218.464 62.274 274.426 155.344l-82.328 49.396z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "angry", + "emoticon", + "smiley", + "face", + "rage" + ], + "defaultCode": 59886, + "grid": 16 + }, + { + "id": 239, + "paths": [ + "M639.996 448c-35.346 0-64-28.654-63.998-64.002 0-1.17 0.036-2.33 0.098-3.484 2.032-47.454 45.212-78.946 81.592-97.138 34.742-17.37 69.102-26.060 70.548-26.422 17.146-4.288 34.518 6.138 38.806 23.284 4.284 17.146-6.14 34.518-23.284 38.806-17.626 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64zM280.242 319.044c-17.144-4.286-27.568-21.66-23.282-38.804 4.286-17.146 21.66-27.572 38.806-23.284 1.444 0.362 35.806 9.050 70.548 26.422 36.382 18.19 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.316 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.312-16.9-56.936-21.35zM512 736c81.554 0 152.924-43.592 192.098-108.74l82.328 49.396c-55.962 93.070-157.916 155.344-274.426 155.344s-218.464-62.274-274.426-155.344l82.328-49.396c39.174 65.148 110.542 108.74 192.098 108.74zM1024 64c0-45.516-9.524-88.8-26.652-128-33.576 76.836-96.448 137.932-174.494 169.178-86.194-65.96-193.936-105.178-310.854-105.178s-224.66 39.218-310.854 105.178c-78.048-31.246-140.918-92.342-174.494-169.178-17.128 39.2-26.652 82.484-26.652 128 0 73.574 24.85 141.328 66.588 195.378-42.37 74.542-66.588 160.75-66.588 252.622 0 282.77 229.23 512 512 512s512-229.23 512-512c0-91.872-24.218-178.080-66.588-252.622 41.738-54.050 66.588-121.804 66.588-195.378zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "evil", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59887, + "grid": 16 + }, + { + "id": 240, + "paths": [ + "M1024 64c0-45.516-9.524-88.8-26.652-128-33.576 76.836-96.448 137.932-174.494 169.178-86.194-65.96-193.936-105.178-310.854-105.178s-224.66 39.218-310.854 105.178c-78.048-31.246-140.918-92.342-174.494-169.178-17.128 39.2-26.652 82.484-26.652 128 0 73.574 24.85 141.328 66.588 195.378-42.37 74.542-66.588 160.75-66.588 252.622 0 282.77 229.23 512 512 512s512-229.23 512-512c0-91.872-24.218-178.080-66.588-252.622 41.738-54.050 66.588-121.804 66.588-195.378zM576.094 380.516c2.032-47.454 45.21-78.948 81.592-97.138 34.742-17.372 69.104-26.060 70.548-26.422 17.146-4.288 34.52 6.138 38.806 23.284s-6.138 34.518-23.284 38.806c-17.624 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64s-64-28.654-64-64c0.002-1.17 0.038-2.332 0.1-3.486zM256.958 280.24c4.288-17.146 21.66-27.572 38.806-23.284 1.446 0.362 35.806 9.052 70.548 26.422 36.38 18.192 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.314 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.31-16.9-56.936-21.35-17.142-4.286-27.566-21.66-23.282-38.804zM512 832c-116.51 0-218.464-62.274-274.426-155.344l82.328-49.396c39.174 65.148 110.542 108.74 192.098 108.74 81.554 0 152.924-43.592 192.098-108.74l82.328 49.396c-55.962 93.070-157.916 155.344-274.426 155.344z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "evil", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59888, + "grid": 16 + }, + { + "id": 241, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM384 704c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM640 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96zM256 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shocked", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59889, + "grid": 16 + }, + { + "id": 242, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM320 448c-35.346 0-64-42.98-64-96s28.654-96 64-96 64 42.98 64 96-28.654 96-64 96zM512 832c-70.692 0-128-57.308-128-128s57.308-128 128-128c70.692 0 128 57.308 128 128s-57.308 128-128 128zM704 448c-35.346 0-64-42.98-64-96s28.654-96 64-96 64 42.98 64 96-28.654 96-64 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shocked", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59890, + "grid": 16 + }, + { + "id": 243, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416z", + "M384 416c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z", + "M352 320c53.020 0 96 42.98 96 96s-42.98 96-96 96-96-42.98-96-96 42.98-96 96-96zM352 256c-88.224 0-160 71.776-160 160s71.776 160 160 160 160-71.776 160-160-71.776-160-160-160v0z", + "M704 416c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z", + "M672 320c53.020 0 96 42.98 96 96s-42.98 96-96 96-96-42.98-96-96 42.98-96 96-96zM672 256c-88.224 0-160 71.776-160 160s71.776 160 160 160 160-71.776 160-160-71.776-160-160-160v0z", + "M384 704h256v64h-256v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "baffled", + "emoticon", + "smiley", + "shocked", + "face" + ], + "defaultCode": 59891, + "grid": 16 + }, + { + "id": 244, + "paths": [ + "M384 416c0 17.674-14.326 32-32 32s-32-14.326-32-32 14.326-32 32-32 32 14.326 32 32z", + "M704 416c0 17.674-14.326 32-32 32s-32-14.326-32-32 14.326-32 32-32 32 14.326 32 32z", + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM256 416c0-53.020 42.98-96 96-96s96 42.98 96 96-42.98 96-96 96-96-42.98-96-96zM640 768h-256v-64h256v64zM672 512c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "baffled", + "emoticon", + "smiley", + "shocked", + "face" + ], + "defaultCode": 59892, + "grid": 16 + }, + { + "id": 245, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM726.106 640h64.864c9.246 72.506-32.452 144.53-103.958 170.56-82.904 30.176-174.9-12.716-205.080-95.616-18.108-49.744-73.306-75.482-123.048-57.372-45.562 16.588-70.956 64.298-60.988 110.424h-64.86c-9.242-72.508 32.45-144.528 103.956-170.56 82.904-30.178 174.902 12.716 205.082 95.614 18.104 49.748 73.306 75.482 123.044 57.372 45.562-16.584 70.956-64.298 60.988-110.422z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "confused", + "emoticon", + "smiley", + "face", + "bewildered" + ], + "defaultCode": 59893, + "grid": 16 + }, + { + "id": 246, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.226 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64c0-35.346 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64c0-35.346 28.654-64 64-64zM687.010 810.56c-82.902 30.18-174.9-12.712-205.080-95.614-18.108-49.742-73.306-75.478-123.048-57.372-45.562 16.588-70.958 64.296-60.988 110.424h-64.86c-9.244-72.508 32.45-144.532 103.956-170.56 82.904-30.18 174.902 12.712 205.082 95.614 18.108 49.742 73.306 75.476 123.046 57.37 45.562-16.584 70.958-64.294 60.988-110.422h64.864c9.24 72.506-32.454 144.532-103.96 170.56z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "confused", + "emoticon", + "smiley", + "face", + "bewildered" + ], + "defaultCode": 59894, + "grid": 16 + }, + { + "id": 247, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM640 320c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM384 704h256v64h-256v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "neutral", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59895, + "grid": 16 + }, + { + "id": 248, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.226 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM640 768h-256v-64h256v64zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64c0-35.346 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64c0-35.346 28.654-64 64-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "neutral", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59896, + "grid": 16 + }, + { + "id": 249, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64z", + "M675.882 540.118c-37.49-37.49-98.276-37.49-135.766 0s-37.49 98.276 0 135.766c1.204 1.204 2.434 2.368 3.684 3.492 86.528 78.512 288.2-1.842 288.2-103.376-62 40-110.45 9.786-156.118-35.882z", + "M348.118 540.118c37.49-37.49 98.276-37.49 135.766 0s37.49 98.276 0 135.766c-1.204 1.204-2.434 2.368-3.684 3.492-86.528 78.512-288.2-1.842-288.2-103.376 62 40 110.45 9.786 156.118-35.882z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hipster", + "emoticon", + "smiley", + "mustache", + "face" + ], + "defaultCode": 59897, + "grid": 16 + }, + { + "id": 250, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM543.8 679.376c-1.25-1.124-2.48-2.29-3.684-3.492-18.74-18.74-28.112-43.3-28.118-67.864-0.004 24.562-9.376 49.124-28.118 67.864-1.204 1.204-2.434 2.368-3.684 3.492-86.524 78.512-288.196-1.842-288.196-103.376 62 40 110.45 9.786 156.118-35.882 37.49-37.49 98.276-37.49 135.766 0 18.74 18.74 28.112 43.3 28.118 67.864 0.004-24.562 9.376-49.124 28.118-67.864 37.49-37.49 98.276-37.49 135.766 0 45.664 45.668 94.114 75.882 156.114 35.882 0 101.534-201.672 181.888-288.2 103.376z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hipster", + "emoticon", + "smiley", + "mustache", + "face" + ], + "defaultCode": 59898, + "grid": 16 + }, + { + "id": 251, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM745.74 601.62l22.488 76.776-437.008 128.002-22.488-76.776zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wondering", + "emoticon", + "smiley", + "face", + "question" + ], + "defaultCode": 59899, + "grid": 16 + }, + { + "id": 252, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64zM331.244 806.386l-22.488-76.774 437-128 22.488 76.774-437 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wondering", + "emoticon", + "smiley", + "face", + "question" + ], + "defaultCode": 59900, + "grid": 16 + }, + { + "id": 253, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416z", + "M640 672c0 88.366-57.308 160-128.002 160s-128.002-71.634-128.002-160c0-88.366 57.308-160 128.002-160s128.002 71.634 128.002 160z", + "M416 340c-8.19 0-16.378-3.124-22.626-9.374-19.334-19.332-63.412-19.332-82.746 0-12.496 12.498-32.758 12.498-45.254 0-12.498-12.496-12.498-32.758 0-45.254 44.528-44.53 128.726-44.53 173.254 0 12.498 12.496 12.498 32.758 0 45.254-6.248 6.25-14.438 9.374-22.628 9.374z", + "M736 340c-8.19 0-16.378-3.124-22.626-9.374-19.332-19.332-63.414-19.332-82.746 0-12.496 12.498-32.758 12.498-45.254 0-12.498-12.496-12.498-32.758 0-45.254 44.528-44.53 128.726-44.53 173.254 0 12.498 12.496 12.498 32.758 0 45.254-6.248 6.25-14.438 9.374-22.628 9.374z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sleepy", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59901, + "grid": 16 + }, + { + "id": 254, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM310.628 330.626c-12.496 12.498-32.758 12.498-45.254 0-12.498-12.496-12.498-32.758 0-45.254 44.528-44.53 128.726-44.53 173.254 0 12.498 12.496 12.498 32.758 0 45.254-6.248 6.25-14.438 9.374-22.628 9.374s-16.378-3.124-22.626-9.374c-19.334-19.332-63.412-19.332-82.746 0zM511.998 832c-70.694 0-128.002-71.634-128.002-160s57.308-160 128.002-160 128.002 71.634 128.002 160-57.308 160-128.002 160zM758.628 330.626c-6.248 6.25-14.438 9.374-22.628 9.374s-16.378-3.124-22.626-9.374c-19.332-19.332-63.414-19.332-82.746 0-12.496 12.498-32.758 12.498-45.254 0-12.498-12.496-12.498-32.758 0-45.254 44.528-44.53 128.726-44.53 173.254 0 12.498 12.498 12.498 32.758 0 45.254z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sleepy", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59902, + "grid": 16 + }, + { + "id": 255, + "paths": [ + "M366.312 283.378c-34.742-17.37-69.102-26.060-70.548-26.422-17.146-4.288-34.518 6.138-38.806 23.284-4.284 17.144 6.14 34.518 23.282 38.804 17.626 4.45 38.522 12.12 56.936 21.35-10.648 11.43-17.174 26.752-17.174 43.606 0 35.346 28.654 64 64 64s64-28.654 64-64c0-1.17-0.036-2.33-0.098-3.484-2.032-47.454-45.212-78.946-81.592-97.138z", + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM236.498 823.664c10.706 5.324 22.756 8.336 35.502 8.336h480c12.746 0 24.796-3.012 35.502-8.338-73.378 64.914-169.828 104.338-275.502 104.338-105.672 0-202.124-39.424-275.502-104.336zM256 752v-96c0-8.674 7.328-16 16-16h112v128h-112c-8.672 0-16-7.326-16-16zM448 768v-128h128v128h-128zM640 768v-128h112c8.674 0 16 7.326 16 16v96c0 8.674-7.326 16-16 16h-112zM823.662 787.502c5.326-10.706 8.338-22.756 8.338-35.502v-96c0-44.112-35.888-80-80-80h-480c-44.112 0-80 35.888-80 80v96c0 12.746 3.012 24.796 8.336 35.502-64.912-73.378-104.336-169.828-104.336-275.502 0-229.75 186.25-416 416-416s416 186.25 416 416c0 105.674-39.424 202.124-104.338 275.502z", + "M728.236 256.956c-1.448 0.362-35.806 9.052-70.548 26.422-36.378 18.192-79.558 49.684-81.592 97.138-0.060 1.154-0.098 2.314-0.098 3.484 0 35.346 28.654 64 64 64s64-28.654 64-64c0-16.854-6.526-32.176-17.174-43.606 18.414-9.23 39.31-16.9 56.936-21.35 17.142-4.286 27.566-21.66 23.284-38.804-4.29-17.146-21.662-27.572-38.808-23.284z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "frustrated", + "emoticon", + "smiley", + "face", + "angry" + ], + "defaultCode": 59903, + "grid": 16 + }, + { + "id": 256, + "paths": [ + "M256 656v96c0 8.674 7.328 16 16 16h112v-128h-112c-8.672 0-16 7.326-16 16z", + "M448 640h128v128h-128v-128z", + "M752 640h-112v128h112c8.674 0 16-7.326 16-16v-96c0-8.674-7.326-16-16-16z", + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM576.096 380.516c2.034-47.454 45.212-78.946 81.592-97.138 34.742-17.37 69.102-26.060 70.548-26.422 17.146-4.288 34.518 6.138 38.806 23.284 4.284 17.144-6.14 34.518-23.284 38.804-17.624 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64s-64-28.654-64-64c0.002-1.17 0.040-2.33 0.1-3.484zM256.958 280.24c4.288-17.146 21.66-27.572 38.806-23.284 1.446 0.362 35.806 9.052 70.548 26.422 36.38 18.192 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.314 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.31-16.9-56.936-21.35-17.142-4.286-27.566-21.66-23.282-38.804zM832 752c0 44.112-35.888 80-80 80h-480c-44.112 0-80-35.888-80-80v-96c0-44.112 35.888-80 80-80h480c44.112 0 80 35.888 80 80v96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "frustrated", + "emoticon", + "smiley", + "face", + "angry" + ], + "defaultCode": 59904, + "grid": 16 + }, + { + "id": 257, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416z", + "M800 384h-128c-17.674 0-32-14.328-32-32s14.326-32 32-32h128c17.674 0 32 14.328 32 32s-14.326 32-32 32z", + "M352 384h-128c-17.672 0-32-14.328-32-32s14.328-32 32-32h128c17.672 0 32 14.328 32 32s-14.328 32-32 32z", + "M608 856c-8.19 0-16.378-3.124-22.626-9.374-4.582-4.582-29.42-14.626-73.374-14.626s-68.79 10.044-73.374 14.626c-12.496 12.496-32.758 12.496-45.254 0-12.498-12.496-12.498-32.758 0-45.254 30.122-30.12 92.994-33.372 118.628-33.372 25.632 0 88.506 3.252 118.626 33.374 12.498 12.496 12.498 32.758 0 45.254-6.248 6.248-14.436 9.372-22.626 9.372z", + "M736 576c-17.674 0-32-14.326-32-32v-64c0-17.672 14.326-32 32-32s32 14.328 32 32v64c0 17.674-14.326 32-32 32z", + "M736 768c-17.674 0-32-14.326-32-32v-64c0-17.674 14.326-32 32-32s32 14.326 32 32v64c0 17.674-14.326 32-32 32z", + "M288 576c-17.672 0-32-14.326-32-32v-64c0-17.672 14.328-32 32-32s32 14.328 32 32v64c0 17.674-14.328 32-32 32z", + "M288 768c-17.672 0-32-14.326-32-32v-64c0-17.674 14.328-32 32-32s32 14.326 32 32v64c0 17.674-14.328 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "crying", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59905, + "grid": 16 + }, + { + "id": 258, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM320 736c0 17.674-14.328 32-32 32s-32-14.326-32-32v-64c0-17.674 14.328-32 32-32s32 14.326 32 32v64zM320 544c0 17.674-14.328 32-32 32s-32-14.326-32-32v-64c0-17.672 14.328-32 32-32s32 14.328 32 32v64zM352 384h-128c-17.672 0-32-14.328-32-32s14.328-32 32-32h128c17.672 0 32 14.328 32 32s-14.328 32-32 32zM630.626 846.626c-6.248 6.25-14.436 9.374-22.626 9.374s-16.378-3.124-22.626-9.374c-4.582-4.582-29.42-14.626-73.374-14.626s-68.79 10.044-73.374 14.626c-12.496 12.496-32.758 12.496-45.254 0-12.498-12.496-12.498-32.758 0-45.254 30.122-30.12 92.994-33.372 118.628-33.372 25.632 0 88.506 3.252 118.626 33.374 12.498 12.496 12.498 32.756 0 45.252zM768 736c0 17.674-14.326 32-32 32s-32-14.326-32-32v-64c0-17.674 14.326-32 32-32s32 14.326 32 32v64zM768 544c0 17.674-14.326 32-32 32s-32-14.326-32-32v-64c0-17.672 14.326-32 32-32s32 14.328 32 32v64zM800 384h-128c-17.674 0-32-14.328-32-32s14.326-32 32-32h128c17.674 0 32 14.328 32 32s-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "crying", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59906, + "grid": 16 + }, + { + "id": 259, + "paths": [ + "M960 608v-160c0-52.934-43.066-96-96-96-17.104 0-33.176 4.494-47.098 12.368-17.076-26.664-46.958-44.368-80.902-44.368-24.564 0-47.004 9.274-64 24.504-16.996-15.23-39.436-24.504-64-24.504-11.214 0-21.986 1.934-32 5.484v-229.484c0-52.934-43.066-96-96-96s-96 43.066-96 96v394.676l-176.018-93.836c-14.536-8.4-31.126-12.84-47.982-12.84-52.934 0-96 43.066-96 96 0 26.368 10.472 50.954 29.49 69.226 0.248 0.238 0.496 0.47 0.75 0.7l239.17 218.074h-45.41c-17.672 0-32 14.326-32 32v192c0 17.674 14.328 32 32 32h640c17.674 0 32-14.326 32-32v-192c0-17.674-14.326-32-32-32h-44.222l72.844-145.69c2.222-4.442 3.378-9.342 3.378-14.31zM896 864c0 17.674-14.326 32-32 32s-32-14.326-32-32 14.326-32 32-32 32 14.326 32 32zM896 600.446l-83.776 167.554h-383.826l-290.818-265.166c-6.18-6.070-9.58-14.164-9.58-22.834 0-17.644 14.356-32 32-32 5.46 0 10.612 1.31 15.324 3.894 0.53 0.324 1.070 0.632 1.622 0.926l224 119.416c9.92 5.288 21.884 4.986 31.52-0.8 9.638-5.782 15.534-16.196 15.534-27.436v-448c0-17.644 14.356-32 32-32s32 14.356 32 32v320c0 17.672 14.326 32 32 32s32-14.328 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32c0 17.672 14.326 32 32 32s32-14.328 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32v32c0 17.672 14.326 32 32 32s32-14.328 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32v152.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "point-up", + "finger", + "direction", + "hand" + ], + "defaultCode": 59907, + "grid": 16 + }, + { + "id": 260, + "paths": [ + "M416 960h160c52.934 0 96-43.066 96-96 0-17.104-4.494-33.176-12.368-47.098 26.664-17.076 44.368-46.958 44.368-80.902 0-24.564-9.276-47.004-24.504-64 15.228-16.996 24.504-39.436 24.504-64 0-11.214-1.934-21.986-5.484-32h229.484c52.934 0 96-43.066 96-96s-43.066-96-96-96h-394.676l93.836-176.018c8.4-14.536 12.84-31.126 12.84-47.982 0-52.934-43.066-96-96-96-26.368 0-50.954 10.472-69.226 29.49-0.238 0.248-0.47 0.496-0.7 0.75l-218.074 239.17v-45.41c0-17.672-14.326-32-32-32h-192c-17.674 0-32 14.328-32 32v640c0 17.674 14.326 32 32 32h192c17.674 0 32-14.326 32-32v-44.222l145.69 72.844c4.444 2.222 9.342 3.378 14.31 3.378zM160 896c-17.674 0-32-14.326-32-32s14.326-32 32-32 32 14.326 32 32-14.326 32-32 32zM423.556 896l-167.556-83.778v-383.824l265.168-290.818c6.066-6.18 14.162-9.58 22.832-9.58 17.644 0 32 14.356 32 32 0 5.46-1.308 10.612-3.894 15.324-0.324 0.53-0.632 1.070-0.926 1.622l-119.418 224c-5.288 9.92-4.986 21.884 0.8 31.52 5.784 9.638 16.198 15.534 27.438 15.534h448c17.644 0 32 14.356 32 32s-14.356 32-32 32h-320c-17.672 0-32 14.326-32 32s14.328 32 32 32c17.644 0 32 14.356 32 32s-14.356 32-32 32c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.644 0 32 14.356 32 32s-14.356 32-32 32h-32c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.644 0 32 14.356 32 32s-14.356 32-32 32h-152.444z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "point-right", + "finger", + "direction", + "hand" + ], + "defaultCode": 59908, + "grid": 16 + }, + { + "id": 261, + "paths": [ + "M960 416v160c0 52.934-43.066 96-96 96-17.104 0-33.176-4.494-47.098-12.368-17.076 26.662-46.96 44.368-80.902 44.368-24.564 0-47.004-9.276-64-24.504-16.996 15.228-39.436 24.504-64 24.504-11.214 0-21.986-1.934-32-5.484v229.484c0 52.934-43.066 96-96 96-52.936 0-96-43.066-96-96v-394.676l-176.018 93.836c-14.538 8.398-31.126 12.84-47.982 12.84-52.936 0-96-43.066-96-96 0-26.368 10.472-50.952 29.488-69.226 0.248-0.238 0.496-0.47 0.75-0.7l239.17-218.074h-45.408c-17.674 0-32-14.326-32-32v-192c0-17.674 14.326-32 32-32h640c17.674 0 32 14.326 32 32v192c0 17.674-14.326 32-32 32h-44.222l72.842 145.69c2.224 4.442 3.38 9.342 3.38 14.31zM896 160c0-17.674-14.326-32-32-32s-32 14.326-32 32 14.326 32 32 32 32-14.326 32-32zM896 423.554l-83.778-167.554h-383.824l-290.82 265.168c-6.18 6.066-9.578 14.162-9.578 22.832 0 17.644 14.356 32 32 32 5.458 0 10.612-1.308 15.324-3.894 0.53-0.324 1.070-0.632 1.622-0.926l224-119.416c9.92-5.288 21.884-4.986 31.52 0.8 9.638 5.782 15.534 16.196 15.534 27.436v448c0 17.644 14.356 32 32 32s32-14.356 32-32v-320c0-17.672 14.326-32 32-32s32 14.328 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32v-32c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32v-152.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "point-down", + "finger", + "direction", + "hand" + ], + "defaultCode": 59909, + "grid": 16 + }, + { + "id": 262, + "paths": [ + "M608 960h-160c-52.934 0-96-43.066-96-96 0-17.104 4.494-33.176 12.368-47.098-26.662-17.076-44.368-46.958-44.368-80.902 0-24.564 9.276-47.004 24.504-64-15.228-16.996-24.504-39.436-24.504-64 0-11.214 1.934-21.986 5.484-32h-229.484c-52.934 0-96-43.066-96-96 0-52.936 43.066-96 96-96h394.676l-93.836-176.018c-8.398-14.536-12.84-31.126-12.84-47.982 0-52.936 43.066-96 96-96 26.368 0 50.952 10.472 69.224 29.488 0.238 0.248 0.472 0.496 0.7 0.75l218.076 239.17v-45.408c0-17.674 14.326-32 32-32h192c17.674 0 32 14.326 32 32v640c0 17.674-14.326 32-32 32h-192c-17.674 0-32-14.326-32-32v-44.222l-145.69 72.844c-4.442 2.222-9.34 3.378-14.31 3.378zM864 896c17.674 0 32-14.326 32-32s-14.326-32-32-32-32 14.326-32 32 14.326 32 32 32zM600.446 896l167.554-83.778v-383.824l-265.168-290.82c-6.066-6.18-14.162-9.578-22.832-9.578-17.644 0-32 14.356-32 32 0 5.458 1.308 10.612 3.894 15.324 0.324 0.53 0.632 1.070 0.926 1.622l119.416 224c5.29 9.92 4.988 21.884-0.798 31.52-5.784 9.638-16.198 15.534-27.438 15.534h-448c-17.644 0-32 14.356-32 32s14.356 32 32 32h320c17.672 0 32 14.326 32 32s-14.328 32-32 32c-17.644 0-32 14.356-32 32s14.356 32 32 32c17.674 0 32 14.326 32 32s-14.326 32-32 32c-17.644 0-32 14.356-32 32s14.356 32 32 32h32c17.674 0 32 14.326 32 32s-14.326 32-32 32c-17.644 0-32 14.356-32 32s14.356 32 32 32h152.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "point-left", + "finger", + "direction", + "hand" + ], + "defaultCode": 59910, + "grid": 16 + }, + { + "id": 263, + "paths": [ + "M512 92.774l429.102 855.226h-858.206l429.104-855.226zM512 0c-22.070 0-44.14 14.882-60.884 44.648l-437.074 871.112c-33.486 59.532-5 108.24 63.304 108.24h869.308c68.3 0 96.792-48.708 63.3-108.24h0.002l-437.074-871.112c-16.742-29.766-38.812-44.648-60.882-44.648v0z", + "M576 832c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64z", + "M512 704c-35.346 0-64-28.654-64-64v-192c0-35.346 28.654-64 64-64s64 28.654 64 64v192c0 35.346-28.654 64-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "warning", + "sign" + ], + "defaultCode": 59911, + "grid": 16 + }, + { + "id": 264, + "paths": [ + "M512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156s183.038 121.844 294.156 121.844c111.118 0 215.584-43.272 294.156-121.844s121.844-183.038 121.844-294.156c0-111.118-43.272-215.584-121.844-294.156s-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512s229.23-512 512-512zM448 704h128v128h-128zM448 192h128v384h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "notification", + "warning", + "notice", + "note", + "exclamation" + ], + "defaultCode": 59912, + "grid": 16 + }, + { + "id": 265, + "paths": [ + "M448 704h128v128h-128zM704 256c35.346 0 64 28.654 64 64v192l-192 128h-128v-64l192-128v-64h-320v-128h384zM512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156s183.038 121.844 294.156 121.844c111.118 0 215.584-43.272 294.156-121.844s121.844-183.038 121.844-294.156c0-111.118-43.272-215.584-121.844-294.156s-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512s229.23-512 512-512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "question", + "help", + "support" + ], + "defaultCode": 59913, + "grid": 16 + }, + { + "id": 266, + "paths": [ + "M992 384h-352v-352c0-17.672-14.328-32-32-32h-192c-17.672 0-32 14.328-32 32v352h-352c-17.672 0-32 14.328-32 32v192c0 17.672 14.328 32 32 32h352v352c0 17.672 14.328 32 32 32h192c17.672 0 32-14.328 32-32v-352h352c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "plus", + "add", + "sum" + ], + "defaultCode": 59914, + "grid": 16 + }, + { + "id": 267, + "paths": [ + "M0 416v192c0 17.672 14.328 32 32 32h960c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32h-960c-17.672 0-32 14.328-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "minus", + "subtract", + "minimize", + "line" + ], + "defaultCode": 59915, + "grid": 16 + }, + { + "id": 268, + "paths": [ + "M448 304c0-26.4 21.6-48 48-48h32c26.4 0 48 21.6 48 48v32c0 26.4-21.6 48-48 48h-32c-26.4 0-48-21.6-48-48v-32z", + "M640 768h-256v-64h64v-192h-64v-64h192v256h64z", + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "info", + "information" + ], + "defaultCode": 59916, + "grid": 16 + }, + { + "id": 269, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z", + "M672 256l-160 160-160-160-96 96 160 160-160 160 96 96 160-160 160 160 96-96-160-160 160-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cancel-circle", + "close", + "remove", + "delete" + ], + "defaultCode": 59917, + "grid": 16 + }, + { + "id": 270, + "paths": [ + "M874.040 149.96c-96.706-96.702-225.28-149.96-362.040-149.96s-265.334 53.258-362.040 149.96c-96.702 96.706-149.96 225.28-149.96 362.040s53.258 265.334 149.96 362.040c96.706 96.702 225.28 149.96 362.040 149.96s265.334-53.258 362.040-149.96c96.702-96.706 149.96-225.28 149.96-362.040s-53.258-265.334-149.96-362.040zM896 512c0 82.814-26.354 159.588-71.112 222.38l-535.266-535.268c62.792-44.758 139.564-71.112 222.378-71.112 211.738 0 384 172.262 384 384zM128 512c0-82.814 26.354-159.586 71.112-222.378l535.27 535.268c-62.794 44.756-139.568 71.11-222.382 71.11-211.738 0-384-172.262-384-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "blocked", + "forbidden", + "denied", + "banned" + ], + "defaultCode": 59918, + "grid": 16 + }, + { + "id": 271, + "paths": [ + "M1014.662 822.66c-0.004-0.004-0.008-0.008-0.012-0.010l-310.644-310.65 310.644-310.65c0.004-0.004 0.008-0.006 0.012-0.010 3.344-3.346 5.762-7.254 7.312-11.416 4.246-11.376 1.824-24.682-7.324-33.83l-146.746-146.746c-9.148-9.146-22.45-11.566-33.828-7.32-4.16 1.55-8.070 3.968-11.418 7.31 0 0.004-0.004 0.006-0.008 0.010l-310.648 310.652-310.648-310.65c-0.004-0.004-0.006-0.006-0.010-0.010-3.346-3.342-7.254-5.76-11.414-7.31-11.38-4.248-24.682-1.826-33.83 7.32l-146.748 146.748c-9.148 9.148-11.568 22.452-7.322 33.828 1.552 4.16 3.97 8.072 7.312 11.416 0.004 0.002 0.006 0.006 0.010 0.010l310.65 310.648-310.65 310.652c-0.002 0.004-0.006 0.006-0.008 0.010-3.342 3.346-5.76 7.254-7.314 11.414-4.248 11.376-1.826 24.682 7.322 33.83l146.748 146.746c9.15 9.148 22.452 11.568 33.83 7.322 4.16-1.552 8.070-3.97 11.416-7.312 0.002-0.004 0.006-0.006 0.010-0.010l310.648-310.65 310.648 310.65c0.004 0.002 0.008 0.006 0.012 0.008 3.348 3.344 7.254 5.762 11.414 7.314 11.378 4.246 24.684 1.826 33.828-7.322l146.746-146.748c9.148-9.148 11.57-22.454 7.324-33.83-1.552-4.16-3.97-8.068-7.314-11.414z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cross", + "cancel", + "close", + "quit", + "remove" + ], + "defaultCode": 59919, + "grid": 16 + }, + { + "id": 272, + "paths": [ + "M864 128l-480 480-224-224-160 160 384 384 640-640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "checkmark", + "tick", + "correct", + "accept", + "ok" + ], + "defaultCode": 59920, + "grid": 16 + }, + { + "id": 273, + "paths": [ + "M397.434 917.696l-397.868-391.6 197.378-194.27 200.49 197.332 429.62-422.852 197.378 194.27-626.998 617.12zM107.912 526.096l289.524 284.962 518.656-510.482-89.036-87.632-429.62 422.852-200.49-197.334-89.034 87.634z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "checkmark", + "tick", + "correct", + "accept", + "ok" + ], + "defaultCode": 59921, + "grid": 16 + }, + { + "id": 274, + "paths": [ + "M128 256h128v192h64v-384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v384h64v-192zM128 64h128v128h-128v-128zM960 64v-64h-192c-35.202 0-64 28.8-64 64v320c0 35.2 28.798 64 64 64h192v-64h-192v-320h192zM640 160v-96c0-35.2-28.8-64-64-64h-192v448h192c35.2 0 64-28.8 64-64v-96c0-35.2-8.8-64-44-64 35.2 0 44-28.8 44-64zM576 384h-128v-128h128v128zM576 192h-128v-128h128v128zM832 576l-416 448-224-288 82-70 142 148 352-302z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spell-check", + "spelling", + "correct" + ], + "defaultCode": 59922, + "grid": 16 + }, + { + "id": 275, + "paths": [ + "M384 512h-320v-128h320v-128l192 192-192 192zM1024 0v832l-384 192v-192h-384v-256h64v192h320v-576l256-128h-576v256h-64v-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "enter", + "signin", + "login" + ], + "defaultCode": 59923, + "grid": 16 + }, + { + "id": 276, + "paths": [ + "M768 640v-128h-320v-128h320v-128l192 192zM704 576v256h-320v192l-384-192v-832h704v320h-64v-256h-512l256 128v576h256v-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "exit", + "signout", + "logout", + "quit", + "close" + ], + "defaultCode": 59924, + "grid": 16 + }, + { + "id": 277, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416zM384 288l384 224-384 224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "play", + "player" + ], + "defaultCode": 59925, + "grid": 16 + }, + { + "id": 278, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416zM320 320h128v384h-128zM576 320h128v384h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pause", + "player" + ], + "defaultCode": 59926, + "grid": 16 + }, + { + "id": 279, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416zM320 320h384v384h-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stop", + "player" + ], + "defaultCode": 59927, + "grid": 16 + }, + { + "id": 280, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z", + "M448 512l256-192v384z", + "M320 320h128v384h-128v-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "previous", + "player" + ], + "defaultCode": 59928, + "grid": 16 + }, + { + "id": 281, + "paths": [ + "M512 0c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416z", + "M576 512l-256-192v384z", + "M704 320h-128v384h128v-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "next", + "player" + ], + "defaultCode": 59929, + "grid": 16 + }, + { + "id": 282, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM704 672l-224-160 224-160zM448 672l-224-160 224-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "backward", + "player" + ], + "defaultCode": 59930, + "grid": 16 + }, + { + "id": 283, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416zM320 352l224 160-224 160zM576 352l224 160-224 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "forward", + "player" + ], + "defaultCode": 59931, + "grid": 16 + }, + { + "id": 284, + "paths": [ + "M192 128l640 384-640 384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "play", + "player" + ], + "defaultCode": 59932, + "grid": 16 + }, + { + "id": 285, + "paths": [ + "M128 128h320v768h-320zM576 128h320v768h-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pause", + "player" + ], + "defaultCode": 59933, + "grid": 16 + }, + { + "id": 286, + "paths": [ + "M128 128h768v768h-768z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stop", + "player", + "square" + ], + "defaultCode": 59934, + "grid": 16 + }, + { + "id": 287, + "paths": [ + "M576 160v320l320-320v704l-320-320v320l-352-352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "backward", + "player" + ], + "defaultCode": 59935, + "grid": 16 + }, + { + "id": 288, + "paths": [ + "M512 864v-320l-320 320v-704l320 320v-320l352 352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "forward", + "player" + ], + "defaultCode": 59936, + "grid": 16 + }, + { + "id": 289, + "paths": [ + "M128 896v-768h128v352l320-320v320l320-320v704l-320-320v320l-320-320v352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "first", + "player" + ], + "defaultCode": 59937, + "grid": 16 + }, + { + "id": 290, + "paths": [ + "M896 128v768h-128v-352l-320 320v-320l-320 320v-704l320 320v-320l320 320v-352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "last", + "player" + ], + "defaultCode": 59938, + "grid": 16 + }, + { + "id": 291, + "paths": [ + "M256 896v-768h128v352l320-320v704l-320-320v352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "previous", + "player" + ], + "defaultCode": 59939, + "grid": 16 + }, + { + "id": 292, + "paths": [ + "M768 128v768h-128v-352l-320 320v-704l320 320v-352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "next", + "player" + ], + "defaultCode": 59940, + "grid": 16 + }, + { + "id": 293, + "paths": [ + "M0 768h1024v128h-1024zM512 128l512 512h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eject", + "player" + ], + "defaultCode": 59941, + "grid": 16 + }, + { + "id": 294, + "paths": [ + "M890.040 922.040c-12.286 0-24.566-4.686-33.942-14.056-18.744-18.746-18.744-49.136 0-67.882 87.638-87.642 135.904-204.16 135.904-328.1 0-123.938-48.266-240.458-135.904-328.098-18.744-18.746-18.744-49.138 0-67.882s49.138-18.744 67.882 0c105.77 105.772 164.022 246.4 164.022 395.98s-58.252 290.208-164.022 395.98c-9.372 9.372-21.656 14.058-33.94 14.058zM719.53 831.53c-12.286 0-24.566-4.686-33.942-14.056-18.744-18.744-18.744-49.136 0-67.882 131.006-131.006 131.006-344.17 0-475.176-18.744-18.746-18.744-49.138 0-67.882 18.744-18.742 49.138-18.744 67.882 0 81.594 81.59 126.53 190.074 126.53 305.466 0 115.39-44.936 223.876-126.53 305.47-9.372 9.374-21.656 14.060-33.94 14.060v0zM549.020 741.020c-12.286 0-24.568-4.686-33.942-14.058-18.746-18.746-18.746-49.134 0-67.88 81.1-81.1 81.1-213.058 0-294.156-18.746-18.746-18.746-49.138 0-67.882s49.136-18.744 67.882 0c118.53 118.53 118.53 311.392 0 429.922-9.372 9.368-21.656 14.054-33.94 14.054z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "width": 1088, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-high", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59942, + "grid": 16 + }, + { + "id": 295, + "paths": [ + "M719.53 831.53c-12.286 0-24.566-4.686-33.942-14.056-18.744-18.744-18.744-49.136 0-67.882 131.006-131.006 131.006-344.17 0-475.176-18.744-18.746-18.744-49.138 0-67.882 18.744-18.742 49.138-18.744 67.882 0 81.594 81.59 126.53 190.074 126.53 305.466 0 115.39-44.936 223.876-126.53 305.47-9.372 9.374-21.656 14.060-33.94 14.060v0zM549.020 741.020c-12.286 0-24.566-4.686-33.942-14.058-18.746-18.746-18.746-49.134 0-67.88 81.1-81.1 81.1-213.058 0-294.156-18.746-18.746-18.746-49.138 0-67.882s49.136-18.744 67.882 0c118.53 118.53 118.53 311.392 0 429.922-9.372 9.368-21.656 14.054-33.94 14.054z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-medium", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59943, + "grid": 16 + }, + { + "id": 296, + "paths": [ + "M549.020 741.020c-12.286 0-24.566-4.686-33.942-14.058-18.746-18.746-18.746-49.134 0-67.88 81.1-81.1 81.1-213.058 0-294.156-18.746-18.746-18.746-49.138 0-67.882s49.136-18.744 67.882 0c118.53 118.53 118.53 311.392 0 429.922-9.372 9.368-21.656 14.054-33.94 14.054z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-low", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59944, + "grid": 16 + }, + { + "id": 297, + "paths": [ + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-mute", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59945, + "grid": 16 + }, + { + "id": 298, + "paths": [ + "M960 619.148v84.852h-84.852l-107.148-107.148-107.148 107.148h-84.852v-84.852l107.148-107.148-107.148-107.148v-84.852h84.852l107.148 107.148 107.148-107.148h84.852v84.852l-107.148 107.148 107.148 107.148z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-mute", + "volume", + "audio", + "player" + ], + "defaultCode": 59946, + "grid": 16 + }, + { + "id": 299, + "paths": [ + "M1024 576h-192v192h-128v-192h-192v-128h192v-192h128v192h192v128z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-increase", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59947, + "grid": 16 + }, + { + "id": 300, + "paths": [ + "M512 448h512v128h-512v-128z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-decrease", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59948, + "grid": 16 + }, + { + "id": 301, + "paths": [ + "M128 320h640v192l256-256-256-256v192h-768v384h128zM896 704h-640v-192l-256 256 256 256v-192h768v-384h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "loop", + "repeat", + "player" + ], + "defaultCode": 59949, + "grid": 16 + }, + { + "id": 302, + "paths": [ + "M889.68 166.32c-93.608-102.216-228.154-166.32-377.68-166.32-282.77 0-512 229.23-512 512h96c0-229.75 186.25-416 416-416 123.020 0 233.542 53.418 309.696 138.306l-149.696 149.694h352v-352l-134.32 134.32z", + "M928 512c0 229.75-186.25 416-416 416-123.020 0-233.542-53.418-309.694-138.306l149.694-149.694h-352v352l134.32-134.32c93.608 102.216 228.154 166.32 377.68 166.32 282.77 0 512-229.23 512-512h-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "loop", + "repeat", + "player", + "reload", + "refresh", + "update", + "synchronize", + "arrows" + ], + "defaultCode": 59950, + "grid": 16 + }, + { + "id": 303, + "paths": [ + "M783.988 752.012c-64.104 0-124.372-24.96-169.7-70.288l-102.288-102.282-102.276 102.27c-45.332 45.336-105.6 70.3-169.706 70.3-64.118 0-124.39-24.964-169.722-70.3-45.332-45.334-70.296-105.604-70.296-169.712s24.964-124.38 70.296-169.714c45.334-45.332 105.608-70.296 169.714-70.296 64.108 0 124.38 24.964 169.712 70.296l102.278 102.276 102.276-102.276c45.332-45.332 105.604-70.298 169.712-70.298 64.112 0 124.384 24.966 169.71 70.298 45.338 45.334 70.302 105.606 70.302 169.714 0 64.112-24.964 124.382-70.3 169.71-45.326 45.336-105.598 70.302-169.712 70.302zM681.72 614.288c27.322 27.31 63.64 42.354 102.268 42.352 38.634 0 74.958-15.044 102.276-42.362 27.316-27.322 42.364-63.644 42.364-102.278s-15.046-74.956-42.364-102.274c-27.32-27.318-63.64-42.364-102.276-42.364-38.632 0-74.956 15.044-102.278 42.364l-102.268 102.274 102.278 102.288zM240.012 367.362c-38.634 0-74.956 15.044-102.274 42.364-27.32 27.318-42.364 63.64-42.364 102.274 0 38.632 15.044 74.954 42.364 102.276 27.32 27.316 63.642 42.364 102.274 42.364 38.634 0 74.956-15.044 102.272-42.362l102.276-102.278-102.276-102.274c-27.318-27.32-63.64-42.366-102.272-42.364v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "infinite" + ], + "defaultCode": 59951, + "grid": 16 + }, + { + "id": 304, + "paths": [ + "M768 704h-101.49l-160-160 160-160h101.49v160l224-224-224-224v160h-128c-16.974 0-33.252 6.744-45.254 18.746l-178.746 178.744-178.746-178.746c-12-12-28.28-18.744-45.254-18.744h-192v128h165.49l160 160-160 160h-165.49v128h192c16.974 0 33.252-6.742 45.254-18.746l178.746-178.744 178.746 178.744c12.002 12.004 28.28 18.746 45.254 18.746h128v160l224-224-224-224v160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shuffle", + "random", + "player" + ], + "defaultCode": 59952, + "grid": 16 + }, + { + "id": 305, + "paths": [ + "M0 736l256-256 544 544 224-224-544-544 255.998-256h-735.998v736z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up-left", + "up-left", + "arrow-top-left" + ], + "defaultCode": 59953, + "grid": 16 + }, + { + "id": 306, + "paths": [ + "M512 32l-480 480h288v512h384v-512h288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up", + "up", + "upload", + "top" + ], + "defaultCode": 59954, + "grid": 16 + }, + { + "id": 307, + "paths": [ + "M288 0l256 256-544 544 224 224 544-544 256 255.998v-735.998h-736z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up-right", + "up-right", + "arrow-top-right" + ], + "defaultCode": 59955, + "grid": 16 + }, + { + "id": 308, + "paths": [ + "M992 512l-480-480v288h-512v384h512v288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-right", + "right", + "next" + ], + "defaultCode": 59956, + "grid": 16 + }, + { + "id": 309, + "paths": [ + "M1024 288l-256 256-544-544-224 224 544 544-255.998 256h735.998v-736z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down-right", + "down-right", + "arrow-bottom-right" + ], + "defaultCode": 59957, + "grid": 16 + }, + { + "id": 310, + "paths": [ + "M512 992l480-480h-288v-512h-384v512h-288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down", + "down", + "download", + "bottom" + ], + "defaultCode": 59958, + "grid": 16 + }, + { + "id": 311, + "paths": [ + "M736 1024l-256-256 544-544-224-224-544 544-256-255.998v735.998h736z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down-left", + "down-left", + "arrow-bottom-left" + ], + "defaultCode": 59959, + "grid": 16 + }, + { + "id": 312, + "paths": [ + "M32 512l480 480v-288h512v-384h-512v-288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-left", + "left", + "previous" + ], + "defaultCode": 59960, + "grid": 16 + }, + { + "id": 313, + "paths": [ + "M877.254 786.746l-530.744-530.746h229.49c35.346 0 64-28.654 64-64s-28.654-64-64-64h-384c-25.886 0-49.222 15.592-59.128 39.508-3.282 7.924-4.84 16.242-4.838 24.492h-0.034v384c0 35.346 28.654 64 64 64s64-28.654 64-64v-229.49l530.746 530.744c12.496 12.498 28.876 18.746 45.254 18.746s32.758-6.248 45.254-18.746c24.994-24.992 24.994-65.516 0-90.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up-left", + "up-left", + "arrow-top-left" + ], + "defaultCode": 59961, + "grid": 16 + }, + { + "id": 314, + "paths": [ + "M877.254 402.746l-320-320c-24.992-24.994-65.514-24.994-90.508 0l-320 320c-24.994 24.994-24.994 65.516 0 90.51 24.994 24.996 65.516 24.996 90.51 0l210.744-210.746v613.49c0 35.346 28.654 64 64 64s64-28.654 64-64v-613.49l210.746 210.746c12.496 12.496 28.876 18.744 45.254 18.744s32.758-6.248 45.254-18.746c24.994-24.994 24.994-65.514 0-90.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up", + "up", + "upload", + "top" + ], + "defaultCode": 59962, + "grid": 16 + }, + { + "id": 315, + "paths": [ + "M237.254 877.254l530.746-530.744v229.49c0 35.346 28.654 64 64 64s64-28.654 64-64v-384c0-25.884-15.594-49.222-39.508-59.126-7.924-3.284-16.242-4.84-24.492-4.838v-0.036h-384c-35.346 0-64 28.654-64 64 0 35.348 28.654 64 64 64h229.49l-530.744 530.746c-12.498 12.496-18.746 28.876-18.746 45.254s6.248 32.758 18.746 45.254c24.992 24.994 65.516 24.994 90.508 0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up-right", + "up-right", + "arrow-top-right" + ], + "defaultCode": 59963, + "grid": 16 + }, + { + "id": 316, + "paths": [ + "M621.254 877.254l320-320c24.994-24.992 24.994-65.516 0-90.51l-320-320c-24.994-24.992-65.516-24.992-90.51 0-24.994 24.994-24.994 65.516 0 90.51l210.746 210.746h-613.49c-35.346 0-64 28.654-64 64s28.654 64 64 64h613.49l-210.746 210.746c-12.496 12.496-18.744 28.876-18.744 45.254s6.248 32.758 18.744 45.254c24.994 24.994 65.516 24.994 90.51 0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-right", + "right", + "next" + ], + "defaultCode": 59964, + "grid": 16 + }, + { + "id": 317, + "paths": [ + "M146.746 237.254l530.742 530.746h-229.488c-35.346 0-64 28.654-64 64s28.654 64 64 64h384c25.884 0 49.222-15.594 59.126-39.508 3.284-7.924 4.84-16.242 4.838-24.492h0.036v-384c0-35.346-28.654-64-64-64-35.348 0-64 28.654-64 64v229.49l-530.746-530.744c-12.496-12.498-28.874-18.746-45.254-18.746s-32.758 6.248-45.254 18.746c-24.994 24.992-24.994 65.516 0 90.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down-right", + "down-right", + "arrow-bottom-right" + ], + "defaultCode": 59965, + "grid": 16 + }, + { + "id": 318, + "paths": [ + "M877.254 621.254l-320 320c-24.992 24.994-65.514 24.994-90.508 0l-320-320c-24.994-24.994-24.994-65.516 0-90.51 24.994-24.996 65.516-24.996 90.51 0l210.744 210.746v-613.49c0-35.346 28.654-64 64-64s64 28.654 64 64v613.49l210.746-210.746c12.496-12.496 28.876-18.744 45.254-18.744s32.758 6.248 45.254 18.746c24.994 24.994 24.994 65.514 0 90.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down", + "down", + "download", + "bottom" + ], + "defaultCode": 59966, + "grid": 16 + }, + { + "id": 319, + "paths": [ + "M786.744 146.744l-530.744 530.744v-229.49c0-35.346-28.654-64-64-64s-64 28.654-64 64v384.002c0 25.886 15.592 49.222 39.508 59.128 7.924 3.282 16.242 4.84 24.492 4.836v0.036l384-0.002c35.344 0 64-28.654 64-63.998 0-35.348-28.656-64-64-64h-229.49l530.744-530.746c12.496-12.496 18.746-28.876 18.746-45.256 0-16.376-6.25-32.758-18.746-45.254-24.992-24.992-65.518-24.992-90.51 0v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down-left", + "down-left", + "arrow-bottom-left" + ], + "defaultCode": 59967, + "grid": 16 + }, + { + "id": 320, + "paths": [ + "M402.746 877.254l-320-320c-24.994-24.992-24.994-65.516 0-90.51l320-320c24.994-24.992 65.516-24.992 90.51 0 24.994 24.994 24.994 65.516 0 90.51l-210.746 210.746h613.49c35.346 0 64 28.654 64 64s-28.654 64-64 64h-613.49l210.746 210.746c12.496 12.496 18.744 28.876 18.744 45.254s-6.248 32.758-18.744 45.254c-24.994 24.994-65.516 24.994-90.51 0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-left", + "left", + "previous" + ], + "defaultCode": 59968, + "grid": 16 + }, + { + "id": 321, + "paths": [ + "M0 512c0 282.77 229.23 512 512 512s512-229.23 512-512-229.23-512-512-512-512 229.23-512 512zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416 186.25-416 416-416 416 186.25 416 416z", + "M706.744 669.256l90.512-90.512-285.256-285.254-285.254 285.256 90.508 90.508 194.746-194.744z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "circle-up", + "up", + "circle-top", + "arrow" + ], + "defaultCode": 59969, + "grid": 16 + }, + { + "id": 322, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z", + "M354.744 706.744l90.512 90.512 285.254-285.256-285.256-285.254-90.508 90.508 194.744 194.746z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "circle-right", + "right", + "circle-next", + "arrow" + ], + "defaultCode": 59970, + "grid": 16 + }, + { + "id": 323, + "paths": [ + "M1024 512c0-282.77-229.23-512-512-512s-512 229.23-512 512 229.23 512 512 512 512-229.23 512-512zM96 512c0-229.75 186.25-416 416-416s416 186.25 416 416-186.25 416-416 416-416-186.25-416-416z", + "M317.256 354.744l-90.512 90.512 285.256 285.254 285.254-285.256-90.508-90.508-194.746 194.744z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "circle-down", + "down", + "circle-bottom", + "arrow" + ], + "defaultCode": 59971, + "grid": 16 + }, + { + "id": 324, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416z", + "M669.256 317.256l-90.512-90.512-285.254 285.256 285.256 285.254 90.508-90.508-194.744-194.746z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "circle-left", + "left", + "circle-previous", + "arrow" + ], + "defaultCode": 59972, + "grid": 16 + }, + { + "id": 325, + "paths": [ + "M960 0h64v512h-64v-512z", + "M0 512h64v512h-64v-512z", + "M320 704h704v128h-704v160l-224-224 224-224v160z", + "M704 320h-704v-128h704v-160l224 224-224 224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tab", + "arrows" + ], + "defaultCode": 59973, + "grid": 16 + }, + { + "id": 326, + "paths": [ + "M704 512v384h64v-384h160l-192-192-192 192z", + "M64 192h96v64h-96v-64z", + "M192 192h96v64h-96v-64z", + "M320 192h64v96h-64v-96z", + "M64 416h64v96h-64v-96z", + "M160 448h96v64h-96v-64z", + "M288 448h96v64h-96v-64z", + "M64 288h64v96h-64v-96z", + "M320 320h64v96h-64v-96z", + "M320 704v192h-192v-192h192zM384 640h-320v320h320v-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "move-up", + "sort", + "arrange" + ], + "defaultCode": 59974, + "grid": 16 + }, + { + "id": 327, + "paths": [ + "M768 704v-384h-64v384h-160l192 192 192-192z", + "M320 256v192h-192v-192h192zM384 192h-320v320h320v-320z", + "M64 640h96v64h-96v-64z", + "M192 640h96v64h-96v-64z", + "M320 640h64v96h-64v-96z", + "M64 864h64v96h-64v-96z", + "M160 896h96v64h-96v-64z", + "M288 896h96v64h-96v-64z", + "M64 736h64v96h-64v-96z", + "M320 768h64v96h-64v-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "move-down", + "sort", + "arrange" + ], + "defaultCode": 59975, + "grid": 16 + }, + { + "id": 328, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M928 1024h-256c-11.8 0-22.644-6.496-28.214-16.9-5.566-10.404-4.958-23.030 1.59-32.85l222.832-334.25h-196.208c-17.672 0-32-14.328-32-32s14.328-32 32-32h256c11.8 0 22.644 6.496 28.214 16.9 5.566 10.404 4.958 23.030-1.59 32.85l-222.83 334.25h196.206c17.672 0 32 14.328 32 32s-14.328 32-32 32z", + "M1020.622 401.686l-192.002-384c-5.42-10.842-16.502-17.69-28.622-17.69-12.122 0-23.202 6.848-28.624 17.69l-191.996 384c-7.904 15.806-1.496 35.030 14.31 42.932 4.594 2.296 9.476 3.386 14.288 3.386 11.736 0 23.040-6.484 28.644-17.698l55.156-110.31h216.446l55.156 110.31c7.902 15.806 27.124 22.21 42.932 14.31 15.808-7.902 22.216-27.124 14.312-42.93zM723.778 255.996l76.22-152.446 76.224 152.446h-152.444z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-alpha-asc", + "arrange", + "alphabetic" + ], + "defaultCode": 59976, + "grid": 16 + }, + { + "id": 329, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M928 448h-256c-11.8 0-22.644-6.496-28.214-16.9-5.566-10.406-4.958-23.030 1.59-32.85l222.832-334.25h-196.208c-17.672 0-32-14.328-32-32s14.328-32 32-32h256c11.8 0 22.644 6.496 28.214 16.9 5.566 10.406 4.958 23.030-1.59 32.85l-222.83 334.25h196.206c17.672 0 32 14.328 32 32s-14.328 32-32 32z", + "M1020.622 977.69l-192.002-384c-5.42-10.842-16.502-17.69-28.622-17.69-12.122 0-23.202 6.848-28.624 17.69l-191.996 384c-7.904 15.806-1.496 35.030 14.31 42.932 4.594 2.296 9.476 3.386 14.288 3.386 11.736 0 23.040-6.484 28.644-17.698l55.158-110.31h216.446l55.156 110.31c7.902 15.806 27.124 22.21 42.932 14.31 15.806-7.902 22.214-27.124 14.31-42.93zM723.778 832l76.22-152.446 76.226 152.446h-152.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-alpha-desc", + "arrange", + "alphabetic" + ], + "defaultCode": 59977, + "grid": 16 + }, + { + "id": 330, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M864 448c-17.674 0-32-14.328-32-32v-352h-32c-17.674 0-32-14.328-32-32s14.326-32 32-32h64c17.674 0 32 14.328 32 32v384c0 17.672-14.326 32-32 32z", + "M928 576h-192c-17.674 0-32 14.326-32 32v192c0 17.674 14.326 32 32 32h160v128h-160c-17.674 0-32 14.326-32 32s14.326 32 32 32h192c17.674 0 32-14.326 32-32v-384c0-17.674-14.326-32-32-32zM768 640h128v128h-128v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-numeric-asc", + "arrange" + ], + "defaultCode": 59978, + "grid": 16 + }, + { + "id": 331, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M864 1024c-17.674 0-32-14.328-32-32v-352h-32c-17.674 0-32-14.328-32-32s14.326-32 32-32h64c17.674 0 32 14.328 32 32v384c0 17.672-14.326 32-32 32z", + "M928 0h-192c-17.674 0-32 14.326-32 32v192c0 17.674 14.326 32 32 32h160v128h-160c-17.674 0-32 14.326-32 32s14.326 32 32 32h192c17.674 0 32-14.326 32-32v-384c0-17.674-14.326-32-32-32zM768 64h128v128h-128v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-numberic-desc", + "arrange" + ], + "defaultCode": 59979, + "grid": 16 + }, + { + "id": 332, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M448 576h576v128h-576v-128z", + "M448 384h448v128h-448v-128z", + "M448 192h320v128h-320v-128z", + "M448 0h192v128h-192v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-amount-asc", + "arrange" + ], + "defaultCode": 59980, + "grid": 16 + }, + { + "id": 333, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M448 0h576v128h-576v-128z", + "M448 192h448v128h-448v-128z", + "M448 384h320v128h-320v-128z", + "M448 576h192v128h-192v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-amount-desc", + "arrange" + ], + "defaultCode": 59981, + "grid": 16 + }, + { + "id": 334, + "paths": [ + "M736 896c-88.224 0-160-71.776-160-160v-96h-128v96c0 88.224-71.776 160-160 160s-160-71.776-160-160 71.776-160 160-160h96v-128h-96c-88.224 0-160-71.776-160-160s71.776-160 160-160 160 71.776 160 160v96h128v-96c0-88.224 71.776-160 160-160s160 71.776 160 160-71.776 160-160 160h-96v128h96c88.224 0 160 71.776 160 160s-71.774 160-160 160zM640 640v96c0 52.934 43.066 96 96 96s96-43.066 96-96-43.066-96-96-96h-96zM288 640c-52.934 0-96 43.066-96 96s43.066 96 96 96 96-43.066 96-96v-96h-96zM448 576h128v-128h-128v128zM640 384h96c52.934 0 96-43.066 96-96s-43.066-96-96-96-96 43.066-96 96v96zM288 192c-52.934 0-96 43.066-96 96s43.066 96 96 96h96v-96c0-52.934-43.064-96-96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "command", + "cmd" + ], + "defaultCode": 59982, + "grid": 16 + }, + { + "id": 335, + "paths": [ + "M672 896h-320c-17.672 0-32-14.326-32-32v-352h-128c-12.942 0-24.612-7.796-29.564-19.754-4.954-11.958-2.214-25.722 6.936-34.874l320-320c12.498-12.496 32.758-12.496 45.254 0l320 320c9.152 9.152 11.89 22.916 6.938 34.874s-16.62 19.754-29.564 19.754h-128v352c0 17.674-14.326 32-32 32zM384 832h256v-352c0-17.672 14.326-32 32-32h82.744l-242.744-242.746-242.744 242.746h82.744c17.672 0 32 14.328 32 32v352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shift" + ], + "defaultCode": 59983, + "grid": 16 + }, + { + "id": 336, + "paths": [ + "M736.014 448c-8.908 0-17.77-3.698-24.096-10.928l-199.918-228.478-199.918 228.478c-11.636 13.3-31.856 14.65-45.154 3.010-13.3-11.638-14.648-31.854-3.010-45.154l224-256c6.076-6.944 14.854-10.928 24.082-10.928s18.006 3.984 24.082 10.928l224 256c11.638 13.3 10.292 33.516-3.010 45.154-6.070 5.312-13.582 7.918-21.058 7.918z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ctrl", + "control" + ], + "defaultCode": 59984, + "grid": 16 + }, + { + "id": 337, + "paths": [ + "M928 832h-256c-12.646 0-24.106-7.448-29.242-19.004l-247.554-556.996h-299.204c-17.672 0-32-14.328-32-32s14.328-32 32-32h320c12.646 0 24.106 7.448 29.242 19.004l247.556 556.996h235.202c17.674 0 32 14.326 32 32s-14.326 32-32 32z", + "M928 256h-320c-17.674 0-32-14.328-32-32s14.326-32 32-32h320c17.674 0 32 14.328 32 32s-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "opt", + "option", + "alt" + ], + "defaultCode": 59985, + "grid": 16 + }, + { + "id": 338, + "paths": [ + "M896 0h-768c-70.4 0-128 57.6-128 128v768c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v-768c0-70.4-57.6-128-128-128zM448 794.51l-237.254-237.256 90.51-90.508 146.744 146.744 306.746-306.746 90.508 90.51-397.254 397.256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "checkbox-checked", + "checkbox", + "tick", + "checked", + "selected" + ], + "defaultCode": 59986, + "grid": 16 + }, + { + "id": 339, + "paths": [ + "M896 0h-768c-70.4 0-128 57.6-128 128v768c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v-768c0-70.4-57.6-128-128-128zM896 896h-768v-768h768v768z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "checkbox-unchecked", + "checkbox", + "unchecked", + "square" + ], + "defaultCode": 59987, + "grid": 16 + }, + { + "id": 340, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM320 512c0-106.039 85.961-192 192-192s192 85.961 192 192c0 106.039-85.961 192-192 192s-192-85.961-192-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "radio-checked", + "radio-button" + ], + "defaultCode": 59988, + "grid": 16 + }, + { + "id": 341, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 640c-70.692 0-128-57.306-128-128 0-70.692 57.308-128 128-128 70.694 0 128 57.308 128 128 0 70.694-57.306 128-128 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "radio-checked", + "radio-button" + ], + "defaultCode": 59989, + "grid": 16 + }, + { + "id": 342, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "radio-unchecked", + "radio-button", + "circle" + ], + "defaultCode": 59990, + "grid": 16 + }, + { + "id": 343, + "paths": [ + "M832 256l192-192-64-64-192 192h-448v-192h-128v192h-192v128h192v512h512v192h128v-192h192v-128h-192v-448zM320 320h320l-320 320v-320zM384 704l320-320v320h-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "crop", + "resize", + "cut" + ], + "defaultCode": 59991, + "grid": 16 + }, + { + "id": 344, + "paths": [ + "M320 128h-128c-35.2 0-64 28.8-64 64v128c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v-128c0-35.2-28.8-64-64-64z", + "M704 384h128c35.2 0 64-28.8 64-64v-128c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v128c0 35.2 28.8 64 64 64zM704 192h128v128h-128v-128z", + "M320 640h-128c-35.2 0-64 28.8-64 64v128c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v-128c0-35.2-28.8-64-64-64zM320 832h-128v-128h128v128z", + "M832 640h-128c-35.2 0-64 28.8-64 64v128c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v-128c0-35.2-28.8-64-64-64z", + "M896 512h-64c-85.476 0-165.834-33.286-226.274-93.724-60.44-60.442-93.726-140.802-93.726-226.276v-64c0-70.4-57.6-128-128-128h-256c-70.4 0-128 57.6-128 128v256c0 70.4 57.6 128 128 128h64c85.476 0 165.834 33.286 226.274 93.724 60.44 60.442 93.726 140.802 93.726 226.276v64c0 70.4 57.6 128 128 128h256c70.4 0 128-57.6 128-128v-256c0-70.4-57.6-128-128-128zM960 896c0 16.954-6.696 32.986-18.856 45.144-12.158 12.16-28.19 18.856-45.144 18.856h-256c-16.954 0-32.986-6.696-45.144-18.856-12.16-12.158-18.856-28.19-18.856-45.144v-64c0-212.078-171.922-384-384-384h-64c-16.954 0-32.986-6.696-45.146-18.854-12.158-12.16-18.854-28.192-18.854-45.146v-256c0-16.954 6.696-32.986 18.854-45.146 12.16-12.158 28.192-18.854 45.146-18.854h256c16.954 0 32.986 6.696 45.146 18.854 12.158 12.16 18.854 28.192 18.854 45.146v64c0 212.078 171.922 384 384 384h64c16.954 0 32.986 6.696 45.144 18.856 12.16 12.158 18.856 28.19 18.856 45.144v256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "make-group" + ], + "defaultCode": 59992, + "grid": 16 + }, + { + "id": 345, + "paths": [ + "M384 464c0 26.4-21.6 48-48 48h-96c-26.4 0-48-21.6-48-48v-96c0-26.4 21.6-48 48-48h96c26.4 0 48 21.6 48 48v96z", + "M704 464c0 26.4-21.6 48-48 48h-96c-26.4 0-48-21.6-48-48v-96c0-26.4 21.6-48 48-48h96c26.4 0 48 21.6 48 48v96z", + "M384 784c0 26.4-21.6 48-48 48h-96c-26.4 0-48-21.6-48-48v-96c0-26.4 21.6-48 48-48h96c26.4 0 48 21.6 48 48v96z", + "M704 784c0 26.4-21.6 48-48 48h-96c-26.4 0-48-21.6-48-48v-96c0-26.4 21.6-48 48-48h96c26.4 0 48 21.6 48 48v96z", + "M912.082 160l111.918-111.916v-48.084h-48.082l-111.918 111.916-111.918-111.916h-48.082v48.084l111.918 111.916-111.918 111.916v48.084h48.082l111.918-111.916 111.918 111.916h48.082v-48.084z", + "M0 768h64v128h-64v-128z", + "M0 576h64v128h-64v-128z", + "M832 448h64v128h-64v-128z", + "M832 832h64v128h-64v-128z", + "M832 640h64v128h-64v-128z", + "M0 384h64v128h-64v-128z", + "M0 192h64v128h-64v-128z", + "M512 128h128v64h-128v-64z", + "M320 128h128v64h-128v-64z", + "M128 128h128v64h-128v-64z", + "M448 960h128v64h-128v-64z", + "M640 960h128v64h-128v-64z", + "M256 960h128v64h-128v-64z", + "M64 960h128v64h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ungroup" + ], + "defaultCode": 59993, + "grid": 16 + }, + { + "id": 346, + "paths": [ + "M913.826 679.694c-66.684-104.204-181.078-150.064-255.51-102.434-6.428 4.116-12.334 8.804-17.744 13.982l-79.452-124.262 183.462-287.972c15.016-27.73 20.558-60.758 13.266-93.974-6.972-31.75-24.516-58.438-48.102-77.226l-12.278-7.808-217.468 340.114-217.47-340.114-12.276 7.806c-23.586 18.79-41.13 45.476-48.1 77.226-7.292 33.216-1.75 66.244 13.264 93.974l183.464 287.972-79.454 124.262c-5.41-5.178-11.316-9.868-17.744-13.982-74.432-47.63-188.826-1.77-255.51 102.434-66.68 104.2-60.398 227.286 14.032 274.914 74.43 47.632 188.824 1.77 255.508-102.432l164.286-257.87 164.288 257.872c66.684 104.202 181.078 150.064 255.508 102.432 74.428-47.63 80.71-170.716 14.030-274.914zM234.852 800.43c-30.018 46.904-68.534 69.726-94.572 75.446-0.004 0-0.004 0-0.004 0-8.49 1.868-20.294 3.010-28.324-2.128-8.898-5.694-14.804-20.748-15.8-40.276-1.616-31.644 9.642-68.836 30.888-102.034 30.014-46.906 68.53-69.726 94.562-75.444 8.496-1.866 20.308-3.010 28.336 2.126 8.898 5.694 14.802 20.75 15.798 40.272 1.618 31.65-9.64 68.84-30.884 102.038zM480 512c-17.672 0-32-14.328-32-32s14.328-32 32-32 32 14.328 32 32-14.328 32-32 32zM863.85 833.47c-0.996 19.528-6.902 34.582-15.8 40.276-8.030 5.138-19.834 3.996-28.324 2.128 0 0 0 0-0.004 0-26.040-5.718-64.554-28.542-94.572-75.446-21.244-33.198-32.502-70.388-30.884-102.038 0.996-19.522 6.9-34.578 15.798-40.272 8.028-5.136 19.84-3.992 28.336-2.126 26.034 5.716 64.548 28.538 94.562 75.444 21.246 33.198 32.502 70.39 30.888 102.034z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "scissors", + "cut" + ], + "defaultCode": 59994, + "grid": 16 + }, + { + "id": 347, + "paths": [ + "M512 0c-282.77 0-512 71.634-512 160v96l384 384v320c0 35.346 57.306 64 128 64 70.692 0 128-28.654 128-64v-320l384-384v-96c0-88.366-229.23-160-512-160zM94.384 138.824c23.944-13.658 57.582-26.62 97.278-37.488 87.944-24.076 201.708-37.336 320.338-37.336 118.628 0 232.394 13.26 320.338 37.336 39.696 10.868 73.334 23.83 97.28 37.488 15.792 9.006 24.324 16.624 28.296 21.176-3.972 4.552-12.506 12.168-28.296 21.176-23.946 13.658-57.584 26.62-97.28 37.488-87.942 24.076-201.708 37.336-320.338 37.336s-232.394-13.26-320.338-37.336c-39.696-10.868-73.334-23.83-97.278-37.488-15.792-9.008-24.324-16.624-28.298-21.176 3.974-4.552 12.506-12.168 28.298-21.176z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "filter", + "funnel" + ], + "defaultCode": 59995, + "grid": 16 + }, + { + "id": 348, + "paths": [ + "M799.596 16.208c-90.526 0-148.62-16.208-241.848-16.208-301.284 0-441.792 171.584-441.792 345.872 0 102.678 48.64 136.458 144.564 136.458-6.758-14.864-18.914-31.080-18.914-104.034 0-204.010 77.006-263.458 175.636-267.51 0 0-80.918 793.374-315.778 888.542v24.672h316.594l108.026-512h197.844l44.072-128h-214.908l51.944-246.19c59.446 12.156 117.542 24.316 167.532 24.316 62.148 0 118.894-18.914 149.968-162.126-37.826 12.16-78.362 16.208-122.94 16.208z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "font", + "typeface", + "typography", + "font-family", + "wysiwyg" + ], + "defaultCode": 59996, + "grid": 16 + }, + { + "id": 349, + "paths": [ + "M768 871.822c0-0.040 0.002-0.076 0.002-0.116l-0.344-436.562-127.492 6.19h-251.93v-21.494c0-81.542 5.8-162.976 17.24-194.716 7.896-21.948 22.598-41.744 43.698-58.836 20.618-16.702 41.178-25.17 61.11-25.17 16.772 0 30.702 2.878 41.402 8.554 15.026 8.562 29.716 22.964 43.67 42.818 36.95 52.504 51.99 66.454 60.094 72.376 13.804 10.094 30.512 15.212 49.658 15.212 18.668 0 34.962-6.97 48.436-20.714 13.372-13.636 20.15-30.682 20.15-50.666 0-21.452-8.916-44.204-26.502-67.622-17.184-22.888-43.708-41.742-78.834-56.032-34.322-13.964-72.94-21.044-114.778-21.044-60.716 0-116.012 14.596-164.356 43.384-48.424 28.834-85.558 68.952-110.37 119.24-22.994 46.604-21.334 134.706-22.732 214.712h-125.732v71.402h125.598v324.668c0 71.666-21.906 91.008-30.216 101.324-11.436 14.202-32.552 29.104-60.444 29.104h-38.654v56.166h385.326v-56.168h-6.708c-91.144 0-117.020-9.832-117.020-120.842 0-0.018 0-0.034 0-0.048l-0.038-334.206h140.204c74.404 0 91.496 3.444 95.392 4.924 4.706 1.79 10.798 4.832 13.084 9.144 0.868 1.684 5.194 25.008 5.194 82.972v250.67c0 58.454-7.124 77.896-11.45 84.402-9.248 14.194-20.41 22.066-54.66 22.904v56.248h293.61v-55.846c-91.608 0-101.608-9.82-101.608-96.332z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ligature", + "typography", + "font" + ], + "defaultCode": 59997, + "grid": 16 + }, + { + "id": 350, + "paths": [ + "M855.328 917.454c-11.734 0-83.62-13.2-88.020-29.338-10.274-39.612-11.738-82.152-11.738-130.568v-540.974c0-80.686 16.138-127.632 16.138-127.632-1.468-7.334-8.804-23.472-17.604-23.472h-4.404c-4.4 0-55.746 32.276-102.692 32.276-38.14-0.002-61.89-33.746-105.902-33.746-185.106 0-271.942 150.31-271.942 363.032v11.072c0 4.402-2.934 8.804-7.336 8.804h-60.148c-7.336 0-22.006 41.078-22.006 60.148 0 5.87 1.466 8.8 4.4 8.8h77.754c4.402 0 7.336 5.872 7.336 10.27 0 130.566-1.466 259.298-1.466 259.298 0 20.54-1.466 66.016-10.27 102.692-4.4 16.138-71.884 29.338-89.488 29.338-7.334 0-7.334 35.212 0 42.546 60.148-2.934 99.758-7.334 159.908-7.334 55.75 0 98.292 4.4 156.974 7.334 2.934-8.802 2.934-42.546-4.4-42.546-11.736 0-83.624-13.2-88.022-29.338-10.27-39.612-10.27-82.152-11.738-130.568v-232.888c0-4.402 4.402-8.804 8.802-8.804h151.104c10.27-20.538 17.606-45.476 17.606-58.68 0-8.802 0-10.27-7.336-10.27h-162.84c-2.934 0-7.336-4.402-7.336-7.334v-52.82c0-130.568 53.482-245.538 142.97-245.538 63.372 0 118.666 41.060 118.666 197.922 0 0.006 0 0.012 0 0.018 0.208 4.036 0.314 7.294 0.314 9.452v436.816c0 20.54-1.47 66.016-10.27 102.692-4.404 16.138-71.884 29.338-89.492 29.338-7.336 0-7.336 35.212 0 42.546 60.15-2.934 99.762-7.334 159.912-7.334 55.746 0 98.288 4.4 156.972 7.334 2.928-8.8 2.928-42.544-4.406-42.544z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ligature", + "typography", + "font" + ], + "defaultCode": 59998, + "grid": 16 + }, + { + "id": 351, + "paths": [ + "M896 768h128l-160 192-160-192h128v-512h-128l160-192 160 192h-128zM640 64v256l-64-128h-192v704h128v64h-384v-64h128v-704h-192l-64 128v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "text-height", + "wysiwyg" + ], + "defaultCode": 59999, + "grid": 16 + }, + { + "id": 352, + "paths": [ + "M256 896v128l-192-160 192-160v128h512v-128l192 160-192 160v-128zM832 64v256l-64-128h-192v448h128v64h-384v-64h128v-448h-192l-64 128v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "text-width", + "wysiwyg" + ], + "defaultCode": 60000, + "grid": 16 + }, + { + "id": 353, + "paths": [ + "M64 512h384v128h-128v384h-128v-384h-128zM960 256h-251.75v768h-136.5v-768h-251.75v-128h640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "font-size", + "wysiwyg" + ], + "defaultCode": 60001, + "grid": 16 + }, + { + "id": 354, + "paths": [ + "M707.88 484.652c37.498-44.542 60.12-102.008 60.12-164.652 0-141.16-114.842-256-256-256h-320v896h384c141.158 0 256-114.842 256-256 0-92.956-49.798-174.496-124.12-219.348zM384 192h101.5c55.968 0 101.5 57.42 101.5 128s-45.532 128-101.5 128h-101.5v-256zM543 832h-159v-256h159c58.45 0 106 57.42 106 128s-47.55 128-106 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bold", + "wysiwyg" + ], + "defaultCode": 60002, + "grid": 16 + }, + { + "id": 355, + "paths": [ + "M704 64h128v416c0 159.058-143.268 288-320 288-176.73 0-320-128.942-320-288v-416h128v416c0 40.166 18.238 78.704 51.354 108.506 36.896 33.204 86.846 51.494 140.646 51.494s103.75-18.29 140.646-51.494c33.116-29.802 51.354-68.34 51.354-108.506v-416zM192 832h640v128h-640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "underline", + "wysiwyg" + ], + "defaultCode": 60003, + "grid": 16 + }, + { + "id": 356, + "paths": [ + "M896 64v64h-128l-320 768h128v64h-448v-64h128l320-768h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "italic", + "wysiwyg" + ], + "defaultCode": 60004, + "grid": 16 + }, + { + "id": 357, + "paths": [ + "M1024 512v64h-234.506c27.504 38.51 42.506 82.692 42.506 128 0 70.878-36.66 139.026-100.58 186.964-59.358 44.518-137.284 69.036-219.42 69.036-82.138 0-160.062-24.518-219.42-69.036-63.92-47.938-100.58-116.086-100.58-186.964h128c0 69.382 87.926 128 192 128s192-58.618 192-128c0-69.382-87.926-128-192-128h-512v-64h299.518c-2.338-1.654-4.656-3.324-6.938-5.036-63.92-47.94-100.58-116.086-100.58-186.964s36.66-139.024 100.58-186.964c59.358-44.518 137.282-69.036 219.42-69.036 82.136 0 160.062 24.518 219.42 69.036 63.92 47.94 100.58 116.086 100.58 186.964h-128c0-69.382-87.926-128-192-128s-192 58.618-192 128c0 69.382 87.926 128 192 128 78.978 0 154.054 22.678 212.482 64h299.518z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "strikethrough", + "wysiwyg" + ], + "defaultCode": 60005, + "grid": 16 + }, + { + "id": 358, + "paths": [ + "M704 896h256l64-128v256h-384v-214.214c131.112-56.484 224-197.162 224-361.786 0-214.432-157.598-382.266-352-382.266-194.406 0-352 167.832-352 382.266 0 164.624 92.886 305.302 224 361.786v214.214h-384v-256l64 128h256v-32.59c-187.63-66.46-320-227.402-320-415.41 0-247.424 229.23-448 512-448s512 200.576 512 448c0 188.008-132.37 348.95-320 415.41v32.59z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "omega", + "wysiwyg", + "symbols" + ], + "defaultCode": 60006, + "grid": 16 + }, + { + "id": 359, + "paths": [ + "M941.606 734.708l44.394-94.708h38l-64 384h-960v-74.242l331.546-391.212-331.546-331.546v-227h980l44 256h-34.376l-18.72-38.88c-35.318-73.364-61.904-89.12-138.904-89.12h-662l353.056 353.056-297.42 350.944h542.364c116.008 0 146.648-41.578 173.606-97.292z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sigma", + "wysiwyg", + "symbols" + ], + "defaultCode": 60007, + "grid": 16 + }, + { + "id": 360, + "paths": [ + "M0 512h128v64h-128zM192 512h192v64h-192zM448 512h128v64h-128zM640 512h192v64h-192zM896 512h128v64h-128zM880 0l16 448h-768l16-448h32l16 384h640l16-384zM144 1024l-16-384h768l-16 384h-32l-16-320h-640l-16 320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "page-break", + "wysiwyg" + ], + "defaultCode": 60008, + "grid": 16 + }, + { + "id": 361, + "paths": [ + "M768 206v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "superscript", + "wysiwyg" + ], + "defaultCode": 60009, + "grid": 16 + }, + { + "id": 362, + "paths": [ + "M768 910v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "subscript", + "wysiwyg" + ], + "defaultCode": 60010, + "grid": 16 + }, + { + "id": 363, + "paths": [ + "M194.018 832l57.6-192h264.764l57.6 192h113.632l-192-640h-223.232l-192 640h113.636zM347.618 320h72.764l57.6 192h-187.964l57.6-192zM704 832l160-256 160 256h-320z", + "M864 128h-64c-17.644 0-32-14.356-32-32s14.356-32 32-32h128c17.674 0 32-14.328 32-32s-14.326-32-32-32h-128c-52.936 0-96 43.066-96 96 0 24.568 9.288 47.002 24.524 64 17.588 19.624 43.11 32 71.476 32h64c17.644 0 32 14.356 32 32s-14.356 32-32 32h-128c-17.674 0-32 14.328-32 32s14.326 32 32 32h128c52.936 0 96-43.066 96-96 0-24.568-9.288-47.002-24.524-64-17.588-19.624-43.108-32-71.476-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "superscript", + "wysiwyg" + ], + "defaultCode": 60011, + "grid": 16 + }, + { + "id": 364, + "paths": [ + "M194.018 832l57.6-192h264.764l57.6 192h113.632l-192-640h-223.232l-192 640h113.636zM347.618 320h72.764l57.6 192h-187.964l57.6-192zM1024 192l-160 256-160-256h320z", + "M864 832h-64c-17.644 0-32-14.356-32-32s14.356-32 32-32h128c17.674 0 32-14.328 32-32s-14.326-32-32-32h-128c-52.936 0-96 43.066-96 96 0 24.568 9.29 47.002 24.524 64 17.588 19.624 43.112 32 71.476 32h64c17.644 0 32 14.356 32 32s-14.356 32-32 32h-128c-17.674 0-32 14.328-32 32s14.326 32 32 32h128c52.936 0 96-43.066 96-96 0-24.568-9.29-47.002-24.524-64-17.588-19.624-43.108-32-71.476-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "subscript", + "wysiwyg" + ], + "defaultCode": 60012, + "grid": 16 + }, + { + "id": 365, + "paths": [ + "M322.018 832l57.6-192h264.764l57.6 192h113.632l-191.996-640h-223.236l-192 640h113.636zM475.618 320h72.764l57.6 192h-187.964l57.6-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "text-color", + "wysiwyg" + ], + "defaultCode": 60013, + "grid": 16 + }, + { + "id": 366, + "paths": [ + "M256 384v-384h768v384h-64v-320h-640v320zM1024 576v448h-768v-448h64v384h640v-384zM512 448h128v64h-128zM320 448h128v64h-128zM704 448h128v64h-128zM896 448h128v64h-128zM0 288l192 192-192 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pagebreak", + "wysiwyg" + ], + "defaultCode": 60014, + "grid": 16 + }, + { + "id": 367, + "paths": [ + "M0 896h576v128h-576zM896 128h-302.56l-183.764 704h-132.288l183.762-704h-269.15v-128h704zM929.774 1024l-129.774-129.774-129.774 129.774-62.226-62.226 129.774-129.774-129.774-129.774 62.226-62.226 129.774 129.774 129.774-129.774 62.226 62.226-129.774 129.774 129.774 129.774z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clear-formatting", + "wysiwyg", + "remove-style" + ], + "defaultCode": 60015, + "grid": 16 + }, + { + "id": 368, + "paths": [ + "M0 192v704h1024v-704h-1024zM384 640v-128h256v128h-256zM640 704v128h-256v-128h256zM640 320v128h-256v-128h256zM320 320v128h-256v-128h256zM64 512h256v128h-256v-128zM704 512h256v128h-256v-128zM704 448v-128h256v128h-256zM64 704h256v128h-256v-128zM704 832v-128h256v128h-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "table", + "wysiwyg" + ], + "defaultCode": 60016, + "grid": 16 + }, + { + "id": 369, + "paths": [ + "M0 64v896h1024v-896h-1024zM384 640v-192h256v192h-256zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "table", + "wysiwyg" + ], + "defaultCode": 60017, + "grid": 16 + }, + { + "id": 370, + "paths": [ + "M384 192h128v64h-128zM576 192h128v64h-128zM896 192v256h-192v-64h128v-128h-64v-64zM320 384h128v64h-128zM512 384h128v64h-128zM192 256v128h64v64h-128v-256h192v64zM384 576h128v64h-128zM576 576h128v64h-128zM896 576v256h-192v-64h128v-128h-64v-64zM320 768h128v64h-128zM512 768h128v64h-128zM192 640v128h64v64h-128v-256h192v64zM960 64h-896v896h896v-896zM1024 0v0 1024h-1024v-1024h1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "insert-template", + "wysiwyg" + ], + "defaultCode": 60018, + "grid": 16 + }, + { + "id": 371, + "paths": [ + "M384 0h512v128h-128v896h-128v-896h-128v896h-128v-512c-141.384 0-256-114.616-256-256s114.616-256 256-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pilcrow", + "wysiwyg" + ], + "defaultCode": 60019, + "grid": 16 + }, + { + "id": 372, + "paths": [ + "M512 0c-141.384 0-256 114.616-256 256s114.616 256 256 256v512h128v-896h128v896h128v-896h128v-128h-512zM0 704l256-256-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ltr", + "wysiwyg", + "left-to-right", + "direction" + ], + "defaultCode": 60020, + "grid": 16 + }, + { + "id": 373, + "paths": [ + "M256 0c-141.384 0-256 114.616-256 256s114.616 256 256 256v512h128v-896h128v896h128v-896h128v-128h-512zM1024 192l-256 256 256 256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "rtl", + "wysiwyg", + "right-to-left", + "direction" + ], + "defaultCode": 60021, + "grid": 16 + }, + { + "id": 374, + "paths": [ + "M495.964 1024c-49.36 0-91.116-14.406-124.104-42.82-33.224-28.614-50.068-62.038-50.068-99.344 0-18.128 6.6-33.756 19.622-46.458 13.232-12.914 29.782-19.744 47.85-19.744 18.002 0 34.194 6.41 46.826 18.542 12.472 11.972 18.796 27.824 18.796 47.104 0 11.318-1.85 23.818-5.494 37.146-3.616 13.178-4.376 19.938-4.376 23.292 0 3.682 0.924 8.076 7.774 12.756 12.76 8.824 28.066 13.084 46.876 13.084 22.576 0 42.718-7.858 61.574-24.022 18.578-15.942 27.612-32.318 27.612-50.056 0-19.736-5.27-36.826-16.12-52.242-18.336-25.758-52.878-55.954-102.612-89.668-79.858-53.454-133.070-99.766-162.58-141.52-22.89-32.684-34.476-67.89-34.476-104.704 0-37.062 12.142-73.948 36.092-109.63 20.508-30.554 50.8-58.12 90.228-82.138-21.096-22.7-36.896-44.064-47.094-63.688-12.872-24.76-19.398-50.372-19.398-76.122 0-47.814 18.91-89.16 56.206-122.89 37.32-33.76 83.86-50.878 138.322-50.878 50.086 0 92.206 14.082 125.182 41.852 33.328 28.082 50.222 60.898 50.222 97.54 0 18.656-6.986 35.364-20.766 49.66l-0.276 0.282c-7.976 7.924-22.618 17.37-47.046 17.37-19.148 0-35.934-6.272-48.54-18.136-12.558-11.794-18.93-25.918-18.93-41.966 0-6.934 1.702-17.416 5.352-32.98 1.778-7.364 2.668-14.142 2.668-20.25 0-10.338-3.726-18.272-11.724-24.966-8.282-6.93-20.108-10.302-36.142-10.302-24.868 0-45.282 7.562-62.41 23.118-17.19 15.606-25.544 34.088-25.544 56.508 0 20.156 4.568 36.762 13.58 49.362 17.112 23.938 46.796 49.79 88.22 76.836 84.17 54.588 142.902 104.672 174.518 148.826 23.35 33.12 35.152 68.34 35.152 104.792 0 36.598-11.882 73.496-35.318 109.676-20.208 31.18-50.722 59.276-90.884 83.71 22.178 23.466 37.812 44.042 47.554 62.538 12.082 22.97 18.208 48.048 18.208 74.542 0 49.664-18.926 91.862-56.244 125.422-37.34 33.554-83.866 50.566-138.288 50.566zM446.416 356.346c-48.222 28.952-71.712 62.19-71.712 101.314 0 22.756 6.498 43.13 19.86 62.278 19.936 27.926 59.27 62.054 116.804 101.288 24.358 16.586 46.36 32.712 65.592 48.060 49.060-29.504 72.956-62.366 72.956-100.178 0-20.598-8.142-42.774-24.204-65.916-16.808-24.196-52.85-55.796-107.128-93.914-28.328-19.562-52.558-37.334-72.168-52.932z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "section", + "wysiwyg" + ], + "defaultCode": 60022, + "grid": 16 + }, + { + "id": 375, + "paths": [ + "M0 64h1024v128h-1024zM0 256h640v128h-640zM0 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paragraph-left", + "wysiwyg", + "align-left", + "left" + ], + "defaultCode": 60023, + "grid": 16 + }, + { + "id": 376, + "paths": [ + "M0 64h1024v128h-1024zM192 256h640v128h-640zM192 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paragraph-center", + "wysiwyg", + "align-center", + "center" + ], + "defaultCode": 60024, + "grid": 16 + }, + { + "id": 377, + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paragraph-right", + "wysiwyg", + "align-right", + "right" + ], + "defaultCode": 60025, + "grid": 16 + }, + { + "id": 378, + "paths": [ + "M0 64h1024v128h-1024zM0 256h1024v128h-1024zM0 448h1024v128h-1024zM0 640h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paragraph-justify", + "wysiwyg", + "justify" + ], + "defaultCode": 60026, + "grid": 16 + }, + { + "id": 379, + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM0 704v-384l256 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "indent-increase", + "wysiwyg" + ], + "defaultCode": 60027, + "grid": 16 + }, + { + "id": 380, + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM256 320v384l-256-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "indent-decrease", + "wysiwyg" + ], + "defaultCode": 60028, + "grid": 16 + }, + { + "id": 381, + "paths": [ + "M256 640c0 0 58.824-192 384-192v192l384-256-384-256v192c-256 0-384 159.672-384 320zM704 768h-576v-384h125.876c10.094-11.918 20.912-23.334 32.488-34.18 43.964-41.19 96.562-72.652 156.114-93.82h-442.478v640h832v-268.624l-128 85.334v55.29z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "share", + "out", + "external", + "outside" + ], + "defaultCode": 60029, + "grid": 16 + }, + { + "id": 382, + "paths": [ + "M192 64v768h768v-768h-768zM896 768h-640v-640h640v640zM128 896v-672l-64-64v800h800l-64-64h-672z", + "M352 256l160 160-192 192 96 96 192-192 160 160v-416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "new-tab", + "out", + "external", + "outside", + "popout", + "link", + "blank" + ], + "defaultCode": 60030, + "grid": 16 + }, + { + "id": 383, + "paths": [ + "M576 736l96 96 320-320-320-320-96 96 224 224z", + "M448 288l-96-96-320 320 320 320 96-96-224-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "embed", + "code", + "html", + "xml" + ], + "defaultCode": 60031, + "grid": 16 + }, + { + "id": 384, + "paths": [ + "M832 736l96 96 320-320-320-320-96 96 224 224z", + "M448 288l-96-96-320 320 320 320 96-96-224-224z", + "M701.298 150.519l69.468 18.944-191.987 704.026-69.468-18.944 191.987-704.026z" + ], + "width": 1280, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "embed", + "code", + "html", + "xml" + ], + "defaultCode": 60032, + "grid": 16 + }, + { + "id": 385, + "paths": [ + "M0 64v896h1024v-896h-1024zM960 896h-896v-768h896v768zM896 192h-768v640h768v-640zM448 512h-64v64h-64v64h-64v-64h64v-64h64v-64h-64v-64h-64v-64h64v64h64v64h64v64zM704 640h-192v-64h192v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "terminal", + "console", + "cmd", + "command-line" + ], + "defaultCode": 60033, + "grid": 16 + }, + { + "id": 386, + "paths": [ + "M864 704c-45.16 0-85.92 18.738-115.012 48.83l-431.004-215.502c1.314-8.252 2.016-16.706 2.016-25.328s-0.702-17.076-2.016-25.326l431.004-215.502c29.092 30.090 69.852 48.828 115.012 48.828 88.366 0 160-71.634 160-160s-71.634-160-160-160-160 71.634-160 160c0 8.622 0.704 17.076 2.016 25.326l-431.004 215.504c-29.092-30.090-69.852-48.83-115.012-48.83-88.366 0-160 71.636-160 160 0 88.368 71.634 160 160 160 45.16 0 85.92-18.738 115.012-48.828l431.004 215.502c-1.312 8.25-2.016 16.704-2.016 25.326 0 88.368 71.634 160 160 160s160-71.632 160-160c0-88.364-71.634-160-160-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "share", + "social" + ], + "defaultCode": 60034, + "grid": 16 + }, + { + "id": 387, + "paths": [ + "M853.31 0h-682.62c-93.88 0-170.69 76.784-170.69 170.658v682.656c0 93.876 76.81 170.686 170.69 170.686h682.622c93.938 0 170.688-76.81 170.688-170.686v-682.656c0-93.874-76.75-170.658-170.69-170.658zM256 256h512c9.138 0 18.004 1.962 26.144 5.662l-282.144 329.168-282.144-329.17c8.14-3.696 17.006-5.66 26.144-5.66zM192 704v-384c0-1.34 0.056-2.672 0.14-4l187.664 218.94-185.598 185.6c-1.444-5.338-2.206-10.886-2.206-16.54zM768 768h-512c-5.654 0-11.202-0.762-16.54-2.206l182.118-182.118 90.422 105.496 90.424-105.494 182.116 182.118c-5.34 1.442-10.886 2.204-16.54 2.204zM832 704c0 5.654-0.762 11.2-2.206 16.54l-185.598-185.598 187.664-218.942c0.084 1.328 0.14 2.66 0.14 4v384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mail", + "contact", + "support", + "newsletter", + "letter", + "email", + "envelop", + "social" + ], + "defaultCode": 60035, + "grid": 16 + }, + { + "id": 388, + "paths": [ + "M853.342 0h-682.656c-93.874 0-170.686 76.81-170.686 170.69v682.622c0 93.938 76.812 170.688 170.686 170.688h682.656c93.876 0 170.658-76.75 170.658-170.69v-682.62c0-93.88-76.782-170.69-170.658-170.69zM853.342 128c7.988 0 15.546 2.334 22.020 6.342l-363.362 300.404-363.354-300.4c6.478-4.010 14.044-6.346 22.040-6.346h682.656zM170.686 896c-1.924 0-3.82-0.146-5.684-0.408l225.626-312.966-29.256-29.254-233.372 233.37v-611.138l384 464.396 384-464.394v611.136l-233.372-233.37-29.254 29.254 225.628 312.968c-1.858 0.26-3.746 0.406-5.662 0.406h-682.654z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mail", + "contact", + "support", + "newsletter", + "letter", + "email", + "envelop", + "social" + ], + "defaultCode": 60036, + "grid": 16 + }, + { + "id": 389, + "paths": [ + "M853.342 0h-682.656c-93.874 0-170.686 76.81-170.686 170.69v682.622c0 93.938 76.812 170.688 170.686 170.688h682.656c93.876 0 170.658-76.75 170.658-170.69v-682.62c0-93.88-76.782-170.69-170.658-170.69zM182.628 886.626l-77.256-77.254 256-256 29.256 29.254-208 304zM153.372 198.628l29.256-29.256 329.372 265.374 329.374-265.374 29.254 29.256-358.628 422.626-358.628-422.626zM841.374 886.626l-208-304 29.254-29.254 256 256-77.254 77.254z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mail", + "contact", + "support", + "newsletter", + "letter", + "email", + "envelop", + "social" + ], + "defaultCode": 60037, + "grid": 16 + }, + { + "id": 390, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM256 256h512c9.138 0 18.004 1.962 26.144 5.662l-282.144 329.168-282.144-329.17c8.14-3.696 17.006-5.66 26.144-5.66zM192 704v-384c0-1.34 0.056-2.672 0.14-4l187.664 218.942-185.598 185.598c-1.444-5.336-2.206-10.886-2.206-16.54zM768 768h-512c-5.654 0-11.202-0.762-16.54-2.208l182.118-182.118 90.422 105.498 90.424-105.494 182.116 182.12c-5.34 1.44-10.886 2.202-16.54 2.202zM832 704c0 5.654-0.762 11.2-2.206 16.54l-185.6-185.598 187.666-218.942c0.084 1.328 0.14 2.66 0.14 4v384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mail", + "contact", + "support", + "newsletter", + "letter", + "email", + "envelop", + "social" + ], + "defaultCode": 60038, + "grid": 16 + }, + { + "id": 391, + "paths": [ + "M925.6 885.2c-112.2 82.8-274.6 126.8-414.6 126.8-196.2 0-372.8-72.4-506.4-193.2-10.4-9.4-1.2-22.4 11.4-15 144.2 84 322.6 134.4 506.8 134.4 124.2 0 260.8-25.8 386.6-79.2 18.8-8 34.8 12.6 16.2 26.2z", + "M972.2 832c-14.4-18.4-94.8-8.8-131-4.4-11 1.2-12.6-8.2-2.8-15.2 64.2-45 169.4-32 181.6-17 12.4 15.2-3.2 120.6-63.4 171-9.2 7.8-18 3.6-14-6.6 13.8-33.8 44-109.4 29.6-127.8z", + "M707.4 757.6l0.2 0.2c24.8-21.8 69.4-60.8 94.6-81.8 10-8 8.2-21.4 0.4-32.6-22.6-31.2-46.6-56.6-46.6-114.2v-192c0-81.4 5.6-156-54.2-212-47.2-45.2-125.6-61.2-185.6-61.2-117.2 0-248 43.8-275.4 188.6-3 15.4 8.4 23.6 18.4 25.8l119.4 13c11.2-0.6 19.2-11.6 21.4-22.8 10.2-49.8 52-74 99-74 25.4 0 54.2 9.2 69.2 32 17.2 25.4 15 60 15 89.4v16c-71.4 8-164.8 13.2-231.6 42.6-77.2 33.4-131.4 101.4-131.4 201.4 0 128 80.6 192 184.4 192 87.6 0 135.4-20.6 203-89.8 22.4 32.4 29.6 48.2 70.6 82.2 9.4 5 21 4.6 29.2-2.8zM583.2 457.2c0 48 1.2 88-23 130.6-19.6 34.8-50.6 56-85.2 56-47.2 0-74.8-36-74.8-89.2 0-105 94.2-124 183.2-124v26.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "amazon", + "brand" + ], + "defaultCode": 60039, + "grid": 16 + }, + { + "id": 392, + "paths": [ + "M522.2 438.8v175.6h290.4c-11.8 75.4-87.8 220.8-290.4 220.8-174.8 0-317.4-144.8-317.4-323.2s142.6-323.2 317.4-323.2c99.4 0 166 42.4 204 79l139-133.8c-89.2-83.6-204.8-134-343-134-283 0-512 229-512 512s229 512 512 512c295.4 0 491.6-207.8 491.6-500.2 0-33.6-3.6-59.2-8-84.8l-483.6-0.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google", + "brand" + ], + "defaultCode": 60040, + "grid": 16 + }, + { + "id": 393, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM519.6 896c-212.2 0-384-171.8-384-384s171.8-384 384-384c103.6 0 190.4 37.8 257.2 100.4l-104.2 100.4c-28.6-27.4-78.4-59.2-153-59.2-131.2 0-238 108.6-238 242.4s107 242.4 238 242.4c152 0 209-109.2 217.8-165.6h-217.8v-131.6h362.6c3.2 19.2 6 38.4 6 63.6 0.2 219.4-146.8 375.2-368.6 375.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google", + "brand" + ], + "defaultCode": 60041, + "grid": 16 + }, + { + "id": 394, + "paths": [ + "M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM519.6 896c-212.2 0-384-171.8-384-384s171.8-384 384-384c103.6 0 190.4 37.8 257.2 100.4l-104.2 100.4c-28.6-27.4-78.4-59.2-153-59.2-131.2 0-238 108.6-238 242.4s107 242.4 238 242.4c152 0 209-109.2 217.8-165.6h-217.8v-131.6h362.6c3.2 19.2 6 38.4 6 63.6 0.2 219.4-146.8 375.2-368.6 375.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google", + "brand" + ], + "defaultCode": 60042, + "grid": 16 + }, + { + "id": 395, + "paths": [ + "M325.8 457.4v111.8h184.8c-7.4 48-55.8 140.6-184.8 140.6-111.2 0-202-92.2-202-205.8s90.8-205.8 202-205.8c63.4 0 105.6 27 129.8 50.2l88.4-85.2c-56.8-53-130.4-85.2-218.2-85.2-180.2 0.2-325.8 145.8-325.8 326s145.6 325.8 325.8 325.8c188 0 312.8-132.2 312.8-318.4 0-21.4-2.4-37.8-5.2-54h-307.6z", + "M1024 448h-96v-96h-96v96h-96v96h96v96h96v-96h96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google-plus", + "brand", + "social" + ], + "defaultCode": 60043, + "grid": 16 + }, + { + "id": 396, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM384 768c-141.6 0-256-114.4-256-256s114.4-256 256-256c69.2 0 127 25.2 171.6 67l-69.6 66.8c-19-18.2-52.2-39.4-102-39.4-87.4 0-158.8 72.4-158.8 161.6s71.4 161.6 158.8 161.6c101.4 0 139.4-72.8 145.2-110.4h-145.2v-87.8h241.8c2.2 12.8 4 25.6 4 42.4 0 146.4-98 250.2-245.8 250.2zM896 512h-64v64h-64v-64h-64v-64h64v-64h64v64h64v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google-plus", + "brand", + "social" + ], + "defaultCode": 60044, + "grid": 16 + }, + { + "id": 397, + "paths": [ + "M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM384 768c-141.6 0-256-114.4-256-256s114.4-256 256-256c69.2 0 127 25.2 171.6 67l-69.6 66.8c-19-18.2-52.2-39.4-102-39.4-87.4 0-158.8 72.4-158.8 161.6s71.4 161.6 158.8 161.6c101.4 0 139.4-72.8 145.2-110.4h-145.2v-87.8h241.8c2.2 12.8 4 25.6 4 42.4 0 146.4-98 250.2-245.8 250.2zM832 512v64h-64v-64h-64v-64h64v-64h64v64h64v64h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google-plus", + "brand", + "social" + ], + "defaultCode": 60045, + "grid": 16 + }, + { + "id": 398, + "paths": [ + "M511.8 0c-244.2 0-442.2 198-442.2 442.2 0 231.4 210.8 419 442.2 419v162.8c268.6-136.2 442.6-355.6 442.6-581.8 0-244.2-198.4-442.2-442.6-442.2zM448 512c0 53-28.6 96-64 96v-96h-128v-192h192v192zM768 512c0 53-28.6 96-64 96v-96h-128v-192h192v192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hangouts", + "brand", + "social" + ], + "defaultCode": 60046, + "grid": 16 + }, + { + "id": 399, + "paths": [ + "M438 640l-184.6 320h580.6l184.6-320z", + "M992.4 576l-295.6-512h-369.6l295.6 512z", + "M290.2 128l-290.2 502.8 184.8 320 290.2-502.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google-drive", + "brand" + ], + "defaultCode": 60047, + "grid": 16 + }, + { + "id": 400, + "paths": [ + "M608 192h160v-192h-160c-123.514 0-224 100.486-224 224v96h-128v192h128v512h192v-512h160l32-192h-192v-96c0-17.346 14.654-32 32-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "facebook", + "brand", + "social" + ], + "defaultCode": 60048, + "grid": 16 + }, + { + "id": 401, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h416v-448h-128v-128h128v-64c0-105.8 86.2-192 192-192h128v128h-128c-35.2 0-64 28.8-64 64v64h192l-32 128h-160v448h288c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "facebook", + "brand", + "social" + ], + "defaultCode": 60049, + "grid": 16 + }, + { + "id": 402, + "paths": [ + "M512 92.2c136.8 0 153 0.6 206.8 3 50 2.2 77 10.6 95 17.6 23.8 9.2 41 20.4 58.8 38.2 18 18 29 35 38.4 58.8 7 18 15.4 45.2 17.6 95 2.4 54 3 70.2 3 206.8s-0.6 153-3 206.8c-2.2 50-10.6 77-17.6 95-9.2 23.8-20.4 41-38.2 58.8-18 18-35 29-58.8 38.4-18 7-45.2 15.4-95 17.6-54 2.4-70.2 3-206.8 3s-153-0.6-206.8-3c-50-2.2-77-10.6-95-17.6-23.8-9.2-41-20.4-58.8-38.2-18-18-29-35-38.4-58.8-7-18-15.4-45.2-17.6-95-2.4-54-3-70.2-3-206.8s0.6-153 3-206.8c2.2-50 10.6-77 17.6-95 9.2-23.8 20.4-41 38.2-58.8 18-18 35-29 58.8-38.4 18-7 45.2-15.4 95-17.6 53.8-2.4 70-3 206.8-3zM512 0c-139 0-156.4 0.6-211 3-54.4 2.4-91.8 11.2-124.2 23.8-33.8 13.2-62.4 30.6-90.8 59.2-28.6 28.4-46 57-59.2 90.6-12.6 32.6-21.4 69.8-23.8 124.2-2.4 54.8-3 72.2-3 211.2s0.6 156.4 3 211c2.4 54.4 11.2 91.8 23.8 124.2 13.2 33.8 30.6 62.4 59.2 90.8 28.4 28.4 57 46 90.6 59 32.6 12.6 69.8 21.4 124.2 23.8 54.6 2.4 72 3 211 3s156.4-0.6 211-3c54.4-2.4 91.8-11.2 124.2-23.8 33.6-13 62.2-30.6 90.6-59s46-57 59-90.6c12.6-32.6 21.4-69.8 23.8-124.2 2.4-54.6 3-72 3-211s-0.6-156.4-3-211c-2.4-54.4-11.2-91.8-23.8-124.2-12.6-34-30-62.6-58.6-91-28.4-28.4-57-46-90.6-59-32.6-12.6-69.8-21.4-124.2-23.8-54.8-2.6-72.2-3.2-211.2-3.2v0z", + "M512 249c-145.2 0-263 117.8-263 263s117.8 263 263 263 263-117.8 263-263c0-145.2-117.8-263-263-263zM512 682.6c-94.2 0-170.6-76.4-170.6-170.6s76.4-170.6 170.6-170.6c94.2 0 170.6 76.4 170.6 170.6s-76.4 170.6-170.6 170.6z", + "M846.8 238.6c0 33.91-27.49 61.4-61.4 61.4s-61.4-27.49-61.4-61.4c0-33.91 27.49-61.4 61.4-61.4s61.4 27.49 61.4 61.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "instagram", + "brand", + "social" + ], + "defaultCode": 60050, + "grid": 16 + }, + { + "id": 403, + "paths": [ + "M873 148.8c-95.8-96-223.2-148.8-359-148.8-279.6 0-507.2 227.6-507.2 507.4 0 89.4 23.4 176.8 67.8 253.6l-72 263 269-70.6c74.2 40.4 157.6 61.8 242.4 61.8h0.2c0 0 0 0 0 0 279.6 0 507.4-227.6 507.4-507.4 0-135.6-52.8-263-148.6-359zM514.2 929.6v0c-75.8 0-150-20.4-214.8-58.8l-15.4-9.2-159.6 41.8 42.6-155.6-10-16c-42.4-67-64.6-144.6-64.6-224.4 0-232.6 189.2-421.8 422-421.8 112.6 0 218.6 44 298.2 123.6 79.6 79.8 123.4 185.6 123.4 298.4-0.2 232.8-189.4 422-421.8 422zM745.4 613.6c-12.6-6.4-75-37-86.6-41.2s-20-6.4-28.6 6.4c-8.4 12.6-32.8 41.2-40.2 49.8-7.4 8.4-14.8 9.6-27.4 3.2s-53.6-19.8-102-63c-37.6-33.6-63.2-75.2-70.6-87.8s-0.8-19.6 5.6-25.8c5.8-5.6 12.6-14.8 19-22.2s8.4-12.6 12.6-21.2c4.2-8.4 2.2-15.8-1-22.2s-28.6-68.8-39-94.2c-10.2-24.8-20.8-21.4-28.6-21.8-7.4-0.4-15.8-0.4-24.2-0.4s-22.2 3.2-33.8 15.8c-11.6 12.6-44.4 43.4-44.4 105.8s45.4 122.6 51.8 131.2c6.4 8.4 89.4 136.6 216.6 191.4 30.2 13 53.8 20.8 72.2 26.8 30.4 9.6 58 8.2 79.8 5 24.4-3.6 75-30.6 85.6-60.2s10.6-55 7.4-60.2c-3-5.6-11.4-8.8-24.2-15.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "whatsapp", + "brand", + "social" + ], + "defaultCode": 60051, + "grid": 16 + }, + { + "id": 404, + "paths": [ + "M512 0c-281.6 0-512 230.4-512 512s230.4 512 512 512 512-230.4 512-512-227.8-512-512-512zM747.6 739.8c-10.2 15.4-28.2 20.4-43.6 10.2-120.4-74.2-271.4-89.6-450.6-48.6-18 5.2-33.2-7.6-38.4-23-5.2-18 7.6-33.2 23-38.4 194.6-43.6 363.6-25.6 496.6 56.4 18 7.6 20.6 28 13 43.4zM809 599c-12.8 18-35.8 25.6-53.8 12.8-138.2-84.4-348.2-110-509.4-58.8-20.4 5.2-43.6-5.2-48.6-25.6-5.2-20.4 5.2-43.6 25.6-48.6 186.8-56.4 417.2-28.2 576 69.2 15.2 7.6 23 33.2 10.2 51zM814 455.6c-163.8-97.2-437.8-107.6-594-58.8-25.6 7.6-51.2-7.6-58.8-30.8-7.6-25.6 7.6-51.2 30.8-58.8 181.8-53.8 481.2-43.6 670.8 69.2 23 12.8 30.8 43.6 18 66.6-13 17.8-43.6 25.4-66.8 12.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spotify", + "brand", + "social" + ], + "defaultCode": 60052, + "grid": 16 + }, + { + "id": 405, + "paths": [ + "M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM763.6 351l-84 395.8c-5.8 28.2-22.8 34.8-46.4 21.8l-128-94.6-61.4 59.8c-7.2 7-12.8 12.8-25.6 12.8-16.6 0-13.8-6.2-19.4-22l-43.6-143.2-126.6-39.4c-27.4-8.4-27.6-27.2 6.2-40.6l493.2-190.4c22.4-10.2 44.2 5.4 35.6 40z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "telegram", + "brand", + "social" + ], + "defaultCode": 60053, + "grid": 16 + }, + { + "id": 406, + "paths": [ + "M1024 226.4c-37.6 16.8-78.2 28-120.6 33 43.4-26 76.6-67.2 92.4-116.2-40.6 24-85.6 41.6-133.4 51-38.4-40.8-93-66.2-153.4-66.2-116 0-210 94-210 210 0 16.4 1.8 32.4 5.4 47.8-174.6-8.8-329.4-92.4-433-219.6-18 31-28.4 67.2-28.4 105.6 0 72.8 37 137.2 93.4 174.8-34.4-1-66.8-10.6-95.2-26.2 0 0.8 0 1.8 0 2.6 0 101.8 72.4 186.8 168.6 206-17.6 4.8-36.2 7.4-55.4 7.4-13.6 0-26.6-1.4-39.6-3.8 26.8 83.4 104.4 144.2 196.2 146-72 56.4-162.4 90-261 90-17 0-33.6-1-50.2-3 93.2 59.8 203.6 94.4 322.2 94.4 386.4 0 597.8-320.2 597.8-597.8 0-9.2-0.2-18.2-0.6-27.2 41-29.4 76.6-66.4 104.8-108.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "twitter", + "brand", + "tweet", + "social" + ], + "defaultCode": 60054, + "grid": 16 + }, + { + "id": 407, + "paths": [ + "M960.8 509c-26.4 6-51.8 8.8-74.8 8.8-129.2 0-228.6-90.2-228.6-247.2 0-77 29.8-116.8 71.8-116.8 40 0 66.6 35.8 66.6 108.6 0 41.4-11 86.8-19.2 113.6 0 0 39.8 69.4 148.6 48.2 23.2-51.4 35.6-117.8 35.6-176 0-156.8-80-248.2-226.6-248.2-150.8 0-239 115.8-239 268.6 0 151.4 70.8 281.2 187.4 340.4-49 98.2-111.4 184.6-176.6 249.8-118-142.8-224.8-333.2-268.6-705h-174.2c80.6 619.2 320.4 816.4 384 854.2 35.8 21.6 66.8 20.6 99.6 2 51.6-29.2 206.2-184 292-365 36 0 79.2-4.2 122.2-14v-122z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "vine", + "brand", + "social" + ], + "defaultCode": 60055, + "grid": 16 + }, + { + "id": 408, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM829.4 716.8l-93.6 1.4c0 0-20.2 4-46.6-14.2-35-24-68-86.6-93.8-78.4-26 8.2-25.2 64.4-25.2 64.4s0.2 12-5.8 18.4c-6.4 7-19.2 8.4-19.2 8.4h-41.8c0 0-92.4 5.6-173.8-79.2-88.8-92.4-167.2-275.8-167.2-275.8s-4.6-12 0.4-17.8c5.6-6.6 20.6-7 20.6-7l100.2-0.6c0 0 9.4 1.6 16.2 6.6 5.6 4 8.6 11.8 8.6 11.8s16.2 41 37.6 78c41.8 72.2 61.4 88 75.6 80.4 20.6-11.2 14.4-102.2 14.4-102.2s0.4-33-10.4-47.6c-8.4-11.4-24.2-14.8-31-15.6-5.6-0.8 3.6-13.8 15.6-19.8 18-8.8 49.8-9.4 87.4-9 29.2 0.2 37.8 2.2 49.2 4.8 34.6 8.4 22.8 40.6 22.8 117.8 0 24.8-4.4 59.6 13.4 71 7.6 5 26.4 0.8 73.4-79 22.2-37.8 39-82.2 39-82.2s3.6-8 9.2-11.4c5.8-3.4 13.6-2.4 13.6-2.4l105.4-0.6c0 0 31.6-3.8 36.8 10.6 5.4 15-11.8 50-54.8 107.4-70.6 94.2-78.6 85.4-19.8 139.8 56 52 67.6 77.4 69.6 80.6 22.8 38.4-26 41.4-26 41.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "vk", + "brand", + "social" + ], + "defaultCode": 60056, + "grid": 16 + }, + { + "id": 409, + "paths": [ + "M425.2 10.6c-241.2 40.6-425.2 250.4-425.2 503.2 0 125.6 45.6 240.6 120.8 329.6 178.6-86.4 303.6-282 304.4-509.8v-323z", + "M598.8 10.6c241.2 40.6 425.2 250.4 425.2 503.2 0 125.6-45.6 240.6-120.8 329.6-178.6-86.4-303.6-282-304.4-509.8v-323z", + "M510.2 642.6c-31.8 131.6-126.8 244-245 318.8 72.8 39.8 156.2 62.6 245 62.6s172.2-22.8 245-62.6c-118.2-74.8-213.2-187.2-245-318.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "renren", + "brand", + "social" + ], + "defaultCode": 60057, + "grid": 16 + }, + { + "id": 410, + "paths": [ + "M430.2 898c-169.6 16.8-316-60-327-171.2-11-111.4 117.6-215 287-231.8 169.6-16.8 316 60 326.8 171.2 11.2 111.4-117.4 215.2-286.8 231.8zM769.2 528.6c-14.4-4.4-24.4-7.2-16.8-26.2 16.4-41.2 18-76.6 0.2-102-33.2-47.4-124.2-45-228.4-1.2 0 0-32.8 14.2-24.4-11.6 16-51.6 13.6-94.6-11.4-119.6-56.6-56.6-207 2.2-336 131.2-96.4 96.2-152.4 198.8-152.4 287.4 0 169.2 217.2 272.2 429.6 272.2 278.4 0 463.8-161.8 463.8-290.2 0-77.8-65.4-121.8-124.2-140z", + "M954.2 218.6c-67.2-74.6-166.4-103-258-83.6v0c-21.2 4.6-34.6 25.4-30 46.4 4.6 21.2 25.2 34.6 46.4 30 65.2-13.8 135.6 6.4 183.4 59.4s60.8 125.2 40.2 188.4v0c-6.6 20.6 4.6 42.6 25.2 49.4 20.6 6.6 42.6-4.6 49.4-25.2v-0.2c28.8-88.4 10.6-190-56.6-264.6z", + "M850.8 312c-32.8-36.4-81.2-50.2-125.6-40.6-18.2 3.8-29.8 22-26 40.2 4 18.2 22 29.8 40 25.8v0c21.8-4.6 45.4 2.2 61.4 19.8 16 17.8 20.4 42 13.4 63.2v0c-5.6 17.6 4 36.8 21.8 42.6 17.8 5.6 36.8-4 42.6-21.8 14-43.4 5.2-93-27.6-129.2z", + "M439.6 696.6c-6 10.2-19 15-29.2 10.8-10.2-4-13.2-15.6-7.4-25.4 6-9.8 18.6-14.6 28.6-10.8 10 3.6 13.6 15 8 25.4zM385.4 765.8c-16.4 26.2-51.6 37.6-78 25.6-26-11.8-33.8-42.2-17.4-67.8 16.2-25.4 50.2-36.8 76.4-25.8 26.6 11.4 35.2 41.6 19 68zM447 580.6c-80.6-21-171.8 19.2-206.8 90.2-35.8 72.4-1.2 153 80.2 179.4 84.4 27.2 184-14.6 218.6-92.6 34.2-76.6-8.4-155.2-92-177z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sina-weibo", + "brand", + "social" + ], + "defaultCode": 60058, + "grid": 16 + }, + { + "id": 411, + "paths": [ + "M136.294 750.93c-75.196 0-136.292 61.334-136.292 136.076 0 75.154 61.1 135.802 136.292 135.802 75.466 0 136.494-60.648 136.494-135.802-0.002-74.742-61.024-136.076-136.494-136.076zM0.156 347.93v196.258c127.784 0 247.958 49.972 338.458 140.512 90.384 90.318 140.282 211.036 140.282 339.3h197.122c-0.002-372.82-303.282-676.070-675.862-676.070zM0.388 0v196.356c455.782 0 826.756 371.334 826.756 827.644h196.856c0-564.47-459.254-1024-1023.612-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "feed", + "rss", + "social" + ], + "defaultCode": 60059, + "grid": 16 + }, + { + "id": 412, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM279 831.2c-48 0-87-38.6-87-86.6 0-47.6 39-86.8 87-86.8 48.2 0 87 39.2 87 86.8 0 48-39 86.6-87 86.6zM497.4 832c0-81.8-31.8-158.8-89.4-216.4-57.8-57.8-134.4-89.6-216-89.6v-125.2c237.6 0 431.2 193.4 431.2 431.2h-125.8zM719.6 832c0-291-236.6-528-527.4-528v-125.2c360 0 653 293.2 653 653.2h-125.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "feed", + "rss", + "social" + ], + "defaultCode": 60060, + "grid": 16 + }, + { + "id": 413, + "paths": [ + "M1013.8 307.2c0 0-10-70.6-40.8-101.6-39-40.8-82.6-41-102.6-43.4-143.2-10.4-358.2-10.4-358.2-10.4h-0.4c0 0-215 0-358.2 10.4-20 2.4-63.6 2.6-102.6 43.4-30.8 31-40.6 101.6-40.6 101.6s-10.2 82.8-10.2 165.8v77.6c0 82.8 10.2 165.8 10.2 165.8s10 70.6 40.6 101.6c39 40.8 90.2 39.4 113 43.8 82 7.8 348.2 10.2 348.2 10.2s215.2-0.4 358.4-10.6c20-2.4 63.6-2.6 102.6-43.4 30.8-31 40.8-101.6 40.8-101.6s10.2-82.8 10.2-165.8v-77.6c-0.2-82.8-10.4-165.8-10.4-165.8zM406.2 644.8v-287.8l276.6 144.4-276.6 143.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "youtube", + "brand", + "social" + ], + "defaultCode": 60061, + "grid": 16 + }, + { + "id": 414, + "paths": [ + "M344.012 169.399c0.209-0.865 0.344-1.479 0.388-1.8l1.042-7.559-47.349-0.267c-42.779-0.242-55.87 0.007-57.047 1.084-0.565 0.516-15.333 56.633-41.655 158.273-12.556 48.484-23.124 87.206-23.487 86.051s-15.391-56.498-33.397-122.98c-18.006-66.482-33.104-121.243-33.55-121.692-0.623-0.623-57.98-0.9-104.417-0.502-6.735 0.056-10.477-13.11 60.021 211.133 9.759 31.041 24.371 74.997 32.469 97.679 9.333 26.141 15.989 46.323 20.534 63.173 8.038 32.067 8.319 52.163 6.565 75.625-2.026 27.101-2.321 218.438-0.342 221.638 1.512 2.449 91.223 3.589 99.712 1.268 1.358-0.372 2.265-1.691 2.87-8.928 2.119-6.219 2.286-30.969 2.286-133.744v-131.281l5.742-18.112c3.756-11.849 13.201-42.995 20.989-69.22 7.789-26.222 17.21-57.619 20.938-69.771 33.834-110.319 66.14-218.831 66.994-225.011l0.693-5.056z", + "M846.122 328.651l-0.021 6.838-1.065 0.014-0.595 188.993-0.577 183.227-14.666 14.929c-16.424 16.719-29.585 23.101-41.488 20.113-12.963-3.254-12.64 1.8-13.722-214.768l-0.998-199.347h-94.316v6.851h-1.086v216.289c0 231.737-0.007 231.599 11.752 254.875 9.366 18.536 23.010 27.559 46.391 30.671h0.002c30.79 4.1 64.001-9.849 94.77-39.809l13.373-13.022v22.445c0 19.396 0.554 22.601 4.070 23.58 5.756 1.605 77.173 1.707 84.89 0.126l6.396-1.314v-6.628l1.086-0.223v-495.098l-94.195 1.258z", + "M606.892 426.33c-8.935-38.341-25.68-64.115-53.233-81.939-43.281-27.999-92.718-30.957-138.586-8.291-33.425 16.515-54.951 43.914-66.071 84.083-1.326 4.786-2.298 8.812-3.033 14.815-2.83 14.184-3.163 35.351-3.889 133.951-1.121 151.928 0.616 170.003 19.643 204.51 18.664 33.848 57.403 58.661 99.572 63.782 12.696 1.54 38.43-0.858 53.23-4.961 33.632-9.326 65.864-35.906 80.118-66.078 6.158-13.033 9.875-22.096 12.115-38.651 4.175-22.617 4.47-59.175 4.47-152.375-0.002-118.875-0.379-131.862-4.337-148.847zM499.34 736.003c-7.907 6.028-21.734 8.649-32.983 6.249-8.656-1.847-20.338-15.419-23.934-27.801-4.479-15.436-4.823-229.985-0.954-272.059 6.379-21.054 24.19-32.050 43.635-26.813 15.157 4.082 22.915 13.575 27.336 33.457 3.282 14.754 3.67 33.129 2.972 141.26-0.46 71.701-0.716 106.742-3.058 125.553-2.382 11.87-6.319 15.047-13.015 20.154z", + "M2300.389 534.137h45.57l-0.726-41.281c-0.705-37.869-1.263-42.2-6.324-52.472-7.982-16.21-19.759-23.401-38.446-23.401-22.448 0-36.678 10.849-43.388 33.141-2.858 9.486-5.863 74.685-3.707 80.308 1.205 3.144 7.724 3.705 47.021 3.705z", + "M1995.795 440.237c-6.077-12.247-17.385-18.278-30.525-17.806-10.221 0.365-21.561 4.677-32.488 13.010l-8.14 6.177v296.598l8.14 6.177c18.429 14.052 38.674 17.031 52.619 7.703 5.519-3.691 9.117-8.779 11.919-16.861 3.647-10.524 3.965-24.003 3.489-148.772-0.495-130.043-0.781-137.702-5.014-146.226z", + "M2560.878 306.633c-9.080-108.842-16.303-144.165-38.751-189.544-29.729-60.101-72.692-91.788-133.876-98.747-47.309-5.379-225.315-12.97-390.044-16.631-285.188-6.338-754.057 5.858-813.939 21.173-27.673 7.077-48.426 19.11-70.022 40.604-37.844 37.662-60.391 91.679-69.452 166.396-20.692 170.606-21.134 376.727-1.188 553.515 8.577 76.041 26.243 125.443 59.41 166.159 20.694 25.406 56.352 46.998 88.26 53.442 22.385 4.523 134.42 10.798 297.605 16.668 24.306 0.874 88.667 2.379 143.030 3.344 113.301 2.012 321.627 0.821 440.719-2.519 80.127-2.249 226.201-8.172 253.5-10.282 7.677-0.593 25.469-1.728 39.537-2.523 47.277-2.67 77.353-12.568 105.596-34.76 36.553-28.718 64.857-81.795 76.815-144.037 11.314-58.894 18.887-163.773 20.422-282.851 1.284-99.491-0.426-153.175-7.621-239.409zM1425.273 267.192l-52.982 0.654-2.326 565.143-45.932 0.581c-35.525 0.488-46.307-0.044-47.167-2.326-0.616-1.626-1.356-129.020-1.672-283.153l-0.581-280.246-103.493-1.307v-88.304l305.829 1.235 1.307 87.069-52.982 0.654zM1750.216 591.117v243.035h-83.725v-25.583c0-19.247-0.735-25.583-2.979-25.583-1.64 0-9.226 6.344-16.861 14.098-16.557 16.817-36.171 30.367-52.91 36.63-34.662 12.968-67.589 5.4-81.618-18.75-12.838-22.11-13.082-27.052-13.082-256.335v-210.547h83.653l0.654 198.265c0.623 194.821 0.714 198.393 5.377 206.333 6.182 10.521 15.608 13.347 30.597 9.231 8.817-2.423 14.836-6.707 29.143-20.931l18.024-17.952v-374.946h83.725v243.035zM2076.757 799.41c-7.372 16.424-23.806 32.509-37.283 36.485-35.167 10.382-63.375 1.923-95.935-28.708-10.103-9.505-19.51-17.224-20.931-17.224-1.712 0-2.616 7.449-2.616 22.094v22.094h-83.725v-655.845h83.725v106.982c0 58.84 0.786 106.982 1.744 106.982s9.789-7.807 19.624-17.298c22.629-21.841 41.548-31.399 65.557-33.213 42.811-3.24 68.327 18.794 80.018 69.117 3.647 15.696 3.998 33.625 3.998 179.078-0.002 177.178-0.021 177.918-14.175 209.457zM2430.99 702.168c-0.744 18.226-2.954 39.137-4.942 46.514-11.642 43.167-42.635 73.731-87.432 86.269-60.315 16.878-126.704-10.777-153.205-63.812-14.875-29.769-15.408-35.706-15.408-181.185 0-118.617 0.419-133.171 4.214-149.354 10.747-45.788 37.392-75.422 82.49-91.865 13.068-4.765 26.708-7.207 40.337-7.486 48.672-0.998 96.984 25.18 117.229 67.808 13.659 28.76 15.35 41.060 16.717 122.099l1.235 72.678-178.497 1.235-0.654 48.84c-0.93 68.901 3.716 90.088 22.313 102.621 15.645 10.54 39.679 9.745 52.765-1.744 12.263-10.768 15.726-22.336 16.933-56.107l1.091-29.653h86.195l-1.381 33.143z" + ], + "width": 2569, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "youtube", + "brand", + "social" + ], + "defaultCode": 60062, + "grid": 16 + }, + { + "id": 415, + "paths": [ + "M96 0l-96 160v736h256v128h128l128-128h160l288-288v-608h-864zM832 544l-160 160h-160l-128 128v-128h-192v-576h640v416z", + "M608 256h96v256h-96v-256z", + "M416 256h96v256h-96v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "twitch", + "brand", + "social" + ], + "defaultCode": 60063, + "grid": 16 + }, + { + "id": 416, + "paths": [ + "M1023.6 274c-4.6 99.6-74.2 236.2-208.8 409.4-139.2 180.8-257 271.4-353.4 271.4-59.6 0-110.2-55-151.4-165.2-27.6-101-55-202-82.6-303-30.6-110.2-63.4-165.2-98.6-165.2-7.6 0-34.4 16.2-80.4 48.2l-48.2-62c50.6-44.4 100.4-88.8 149.4-133.2 67.4-58.2 118-88.8 151.8-92 79.6-7.6 128.8 46.8 147.2 163.4 19.8 125.8 33.6 204 41.4 234.6 23 104.4 48.2 156.6 75.8 156.6 21.4 0 53.6-33.8 96.6-101.6 42.8-67.6 65.8-119.2 69-154.6 6.2-58.4-16.8-87.8-69-87.8-24.6 0-49.8 5.6-75.8 16.8 50.4-164.8 146.4-244.8 288.4-240.2 105 2.8 154.6 71 148.6 204.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "vimeo", + "brand", + "social" + ], + "defaultCode": 60064, + "grid": 16 + }, + { + "id": 417, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM861.6 340c-3.2 72-53.6 170.6-151 295.8-100.6 130.8-185.8 196.2-255.4 196.2-43.2 0-79.6-39.8-109.4-119.4-20-73-39.8-146-59.8-219-22-79.6-45.8-119.4-71.2-119.4-5.6 0-25 11.6-58 34.8l-34.8-44.8c36.6-32 72.6-64.2 108-96.2 48.8-42 85.2-64.2 109.6-66.4 57.6-5.6 93 33.8 106.4 118 14.4 91 24.4 147.4 30 169.6 16.6 75.4 34.8 113 54.8 113 15.4 0 38.8-24.4 69.8-73.4s47.6-86.2 49.8-111.8c4.4-42.2-12.2-63.4-49.8-63.4-17.8 0-36 4-54.8 12.2 36.4-119 105.8-177 208.4-173.6 76 2.2 111.8 51.4 107.4 147.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "vimeo", + "brand", + "social" + ], + "defaultCode": 60065, + "grid": 16 + }, + { + "id": 418, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM822.4 768.8l-348.4 114c-79.6 26-87.6 21.8-123.6-89.6l-88-272.6c-21-64.6-85-238.6-95.8-272-20-62-20-65.4 97-103.4 91.6-30 95.4-29 128.6 74.4 26.8 83.2 44 150.4 71.6 235.4l75 232 239.6-78.4c47.2-15.6 63-14.8 76.4 43.4l9.6 44c11.2 51-14.6 64-42 72.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lanyrd", + "brand" + ], + "defaultCode": 60066, + "grid": 16 + }, + { + "id": 419, + "paths": [ + "M0 544c0-123.712 100.288-224 224-224s224 100.288 224 224c0 123.712-100.288 224-224 224s-224-100.288-224-224zM576 544c0-123.712 100.288-224 224-224s224 100.288 224 224c0 123.712-100.288 224-224 224s-224-100.288-224-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flickr", + "brand", + "social" + ], + "defaultCode": 60067, + "grid": 16 + }, + { + "id": 420, + "paths": [ + "M800 416c-70.58 0-128 57.42-128 128s57.42 128 128 128c70.58 0 128-57.42 128-128s-57.42-128-128-128zM800 320v0c123.71 0 224 100.288 224 224 0 123.71-100.29 224-224 224s-224-100.29-224-224c0-123.712 100.29-224 224-224zM0 544c0-123.712 100.288-224 224-224s224 100.288 224 224c0 123.712-100.288 224-224 224s-224-100.288-224-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flickr", + "brand", + "social" + ], + "defaultCode": 60068, + "grid": 16 + }, + { + "id": 421, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM288 672c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160zM736 672c-88.4 0-160-71.6-160-160s71.6-160 160-160c88.4 0 160 71.6 160 160s-71.6 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flickr", + "brand", + "social" + ], + "defaultCode": 60069, + "grid": 16 + }, + { + "id": 422, + "paths": [ + "M512 0c-282.77 0-512 230.796-512 515.5s229.23 515.5 512 515.5 512-230.796 512-515.5-229.23-515.5-512-515.5zM288 672c-88.366 0-160-71.634-160-160s71.634-160 160-160 160 71.634 160 160c0 88.366-71.634 160-160 160zM736 672c-88.368 0-160-71.634-160-160s71.632-160 160-160 160 71.634 160 160c0 88.366-71.632 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flickr", + "brand", + "social" + ], + "defaultCode": 60070, + "grid": 16 + }, + { + "id": 423, + "paths": [ + "M512 1024c-282.4 0-512-229.6-512-512s229.6-512 512-512c282.4 0 512 229.6 512 512s-229.6 512-512 512v0zM943.8 582c-15-4.8-135.4-40.6-272.4-18.6 57.2 157.2 80.4 285.2 85 311.8 98-66.4 168-171.4 187.4-293.2v0zM682.8 915.2c-6.6-38.4-31.8-172-93.2-331.6-1 0.4-2 0.6-2.8 1-246.8 86-335.4 257-343.2 273 74.2 57.8 167.4 92.4 268.4 92.4 60.6 0 118.4-12.4 170.8-34.8v0zM187 805c10-17 130-215.6 355.4-288.6 5.6-1.8 11.4-3.6 17.2-5.2-11-24.8-23-49.8-35.4-74.2-218.2 65.4-430.2 62.6-449.4 62.4-0.2 4.4-0.2 8.8-0.2 13.4 0 112.2 42.6 214.8 112.4 292.2v0zM84 423c19.6 0.2 199.8 1 404.4-53.2-72.4-128.8-150.6-237.2-162.2-253-122.4 57.8-214 170.6-242.2 306.2v0zM409.6 87.4c12 16.2 91.6 124.4 163.2 256 155.6-58.2 221.4-146.8 229.2-158-77.2-68.6-178.8-110.2-290-110.2-35.2 0.2-69.6 4.4-102.4 12.2v0zM850.6 236.2c-9.2 12.4-82.6 106.4-244.2 172.4 10.2 20.8 20 42 29 63.4 3.2 7.6 6.4 15 9.4 22.6 145.6-18.2 290.2 11 304.6 14-1-103.2-38-198-98.8-272.4v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "dribbble", + "brand", + "social" + ], + "defaultCode": 60071, + "grid": 16 + }, + { + "id": 424, + "paths": [ + "M297 205.2c30.2 0 57.4 2.6 82.2 8 24.8 5.2 45.8 14 63.6 26 17.6 12 31.2 28 41.2 48 9.6 19.8 14.4 44.6 14.4 74 0 31.8-7.2 58.2-21.6 79.4-14.6 21.2-35.8 38.4-64.2 52 38.8 11.2 67.4 30.8 86.6 58.6 19.2 28 28.4 61.6 28.4 101.2 0 32-6.2 59.4-18.4 82.6-12.4 23.4-29.2 42.4-49.8 57-20.8 14.8-44.8 25.6-71.6 32.6-26.6 7-54 10.6-82.4 10.6h-305.4v-630h297zM279 459.6c24.6 0 45-5.8 61-17.6 16-11.6 23.6-30.8 23.6-57.2 0-14.6-2.6-26.8-7.8-36.2-5.4-9.4-12.4-16.8-21.4-22-8.8-5.4-18.8-9-30.6-11-11.4-2.2-23.4-3.2-35.6-3.2h-129.6v147.2h140.4zM286.6 727.8c13.6 0 26.6-1.2 38.8-4 12.4-2.8 23.4-7 32.6-13.4 9.2-6.2 17-14.4 22.6-25.2 5.6-10.6 8.2-24.2 8.2-40.8 0-32.4-9.2-55.6-27.4-69.6-18.2-13.8-42.4-20.6-72.4-20.6h-150.4v173.4h148z", + "M725.2 725.6c18.8 18.4 45.8 27.6 81 27.6 25.2 0 47.2-6.4 65.4-19.2s29.2-26.4 33.4-40.4h110.4c-17.8 55-44.6 94-81.4 117.6-36.2 23.6-80.6 35.6-132 35.6-36 0-68.2-5.8-97.2-17.2-29-11.6-53.2-27.8-73.6-49-19.8-21.2-35.4-46.4-46.4-76-10.8-29.4-16.4-62-16.4-97.2 0-34.2 5.6-66 16.8-95.4 11.4-29.6 27-55 47.8-76.4s45.2-38.4 74-50.8c28.6-12.4 60.2-18.6 95.2-18.6 38.6 0 72.4 7.4 101.4 22.6 28.8 15 52.6 35.2 71.2 60.4s31.8 54.2 40 86.6c8.2 32.4 11 66.2 8.8 101.6h-329.4c0 35.8 12 70 31 88.2zM869 486c-14.8-16.4-40.2-25.4-70.8-25.4-20 0-36.6 3.4-49.8 10.2-13 6.8-23.6 15.2-31.8 25.2-8 10-13.6 20.8-16.8 32.2-3.2 11-5.2 21.2-5.8 30h204c-3-32-14-55.6-29-72.2z", + "M668.4 256h255.4v62.2h-255.4v-62.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "behance", + "brand", + "social" + ], + "defaultCode": 60072, + "grid": 16 + }, + { + "id": 425, + "paths": [ + "M404.2 448.6c13-9.4 19.2-25 19.2-46.6 0-12-2-21.8-6.2-29.4-4.4-7.6-10-13.6-17.4-17.8-7.2-4.4-15.4-7.4-24.8-9-9.2-1.8-19-2.6-29-2.6h-105.4v119.6h114c20 0.2 36.6-4.6 49.6-14.2z", + "M422 556.6c-14.8-11.2-34.4-16.8-58.8-16.8h-122.6v141h120.2c11.2 0 21.6-1 31.6-3.2s19-5.6 26.6-10.8c7.6-5 13.8-11.8 18.4-20.4s6.8-19.8 6.8-33.2c0-26.4-7.4-45.2-22.2-56.6z", + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM671.2 269.4h207.4v50.6h-207.4v-50.6zM541.6 686.4c-10 19-23.6 34.4-40.4 46.4-17 12-36.4 20.8-58.2 26.6-21.6 5.8-44 8.6-66.8 8.6h-248.2v-511.8h241.2c24.4 0 46.6 2.2 66.8 6.4 20 4.2 37.2 11.4 51.6 21.2 14.2 9.8 25.4 22.8 33.4 39 7.8 16 11.8 36.2 11.8 60 0 25.8-5.8 47.2-17.6 64.4s-29 31.2-52.2 42.2c31.6 9 54.8 25 70.2 47.6 15.6 22.8 23.2 50.2 23.2 82.2 0.2 26.2-4.8 48.6-14.8 67.2zM959.4 607.2h-267.4c0 29.2 10 57 25.2 72 15.2 14.8 37.2 22.4 65.8 22.4 20.6 0 38.2-5.2 53.2-15.6 14.8-10.4 23.8-21.4 27.2-32.8h89.6c-14.4 44.6-36.2 76.4-66 95.6-29.4 19.2-65.4 28.8-107.2 28.8-29.2 0-55.4-4.8-79-14-23.6-9.4-43.2-22.6-59.8-39.8-16.2-17.2-28.6-37.8-37.6-61.8-8.8-23.8-13.4-50.4-13.4-79 0-27.8 4.6-53.6 13.6-77.6 9.2-24 22-44.8 38.8-62 16.8-17.4 36.8-31.2 60-41.4 23.2-10 48.8-15 77.2-15 31.4 0 58.8 6 82.4 18.4 23.4 12.2 42.6 28.6 57.8 49.2s25.8 44 32.6 70.4c6.6 26 8.8 53.4 7 82.2z", + "M776.6 463.8c-16.2 0-29.8 2.8-40.4 8.4s-19.2 12.4-25.8 20.4c-6.6 8.2-11 16.8-13.6 26.2-2.6 9-4.2 17.2-4.6 24.4h165.6c-2.4-26-11.4-45.2-23.4-58.6-12.4-13.6-32.8-20.8-57.8-20.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "behance", + "brand", + "social" + ], + "defaultCode": 60073, + "grid": 16 + }, + { + "id": 426, + "paths": [ + "M829 186.2v-186.2h-186.2l-18.6 18.8-88 167.4-27.6 18.6h-313.6v255.6h172.4l15.4 18.6-187.8 358.8v186.2h186.2l18.6-18.8 88-167.4 27.6-18.6h313.6v-255.6h-172.4l-15.4-18.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "deviantart", + "brand", + "social" + ], + "defaultCode": 60074, + "grid": 16 + }, + { + "id": 427, + "paths": [ + "M253 672.8c0.2 0.6 5.6 15.2 8.6 22.6 16.8 39.8 41 75.8 71.8 106.6s66.6 55 106.6 71.8c41.4 17.4 85.2 26.4 130.4 26.4s89.2-8.8 130.4-26.4c40-16.8 75.8-41 106.6-71.8s55-66.6 71.8-106.6c17.4-41.4 26.4-85.2 26.4-130.4s-8.8-89.2-26.4-130.4c-16.8-40-41-75.8-71.8-106.6s-66.6-55-106.6-71.8c-41.4-17.4-85.2-26.4-130.4-26.4-45.8 0-91.6 9.2-132.2 26.4-32.6 13.8-87.8 49.2-120 82.6l-0.2 0.2v-276h463.4c16.8-0.2 16.8-23.8 16.8-31.4 0-7.8 0-31.2-17-31.4h-501c-13.6 0-22 11.4-22 21.8v388.2c0 12.6 15.6 21.6 30.2 24.6 28.4 6 34.8-3 41.8-12.6l1-1.2c10.6-15.8 43.6-49 44-49.4 51.6-51.6 120.6-80 194.4-80 73.4 0 142.2 28.4 193.8 80 51.8 51.8 80.4 120.4 80.4 193.2 0 73-28.4 141.8-80 193.2-50.8 50.8-122 80-195 80-49.4 0-97.2-13.2-138.2-38.2l0.2-236c0-31.4 13.6-65.8 36.6-91.6 26.2-29.6 62.2-45.8 101.6-45.8 38 0 73.6 14.4 100.2 40.6 26.2 26 40.8 60.8 40.8 97.8 0 78.8-62 140.6-141.2 140.6-15.2 0-43-6.8-44.2-7-16-4.8-22.8 17.4-25 24.8-8.6 28.2 4.4 33.8 7 34.6 25.4 8 42.2 9.4 64.2 9.4 111.8 0 202.8-91 202.8-202.8 0-111-91-201.2-202.6-201.2-54.8 0-106.2 21-144.8 58.8-36.8 36.2-57.8 84.4-57.8 132.4v1.2c-0.2 6-0.2 147.6-0.4 194l-0.2-0.2c-21-23.2-41.8-58.8-55.6-95.2-5.4-14.2-17.6-11.8-34.2-6.6-8 2.2-30 9-25 25.2v0zM491.2 617.4c0 6.8 6.2 12.8 10 16.2l1.2 1.2c6.4 6.2 12.4 9.4 18 9.4 4.6 0 7.4-2.2 8.4-3.2 2.8-2.6 34.4-34.8 37.6-37.8l35.4 35.2c3.2 3.6 6.8 5.6 11 5.6 5.6 0 11.8-3.4 18.2-10 15.2-15.6 7.6-24 4-28l-35.8-35.8 37.4-37.6c8.2-8.8 1-18.2-6.2-25.4-10.4-10.4-20.6-13.2-27-7.2l-37.2 37.2-37.6-37.6c-2-2-4.6-3-7.2-3-5 0-11 3.4-17.6 10-11.6 11.6-14 19.6-8 26l37.6 37.4-37.4 37.4c-3.4 3.2-5 6.6-4.8 10zM573 109.8c-60 0-124 12.2-170.8 32.4-5 2-8 6-8.6 11.6-0.6 5.4 0.8 12.4 4.4 21.6 3 7.4 10.6 27.2 25.6 21.4 48-18.4 101.2-28.4 149.4-28.4 54.8 0 108 10.8 158 31.8 39.8 16.8 77.2 41.2 118 76.4 3 2.6 6.2 3.8 9.4 3.8 8 0 15.6-7.8 22.2-15.2 10.8-12.2 18.4-22.4 7.6-32.6-39-36.8-81.6-64.4-134.4-86.8-57.2-23.8-118.2-36-180.8-36zM896.4 851.2v0c-7.2-7.2-13.4-11.4-18.8-13s-10.4-0.4-14.2 3.4l-3.6 3.6c-37.2 37.2-80.6 66.4-128.8 86.8-50 21.2-103 31.8-157.6 31.8-54.8 0-107.8-10.8-157.6-31.8-48.2-20.4-91.6-49.6-128.8-86.8-38.8-38.8-68-82.2-86.8-128.8-18.4-45.6-24.4-79.8-26.4-91-0.2-1-0.4-1.8-0.4-2.4-2.6-13.2-14.8-14.2-32.2-11.4-7.2 1.2-29.4 4.6-27.4 20.4v0.4c5.8 37 16.2 73.2 30.8 107.6 23.4 55.4 57 105.2 99.8 148s92.6 76.2 148 99.8c57.4 24.2 118.4 36.6 181.2 36.6s123.8-12.4 181.2-36.6c55.4-23.4 105.2-57 148-99.8 0 0 2.4-2.4 3.8-3.8 4.4-5.4 8.6-14.4-10.2-33z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "500px", + "brand", + "social" + ], + "defaultCode": 60075, + "grid": 16 + }, + { + "id": 428, + "paths": [ + "M704 288c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM958.392 129.608c-87.478-87.476-229.306-87.476-316.786 0-35.578 35.578-56.684 80.146-63.322 126.392v0l-204.694 310.228c-27.506 1.41-54.776 8.416-79.966 21.016l-157.892-123.424c-36.55-28.574-89.342-22.102-117.912 14.448-28.572 36.55-22.102 89.342 14.448 117.912l155.934 121.892c-16.96 66.782 0.672 140.538 52.93 192.794 78.906 78.904 206.832 78.904 285.736 0 48.466-48.466 67.15-115.428 56.076-178.166l249.054-222.986c46.248-6.638 90.816-27.744 126.394-63.322 87.478-87.476 87.478-229.306 0-316.784zM384 902.698c-74.39 0-134.698-60.304-134.698-134.698 0-0.712 0.042-1.414 0.054-2.124l66.912 52.304c15.36 12.006 33.582 17.824 51.674 17.824 24.962 0 49.672-11.080 66.238-32.272 28.572-36.55 22.102-89.342-14.448-117.912l-63.5-49.636c8.962-1.878 18.248-2.88 27.768-2.88 74.392 0 134.698 60.304 134.698 134.698s-60.306 134.696-134.698 134.696zM800 448c-88.366 0-160-71.634-160-160s71.634-160 160-160 160 71.634 160 160-71.634 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "steam", + "brand", + "social" + ], + "defaultCode": 60076, + "grid": 16 + }, + { + "id": 429, + "paths": [ + "M303.922 836.010c27.144 0 53.786-13.136 69.972-37.416 25.734-38.602 15.302-90.754-23.298-116.488l-66.074-44.048c11.308-3.080 23.194-4.756 35.478-4.756 74.392 0 134.696 60.304 134.696 134.698s-60.306 134.698-134.698 134.698c-72.404 0-131.444-57.132-134.548-128.774l71.954 47.968c14.322 9.548 30.506 14.118 46.518 14.118zM853.34 0c93.876 0 170.66 76.812 170.66 170.688v682.628c0 93.936-76.784 170.684-170.66 170.684h-682.652c-93.876 0-170.688-76.75-170.688-170.682v-203.028l121.334 80.888c-11.652 63.174 6.938 130.83 55.798 179.69 78.904 78.904 206.83 78.904 285.736 0 48.468-48.466 67.15-115.43 56.076-178.166l249.056-222.988c46.248-6.638 90.816-27.744 126.394-63.322 87.476-87.476 87.476-229.306 0-316.784-87.48-87.478-229.308-87.478-316.786 0-35.578 35.578-56.684 80.146-63.322 126.392v0l-204.694 310.23c-31.848 1.632-63.378 10.764-91.726 27.392l-217.866-145.244v-277.69c0-93.876 76.81-170.688 170.686-170.688h682.654zM896 288c0-88.366-71.634-160-160-160s-160 71.634-160 160 71.634 160 160 160 160-71.634 160-160zM640 288c0-53.020 42.98-96 96-96s96 42.98 96 96-42.98 96-96 96-96-42.98-96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "steam", + "brand", + "social" + ], + "defaultCode": 60077, + "grid": 16 + }, + { + "id": 430, + "paths": [ + "M736 32l-224 192 288 192 224-192z", + "M512 224l-224-192-288 192 224 192z", + "M800 416l224 192-288 160-224-192z", + "M512 576l-288-160-224 192 288 160z", + "M728.156 845.57l-216.156-185.278-216.158 185.278-135.842-75.468v93.898l352 160 352-160v-93.898z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "dropbox", + "brand" + ], + "defaultCode": 60078, + "grid": 16 + }, + { + "id": 431, + "paths": [ + "M350.868 828.388c-60.274-15.060-93.856-62.97-93.962-134.064-0.032-22.726 1.612-33.62 7.286-48.236 13.908-35.834 50.728-62.872 99.176-72.822 24.11-4.95 31.536-10.266 31.536-22.572 0-3.862 2.872-15.36 6.378-25.552 15.932-46.306 45.43-84.91 76.948-100.702 32.99-16.526 49.642-20.254 89.548-20.040 56.674 0.304 84.952 12.598 124.496 54.128l21.75 22.842 19.484-6.742c94.3-32.636 188.306 22.916 195.888 115.756l2.072 25.398 18.57 6.65c53.032 19.004 77.96 58.904 73.442 117.556-2.958 38.358-20.89 68.98-49.3 84.184l-13.356 7.146-296.822 0.57c-228.094 0.44-300.6-0.368-313.134-3.5v0zM103.218 785.966c-36.176-9.086-74.506-42.854-92.48-81.47-10.196-21.906-10.738-25.128-10.738-63.88 0-36.864 0.87-42.778 8.988-61.080 17.11-38.582 49.894-66.46 91.030-77.408 8.684-2.312 16.842-6 18.128-8.196 1.29-2.198 2.722-14.164 3.182-26.592 2.866-77.196 50.79-145.214 117.708-167.056 36.154-11.8 83.572-12.898 122.896 3.726 12.47 5.274 11.068 6.404 37.438-30.14 15.594-21.612 45.108-44.49 70.9-58.18 27.838-14.776 56.792-21.584 91.412-21.494 96.768 0.252 180.166 64.22 211.004 161.848 9.854 31.192 9.362 39.926-2.26 40.184-5.072 0.112-19.604 3.064-32.292 6.558l-23.072 6.358-21.052-22.25c-59.362-62.734-156.238-76.294-238.592-33.396-32.9 17.138-59.34 41.746-79.31 73.81-14.236 22.858-32.39 65.504-32.39 76.094 0 7.51-5.754 11.264-30.332 19.782-76.094 26.376-120.508 87.282-120.476 165.218 0.010 28.368 6.922 63.074 16.52 82.956 3.618 7.494 5.634 14.622 4.484 15.836-2.946 3.106-97.608 2.060-110.696-1.228v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "onedrive", + "brand", + "skydrive" + ], + "defaultCode": 60079, + "grid": 16 + }, + { + "id": 432, + "paths": [ + "M512.008 12.642c-282.738 0-512.008 229.218-512.008 511.998 0 226.214 146.704 418.132 350.136 485.836 25.586 4.738 34.992-11.11 34.992-24.632 0-12.204-0.48-52.542-0.696-95.324-142.448 30.976-172.504-60.41-172.504-60.41-23.282-59.176-56.848-74.916-56.848-74.916-46.452-31.778 3.51-31.124 3.51-31.124 51.4 3.61 78.476 52.766 78.476 52.766 45.672 78.27 119.776 55.64 149.004 42.558 4.588-33.086 17.852-55.68 32.506-68.464-113.73-12.942-233.276-56.85-233.276-253.032 0-55.898 20.004-101.574 52.76-137.428-5.316-12.9-22.854-64.972 4.952-135.5 0 0 43.006-13.752 140.84 52.49 40.836-11.348 84.636-17.036 128.154-17.234 43.502 0.198 87.336 5.886 128.256 17.234 97.734-66.244 140.656-52.49 140.656-52.49 27.872 70.528 10.35 122.6 5.036 135.5 32.82 35.856 52.694 81.532 52.694 137.428 0 196.654-119.778 239.95-233.79 252.624 18.364 15.89 34.724 47.046 34.724 94.812 0 68.508-0.596 123.644-0.596 140.508 0 13.628 9.222 29.594 35.172 24.566 203.322-67.776 349.842-259.626 349.842-485.768 0-282.78-229.234-511.998-511.992-511.998z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "github", + "brand", + "octacat", + "social" + ], + "defaultCode": 60080, + "grid": 16 + }, + { + "id": 433, + "paths": [ + "M0 0v1024h1024v-1024h-1024zM832 832h-128v-512h-192v512h-320v-640h640v640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "npm", + "brand" + ], + "defaultCode": 60081, + "grid": 16 + }, + { + "id": 434, + "paths": [ + "M512 106.6c-186.8 0-330.8 156.4-412.4 309.6-46 86.2-78.2 180.6-93 277.2-1.6 11-3.2 22-4.4 33.2-0.6 6-1.2 12-1.6 18-0.6 7.6-0.2 10 3.8 16.4 12 19.4 26.2 37.4 42.2 53.6 32.8 33.6 72.6 59.4 114.8 79.4 96.2 45.4 204.8 61.8 310.4 65.4 109 3.6 221-5.4 325.2-39.4 89-29 174.8-79.6 224.2-161.4 5.4-8.8 1.6-21.8 0.6-32-1.2-12.2-2.8-24.2-4.8-36.2-3.6-23.6-8.4-46.8-14.2-70-11.6-47.2-27.4-93.6-46.6-138.2-69.6-161.6-198.4-334-381.6-369.6-20.6-4-41.6-6-62.6-6zM518.4 890.2c-114.2 0-238.6-10.2-341.4-65.2-40-21.4-80.8-52.4-100-95-5.6-12.4-3.6-17.2-1-31.8 1.8-9.4 2.6-18.6 6.8-27.4 5.8-12.2 11.8-24.2 18-36.2 21-40.6 43.6-80.8 69.8-118.6 13-18.6 26.8-37 42.8-53 11.2-11.2 24.8-23.2 40.6-27 48.4-11.6 85.4 44.4 114.8 72.6 14.2 13.6 33.2 29 54.4 26.4 14.6-1.8 27.6-13.2 38-22.6 35.4-31.8 63.8-71.2 93.2-108.2 14.6-18.2 29-36.6 44.8-54 10.6-11.8 22.2-25.2 36.4-32.8 25.4-13.8 57.8 14.6 75.4 29.2 30 25 56.6 54.2 82 83.8 24.2 28.2 47.6 56.8 68.2 87.8 31.8 48 59.4 99.2 84.6 151 5.4 11.2 7.2 18.8 9.2 31.2 1.2 6.8 3.8 14.6 2.8 21.6-1.4 9.8-8.2 20.4-13.2 28.4-12 19-28.2 35.4-46 49.2-74.6 57.8-175.6 77-267.4 85.6-37.6 3.6-75.2 5-112.8 5z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "basecamp", + "brand" + ], + "defaultCode": 60082, + "grid": 16 + }, + { + "id": 435, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM448 768c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-512c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v512zM832 576c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-320c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "trello", + "brand" + ], + "defaultCode": 60083, + "grid": 16 + }, + { + "id": 436, + "paths": [ + "M128 511.992c0 148.026 88.322 275.968 216.43 336.578l-183.178-488.784c-21.308 46.508-33.252 97.982-33.252 152.206zM771.228 493.128c0-46.234-17.054-78.236-31.654-103.142-19.458-30.82-37.72-56.894-37.72-87.716 0-34.374 26.766-66.376 64.486-66.376 1.704 0 3.32 0.204 4.976 0.302-68.316-60.97-159.34-98.196-259.308-98.196-134.16 0-252.186 67.046-320.844 168.568 9.010 0.282 17.506 0.454 24.712 0.454 40.154 0 102.34-4.752 102.34-4.752 20.69-1.182 23.132 28.434 2.458 30.822 0 0-20.81 2.368-43.952 3.55l139.834 405.106 84.044-245.456-59.822-159.65c-20.688-1.184-40.278-3.55-40.278-3.55-20.702-1.192-18.272-32.002 2.438-30.822 0 0 63.4 4.752 101.134 4.752 40.146 0 102.35-4.752 102.35-4.752 20.702-1.182 23.14 28.434 2.446 30.822 0 0-20.834 2.372-43.948 3.55l138.78 402.018 38.312-124.632c16.58-51.75 29.216-88.9 29.216-120.9zM518.742 544.704l-115.226 326.058c34.416 9.858 70.794 15.238 108.488 15.238 44.716 0 87.604-7.518 127.518-21.2-1.018-1.602-1.974-3.304-2.75-5.154l-118.030-314.942zM848.962 332.572c1.652 11.91 2.588 24.686 2.588 38.458 0 37.93-7.292 80.596-29.202 133.95l-117.286 330.272c114.162-64.828 190.938-185.288 190.938-323.258 0-65.030-17.060-126.16-47.038-179.422zM512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 960c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wordpress", + "brand", + "social", + "cms" + ], + "defaultCode": 60084, + "grid": 16 + }, + { + "id": 437, + "paths": [ + "M266.004 276.678c32.832-32.844 86.002-32.844 118.804-0.032l7.826 7.868 101.104-101.156-7.874-7.88c-57.624-57.7-138.514-77.878-212.42-60.522-10.594-65.182-67.088-114.924-135.174-114.956-75.65 0-136.954 61.442-136.97 137.158 0 65.336 45.59 120 106.662 133.83-23.138 77.45-4.242 164.834 56.846 225.984l227.826 227.9 100.996-101.214-227.81-227.886c-32.682-32.722-32.742-86.126 0.184-119.094zM1022.712 137.158c0.016-75.762-61.318-137.158-136.984-137.158-69.234 0-126.478 51.444-135.682 118.238-77.074-22.664-163.784-3.496-224.64 57.408l-227.84 227.9 101.102 101.172 227.766-227.856c32.94-32.966 85.988-32.906 118.684-0.184 32.8 32.83 32.8 86.114-0.032 118.956l-7.794 7.836 101.010 101.248 7.858-7.928c60.458-60.566 79.678-146.756 57.612-223.638 67.15-8.834 118.94-66.364 118.94-135.994zM906.266 751.064c18.102-74.458-1.976-156.324-60.108-214.5l-227.49-227.992-101.102 101.122 227.52 228.012c32.94 32.996 32.864 86.096 0.184 118.848-32.802 32.814-86.004 32.814-118.836-0.030l-7.766-7.79-100.994 101.246 7.732 7.728c61.516 61.594 149.618 80.438 227.368 56.488 12.632 62.682 67.934 109.804 134.258 109.804 75.604 0 136.968-61.35 136.968-137.126 0-69.2-51.18-126.456-117.734-135.81zM612.344 528.684l-227.536 227.992c-32.71 32.768-86.034 32.828-118.944-0.124-32.818-32.904-32.832-86.098-0.044-118.97l7.808-7.774-101.086-101.124-7.734 7.712c-58.76 58.802-78.56 141.834-59.45 216.982-60.398 14.26-105.358 68.634-105.358 133.496-0.016 75.746 61.332 137.126 136.982 137.126 65.1-0.032 119.588-45.418 133.54-106.382 74.702 18.552 156.998-1.304 215.344-59.756l227.49-227.96-101.012-101.218z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "joomla", + "brand", + "cms" + ], + "defaultCode": 60085, + "grid": 16 + }, + { + "id": 438, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM824.636 589.598c-36.798 142.716-165.358 242.402-312.63 242.402-147.282 0-275.85-99.686-312.654-242.42-6.232-24.158 8.352-48.886 32.512-55.124 3.71-0.958 7.528-1.446 11.338-1.446 20.624 0 38.628 13.972 43.788 33.976 26.512 102.748 119.042 174.51 225.014 174.51 105.978 0 198.502-71.76 225-174.51 5.152-20.006 23.15-33.982 43.766-33.982 3.822 0 7.65 0.49 11.376 1.456 11.692 3.016 21.526 10.418 27.668 20.842 6.142 10.416 7.854 22.596 4.822 34.296z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ello", + "brand", + "social" + ], + "defaultCode": 60086, + "grid": 16 + }, + { + "id": 439, + "paths": [ + "M957.796 384h-57.406c-35.166 0-65.988-29.742-68.39-64v0c0.004-182.668-147.258-320-331.19-320h-167.824c-183.812 0-332.856 148-332.986 330.666v362.798c0 182.654 149.174 330.536 332.984 330.536h358.42c183.948 0 332.596-147.882 332.596-330.536v-234.382c0-36.502-29.44-75.082-66.204-75.082zM320 256h192c35.2 0 64 28.8 64 64s-28.8 64-64 64h-192c-35.2 0-64-28.8-64-64s28.8-64 64-64zM704 768h-384c-35.2 0-64-28.8-64-64s28.8-64 64-64h384c35.2 0 64 28.8 64 64s-28.8 64-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "blogger", + "brand", + "social" + ], + "defaultCode": 60087, + "grid": 16 + }, + { + "id": 440, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM896 648c0 137-111.4 248-249.4 248h-268.8c-138 0-249.8-111-249.8-248v-272c0-137 111.8-248 249.8-248h125.8c138 0 248.4 103 248.4 240 1.8 25.6 25 48 51.2 48h43c27.6 0 49.6 29 49.6 56.4v175.6z", + "M704 640c0 35.2-28.8 64-64 64h-256c-35.2 0-64-28.8-64-64v0c0-35.2 28.8-64 64-64h256c35.2 0 64 28.8 64 64v0z", + "M576 384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v0c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "blogger", + "brand", + "social" + ], + "defaultCode": 60088, + "grid": 16 + }, + { + "id": 441, + "paths": [ + "M576.032 448l-0.002 234.184c0 59.418-0.77 93.656 5.53 110.5 6.25 16.754 21.918 34.146 38.99 44.202 22.684 13.588 48.542 20.376 77.708 20.376 51.854 0 82.478-6.848 133.742-40.54v153.944c-43.7 20.552-81.866 32.594-117.324 40.922-35.5 8.242-73.86 12.406-115.064 12.406-46.828 0-74.456-5.886-110.41-17.656-35.958-11.868-66.66-28.806-92.020-50.54-25.45-21.922-43.022-45.208-52.848-69.832-9.826-24.636-14.716-60.414-14.716-107.244v-359.1h-137.426v-145.006c40.208-13.042 85.164-31.788 113.78-56.152 28.754-24.45 51.766-53.706 69.106-87.944 17.392-34.146 29.348-77.712 35.872-130.516h165.084l-0.002 255.996h255.968v192h-255.968z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tumblr", + "brand", + "social" + ], + "defaultCode": 60089, + "grid": 16 + }, + { + "id": 442, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM731.8 824.6c-30.2 14.2-57.6 24.2-82 30-24.4 5.6-51 8.6-79.4 8.6-32.4 0-51.4-4-76.2-12.2s-46-19.8-63.6-34.8c-17.6-15.2-29.6-31.2-36.4-48.2s-10.2-41.6-10.2-74v-247.8h-96v-100c27.8-9 60-22 79.6-38.8 19.8-16.8 35.8-37 47.6-60.6 12-23.6 20.2-53.6 24.8-90h100.4v163.2h163.6v126.2h-163.4v181.2c0 41-0.6 64.6 3.8 76.2s15.2 23.6 27 30.4c15.6 9.4 33.6 14 53.6 14 35.8 0 71.4-11.6 106.8-34.8v111.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tumblr", + "brand", + "social" + ], + "defaultCode": 60090, + "grid": 16 + }, + { + "id": 443, + "paths": [ + "M568.2 589v0c112.6-197.6 298.6-520 349.6-589-22.4 15-56.8 22.6-88.4 29.8l-47.8-29.8c-38.4 71.6-180 303-270.2 451.2-91.4-151.4-199.6-326.2-270.2-451.2-56 12-79.2 12.6-135 0v0 0c0 0 0 0 0 0v0c110.8 166.8 288.2 484.6 348.6 589v0l-8.2 435 64.8-29.8v-0.8l64.8 30.6-8-435z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "yahoo", + "brand", + "social" + ], + "defaultCode": 60091, + "grid": 16 + }, + { + "id": 444, + "paths": [ + "M513.2 69.6c-181 0-352-23.8-513.2-69.6 0 361.8 0 933.2 0 1024 161.4-45.8 332.4-69.6 513.2-69.6 178.8 0 349.4 23.2 510.8 69.6 0-348.4 0-649.8 0-1024-161.4 46.4-331.8 69.6-510.8 69.6zM796.8 157l-6.2 9.8c-5.8 9.2-11 17-18.2 28-9.6 14.4-27.6 43-49.2 79.8-6 10.2-13.4 22.4-21 35.6-14.6 24.6-31 52.4-44 74.4-5.4 9.4-10.8 19-16.4 28.6-14.4 25-29.2 50.8-43.4 75.6-14.6 25.8-29 51.2-43.4 76.4v25.4c0 35.2 0.8 73.6 2 107.8 0.6 15.6 1.2 43.4 2 72.8 0.8 35 1.6 71.2 2.6 89.6l0.2 5.6v0.6l-6-1.6c-2.4-0.6-4.6-1.2-7-1.8-7.2-1.6-15-2.8-22.6-3.6-4.6-0.4-9.4-0.6-14.2-0.6 0 0 0 0 0 0s0 0 0 0c-4.8 0-9.6 0.2-14.2 0.6-7.6 0.8-15.4 2-22.6 3.6-2.4 0.6-4.8 1.2-7 1.8l-6 1.6v-0.6l0.2-5.6c0.8-18.2 1.8-54.6 2.6-89.6 0.6-29.4 1.4-57.2 2-72.8 1.4-34.4 2-72.6 2-107.8v-25.4c-14.4-25.4-28.8-50.6-43.4-76.4-14.2-25-29-50.6-43.2-75.6-5.6-9.6-11-19.2-16.4-28.6-12.8-22.2-29.4-50-44-74.4-7.8-13-15.2-25.4-21-35.6-21.6-36.8-39.6-65.2-49.2-79.8-7.2-11-12.4-18.8-18.2-28l-6.2-9.8 11.2 3.2c14.2 4 28.8 6 44.4 6s30.6-2 44.6-6l3.4-1 1.8 3c27.6 49.8 101.8 171.8 146.2 244.8 15.2 25.2 27.4 45 33.4 55.2 0 0 0 0 0-0.2 0 0 0 0 0 0.2 6-10 18.2-30 33.4-55.2 44.4-72.8 118.6-194.8 146.2-244.8l1.8-3 3.4 1c14 4 29 6 44.6 6s30.2-2 44.4-6l10.6-3.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "yahoo" + ], + "defaultCode": 60092, + "grid": 16 + }, + { + "id": 445, + "paths": [ + "M567.656 736.916c-81.944 38.118-158.158 37.716-209.34 34.020-61.052-4.41-110.158-21.124-131.742-35.732-13.3-9.006-31.384-5.522-40.39 7.782-9.004 13.302-5.52 31.386 7.782 40.39 34.698 23.486 96.068 40.954 160.162 45.58 10.866 0.784 22.798 1.278 35.646 1.278 55.782 0 126.626-5.316 202.42-40.57 14.564-6.778 20.878-24.074 14.104-38.64-6.776-14.566-24.076-20.872-38.642-14.108zM890.948 693.816c2.786-252.688 28.762-730.206-454.97-691.612-477.6 38.442-350.964 542.968-358.082 711.95-6.308 89.386-35.978 198.648-77.896 309.846h129.1c13.266-47.122 23.024-93.72 27.232-138.15 7.782 5.428 16.108 10.674 24.994 15.7 14.458 8.518 26.884 19.844 40.040 31.834 30.744 28.018 65.59 59.774 133.712 63.752 4.572 0.262 9.174 0.394 13.676 0.394 68.896 0 116.014-30.154 153.878-54.382 18.14-11.612 33.818-21.64 48.564-26.452 41.91-13.12 78.532-34.296 105.904-61.252 4.276-4.208 8.242-8.538 11.962-12.948 15.246 55.878 36.118 118.758 59.288 181.504h275.65c-66.174-102.224-134.436-202.374-133.052-330.184zM124.11 556.352c0-0.016 0-0.030-0.002-0.046-4.746-82.462 34.71-151.832 88.126-154.936 53.412-3.106 100.56 61.228 105.304 143.692 0 0.014 0.004 0.030 0.004 0.044 0.256 4.446 0.368 8.846 0.37 13.206-16.924 4.256-32.192 10.436-45.872 17.63-0.052-0.612-0.092-1.216-0.152-1.83 0-0.008 0-0.018 0-0.026-4.57-46.81-29.572-82.16-55.852-78.958-26.28 3.204-43.88 43.75-39.312 90.558 0 0.010 0.004 0.018 0.004 0.026 1.992 20.408 7.868 38.636 16.042 52.444-2.034 1.604-7.784 5.812-14.406 10.656-4.97 3.634-11.020 8.058-18.314 13.43-19.882-26.094-33.506-63.58-35.94-105.89zM665.26 760.178c-1.9 43.586-58.908 84.592-111.582 101.044l-0.296 0.096c-21.9 7.102-41.428 19.6-62.104 32.83-34.732 22.224-70.646 45.208-122.522 45.208-3.404 0-6.894-0.104-10.326-0.296-47.516-2.778-69.742-23.032-97.88-48.676-14.842-13.526-30.19-27.514-49.976-39.124l-0.424-0.244c-42.706-24.104-69.212-54.082-70.908-80.194-0.842-12.98 4.938-24.218 17.182-33.4 26.636-19.972 44.478-33.022 56.284-41.658 13.11-9.588 17.068-12.48 20-15.264 2.096-1.986 4.364-4.188 6.804-6.562 24.446-23.774 65.36-63.562 128.15-63.562 38.404 0 80.898 14.8 126.17 43.902 21.324 13.878 39.882 20.286 63.38 28.4 16.156 5.578 34.468 11.902 58.992 22.404l0.396 0.164c22.88 9.404 49.896 26.564 48.66 54.932zM652.646 657.806c-4.4-2.214-8.974-4.32-13.744-6.286-22.106-9.456-39.832-15.874-54.534-20.998 8.116-15.894 13.16-35.72 13.624-57.242 0-0.010 0-0.022 0-0.030 1.126-52.374-25.288-94.896-58.996-94.976-33.71-0.078-61.95 42.314-63.076 94.686 0 0.010 0 0.018 0 0.028-0.038 1.714-0.042 3.416-0.020 5.11-20.762-9.552-41.18-16.49-61.166-20.76-0.092-1.968-0.204-3.932-0.244-5.92 0-0.016 0-0.036 0-0.050-1.938-95.412 56.602-174.39 130.754-176.402 74.15-2.014 135.828 73.7 137.772 169.11 0 0.018 0 0.038 0 0.052 0.874 43.146-10.66 82.866-30.37 113.678z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tux", + "brand", + "linux" + ], + "defaultCode": 60093, + "grid": 16 + }, + { + "id": 446, + "paths": [ + "M791.498 544.092c-1.294-129.682 105.758-191.876 110.542-194.966-60.152-88.020-153.85-100.078-187.242-101.472-79.742-8.074-155.596 46.948-196.066 46.948-40.368 0-102.818-45.754-168.952-44.552-86.916 1.292-167.058 50.538-211.812 128.38-90.304 156.698-23.126 388.84 64.89 515.926 43.008 62.204 94.292 132.076 161.626 129.58 64.842-2.588 89.362-41.958 167.756-41.958s100.428 41.958 169.050 40.67c69.774-1.296 113.982-63.398 156.692-125.796 49.39-72.168 69.726-142.038 70.924-145.626-1.548-0.706-136.060-52.236-137.408-207.134zM662.562 163.522c35.738-43.358 59.86-103.512 53.28-163.522-51.478 2.096-113.878 34.29-150.81 77.55-33.142 38.376-62.148 99.626-54.374 158.436 57.466 4.484 116.128-29.204 151.904-72.464z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "apple", + "brand" + ], + "defaultCode": 60094, + "grid": 16 + }, + { + "id": 447, + "paths": [ + "M569.226 778.256c-0.002-0.044-0.002-0.088-0.004-0.132 0.002 0.044 0.002 0.088 0.004 0.132z", + "M570.596 814.538c-0.012-0.234-0.022-0.466-0.032-0.702 0.010 0.234 0.020 0.466 0.032 0.702z", + "M569.814 796.312c-0.006-0.178-0.012-0.356-0.020-0.536 0.010 0.182 0.016 0.358 0.020 0.536z", + "M960 0h-896c-35.2 0-64 28.8-64 64v896c0 35.2 28.8 64 64 64h493.832c0.044 0 0.088 0.006 0.132 0.006 0.042 0 0.084-0.006 0.126-0.006h401.91c35.2 0 64-28.8 64-64v-896c0-35.2-28.8-64-64-64zM192 224c0-17.672 14.328-32 32-32s32 14.328 32 32v64c0 17.672-14.328 32-32 32s-32-14.328-32-32v-64zM960 960h-375.058c-6.7-42.082-10.906-85.476-13.388-127.604 0.006 0.116 0.010 0.228 0.018 0.344-19.696 2.146-39.578 3.26-59.572 3.26-133.65 0-262.382-48.656-362.484-137.006-14.906-13.156-16.326-35.906-3.168-50.812 13.158-14.904 35.906-16.326 50.814-3.168 86.936 76.728 198.748 118.986 314.838 118.986 19.086 0 38.052-1.166 56.816-3.416-2.192-118.194 6.876-211.914 7.026-213.404 0.898-8.996-2.050-17.952-8.118-24.654-6.066-6.702-14.682-10.526-23.724-10.526h-95.174c1.384-34.614 5.082-93.814 14.958-160.188 18.864-126.76 51.994-225.77 96.152-287.812h400.064v896z", + "M800 320c-17.674 0-32-14.328-32-32v-64c0-17.672 14.326-32 32-32s32 14.328 32 32v64c0 17.672-14.326 32-32 32z", + "M540.496 835.232c-3.646 0.192-7.298 0.336-10.956 0.454 3.658-0.116 7.31-0.264 10.956-0.454z", + "M512 836c4.692 0 9.374-0.074 14.050-0.196-4.676 0.122-9.358 0.196-14.050 0.196z", + "M539.074 763.202c0.784-0.044 1.568-0.084 2.352-0.132-0.782 0.048-1.568 0.088-2.352 0.132z", + "M525.084 763.8c1.074-0.030 2.146-0.072 3.218-0.11-1.072 0.038-2.144 0.082-3.218 0.11z", + "M877.65 648.182c-13.156-14.91-35.908-16.322-50.812-3.168-72.642 64.114-162.658 104.136-258.022 115.57 0.43 23.278 1.294 47.496 2.754 72.156 111.954-12.21 217.786-58.614 302.912-133.746 14.908-13.156 16.326-35.906 3.168-50.812z", + "M571.498 832.748c-4.606 0.5-9.222 0.936-13.848 1.322 4.626-0.384 9.244-0.822 13.848-1.322z", + "M555.488 834.242c-3.906 0.312-7.822 0.576-11.742 0.806 3.92-0.226 7.834-0.496 11.742-0.806z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "finder", + "brand", + "mac", + "os" + ], + "defaultCode": 60095, + "grid": 16 + }, + { + "id": 448, + "paths": [ + "M896 384c-35.2 0-64 28.8-64 64v256c0 35.2 28.8 64 64 64s64-28.8 64-64v-256c0-35.2-28.8-64-64-64zM128 384c-35.2 0-64 28.8-64 64v256c0 35.2 28.8 64 64 64s64-28.8 64-64v-256c0-35.2-28.802-64-64-64zM224 736c0 53.020 42.98 96 96 96v0 128c0 35.2 28.8 64 64 64s64-28.8 64-64v-128h128v128c0 35.2 28.8 64 64 64s64-28.8 64-64v-128c53.020 0 96-42.98 96-96v-352h-576v352z", + "M798.216 320.002c-9.716-87.884-59.004-163.792-129.62-209.646l32.024-64.046c7.904-15.806 1.496-35.028-14.31-42.932s-35.030-1.496-42.932 14.312l-32.142 64.286-8.35-3.316c-28.568-9.502-59.122-14.66-90.886-14.66-31.762 0-62.316 5.158-90.888 14.656l-8.348 3.316-32.142-64.282c-7.904-15.808-27.128-22.212-42.932-14.312-15.808 7.904-22.214 27.126-14.312 42.932l32.022 64.046c-70.616 45.852-119.904 121.762-129.622 209.644v32h574.222v-31.998h-1.784zM416 256c-17.674 0-32-14.328-32-32 0-17.648 14.288-31.958 31.93-31.996 0.032 0 0.062 0.002 0.094 0.002 0.018 0 0.036-0.002 0.052-0.002 17.638 0.042 31.924 14.35 31.924 31.996 0 17.672-14.326 32-32 32zM608 256c-17.674 0-32-14.328-32-32 0-17.646 14.286-31.954 31.924-31.996 0.016 0 0.034 0.002 0.050 0.002 0.032 0 0.064-0.002 0.096-0.002 17.64 0.038 31.93 14.348 31.93 31.996 0 17.672-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "android", + "brand", + "os", + "mobile" + ], + "defaultCode": 60096, + "grid": 16 + }, + { + "id": 449, + "paths": [ + "M412.23 511.914c-47.708-24.518-94.086-36.958-137.88-36.958-5.956 0-11.952 0.18-17.948 0.708-55.88 4.624-106.922 19.368-139.75 30.828-8.708 3.198-17.634 6.576-26.83 10.306l-89.822 311.394c61.702-22.832 116.292-33.938 166.27-33.938 80.846 0 139.528 30.208 187.992 61.304 22.962-77.918 78.044-266.090 94.482-322.324-11.95-7.284-24.076-14.57-36.514-21.32zM528.348 591.070l-90.446 314.148c26.832 15.372 117.098 64.050 186.212 64.050 55.792 0 118.252-14.296 190.834-43.792l86.356-301.976c-58.632 18.922-114.876 28.52-167.464 28.52-95.95 0-163.114-31.098-205.492-60.95zM292.822 368.79c77.118 0.798 134.152 30.208 181.416 60.502l92.752-317.344c-19.546-11.196-70.806-39.094-107.858-48.6-24.386-5.684-50.020-8.616-77.204-8.616-51.796 0.976-108.388 13.946-172.888 39.8l-88.44 310.596c64.808-24.436 120.644-36.34 172.086-36.34 0.046 0.002 0.136 0.002 0.136 0.002zM1024 198.124c-58.814 22.832-116.208 34.466-171.028 34.466-91.686 0-159.292-31.802-203.094-62.366l-91.95 318.236c61.746 39.708 128.29 59.878 198.122 59.878 56.948 0 115.94-13.68 175.462-40.688l-0.182-2.222 3.734-0.886 88.936-306.418z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "windows", + "brand", + "os" + ], + "defaultCode": 60097, + "grid": 16 + }, + { + "id": 450, + "paths": [ + "M0.35 512l-0.35-312.074 384-52.144v364.218zM448 138.482l511.872-74.482v448h-511.872zM959.998 576l-0.126 448-511.872-72.016v-375.984zM384 943.836l-383.688-52.594-0.020-315.242h383.708z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "windows8", + "brand", + "os" + ], + "defaultCode": 60098, + "grid": 16 + }, + { + "id": 451, + "paths": [ + "M891.96 514.204c-18.086 0-35.348 3.52-51.064 9.856-10.506-114.358-110.29-204.060-232-204.060-29.786 0-58.682 5.63-84.318 15.164-9.96 3.702-12.578 7.52-12.578 14.916v402.714c0 7.766 6.24 14.234 14.124 14.996 0.336 0.034 363.536 0.21 365.89 0.21 72.904 0 131.986-56.816 131.986-126.894s-59.134-126.902-132.040-126.902zM400 768h32l16-224.22-16-223.78h-32l-16 223.78zM304 768h-32l-16-162.75 16-157.25h32l16 160zM144 768h32l16-128-16-128h-32l-16 128zM16 704h32l16-64-16-64h-32l-16 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "soundcloud", + "brand", + "social" + ], + "defaultCode": 60099, + "grid": 16 + }, + { + "id": 452, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM176 704h-32l-16-96 16-96h32l16 96-16 96zM304 704h-32l-16-128 16-128h32l16 128-16 128zM432 704h-32l-16-192 16-192h32l16 192-16 192zM825.2 704c-2 0-301.2-0.2-301.4-0.2-6.4-0.6-11.6-6.2-11.8-12.8v-345.2c0-6.4 2.2-9.6 10.4-12.8 21.2-8.2 45-13 69.6-13 100.2 0 182.4 76.8 191.2 175 13-5.4 27.2-8.4 42-8.4 60 0 108.8 48.8 108.8 108.8s-48.8 108.6-108.8 108.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "soundcloud", + "brand", + "social" + ], + "defaultCode": 60100, + "grid": 16 + }, + { + "id": 453, + "paths": [ + "M425.6 37.4c-1.6-1-3.4-1.8-5-2.6-1.8 0.4-3.4 0.6-5.2 1l10.2 1.6z", + "M36.8 421c-0.4 1.8-0.6 3.6-0.8 5.2 1 1.6 1.6 3.2 2.6 4.8l-1.8-10z", + "M986.8 602.6c0.4-1.8 0.6-3.6 1-5.4-1-1.6-1.6-3.2-2.6-4.8l1.6 10.2z", + "M592 983c1.6 1 3.4 1.8 5 2.6 1.8-0.4 3.6-0.6 5.4-0.8l-10.4-1.8z", + "M987.8 597.2c-0.4 1.8-0.6 3.6-1 5.4l-1.8-10.4c1 1.8 1.8 3.4 2.8 5 5.2-28.8 8-58.2 8-87.6 0-65.2-12.8-128.6-38-188.2-24.4-57.6-59.2-109.4-103.6-153.8s-96.2-79.2-153.6-103.6c-59.6-25.2-123-38-188.2-38-30.8 0-61.6 2.8-91.6 8.6 0 0-0.2 0-0.2 0 1.6 0.8 3.4 1.6 5 2.6l-10.2-1.6c1.8-0.4 3.4-0.6 5.2-1-41.2-21.8-87.4-33.6-134.2-33.6-76.4 0-148.4 29.8-202.4 83.8s-83.8 126-83.8 202.4c0 48.6 12.6 96.6 36 138.8 0.4-1.8 0.6-3.6 0.8-5.2l1.8 10.2c-1-1.6-1.8-3.2-2.6-4.8-4.8 27.4-7.2 55.4-7.2 83.4 0 65.2 12.8 128.6 38 188.2 24.4 57.6 59.2 109.2 103.6 153.6s96.2 79.2 153.8 103.6c59.6 25.2 123 38 188.2 38 28.4 0 56.8-2.6 84.6-7.6-1.6-1-3.2-1.8-5-2.6l10.4 1.8c-1.8 0.4-3.6 0.6-5.4 0.8 42.8 24.2 91.4 37.2 140.8 37.2 76.4 0 148.4-29.8 202.4-83.8s83.8-126 83.8-202.4c-0.2-48.6-12.8-96.6-36.4-139.2zM514.2 805.8c-171.8 0-248.6-84.4-248.6-147.8 0-32.4 24-55.2 57-55.2 73.6 0 54.4 105.6 191.6 105.6 70.2 0 109-38.2 109-77.2 0-23.4-11.6-49.4-57.8-60.8l-152.8-38.2c-123-30.8-145.4-97.4-145.4-160 0-129.8 122.2-178.6 237-178.6 105.8 0 230.4 58.4 230.4 136.4 0 33.4-29 52.8-62 52.8-62.8 0-51.2-86.8-177.6-86.8-62.8 0-97.4 28.4-97.4 69s49.6 53.6 92.6 63.4l113.2 25.2c123.8 27.6 155.2 100 155.2 168 0 105.4-81 184.2-244.4 184.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "skype", + "brand", + "social" + ], + "defaultCode": 60101, + "grid": 16 + }, + { + "id": 454, + "paths": [ + "M256 640c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 640c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM643.112 776.778c16.482-12.986 40.376-10.154 53.364 6.332s10.152 40.378-6.334 53.366c-45.896 36.158-115.822 59.524-178.142 59.524-62.322 0-132.248-23.366-178.144-59.522-16.486-12.99-19.32-36.882-6.332-53.368 12.99-16.482 36.882-19.318 53.366-6.332 26.422 20.818 78.722 43.222 131.11 43.222s104.688-22.404 131.112-43.222zM1024 512c0-70.692-57.308-128-128-128-48.116 0-89.992 26.57-111.852 65.82-65.792-35.994-145.952-59.246-233.28-64.608l76.382-171.526 146.194 42.2c13.152 37.342 48.718 64.114 90.556 64.114 53.020 0 96-42.98 96-96s-42.98-96-96-96c-36.56 0-68.342 20.442-84.554 50.514l-162.906-47.024c-18.224-5.258-37.538 3.722-45.252 21.052l-103.77 233.026c-85.138 5.996-163.262 29.022-227.636 64.236-21.864-39.25-63.766-65.804-111.882-65.804-70.692 0-128 57.308-128 128 0 52.312 31.402 97.254 76.372 117.102-8.070 24.028-12.372 49.104-12.372 74.898 0 176.73 200.576 320 448 320 247.422 0 448-143.27 448-320 0-25.792-4.3-50.862-12.368-74.886 44.97-19.85 76.368-64.802 76.368-117.114zM864 188c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zM64 512c0-35.29 28.71-64 64-64 25.508 0 47.572 15.004 57.846 36.646-33.448 25.366-61.166 54.626-81.666 86.738-23.524-9.47-40.18-32.512-40.18-59.384zM512 948c-205.45 0-372-109.242-372-244s166.55-244 372-244c205.45 0 372 109.242 372 244s-166.55 244-372 244zM919.82 571.384c-20.5-32.112-48.218-61.372-81.666-86.738 10.276-21.642 32.338-36.646 57.846-36.646 35.29 0 64 28.71 64 64 0 26.872-16.656 49.914-40.18 59.384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "reddit", + "brand", + "social" + ], + "defaultCode": 60102, + "grid": 16 + }, + { + "id": 455, + "paths": [ + "M0 0v1024h1024v-1024h-1024zM544 584v216h-64v-216l-175-328h72.6l134.4 252 134.4-252h72.6l-175 328z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hackernews", + "brand", + "ycombinator", + "yc", + "social" + ], + "defaultCode": 60103, + "grid": 16 + }, + { + "id": 456, + "paths": [ + "M966.8 233.6c0 3.2-1 6.2-3 9-2 2.6-4.2 4-6.8 4-20 2-36.4 8.4-49 19.2-12.8 10.8-25.8 31.8-39.2 62.4l-206.4 465.4c-1.4 4.4-5.2 6.4-11.4 6.4-4.8 0-8.6-2.2-11.4-6.4l-115.8-242-133.2 242c-2.8 4.4-6.4 6.4-11.4 6.4-6 0-9.8-2.2-11.8-6.4l-202.6-465.2c-12.6-28.8-26-49-40-60.4s-33.6-18.6-58.6-21.2c-2.2 0-4.2-1.2-6-3.4-2-2.2-2.8-4.8-2.8-7.8 0-7.6 2.2-11.4 6.4-11.4 18 0 37 0.8 56.8 2.4 18.4 1.6 35.6 2.4 51.8 2.4 16.4 0 36-0.8 58.4-2.4 23.4-1.6 44.2-2.4 62.4-2.4 4.4 0 6.4 3.8 6.4 11.4s-1.4 11.2-4 11.2c-18 1.4-32.4 6-42.8 13.8s-15.6 18-15.6 30.8c0 6.4 2.2 14.6 6.4 24.2l167.4 378.4 95.2-179.6-88.6-185.8c-16-33.2-29-54.6-39.2-64.2s-25.8-15.4-46.6-17.6c-2 0-3.6-1.2-5.4-3.4s-2.6-4.8-2.6-7.8c0-7.6 1.8-11.4 5.6-11.4 18 0 34.6 0.8 49.8 2.4 14.6 1.6 30 2.4 46.6 2.4 16.2 0 33.2-0.8 51.4-2.4 18.6-1.6 37-2.4 55-2.4 4.4 0 6.4 3.8 6.4 11.4s-1.2 11.2-4 11.2c-36.2 2.4-54.2 12.8-54.2 30.8 0 8 4.2 20.6 12.6 37.6l58.6 119 58.4-108.8c8-15.4 12.2-28.4 12.2-38.8 0-24.8-18-38-54.2-39.6-3.2 0-4.8-3.8-4.8-11.2 0-2.8 0.8-5.2 2.4-7.6s3.2-3.6 4.8-3.6c13 0 28.8 0.8 47.8 2.4 18 1.6 33 2.4 44.6 2.4 8.4 0 20.6-0.8 36.8-2 20.4-1.8 37.6-2.8 51.4-2.8 3.2 0 4.8 3.2 4.8 9.6 0 8.6-3 13-8.8 13-21 2.2-38 8-50.8 17.4s-28.8 30.8-48 64.4l-78.2 143.2 105.2 214.4 155.4-361.4c5.4-13.2 8-25.4 8-36.4 0-26.4-18-40.4-54.2-42.2-3.2 0-4.8-3.8-4.8-11.2 0-7.6 2.4-11.4 7.2-11.4 13.2 0 28.8 0.8 47 2.4 16.8 1.6 30.8 2.4 42 2.4 12 0 25.6-0.8 41.2-2.4 16.2-1.6 30.8-2.4 43.8-2.4 4 0 6 3.2 6 9.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wikipedia", + "brand" + ], + "defaultCode": 60104, + "grid": 16 + }, + { + "id": 457, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM384 832h-128v-448h128v448zM320 320c-35.4 0-64-28.6-64-64s28.6-64 64-64c35.4 0 64 28.6 64 64s-28.6 64-64 64zM832 832h-128v-256c0-35.4-28.6-64-64-64s-64 28.6-64 64v256h-128v-448h128v79.4c26.4-36.2 66.8-79.4 112-79.4 79.6 0 144 71.6 144 160v288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "linkedin", + "brand", + "social" + ], + "defaultCode": 60105, + "grid": 16 + }, + { + "id": 458, + "paths": [ + "M384 384h177.106v90.782h2.532c24.64-44.194 84.958-90.782 174.842-90.782 186.946 0 221.52 116.376 221.52 267.734v308.266h-184.61v-273.278c0-65.184-1.334-149.026-96.028-149.026-96.148 0-110.82 70.986-110.82 144.292v278.012h-184.542v-576z", + "M64 384h192v576h-192v-576z", + "M256 224c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "linkedin", + "brand", + "social" + ], + "defaultCode": 60106, + "grid": 16 + }, + { + "id": 459, + "paths": [ + "M451.6 766.2l-37.6-102c0 0-61 68-152.4 68-81 0-138.4-70.4-138.4-183 0-144.2 72.8-195.8 144.2-195.8 103.2 0 136 66.8 164.2 152.4l37.6 117.2c37.6 113.8 108 205.2 310.8 205.2 145.4 0 244-44.6 244-161.8 0-95-54-144.2-154.8-167.8l-75-16.4c-51.6-11.8-66.8-32.8-66.8-68 0-39.8 31.6-63.4 83.2-63.4 56.4 0 86.8 21.2 91.4 71.6l117.2-14c-9.4-105.6-82.2-149-201.8-149-105.6 0-208.8 39.8-208.8 167.8 0 79.8 38.8 130.2 136 153.6l79.8 18.8c59.8 14 79.8 38.8 79.8 72.8 0 43.4-42.2 61-122 61-118.4 0-167.8-62.2-195.8-147.8l-38.8-117.2c-49-152.6-127.6-208.8-283.6-208.8-172.4 0-264 109-264 294.4 0 178.2 91.4 274.4 255.8 274.4 132.4 0 195.8-62.2 195.8-62.2v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lastfm", + "brand", + "social" + ], + "defaultCode": 60107, + "grid": 16 + }, + { + "id": 460, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM746.6 760.8c-177.6 0-239.2-80-272-179.6l-32.8-102.6c-24.6-75-53.4-133.4-143.6-133.4-62.6 0-126.2 45.2-126.2 171.4 0 98.6 50.2 160.2 121.2 160.2 80 0 133.4-59.6 133.4-59.6l32.8 89.2c0 0-55.4 54.4-171.4 54.4-144 0-224-84-224-240 0-162.2 80-257.6 231-257.6 136.6 0 205.2 49.2 248.4 182.6l33.8 102.6c24.6 75 67.8 129.4 171.4 129.4 69.8 0 106.8-15.4 106.8-53.4 0-29.8-17.4-51.4-69.8-63.6l-69.8-16.4c-85.2-20.6-119-64.6-119-134.4 0-111.8 90.4-146.8 182.6-146.8 104.6 0 168.4 38 176.6 130.4l-102.6 12.4c-4.2-44.2-30.8-62.6-80-62.6-45.2 0-72.8 20.6-72.8 55.4 0 30.8 13.4 49.2 58.4 59.6l65.6 14.4c88.2 20.6 135.4 63.6 135.4 146.8 0 102.2-86.2 141.2-213.4 141.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lastfm", + "brand", + "social" + ], + "defaultCode": 60108, + "grid": 16 + }, + { + "id": 461, + "paths": [ + "M0 0v1024h1024v-1024h-1024zM512 960v-448h-448v-448h448v448h448v448h-448z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "delicious", + "brand", + "social" + ], + "defaultCode": 60109, + "grid": 16 + }, + { + "id": 462, + "paths": [ + "M512 320c-35.2 0-64 28.8-64 64v256c0 105.8-86.2 192-192 192s-192-86.2-192-192v-128h128v128c0 35.2 28.8 64 64 64s64-28.8 64-64v-256c0-105.8 86.2-192 192-192s192 86.2 192 178v62l-82 24-46-24v-62c0-21.2-28.8-50-64-50z", + "M960 640c0 105.8-86.2 192-192 192s-192-86.2-192-206v-124l46 24 82-24v124c0 49.2 28.8 78 64 78s64-28.8 64-64v-128h128v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stumbleupon", + "brand", + "social" + ], + "defaultCode": 60110, + "grid": 16 + }, + { + "id": 463, + "paths": [ + "M852 0h-680c-94.6 0-172 77.4-172 172v680c0 94.6 77.4 172 172 172h680c94.6 0 172-77.4 172-172v-680c0-94.6-77.4-172-172-172zM512 320c-35.29 0-64 28.71-64 64v256c0 105.872-86.13 192-192 192s-192-86.128-192-192v-128h128v128c0 35.29 28.71 64 64 64s64-28.71 64-64v-256c0-105.87 86.13-192 192-192s192 86.13 192 178v62l-82 24-46-24v-62c0-21.29-28.71-50-64-50zM960 640c0 105.872-86.13 192-192 192s-192-86.128-192-206v-124l46 24 82-24v124c0 49.29 28.71 78 64 78s64-28.71 64-64v-128h128v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stumbleupon", + "brand", + "social" + ], + "defaultCode": 60111, + "grid": 16 + }, + { + "id": 464, + "paths": [ + "M1024 640v384h-1024v-384h128v256h768v-256zM192 704h640v128h-640zM207.152 565.466l27.698-124.964 624.832 138.496-27.698 124.964zM279.658 308.558l54.092-116.006 580.032 270.464-54.092 116.006zM991.722 361.476l-77.922 101.55-507.746-389.608 56.336-73.418h58.244z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stackoverflow", + "brand", + "social" + ], + "defaultCode": 60112, + "grid": 16 + }, + { + "id": 465, + "paths": [ + "M512 68.4c-245 0-443.6 198.6-443.6 443.6 0 188 117 348.4 282 413-3.8-35-7.4-89 1.6-127.2 8-34.6 52-220.4 52-220.4s-13.2-26.6-13.2-65.8c0-61.6 35.8-107.8 80.2-107.8 37.8 0 56.2 28.4 56.2 62.4 0 38-24.2 95-36.8 147.6-10.6 44.2 22 80.2 65.6 80.2 78.8 0 139.4-83.2 139.4-203.2 0-106.2-76.4-180.4-185.2-180.4-126.2 0-200.2 94.6-200.2 192.6 0 38.2 14.6 79 33 101.2 3.6 4.4 4.2 8.2 3 12.8-3.4 14-10.8 44.2-12.4 50.4-2 8.2-6.4 9.8-14.8 6-55.4-25.8-90-106.8-90-171.8 0-140 101.6-268.4 293-268.4 153.8 0 273.4 109.6 273.4 256.2 0 152.8-96.4 276-230.2 276-45 0-87.2-23.4-101.6-51 0 0-22.2 84.6-27.6 105.4-10 38.6-37 86.8-55.2 116.2 41.6 12.8 85.6 19.8 131.4 19.8 245 0 443.6-198.6 443.6-443.6 0-245.2-198.6-443.8-443.6-443.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pinterest", + "brand", + "social" + ], + "defaultCode": 60113, + "grid": 16 + }, + { + "id": 466, + "paths": [ + "M512 0c-282.4 0-512 229.6-512 512s229.6 512 512 512 512-229.6 512-512-229.6-512-512-512zM512 955.6c-45.8 0-89.8-7-131.4-19.8 18-29.4 45.2-77.8 55.2-116.2 5.4-20.8 27.6-105.4 27.6-105.4 14.4 27.6 56.8 51 101.6 51 133.8 0 230.2-123 230.2-276 0-146.6-119.6-256.2-273.4-256.2-191.4 0-293 128.6-293 268.4 0 65 34.6 146 90 171.8 8.4 4 12.8 2.2 14.8-6 1.4-6.2 9-36.2 12.4-50.4 1-4.4 0.6-8.4-3-12.8-18.4-22.2-33-63.2-33-101.2 0-97.8 74-192.6 200.2-192.6 109 0 185.2 74.2 185.2 180.4 0 120-60.6 203.2-139.4 203.2-43.6 0-76.2-36-65.6-80.2 12.6-52.8 36.8-109.6 36.8-147.6 0-34-18.2-62.4-56.2-62.4-44.6 0-80.2 46-80.2 107.8 0 39.2 13.2 65.8 13.2 65.8s-44 185.8-52 220.4c-9 38.4-5.4 92.2-1.6 127.2-165-64.4-282-224.8-282-412.8 0-245 198.6-443.6 443.6-443.6s443.6 198.6 443.6 443.6c0 245-198.6 443.6-443.6 443.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pinterest", + "brand", + "social" + ], + "defaultCode": 60114, + "grid": 16 + }, + { + "id": 467, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM312.6 666h-110.6c-6.6 0-11.6-3-14.4-7.6-3-4.8-3-10.8 0-17l117.6-207.6c0.2-0.2 0.2-0.4 0-0.6l-74.8-129.6c-3-6.2-3.6-12.2-0.6-17 2.8-4.6 8.4-7 15.2-7h110.8c17 0 25.4 11 30.8 20.8 0 0 75.6 132 76.2 132.8-4.4 8-119.6 211.4-119.6 211.4-6 10.4-14 21.4-30.6 21.4zM836.4 152.2l-245.2 433.6c-0.2 0.2-0.2 0.6 0 0.8l156.2 285.2c3 6.2 3.2 12.4 0.2 17.2-2.8 4.6-8 7-14.8 7h-110.6c-17 0-25.4-11.2-31-21 0 0-157-288-157.4-288.8 7.8-13.8 246.4-437 246.4-437 6-10.6 13.2-21 29.6-21h112.2c6.6 0 12 2.6 14.8 7 2.8 4.6 2.8 10.8-0.4 17z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "xing", + "brand", + "social" + ], + "defaultCode": 60115, + "grid": 16 + }, + { + "id": 468, + "paths": [ + "M155.6 202.2c-8.8 0-16.4 3.2-20.2 9.2-3.8 6.4-3.2 14.4 0.8 22.6l99.8 172.8c0.2 0.4 0.2 0.6 0 0.8l-156.8 277.2c-4 8.2-3.8 16.4 0 22.6 3.8 6 10.4 10 19.2 10h147.6c22 0 32.8-15 40.2-28.6 0 0 153.4-271.4 159.4-282-0.6-1-101.6-177-101.6-177-7.4-13-18.4-27.6-41.2-27.6h-147.2z", + "M776 0c-22 0-31.6 13.8-39.6 28.2 0 0-318.2 564.2-328.6 582.8 0.6 1 209.8 385 209.8 385 7.4 13 18.6 28.2 41.2 28.2h147.6c8.8 0 15.8-3.4 19.6-9.4 4-6.4 3.8-14.6-0.4-22.8l-208-380.6c-0.2-0.4-0.2-0.6 0-1l327-578.2c4-8.2 4.2-16.4 0.4-22.8-3.8-6-10.8-9.4-19.6-9.4h-149.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "xing", + "brand", + "social" + ], + "defaultCode": 60116, + "grid": 16 + }, + { + "id": 469, + "paths": [ + "M367.562 0c-243.358 0-367.562 140.162-367.562 401.856v0 549.034l238.39-238.628v-278.896c0-108.416 28.73-177.406 125.118-192.894v0c33.672-6.584 103.75-4.278 148.306-4.278v0 165.596c0 1.51 0.208 4.206 0.594 5.586v0c1.87 6.704 7.93 11.616 15.116 11.63v0c4.062 0.008 7.868-2.104 11.79-5.97v0l413.122-412.974-584.874-0.062zM785.61 311.746v278.89c0 108.414-28.736 177.414-125.116 192.894v0c-33.672 6.582-103.756 4.278-148.312 4.278v0-165.594c0-1.5-0.206-4.204-0.594-5.582v0c-1.864-6.712-7.922-11.622-15.112-11.63v0c-4.064-0.008-7.866 2.112-11.79 5.966v0l-413.124 412.966 584.874 0.066c243.354 0 367.564-140.168 367.564-401.852v0-549.028l-238.39 238.626z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flattr", + "brand", + "donate", + "social" + ], + "defaultCode": 60117, + "grid": 16 + }, + { + "id": 470, + "paths": [ + "M851.564 90.090c-12.060-16.404-31.204-26.090-51.564-26.090h-608c-35.346 0-64 28.654-64 64v768c0 25.884 15.592 49.222 39.508 59.128 7.918 3.28 16.234 4.874 24.478 4.874 16.656 0 33.026-6.504 45.268-18.748l237.256-237.254h165.49c27.992 0 52.736-18.192 61.086-44.91l160-512c6.074-19.432 2.538-40.596-9.522-57zM672.948 320h-224.948c-35.346 0-64 28.654-64 64s28.654 64 64 64h184.948l-40 128h-144.948c-16.974 0-33.252 6.742-45.254 18.746l-146.746 146.744v-549.49h456.948l-40 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "foursquare", + "brand", + "social" + ], + "defaultCode": 60118, + "grid": 16 + }, + { + "id": 471, + "paths": [ + "M608.876 653.468c-17.282 17.426-2.668 49.128-2.668 49.128l130.090 217.218c0 0 21.36 28.64 39.864 28.64 18.59 0 36.954-15.27 36.954-15.27l102.844-147.008c0 0 10.36-18.546 10.598-34.792 0.372-23.106-34.454-29.434-34.454-29.434l-243.488-78.192c-0.002 0.004-23.858-6.328-39.74 9.71zM596.532 543.984c12.46 21.128 46.828 14.972 46.828 14.972l242.938-71.006c0 0 33.106-13.466 37.832-31.418 4.64-17.954-5.46-39.622-5.46-39.622l-116.098-136.752c0 0-10.062-17.292-30.938-19.032-23.016-1.958-37.18 25.898-37.18 25.898l-137.27 216.010c0 0.004-12.134 21.516-0.652 40.95zM481.754 459.768c28.608-7.044 33.148-48.604 33.148-48.604l-1.944-345.87c0 0-4.314-42.666-23.486-54.232-30.070-18.242-38.982-8.718-47.596-7.444l-201.696 74.944c0 0-19.754 6.536-30.042 23.018-14.69 23.352 14.928 57.544 14.928 57.544l209.644 285.756c0 0 20.69 21.396 47.044 14.888zM431.944 599.738c0.722-26.676-32.030-42.7-32.030-42.7l-216.796-109.524c0 0-32.126-13.246-47.722-4.016-11.95 7.060-22.536 19.84-23.572 31.134l-14.12 173.812c0 0-2.116 30.114 5.69 43.82 11.054 19.442 47.428 5.902 47.428 5.902l253.096-55.942c9.832-6.61 27.074-7.204 28.026-42.486zM494.88 693.542c-21.726-11.156-47.724 11.95-47.724 11.95l-169.468 186.566c0 0-21.144 28.528-15.768 46.050 5.066 16.418 13.454 24.578 25.318 30.328l170.192 53.726c0 0 20.634 4.286 36.258-0.242 22.18-6.43 18.094-41.152 18.094-41.152l3.848-252.602c-0.002 0.002-0.868-24.334-20.75-34.624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "yelp", + "brand", + "social" + ], + "defaultCode": 60119, + "grid": 16 + }, + { + "id": 472, + "paths": [ + "M930 308.6c-47.8 212.2-195.4 324.2-428 324.2h-77.4l-53.8 341.6h-64.8l-3.4 22c-2.2 14.6 9 27.6 23.6 27.6h165.6c19.6 0 36.2-14.2 39.4-33.6l1.6-8.4 31.2-197.8 2-10.8c3-19.4 19.8-33.6 39.4-33.6h24.6c160.4 0 286-65.2 322.8-253.6 13.8-71.6 8.6-132.4-22.8-177.6z", + "M831 77.2c-47.4-54-133.2-77.2-242.8-77.2h-318.2c-22.4 0-41.6 16.2-45 38.4l-132.6 840.4c-2.6 16.6 10.2 31.6 27 31.6h196.6l49.4-313-1.6 9.8c3.4-22.2 22.4-38.4 44.8-38.4h93.4c183.4 0 327-74.4 369-290 1.2-6.4 2.4-12.6 3.2-18.6 12.4-79.6 0-134-43.2-183z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paypal", + "brand", + "donate" + ], + "defaultCode": 60120, + "grid": 16 + }, + { + "id": 473, + "paths": [ + "M258.278 446.542l-146.532-253.802c93.818-117.464 238.234-192.74 400.254-192.74 187.432 0 351.31 100.736 440.532 251h-417.77c-7.504-0.65-15.092-1-22.762-1-121.874 0-224.578 83.644-253.722 196.542zM695.306 325h293.46c22.74 57.93 35.234 121.004 35.234 187 0 280.826-226.1 508.804-506.186 511.926l209.394-362.678c29.48-42.378 46.792-93.826 46.792-149.248 0-73.17-30.164-139.42-78.694-187zM326 512c0-102.56 83.44-186 186-186s186 83.44 186 186c0 102.56-83.44 186-186 186s-186-83.44-186-186zM582.182 764.442l-146.578 253.878c-246.532-36.884-435.604-249.516-435.604-506.32 0-91.218 23.884-176.846 65.696-251.024l209.030 362.054c41.868 89.112 132.476 150.97 237.274 150.97 24.3 0 47.836-3.34 70.182-9.558z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "chrome", + "browser", + "internet", + "brand" + ], + "defaultCode": 60121, + "grid": 16 + }, + { + "id": 474, + "paths": [ + "M1022.526 334.14l-11.86 76.080c0 0-16.954-140.856-37.732-193.514-31.846-80.688-46.014-80.040-46.108-79.922 21.33 54.204 17.462 83.324 17.462 83.324s-37.792-102.998-137.712-135.768c-110.686-36.282-170.57-26.364-177.488-24.486-1.050-0.008-2.064-0.010-3.030-0.010 0.818 0.062 1.612 0.146 2.426 0.212-0.034 0.020-0.090 0.042-0.082 0.052 0.45 0.548 122.306 21.302 143.916 50.996 0 0-51.76 0-103.272 14.842-2.328 0.666 189.524 23.964 228.746 215.674 0 0-21.030-43.876-47.040-51.328 17.106 52.036 12.714 150.776-3.576 199.85-2.096 6.312-4.24-27.282-36.328-41.75 10.28 73.646-0.616 190.456-51.708 222.632-3.982 2.504 32.030-115.31 7.242-69.762-142.708 218.802-311.404 100.972-387.248 49.11 38.866 8.462 112.654-1.318 145.314-25.612 0.042-0.030 0.078-0.056 0.118-0.086 35.468-24.252 56.472-41.964 75.334-37.772 18.874 4.214 31.438-14.726 16.78-31.53-14.676-16.838-50.314-39.978-98.524-27.366-34 8.904-76.134 46.522-140.448 8.432-49.364-29.25-54.012-53.546-54.45-70.376 1.218-5.966 2.754-11.536 4.576-16.624 5.682-15.87 22.912-20.658 32.494-24.438 16.256 2.792 30.262 7.862 44.968 15.406 0.19-4.894 0.252-11.39-0.018-18.76 1.41-2.802 0.538-11.252-1.722-21.58-1.302-10.308-3.42-20.974-6.752-30.692 0.012-0.002 0.020-0.010 0.030-0.014 0.056-0.018 0.108-0.040 0.156-0.070 0.078-0.044 0.146-0.112 0.208-0.19 0.012-0.020 0.030-0.034 0.044-0.052 0.082-0.124 0.154-0.272 0.198-0.466 1.020-4.618 12.022-13.524 25.718-23.1 12.272-8.58 26.702-17.696 38.068-24.752 10.060-6.248 17.72-10.882 19.346-12.098 0.618-0.466 1.358-1.012 2.164-1.636 0.15-0.116 0.3-0.232 0.454-0.354 0.094-0.074 0.19-0.148 0.286-0.226 5.41-4.308 13.484-12.448 15.178-29.578 0.004-0.042 0.010-0.080 0.012-0.122 0.050-0.504 0.092-1.014 0.13-1.534 0.028-0.362 0.050-0.726 0.072-1.096 0.014-0.284 0.032-0.566 0.044-0.856 0.030-0.674 0.050-1.364 0.060-2.064 0-0.040 0.002-0.076 0.004-0.116 0.022-1.658-0.006-3.386-0.104-5.202-0.054-1.014-0.126-1.93-0.298-2.762-0.008-0.044-0.018-0.092-0.028-0.136-0.018-0.082-0.036-0.164-0.058-0.244-0.036-0.146-0.076-0.292-0.122-0.43-0.006-0.018-0.010-0.032-0.016-0.046-0.052-0.16-0.112-0.314-0.174-0.464-0.004-0.006-0.004-0.010-0.006-0.016-1.754-4.108-8.32-5.658-35.442-6.118-0.026-0.002-0.050-0.002-0.076-0.002v0c-11.066-0.188-25.538-0.194-44.502-0.118-33.25 0.134-51.628-32.504-57.494-45.132 8.040-44.46 31.276-76.142 69.45-97.626 0.722-0.406 0.58-0.742-0.274-0.978 7.464-4.514-90.246-0.124-135.186 57.036-39.888-9.914-74.654-9.246-104.616-2.214-5.754-0.162-12.924-0.88-21.434-2.652-19.924-18.056-48.448-51.402-49.976-91.208 0 0-0.092 0.072-0.252 0.204-0.020-0.382-0.056-0.76-0.072-1.142 0 0-60.716 46.664-51.628 173.882-0.022 2.036-0.064 3.986-0.12 5.874-16.432 22.288-24.586 41.020-25.192 45.156-14.56 29.644-29.334 74.254-41.356 141.98 0 0 8.408-26.666 25.284-56.866-12.412 38.022-22.164 97.156-16.436 185.856 0 0 1.514-19.666 6.874-47.994 4.186 55.010 22.518 122.924 68.858 202.788 88.948 153.32 225.67 230.74 376.792 242.616 26.836 2.212 54.050 2.264 81.424 0.186 2.516-0.178 5.032-0.364 7.55-0.574 30.964-2.174 62.134-6.852 93.238-14.366 425.172-102.798 378.942-616.198 378.942-616.198z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "firefox", + "browser", + "internet", + "brand" + ], + "defaultCode": 60122, + "grid": 16 + }, + { + "id": 475, + "paths": [ + "M734.202 628.83h236.050c1.82-16.37 2.548-33.098 2.548-50.196 0-80.224-21.534-155.468-59.124-220.266 38.88-103.308 37.492-190.988-14.556-243.39-49.496-49.28-182.29-41.28-332.412 25.198-11.104-0.84-22.318-1.272-33.638-1.272-206.048 0-378.926 141.794-426.708 332.85 64.638-82.754 132.638-142.754 223.478-186.448-8.26 7.74-56.454 55.652-64.56 63.764-239.548 239.478-315.090 552.306-233.806 633.604 61.786 61.774 173.758 51.342 302.376-11.648 59.806 30.458 127.5 47.63 199.218 47.63 193.134 0 356.804-124.316 416.090-297.448h-237.868c-32.734 60.382-96.748 101.48-170.218 101.48-73.468 0-137.484-41.098-170.216-101.48-14.55-27.274-22.914-58.554-22.914-91.656v-0.722h386.26zM348.302 512.804c5.456-97.11 86.2-174.584 184.766-174.584s179.312 77.472 184.766 174.584h-369.532zM896.966 163.808c33.526 33.88 32.688 96.214 4.012 174.022-49.136-74.908-120.518-133.936-204.792-167.64 90.106-38.638 163.406-43.756 200.78-6.382zM93.482 967.256c-42.782-42.796-29.884-132.618 25.23-240.832 34.308 96.27 101.156 177.090 187.336 229.154-95.43 43.318-173.536 50.674-212.566 11.678z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "IE", + "browser", + "internet-explorer", + "brand" + ], + "defaultCode": 60123, + "grid": 16 + }, + { + "id": 476, + "paths": [ + "M15.4 454.6c30-236.8 191.6-451.6 481.2-454.6 174.8 3.4 318.6 82.6 404.2 233.6 43 78.8 56.4 161.6 59.2 253v107.4h-642.6c3 265 390 256 556.6 139.2v215.8c-97.6 58.6-319 111-490.4 43.6-146-54.8-250-207.6-249.4-354.6-4.8-190.6 94.8-316.8 249.4-388.6-32.8 40.6-57.8 85.4-70.8 163h362.8c0 0 21.2-216.8-205.4-216.8-213.6 7.4-367.6 131.6-454.8 259v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "edge", + "browser", + "brand" + ], + "defaultCode": 60124, + "grid": 16 + }, + { + "id": 477, + "paths": [ + "M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM958.4 472.8l-1-10.6c0.2 3.6 0.6 7 1 10.6zM888.4 268.8l-7.2-10.8c2.4 3.6 4.8 7.2 7.2 10.8zM860.6 230.6l-4.4-5.4c1.6 1.8 3 3.6 4.4 5.4zM798.6 167.6l-5.4-4.4c2 1.6 3.6 3 5.4 4.4zM766 142.8l-10.8-7.2c3.6 2.4 7.2 4.8 10.8 7.2zM561.8 66.8l-10.8-1c3.6 0.2 7.2 0.6 10.8 1zM472.8 65.6l-10.8 1c3.6-0.2 7.2-0.6 10.8-1zM268.8 135.6l-10.8 7.2c3.6-2.4 7.2-4.8 10.8-7.2zM230.6 163.4l-5.2 4.2c1.8-1.4 3.4-2.8 5.2-4.2zM167.6 225.4l-4.4 5.4c1.6-1.8 3-3.6 4.4-5.4zM142.8 258l-7.2 10.8c2.4-3.6 4.8-7.2 7.2-10.8zM66.8 462.2l-1 10.8c0.2-3.6 0.6-7.2 1-10.8zM65.6 551.2l1 10.8c-0.2-3.6-0.6-7.2-1-10.8zM135.6 755l7.2 10.8c-2.4-3.4-4.8-7-7.2-10.8zM144 767.6l79.8-53.4-8.8-13.4-79.8 53.4c-36.2-56.2-60-120.8-68-190.4l47.8-4.8-1.6-16-47.8 4.8c-0.8-9.2-1.2-18.6-1.4-28h96v-16h-96c0.2-9.4 0.6-18.6 1.4-28l47.8 4.6 1.6-16-47.8-4.6c8-69.6 32-134.2 68.2-190.4l79.8 53.4 8.8-13.4-80-53c5.4-7.6 10.8-15.2 16.6-22.4l37 30.4 10.2-12.4-37-30.4c6-7.2 12.4-14 18.8-20.8l67.8 67.8 11.4-11.4-67.8-67.8c6.8-6.4 13.6-12.8 20.6-18.8l30.4 37.2 12.4-10.2-30.4-37c7.4-5.8 14.8-11.4 22.4-16.8l53.4 79.8 13.4-8.8-53.4-79.8c56.2-36.2 120.8-60 190.4-68l4.8 47.8 16-1.6-4.8-47.8c9.2-0.8 18.6-1.2 28-1.4v96h16v-96c9.4 0.2 18.6 0.6 28 1.4l-4.6 47.8 16 1.6 4.6-47.8c69.6 8 134.2 32 190.4 68.2l-53.4 79.8 13.4 8.8 53.4-79.8c7.6 5.4 15.2 10.8 22.4 16.6l-30.4 37 12.4 10.2 30.4-37c7.2 6 14 12.4 20.8 18.8l-25.6 25-350 233.4-233.4 350-25 25c-6.4-6.8-12.8-13.6-18.8-20.6l37-30.4-10.2-12.4-37 30.4c-5.8-7.2-11.2-14.8-16.6-22.4zM167.6 798.6c-1.4-1.8-2.8-3.4-4.2-5.2l4.2 5.2zM225.4 856.4l5.2 4.2c-1.8-1.4-3.4-2.8-5.2-4.2zM258 881l10.8 7.2c-3.6-2.2-7.2-4.6-10.8-7.2zM462.2 957.2l10.8 1c-3.6-0.2-7.2-0.6-10.8-1zM551.2 958.4l10.6-1c-3.6 0.2-7 0.6-10.6 1zM755.2 888.4l10.8-7.2c-3.6 2.4-7.2 4.8-10.8 7.2zM793.4 860.6l5.4-4.4c-1.8 1.6-3.6 3-5.4 4.4zM828.4 829.2l0.8-0.8c-0.2 0.2-0.6 0.6-0.8 0.8zM856.4 798.6l4.4-5.4c-1.6 1.8-3 3.6-4.4 5.4zM863.4 790l-37-30.4-10.2 12.4 37 30.4c-6 7.2-12.4 14-18.8 20.8l-67.8-67.8-11.4 11.4 67.8 67.8c-6.8 6.4-13.6 12.8-20.6 18.8l-30.4-37.2-12.4 10.2 30.4 37c-7.4 5.8-14.8 11.4-22.4 16.8l-53.4-79.8-13.4 8.8 53.4 79.8c-56.2 36.2-120.8 60-190.4 68l-4.8-47.8-16 1.6 4.8 47.8c-9.2 0.8-18.6 1.2-28 1.4v-96h-16v96c-9.4-0.2-18.6-0.6-28-1.4l4.6-47.8-16-1.6-4.6 47.8c-69.6-8-134.2-32-190.4-68.2l53.4-79.8-13.4-8.8-53 79.8c-7.6-5.4-15.2-10.8-22.4-16.6l30.4-37-12.4-10.2-30.4 37c-7.2-6-14-12.4-20.8-18.8l25.2-25 350-233.4 233.4-350 25-25c6.4 6.8 12.8 13.6 18.8 20.6l-37 30.4 10.2 12.4 37-30.4c5.8 7.4 11.4 14.8 16.8 22.4l-79.8 53.4 8.8 13.4 79.8-53.4c36.2 56.2 60 120.8 68 190.4l-47.8 4.8 1.6 16 47.8-4.8c0.8 9.2 1.2 18.6 1.4 28h-96v16h96c-0.2 9.4-0.6 18.6-1.4 28l-47.8-4.6-1.6 16 47.8 4.6c-8 69.6-32 134.2-68.2 190.4l-79.8-53.4-8.8 13.4 79.8 53.4c-5.2 7.2-10.8 14.6-16.6 22zM958.4 551c-0.4 3.6-0.6 7.2-1 10.8l1-10.8zM888.4 755.2c-2.4 3.6-4.8 7.2-7.2 10.8l7.2-10.8z", + "M432.535 71.075l18.73 94.157-15.693 3.122-18.73-94.157 15.693-3.122z", + "M591.656 952.95l-18.73-94.157 15.693-3.122 18.73 94.157-15.693 3.122z", + "M389.628 80.89l13.939 45.931-15.31 4.646-13.939-45.931 15.31-4.646z", + "M634.434 942.887l-13.939-45.931 15.31-4.646 13.939 45.931-15.31 4.646z", + "M348.014 95.099l36.739 88.694-14.782 6.123-36.739-88.694 14.782-6.123z", + "M676.123 928.965l-36.739-88.694 14.782-6.123 36.739 88.694-14.782 6.123z", + "M293.62 120.659l14.11-7.544 22.632 42.331-14.11 7.544-22.632-42.331z", + "M730.101 903.289l-14.11 7.544-22.632-42.331 14.11-7.544 22.632 42.331z", + "M120.601 293.826l42.336 22.622-7.541 14.112-42.336-22.622 7.541-14.112z", + "M903.244 730.195l-42.336-22.622 7.541-14.112 42.336 22.622-7.541 14.112z", + "M183.811 384.623l-88.694-36.739 6.123-14.782 88.694 36.739-6.123 14.782z", + "M840.32 639.301l88.694 36.739-6.123 14.782-88.694-36.739 6.123-14.782z", + "M85.543 374.387l45.936 13.93-4.643 15.312-45.936-13.93 4.643-15.312z", + "M938.308 649.667l-45.936-13.93 4.643-15.312 45.936 13.93-4.643 15.312z", + "M74.069 416.782l94.157 18.73-3.122 15.693-94.157-18.73 3.122-15.693z", + "M949.741 607.243l-94.157-18.73 3.122-15.693 94.157 18.73-3.122 15.693z", + "M70.965 591.548l94.157-18.73 3.122 15.693-94.157 18.73-3.122-15.693z", + "M952.842 432.427l-94.157 18.73-3.122-15.693 94.157-18.73 3.122 15.693z", + "M80.974 634.514l45.931-13.939 4.646 15.31-45.931 13.939-4.646-15.31z", + "M942.969 389.707l-45.931 13.939-4.646-15.31 45.931-13.939 4.646 15.31z", + "M101.142 690.912l-6.123-14.782 88.694-36.739 6.123 14.782-88.694 36.739z", + "M922.794 333.231l6.122 14.782-88.694 36.73-6.122-14.782 88.694-36.73z", + "M120.824 730.267l-7.544-14.11 42.331-22.632 7.544 14.11-42.331 22.632z", + "M903.455 293.785l7.544 14.11-42.331 22.632-7.544-14.11 42.331-22.632z", + "M307.878 910.846l-14.11-7.542 22.627-42.331 14.11 7.542-22.627 42.331z", + "M716.073 113.074l14.112 7.541-22.622 42.336-14.112-7.541 22.622-42.336z", + "M333.267 922.799l36.739-88.694 14.782 6.123-36.739 88.694-14.782-6.123z", + "M690.884 101.11l-36.739 88.694-14.782-6.123 36.739-88.694 14.782 6.123z", + "M389.634 943.028l-15.31-4.645 13.934-45.931 15.31 4.645-13.934 45.931z", + "M634.349 80.882l15.312 4.642-13.925 45.936-15.312-4.642 13.925-45.936z", + "M432.472 952.839l-15.693-3.122 18.73-94.157 15.693 3.122-18.73 94.157z", + "M591.536 70.969l15.693 3.122-18.73 94.157-15.693-3.122 18.73-94.157z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "safari", + "browser", + "internet", + "brand" + ], + "defaultCode": 60125, + "grid": 16 + }, + { + "id": 478, + "paths": [ + "M1024 512v0 0c0 151.6-66 288-170.8 381.6-131.4 64-253.8 19.2-294.2-8.8 129-28.2 226.4-184.2 226.4-372.8s-97.4-344.6-226.4-373c40.6-28 163-72.8 294.2-8.8 104.8 93.8 170.8 230.2 170.8 381.8v0 0z", + "M343.4 223.4c-56.6 66.8-93.2 165.6-95.6 276.6 0 0.2 0 23.8 0 24.2 2.4 110.8 39.2 209.6 95.8 276.4 73.4 95.4 182.6 155.8 304.6 155.8 75 0 145.2-22.8 205.2-62.6-90.8 81-210.4 130.2-341.4 130.2-8.2 0-16.4-0.2-24.4-0.6-271.4-12.8-487.6-236.8-487.6-511.4 0-282.8 229.2-512 512-512 0.6 0 1.2 0 2 0 130.4 0.4 249.2 49.6 339.4 130.4-60-39.8-130.2-62.8-205.2-62.8-122 0-231.2 60.4-304.8 155.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "opera", + "browser", + "internet", + "brand" + ], + "defaultCode": 60126, + "grid": 16 + }, + { + "id": 479, + "paths": [ + "M842.012 589.48c-13.648-13.446-43.914-20.566-89.972-21.172-31.178-0.344-68.702 2.402-108.17 7.928-17.674-10.198-35.892-21.294-50.188-34.658-38.462-35.916-70.568-85.772-90.576-140.594 1.304-5.12 2.414-9.62 3.448-14.212 0 0 21.666-123.060 15.932-164.666-0.792-5.706-1.276-7.362-2.808-11.796l-1.882-4.834c-5.894-13.592-17.448-27.994-35.564-27.208l-10.916-0.344c-20.202 0-36.664 10.332-40.986 25.774-13.138 48.434 0.418 120.892 24.98 214.738l-6.288 15.286c-17.588 42.876-39.63 86.060-59.078 124.158l-2.528 4.954c-20.46 40.040-39.026 74.028-55.856 102.822l-17.376 9.188c-1.264 0.668-31.044 16.418-38.028 20.644-59.256 35.38-98.524 75.542-105.038 107.416-2.072 10.17-0.53 23.186 10.014 29.212l16.806 8.458c7.292 3.652 14.978 5.502 22.854 5.502 42.206 0 91.202-52.572 158.698-170.366 77.93-25.37 166.652-46.458 244.412-58.090 59.258 33.368 132.142 56.544 178.142 56.544 8.168 0 15.212-0.78 20.932-2.294 8.822-2.336 16.258-7.368 20.792-14.194 8.926-13.432 10.734-31.932 8.312-50.876-0.72-5.622-5.21-12.574-10.068-17.32zM211.646 814.048c7.698-21.042 38.16-62.644 83.206-99.556 2.832-2.296 9.808-8.832 16.194-14.902-47.104 75.124-78.648 105.066-99.4 114.458zM478.434 199.686c13.566 0 21.284 34.194 21.924 66.254s-6.858 54.56-16.158 71.208c-7.702-24.648-11.426-63.5-11.426-88.904 0 0-0.566-48.558 5.66-48.558v0zM398.852 637.494c9.45-16.916 19.282-34.756 29.33-53.678 24.492-46.316 39.958-82.556 51.478-112.346 22.91 41.684 51.444 77.12 84.984 105.512 4.186 3.542 8.62 7.102 13.276 10.65-68.21 13.496-127.164 29.91-179.068 49.862v0zM828.902 633.652c-4.152 2.598-16.052 4.1-23.708 4.1-24.708 0-55.272-11.294-98.126-29.666 16.468-1.218 31.562-1.838 45.102-1.838 24.782 0 32.12-0.108 56.35 6.072 24.228 6.18 24.538 18.734 20.382 21.332v0z", + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-pdf", + "file", + "file-format" + ], + "defaultCode": 60127, + "grid": 16 + }, + { + "id": 480, + "paths": [ + "M690.22 471.682c-60.668-28.652-137.97-34.42-194.834 6.048 69.14-6.604 144.958 4.838 195.106 57.124 48-55.080 124.116-65.406 192.958-59.732-57.488-38.144-133.22-33.024-193.23-3.44v0zM665.646 605.75c-68.376-1.578-134.434 23.172-191.1 60.104-107.176-45.588-242.736-37.124-334.002 38.982 26.33-0.934 52.006-7.446 78.056-10.792 95.182-9.488 196.588 14.142 268.512 79.824 29.772-43.542 71.644-78.242 119.652-99.922 63.074-30.52 134.16-33.684 202.82-34.52-41.688-28.648-94.614-33.954-143.938-33.676z", + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-openoffice", + "file", + "file-format" + ], + "defaultCode": 60128, + "grid": 16 + }, + { + "id": 481, + "paths": [ + "M639.778 475.892h44.21l-51.012 226.178-66.324-318.010h-106.55l-77.114 318.010-57.816-318.010h-111.394l113.092 511.88h108.838l76.294-302.708 68.256 302.708h100.336l129.628-511.88h-170.446v91.832z", + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-word", + "file", + "file-format", + "word", + "docx" + ], + "defaultCode": 60129, + "grid": 16 + }, + { + "id": 482, + "paths": [ + "M743.028 384h-135.292l-95.732 141.032-95.742-141.032h-135.29l162.162 242.464-182.972 269.536h251.838v-91.576h-50.156l50.156-74.994 111.396 166.57h140.444l-182.976-269.536 162.164-242.464z", + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-excel", + "file", + "file-format", + "xlc" + ], + "defaultCode": 60130, + "grid": 16 + }, + { + "id": 483, + "paths": [ + "M534.626 22.628c-12.444-12.444-37.026-22.628-54.626-22.628h-384c-17.6 0-32 14.4-32 32v960c0 17.6 14.4 32 32 32h768c17.6 0 32-14.4 32-32v-576c0-17.6-10.182-42.182-22.626-54.626l-338.748-338.746zM832 960h-704v-896h351.158c2.916 0.48 8.408 2.754 10.81 4.478l337.556 337.554c1.722 2.402 3.996 7.894 4.476 10.81v543.158zM864 0h-192c-17.6 0-21.818 10.182-9.374 22.626l210.746 210.746c12.446 12.446 22.628 8.228 22.628-9.372v-192c0-17.6-14.4-32-32-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "libreoffice", + "file", + "file-format" + ], + "defaultCode": 60131, + "grid": 16 + }, + { + "id": 484, + "paths": [ + "M60.538 0l82.144 921.63 368.756 102.37 369.724-102.524 82.3-921.476h-902.924zM784.63 301.428h-432.54l10.302 115.75h411.968l-31.042 347.010-231.844 64.254-231.572-64.254-15.83-177.512h113.494l8.048 90.232 125.862 33.916 0.278-0.078 125.934-33.992 13.070-146.55h-391.74l-30.494-341.8h566.214l-10.108 113.024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "html-five", + "w3c" + ], + "defaultCode": 60132, + "grid": 16 + }, + { + "id": 485, + "paths": [ + "M60.538 0l82.144 921.63 368.756 102.37 369.724-102.524 82.3-921.476h-902.924zM810.762 862.824l-297.226 82.376v0.466l-0.776-0.234-0.782 0.234v-0.466l-297.222-82.376-70.242-787.486h736.496l-70.248 787.486zM650.754 530.204l-13.070 146.552-126.21 34.070-125.862-33.916-8.050-90.234h-113.49l15.83 177.512 232.076 64.176 231.342-64.176 31.040-347.012h-411.966l-10.302-115.748h432.534l10.112-113.026h-566.218l30.498 341.802z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "html-five", + "w3c" + ], + "defaultCode": 60133, + "grid": 16 + }, + { + "id": 486, + "paths": [ + "M152.388 48.522l-34.36 171.926h699.748l-21.884 111.054h-700.188l-33.892 171.898h699.684l-39.018 196.064-282.012 93.422-244.4-93.422 16.728-85.042h-171.898l-40.896 206.352 404.226 154.704 466.006-154.704 153.768-772.252z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "css3", + "w3c" + ], + "defaultCode": 60134, + "grid": 16 + }, + { + "id": 487, + "paths": [ + "M1004.692 466.394l-447.096-447.080c-25.738-25.754-67.496-25.754-93.268 0l-103.882 103.876 78.17 78.17c12.532-5.996 26.564-9.36 41.384-9.36 53.020 0 96 42.98 96 96 0 14.82-3.364 28.854-9.362 41.386l127.976 127.974c12.532-5.996 26.566-9.36 41.386-9.36 53.020 0 96 42.98 96 96s-42.98 96-96 96-96-42.98-96-96c0-14.82 3.364-28.854 9.362-41.386l-127.976-127.974c-3.042 1.456-6.176 2.742-9.384 3.876v266.968c37.282 13.182 64 48.718 64 90.516 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-41.796 26.718-77.334 64-90.516v-266.968c-37.282-13.18-64-48.72-64-90.516 0-14.82 3.364-28.852 9.36-41.384l-78.17-78.17-295.892 295.876c-25.75 25.776-25.75 67.534 0 93.288l447.12 447.080c25.738 25.75 67.484 25.75 93.268 0l445.006-445.006c25.758-25.762 25.758-67.54-0.002-93.29z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "git", + "brand" + ], + "defaultCode": 60135, + "grid": 16 + }, + { + "id": 488, + "paths": [ + "M945.75 368.042l-448-298.666c-10.748-7.166-24.752-7.166-35.5 0l-448 298.666c-8.902 5.934-14.25 15.926-14.25 26.624v298.666c0 10.7 5.348 20.692 14.25 26.624l448 298.666c5.374 3.584 11.562 5.376 17.75 5.376s12.376-1.792 17.75-5.376l448-298.666c8.902-5.934 14.25-15.926 14.25-26.624v-298.666c0-10.698-5.348-20.69-14.25-26.624zM480 654.876l-166.312-110.876 166.312-110.874 166.312 110.874-166.312 110.876zM512 377.542v-221.75l358.31 238.876-166.31 110.874-192-128zM448 377.542l-192 128-166.312-110.874 358.312-238.876v221.75zM198.312 544l-134.312 89.542v-179.082l134.312 89.54zM256 582.458l192 128v221.748l-358.312-238.872 166.312-110.876zM512 710.458l192-128 166.312 110.876-358.312 238.874v-221.75zM761.688 544l134.312-89.54v179.084l-134.312-89.544z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "codepen", + "brand" + ], + "defaultCode": 60136, + "grid": 16 + }, + { + "id": 489, + "paths": [ + "M928 416c-28.428 0-53.958 12.366-71.536 32h-189.956l134.318-134.318c26.312 1.456 53.11-7.854 73.21-27.956 37.49-37.49 37.49-98.274 0-135.764s-98.274-37.49-135.766 0c-20.102 20.102-29.41 46.898-27.956 73.21l-134.314 134.318v-189.954c19.634-17.578 32-43.108 32-71.536 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 28.428 12.366 53.958 32 71.536v189.954l-134.318-134.318c1.454-26.312-7.856-53.11-27.958-73.21-37.49-37.49-98.274-37.49-135.764 0-37.49 37.492-37.49 98.274 0 135.764 20.102 20.102 46.898 29.412 73.212 27.956l134.32 134.318h-189.956c-17.578-19.634-43.108-32-71.536-32-53.020 0-96 42.98-96 96s42.98 96 96 96c28.428 0 53.958-12.366 71.536-32h189.956l-134.318 134.318c-26.314-1.456-53.11 7.854-73.212 27.956-37.49 37.492-37.49 98.276 0 135.766 37.492 37.49 98.274 37.49 135.764 0 20.102-20.102 29.412-46.898 27.958-73.21l134.316-134.32v189.956c-19.634 17.576-32 43.108-32 71.536 0 53.020 42.98 96 96 96s96-42.98 96-96c0-28.428-12.366-53.958-32-71.536v-189.956l134.318 134.318c-1.456 26.312 7.854 53.11 27.956 73.21 37.492 37.49 98.276 37.49 135.766 0s37.49-98.274 0-135.766c-20.102-20.102-46.898-29.41-73.21-27.956l-134.32-134.316h189.956c17.576 19.634 43.108 32 71.536 32 53.020 0 96-42.98 96-96s-42.982-96-96.002-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "svg" + ], + "defaultCode": 60137, + "grid": 16 + }, + { + "id": 490, + "paths": [ + "M259.544 511.998c0-65.416 53.030-118.446 118.446-118.446s118.446 53.030 118.446 118.446c0 65.416-53.030 118.446-118.446 118.446s-118.446-53.030-118.446-118.446zM512.004 0c-282.774 0-512.004 229.232-512.004 512s229.226 512 512.004 512c282.764 0 511.996-229.23 511.996-512 0-282.768-229.23-512-511.996-512zM379.396 959.282c-153.956-89.574-257.468-256.324-257.468-447.282s103.512-357.708 257.462-447.282c154.010 89.562 257.59 256.288 257.59 447.282 0 190.988-103.58 357.718-257.584 447.282z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "IcoMoon", + "icomoon", + "brand" + ], + "defaultCode": 60138, + "grid": 16 + } + ] + }, { "selection": [ { @@ -13,7 +11443,7 @@ "name": "database", "prevSize": 32, "code": 59649, - "tempChar": "" + "tempChar": "" } ], "id": 2, diff --git a/bin/testdatarunner.js b/bin/testdatarunner.js new file mode 100644 index 00000000000..a5043a67c83 --- /dev/null +++ b/bin/testdatarunner.js @@ -0,0 +1,117 @@ + +'use strict'; + +const axios = require('axios'); +const moment = require('moment'); +const crypto = require('crypto'); +const shasum = crypto.createHash('sha1'); + +const FIVE_MINUTES = 1000 * 60 * 5; + +if (process.argv.length < 4) { + console.error('This is an utility to send continuous CGM entry data to a test Nightscout server') + console.error('USAGE: node testdatarunner.js '); + process.exit(); +} + +const URL = process.argv[2]; +const SECRET = process.argv[3]; +shasum.update(SECRET); +const SECRET_SHA1 = shasum.digest('hex'); + +const HEADERS = {'api-secret': SECRET_SHA1}; + +const ENTRIES_URL = URL + '/api/v1/entries'; + +var done = (function wait () { if (!done) setTimeout(wait, 1000); })(); + +console.log('NS data filler active'); + +const entry = { + device: 'Dev simulator', + date: 1609061083612, + dateString: '2020-12-27T09:24:43.612Z', + sgv: 100, + delta: 0, + direction: 'Flat', + type: 'sgv' +}; + +function addEntry () { + console.log('Sending add new entry'); + sendEntry(Date.now()); + setTimeout(addEntry, FIVE_MINUTES); +} + +function oscillator(time, frequency = 1, amplitude = 1, phase = 0, offset = 0){ + return Math.sin(time * frequency * Math.PI * 2 + phase * Math.PI * 2) * amplitude + offset; +} + +async function sendFail() { + try { + console.log('Sending fail'); + const response = await axios.post(ENTRIES_URL, entry, {headers: {'api-secret': 'incorrect' }}); + } catch (e) { } +} + +async function sendEntry (date) { + const m = moment(date); + entry.date = date; + entry.dateString = m.toISOString(); + entry.sgv = 100 + Math.round(oscillator(date / 1000, 1/(60*60), 30)); + + console.log('Adding entry', entry); + const response = await axios.post(ENTRIES_URL, entry, {headers: HEADERS}); + + if (date > Date.now() - 5000) sendFail(); +} + +(async () => { + try { + console.log('GETTING', ENTRIES_URL); + const response = await axios.get(ENTRIES_URL, {headers: HEADERS} ); + const latestEntry = response.data ? response.data[0] : null; + + if (!latestEntry) { + // Fill in history + console.log('I would fill in history'); + const totalToSave = 24; + const now = Date.now(); + const start = now - ( totalToSave * FIVE_MINUTES); + let current = start; + while (current <= now) { + await sendEntry(current); + current += FIVE_MINUTES; + } + + setTimeout(addEntry, 1000*60*5); + + } else { + let latestDate = latestEntry.date; + const now = Date.now(); + if ((now - latestDate) > FIVE_MINUTES) { + console.log('We got data but it is older than 5 minutes, makign a partial fill'); + + let current = latestDate + FIVE_MINUTES; + + while (current < now) { + await sendEntry(current); + current += FIVE_MINUTES; + } + + latestDate = current; + + } else { + console.log('Looks like we got history, not filling'); + } + setTimeout(addEntry, Date.now() - latestDate); + } + + sendFail(); + sendFail(); + + } catch (error) { + console.log(error.response.data); + } + })(); + diff --git a/env.js b/env.js index 275271bdf26..ccd9ebb48e4 100644 --- a/env.js +++ b/env.js @@ -1,16 +1,19 @@ 'use strict'; -var _each = require('lodash/each'); -var _trim = require('lodash/trim'); -var _forIn = require('lodash/forIn'); -var _startsWith = require('lodash/startsWith'); -var _camelCase = require('lodash/camelCase'); +const _each = require('lodash/each'); +const _trim = require('lodash/trim'); +const _forIn = require('lodash/forIn'); +const _startsWith = require('lodash/startsWith'); +const _camelCase = require('lodash/camelCase'); -var fs = require('fs'); -var crypto = require('crypto'); -var consts = require('./lib/constants'); +const owasp = require('owasp-password-strength-test'); -var env = { + +const fs = require('fs'); +const crypto = require('crypto'); +const consts = require('./lib/constants'); + +const env = { settings: require('./lib/settings')() }; @@ -36,9 +39,8 @@ function config ( ) { minify: readENVTruthy('DEBUG_MINIFY', true) }; - if (env.err) { - delete env.err; - } + env.err = []; + env.notifies = []; setSSL(); setAPISecret(); @@ -81,10 +83,21 @@ function setAPISecret() { if (readENV('API_SECRET').length < consts.MIN_PASSPHRASE_LENGTH) { var msg = ['API_SECRET should be at least', consts.MIN_PASSPHRASE_LENGTH, 'characters'].join(' '); console.error(msg); - env.err = {desc: msg}; + env.err.push({ desc: msg }); } else { var shasum = crypto.createHash('sha1'); shasum.update(readENV('API_SECRET')); + + var testresult = owasp.test(readENV('API_SECRET')); + const messages = testresult.errors; + + if (messages) { + messages.forEach(message => { + const m = message.replace('The password must', 'API_SECRET should'); + + env.notifies.push({persistent: true, title: 'Security issue', message: m + ' Please change your API_SECRET to reduce risk of unauthorized access.'}); + }); + } env.api_secret = shasum.digest('hex'); } } diff --git a/lib/adminnotifies.js b/lib/adminnotifies.js new file mode 100644 index 00000000000..b035779d672 --- /dev/null +++ b/lib/adminnotifies.js @@ -0,0 +1,52 @@ +'use strict'; + +const _ = require('lodash'); + +function init (ctx) { + + const adminnotifies = {}; + + adminnotifies.addNotify = function addnotify (notify) { + if (!notify) return; + + notify.title = notify.title || 'No title'; + notify.message = notify.message || 'No message'; + + const existingMessage = _.find(adminnotifies.notifies, function findExisting (obj) { + return obj.message == notify.message; + }); + + if (existingMessage) { + existingMessage.count += 1; + existingMessage.lastRecorded = Date.now(); + } else { + notify.count = 1; + notify.lastRecorded = Date.now(); + adminnotifies.notifies.push(notify); + } + } + + adminnotifies.getNotifies = function getNotifies () { + return adminnotifies.notifies; + } + + ctx.bus.on('admin-notify', adminnotifies.addNotify); + + adminnotifies.clean = function cleanNotifies () { + adminnotifies.notifies = _.filter(adminnotifies.notifies, function findExisting (obj) { + return obj.persistent || ((Date.now() - obj.lastRecorded) < 1000 * 60 * 60 * 12); + }); + } + + adminnotifies.cleanAll = function cleanAll() { + adminnotifies.notifies = []; + } + + adminnotifies.cleanAll(); + + ctx.bus.on('tick', adminnotifies.clean); + + return adminnotifies; +} + +module.exports = init; diff --git a/lib/api/adminnotifiesapi.js b/lib/api/adminnotifiesapi.js new file mode 100644 index 00000000000..7579d8e3a79 --- /dev/null +++ b/lib/api/adminnotifiesapi.js @@ -0,0 +1,35 @@ +'use strict'; + +const _ = require('lodash'); +const consts = require('../constants'); + +function configure (ctx) { + const express = require('express') + , api = express.Router(); + + api.get('/adminnotifies', function(req, res) { + ctx.authorization.resolveWithRequest(req, function resolved (err, result) { + + const isAdmin = ctx.authorization.checkMultiple('*:*:admin', result.shiros); //full admin permissions + const response = { + notifies: [] + , notifyCount: 0 + }; + + if (ctx.adminnotifies) { + const notifies = _.filter(ctx.adminnotifies.getNotifies(), function isOld (obj) { + return (obj.persistent || (Date.now() - obj.lastRecorded) < 1000 * 60 * 60 * 8); + }); + + if (isAdmin) { response.notifies = notifies } + response.notifyCount = notifies.length; + } + + res.sendJSONStatus(res, consts.HTTP_OK, response); + }); + }); + + return api; +} + +module.exports = configure; diff --git a/lib/api/devicestatus/index.js b/lib/api/devicestatus/index.js index 94dfb1c9385..ac056103003 100644 --- a/lib/api/devicestatus/index.js +++ b/lib/api/devicestatus/index.js @@ -67,6 +67,9 @@ function configure (app, wares, ctx, env) { function doPost (req, res) { var obj = req.body; + + ctx.purifier.purifyObject(obj); + ctx.devicestatus.create(obj, function(err, created) { if (err) { res.sendJSONStatus(res, consts.HTTP_INTERNAL_ERROR, 'Mongo Error', err); diff --git a/lib/api/entries/index.js b/lib/api/entries/index.js index 5075df6eded..f13ba9ed280 100644 --- a/lib/api/entries/index.js +++ b/lib/api/entries/index.js @@ -274,6 +274,11 @@ function configure (app, wares, ctx, env) { incoming = incoming.concat(req.body); } + for (let i = 0; i < incoming.length; i++) { + const e = incoming[i]; + ctx.purifier.purifyObject(e); + } + /** * @function persist * @returns {WritableStream} a writable persistent storage stream diff --git a/lib/api/index.js b/lib/api/index.js index 156ee367a86..ad1ef6c1da9 100644 --- a/lib/api/index.js +++ b/lib/api/index.js @@ -58,6 +58,9 @@ function create (env, ctx) { app.all('/activity*', require('./activity/')(app, wares, ctx)); app.use('/', wares.sendJSONStatus, require('./verifyauth')(ctx)); + + app.use('/', wares.sendJSONStatus, require('./adminnotifiesapi')(ctx)); + app.all('/food*', require('./food/')(app, wares, ctx)); // Status first diff --git a/lib/api/profile/index.js b/lib/api/profile/index.js index d00122f16bd..7add11f4b21 100644 --- a/lib/api/profile/index.js +++ b/lib/api/profile/index.js @@ -61,6 +61,7 @@ function configure (app, wares, ctx) { // create new record api.post('/profile/', ctx.authorization.isPermitted('api:profile:create'), function(req, res) { var data = req.body; + ctx.purifier.purifyObject(data); ctx.profile.create(data, function (err, created) { if (err) { res.sendJSONStatus(res, consts.HTTP_INTERNAL_ERROR, 'Mongo Error', err); diff --git a/lib/api/treatments/index.js b/lib/api/treatments/index.js index 0e1d8a0ede8..c5d71bc917e 100644 --- a/lib/api/treatments/index.js +++ b/lib/api/treatments/index.js @@ -119,6 +119,8 @@ function configure (app, wares, ctx, env) { t.created_at = new Date().toISOString(); } + ctx.purifier.purifyObject(t); + /* if (!t.created_at) { console.log('Trying to create treatment without created_at field', t); diff --git a/lib/authorization/delaylist.js b/lib/authorization/delaylist.js index 19e45985baa..fe6c8096153 100644 --- a/lib/authorization/delaylist.js +++ b/lib/authorization/delaylist.js @@ -9,8 +9,6 @@ function init (env) { const DELAY_ON_FAIL = _.get(env, 'settings.authFailDelay') || 5000; const FAIL_AGE = 60000; - const sleep = require('util').promisify(setTimeout); - ipDelayList.addFailedRequest = function addFailedRequest (ip) { const ipString = String(ip); let entry = ipDelayList[ipString]; diff --git a/lib/authorization/index.js b/lib/authorization/index.js index 5935a2332d3..31e42b242e8 100644 --- a/lib/authorization/index.js +++ b/lib/authorization/index.js @@ -5,10 +5,8 @@ const jwt = require('jsonwebtoken'); const shiroTrie = require('shiro-trie'); const consts = require('./../constants'); - const sleep = require('util').promisify(setTimeout); - function getRemoteIP (req) { return req.headers['x-forwarded-for'] || req.connection.remoteAddress; } @@ -208,7 +206,13 @@ function init (env, ctx) { console.error('Resolving secret/token to permissions failed'); addFailedRequest(data.ip); - if (callback) { callback('All validation failed', {}); } + + ctx.bus.emit('admin-notify', { + title: ctx.language.translate('Failed authentication') + , message: ctx.language.translate('A device at IP number') + ' ' + data.ip + ' ' + ctx.language.translate('attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?') + }); + + if (callback) { callback('All validation failed', {}); } return {}; }; diff --git a/lib/client/adminnotifiesclient.js b/lib/client/adminnotifiesclient.js new file mode 100644 index 00000000000..1e91ddc7cbd --- /dev/null +++ b/lib/client/adminnotifiesclient.js @@ -0,0 +1,100 @@ +'use strict'; + +function init (client, $) { + + var notifies = {}; + + client.notifies = notifies; + + notifies.notifies = []; + notifies.drawer = $('#adminNotifiesDrawer'); + notifies.button = $('#adminnotifies'); + + notifies.updateAdminNotifies = function updateAdminNotifies() { + + var src = '/api/v1/adminnotifies?t=' + new Date().getTime(); + + $.ajax({ + method: 'GET' + , url: src + , headers: client.headers() + }).done(function success (results) { + if (results.message) { + var m = results.message; + client.notifies.notifies = m.notifies; + client.notifies.notifyCount = m.notifyCount; + if (m.notifyCount > 0) { + notifies.button.show(); + } + } + window.setTimeout(notifies.updateAdminNotifies, 1000*60); + }).fail(function fail () { + console.error('Failed to load notifies'); + window.setTimeout(notifies.updateAdminNotifies, 1000*60); + }); + } + + notifies.updateAdminNotifies(); + + function wrapmessage(title, message, count, ago, persistent) { + let html = '

' + title + '

' + message + '

'; + + let additional = ''; + + if (count > 1) additional += 'Event repeated ' + count + ' times.' + ' '; + let units = 'minutes'; + if (ago > 60) { + ago = ago / 60; + units = 'hours'; + } + if (!persistent) additional += 'Last recorded ' + ago + ' '+ units + ' ago.'; + + if (additional) html += '

' + additional + '

' + return html; + } + + notifies.prepare = function prepare() { + + var translate = client.translate; + + var html = '
'; + var messages = client.notifies.notifies; + var messageCount = client.notifies.notifyCount; + + if (messages && messages.length > 0) { + html += '

' + translate('You have administration messages') + '

'; + for(var i = 0 ; i < messages.length; i++) { + var m = messages[i]; + const ago = Math.round((Date.now() - m.lastRecorded) / 60000); + html += wrapmessage(m.title, m.message, m.count, ago, m.persistent); + } + } else { + if (messageCount > 0) { + html = wrapmessage(translate('Admin messages in queue'), translate('Please sign in using the API_SECRET to see your administration messages')); + } else { + html = wrapmessage(translate('Queue empty'), translate('There are no admin messages in queue')); + } + } + html += '
'; + notifies.drawer.html(html); + } + + function maybePrevent (event) { + if (event) { + event.preventDefault(); + } + } + + notifies.toggleDrawer = function toggleDrawer (event) { + client.browserUtils.toggleDrawer('#adminNotifiesDrawer', notifies.prepare); + maybePrevent(event); + }; + + notifies.button.click(notifies.toggleDrawer); + notifies.button.css('color','red'); + + return notifies; + +} + +module.exports = init; diff --git a/lib/client/index.js b/lib/client/index.js index 31eca273ba5..16b08cf02a2 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -237,6 +237,8 @@ client.load = function load (serverSettings, callback) { //After plugins are initialized with browser settings; browserSettings.loadAndWireForm(); + client.adminnotifies = require('./adminnotifiesclient')(client, $); + if (serverSettings && serverSettings.authorized) { client.authorized = serverSettings.authorized; client.authorized.lat = Date.now(); @@ -266,6 +268,8 @@ client.load = function load (serverSettings, callback) { $('#treatmentDrawerToggle').toggle(treatmentCreateAllowed && client.settings.showPlugins.indexOf('careportal') > -1); $('#boluscalcDrawerToggle').toggle(treatmentCreateAllowed && client.settings.showPlugins.indexOf('boluscalc') > -1); + if (isAuthenticated) client.notifies.updateAdminNotifies(); + // Edit mode editButton.toggle(client.settings.editMode && treatmentUpdateAllowed); editButton.click(function editModeClick (event) { diff --git a/lib/server/bootevent.js b/lib/server/bootevent.js index 9a3c664dd17..5be45189759 100644 --- a/lib/server/bootevent.js +++ b/lib/server/bootevent.js @@ -1,8 +1,7 @@ 'use strict'; -var _ = require('lodash'); - -var UPDATE_THROTTLE = 5000; +const _ = require('lodash'); +const UPDATE_THROTTLE = 5000; function boot (env, language) { @@ -11,23 +10,19 @@ function boot (env, language) { console.log('Executing startBoot'); ctx.runtimeState = 'booting'; + ctx.bus = require('../bus')(env.settings, ctx); + ctx.adminnotifies = require('../adminnotifies')(ctx); + if (env.notifies) { + ctx.adminnotifies.addNotify(env.notifies[0]); // TODO iterate all + } + next(); } ////////////////////////////////////////////////// // Check Node version. - // Latest Node 8 LTS and Latest Node 10 LTS are recommended and supported. - // Latest Node version on Azure is tolerated, but not recommended - // Latest Node (non LTS) version works, but is not recommended + // Latest Node 10 to 14 LTS are recommended and supported. // Older Node versions or Node versions with known security issues will not work. - // More explicit: - // < 8 does not work, not supported - // >= 8.15.1 works, supported and recommended - // == 9.x does not work, not supported - // == 10.15.2 works, not fully supported and not recommended (Azure version) - // >= 10.16.0 works, supported and recommended - // == 11.x does not work, not supported - // >= 12.6.0 does work, not recommended, will not be supported. We only support Node LTS releases /////////////////////////////////////////////////// function checkNodeVersion (ctx, next) { @@ -56,7 +51,7 @@ function boot (env, language) { console.log('Executing checkEnv'); ctx.language = language; - if (env.err) { + if (env.err.length > 0) { ctx.bootErrors = ctx.bootErrors || [ ]; ctx.bootErrors.push({'desc': 'ENV Error', err: env.err}); } @@ -121,6 +116,15 @@ function boot (env, language) { err: 'API_SECRET setting is missing, cannot enable REST API'}); } + if (env.settings.authDefaultRoles == 'readable') { + const message = { + title: "Nightscout readable by world" + ,message: "Your Nightscout installation is readable by anyone who knows the web page URL. Please consider closing access to the site by following the instructions in the Nightscout documentation." + ,persistent: true + }; + ctx.adminnotifies.addNotify(message); + } + next(); } @@ -215,11 +219,11 @@ function boot (env, language) { ctx.food = require('./food')(env, ctx); ctx.pebble = require('./pebble')(env, ctx); ctx.properties = require('../api/properties')(env, ctx); - ctx.bus = require('../bus')(env.settings, ctx); ctx.ddata = require('../data/ddata')(); ctx.cache = require('./cache')(env,ctx); ctx.dataloader = require('../data/dataloader')(env, ctx); ctx.notifications = require('../notifications')(env, ctx); + ctx.purifier = require('./purifier')(env,ctx); if (env.settings.isEnabled('alexa') || env.settings.isEnabled('googlehome')) { ctx.virtAsstBase = require('../plugins/virtAsstBase')(env, ctx); diff --git a/lib/server/purifier.js b/lib/server/purifier.js new file mode 100644 index 00000000000..c9fe3c0230e --- /dev/null +++ b/lib/server/purifier.js @@ -0,0 +1,36 @@ +'use strict'; + +const createDOMPurify = require('dompurify'); +const { JSDOM } = require('jsdom'); +const window = new JSDOM('').window; +const DOMPurify = createDOMPurify(window); + +function init (env, ctx) { + + const purifier = {}; + + function iterate (obj) { + for (var property in obj) { + if (obj.hasOwnProperty(property)) { + if (typeof obj[property] == 'object') + iterate(obj[property]); + else + if (isNaN(obj[property])) { + const clean = DOMPurify.sanitize(obj[property]); + if (obj[property] !== clean) { + obj[property] = clean; + } + } + } + } + } + + purifier.purifyObject = function purifyObject (obj) { + return iterate(obj); + } + + return purifier; + +} + +module.exports = init; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 018c970c18d..765f8d59121 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1217,9 +1217,9 @@ }, "dependencies": { "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" } } }, @@ -1551,6 +1551,15 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dev": true, + "requires": { + "follow-redirects": "^1.10.0" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -2992,9 +3001,9 @@ }, "dependencies": { "abab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", - "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, "whatwg-url": { "version": "7.1.0", @@ -3171,6 +3180,11 @@ "webidl-conversions": "^4.0.2" } }, + "dompurify": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.6.tgz", + "integrity": "sha512-7b7ZArhhH0SP6W2R9cqK6RjaU82FZ2UPM7RO8qN1b1wyvC/NY1FNWcX1Pu00fFOAnzEORtwXe4bPaClg6pUybQ==" + }, "dot-prop": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", @@ -3566,6 +3580,18 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, "eslint": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", @@ -3761,6 +3787,11 @@ } } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", @@ -3793,6 +3824,11 @@ } } }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4075,6 +4111,11 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", @@ -4253,6 +4294,12 @@ "readable-stream": "^2.3.6" } }, + "follow-redirects": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", + "dev": true + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -5580,65 +5627,10 @@ "xml-name-validator": "^3.0.0" }, "dependencies": { - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true } } }, @@ -5792,6 +5784,15 @@ "leven": "^3.1.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -8551,6 +8552,19 @@ "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", "dev": true }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -8567,6 +8581,11 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "owasp-password-strength-test": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/owasp-password-strength-test/-/owasp-password-strength-test-1.3.0.tgz", + "integrity": "sha1-T2KeQpA+j20nmyMNZXq2HljkSxI=" + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -10340,6 +10359,12 @@ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + }, "source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", diff --git a/package.json b/package.json index 56adf27c4f4..63f765b4e3d 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,19 @@ "bundle-analyzer": "webpack --mode development --config webpack.config.js --profile --json > stats.json && webpack-bundle-analyzer stats.json", "update-buster": "node bin/generateCacheBuster.js >tmp/cacheBusterToken", "coverage": "cat ./coverage/lcov.info | env-cmd -f ./ci.test.env codacy-coverage", - "dev": "env-cmd -f ./my.env nodemon server.js 0.0.0.0", + "dev": "env-cmd -f ./my.env nodemon --inspect server.js 0.0.0.0", + "dev-test": "env-cmd -f ./my.devtest.env nodemon --inspect server.js 0.0.0.0", "prod": "env-cmd -f ./my.prod.env node server.js 0.0.0.0", "lint": "eslint lib" }, "main": "server.js", + "nodemonConfig": { + "ignore": [ + "tests/*", + "node_modules/*", + "bin/*" + ] + }, "config": { "blanket": { "pattern": [ @@ -75,6 +83,7 @@ "cssmin": "^0.4.3", "csv-stringify": "^5.5.1", "d3": "^5.16.0", + "dompurify": "^2.2.6", "easyxml": "^2.0.1", "ejs": "^2.7.4", "errorhandler": "^1.5.1", @@ -89,7 +98,7 @@ "jquery-ui-bundle": "^1.12.1-migrate", "jquery.tooltips": "^1.0.0", "js-storage": "^1.1.0", - "jsdom": "~11.11.0", + "jsdom": "^11.11.0", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.20", "memory-cache": "^0.2.0", @@ -102,6 +111,7 @@ "mongodb": "^3.6.0", "mongomock": "^0.1.2", "node-cache": "^4.2.1", + "owasp-password-strength-test": "^1.3.0", "parse-duration": "^0.1.3", "pem": "^1.14.4", "pushover-notifications": "^1.2.2", @@ -122,6 +132,7 @@ "webpack-cli": "^3.3.12" }, "devDependencies": { + "axios": "^0.21.1", "babel-eslint": "^10.1.0", "benv": "^3.3.0", "codacy-coverage": "^3.4.0", diff --git a/static/css/drawer.css b/static/css/drawer.css index 3e5e72542a4..7c54ee24663 100644 --- a/static/css/drawer.css +++ b/static/css/drawer.css @@ -49,7 +49,7 @@ input[type=number]:invalid { text-decoration: underline; } -#treatmentDrawer { +#treatmentDrawer, #adminNotifiesDrawer { background-color: #666; border-left: 1px solid #999; box-shadow: inset 4px 4px 5px 0 rgba(50, 50, 50, 0.75); @@ -66,6 +66,19 @@ input[type=number]:invalid { z-index: 1; } +#adminNotifyContent { + margin: 10px; +} + +.adminNotifyMessage { + margin-left: 10px; +} + +.adminNotifyMessageAdditionalInfo { + margin-left: 10px; + font-size: 11px; +} + #treatmentDrawer input { box-sizing: border-box; } diff --git a/static/css/main.css b/static/css/main.css index d6bee072d16..dd5abb9c9b4 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -9,15 +9,15 @@ font-style: normal; } -/* +/* Icon font for additional plugin icons. Please read assets/fonts/README.md about update process */ @font-face { font-family: 'pluginicons'; /* Plugin Icons font files content (from WOFF and SVG icon files, base64 encoded) */ - src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAWAAAsAAAAABTQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIE8mNtYXAAAAFoAAAAVAAAAFQXVdKJZ2FzcAAAAbwAAAAIAAAACAAAABBnbHlmAAABxAAAAUgAAAFIFA4eR2hlYWQAAAMMAAAANgAAADYXVLrVaGhlYQAAA0QAAAAkAAAAJAdQA8ZobXR4AAADaAAAABQAAAAUCY4AAGxvY2EAAAN8AAAADAAAAAwAKAC4bWF4cAAAA4gAAAAgAAAAIAAJAFxuYW1lAAADqAAAAbYAAAG2DBt7mXBvc3QAAAVgAAAAIAAAACAAAwAAAAMCxwGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA6QEDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADgAAAAKAAgAAgACAAEAIOkB//3//wAAAAAAIOkB//3//wAB/+MXAwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAwAA/8ADjgPAABsAOgBZAAABIgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmARUUFx4BFxYzMjc+ATc2PQEUBw4BBwYjIicuAScmNREVFBceARcWMzI3PgE3Nj0BFAcOAQcGIyInLgEnJjUBx15TU3skJCQke1NTXl5TU3wjJCQjfFNT/dskJHtTU15eU1N8IyQkI3xTU15eU1N7JCQkJHtTU15eU1N8IyQkI3xTU15eU1N7JCQDwBISPikpMC8pKj0SEhISPSopLzApKT4SEv6rqy8qKT4SEhISPikqL6svKik+EhISEj4pKi/+46owKSk+EhISEj4pKTCqLykqPhESEhE+KikvAAAAAAEAAAABAABgRbaTXw889QALBAAAAAAA2lO7LAAAAADaU7ssAAD/wAOOA8AAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAA44AAQAAAAAAAAAAAAAAAAAAAAUEAAAAAAAAAAAAAAACAAAAA44AAAAAAAAACgAUAB4ApAABAAAABQBaAAMAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEACwAAAAEAAAAAAAIABwCEAAEAAAAAAAMACwBCAAEAAAAAAAQACwCZAAEAAAAAAAUACwAhAAEAAAAAAAYACwBjAAEAAAAAAAoAGgC6AAMAAQQJAAEAFgALAAMAAQQJAAIADgCLAAMAAQQJAAMAFgBNAAMAAQQJAAQAFgCkAAMAAQQJAAUAFgAsAAMAAQQJAAYAFgBuAAMAAQQJAAoANADUcGx1Z2luaWNvbnMAcABsAHUAZwBpAG4AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwcGx1Z2luaWNvbnMAcABsAHUAZwBpAG4AaQBjAG8AbgBzcGx1Z2luaWNvbnMAcABsAHUAZwBpAG4AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQBycGx1Z2luaWNvbnMAcABsAHUAZwBpAG4AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format('woff'), - url(data:application/font-svg;charset=utf-8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiA+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8bWV0YWRhdGE+R2VuZXJhdGVkIGJ5IEljb01vb248L21ldGFkYXRhPg0KPGRlZnM+DQo8Zm9udCBpZD0icGx1Z2luaWNvbnMiIGhvcml6LWFkdi14PSIxMDI0Ij4NCjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMDI0IiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTY0IiAvPg0KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjEwMjQiIC8+DQo8Z2x5cGggdW5pY29kZT0iJiN4MjA7IiBob3Jpei1hZHYteD0iNTEyIiBkPSIiIC8+DQo8Z2x5cGggdW5pY29kZT0iJiN4ZTkwMTsiIGdseXBoLW5hbWU9ImRhdGFiYXNlIiBob3Jpei1hZHYteD0iOTEwIiBkPSJNNDU1LjExMSA5NjBjLTI1MS40NDkgMC00NTUuMTExLTEwMS44MzEtNDU1LjExMS0yMjcuNTU2czIwMy42NjItMjI3LjU1NiA0NTUuMTExLTIyNy41NTYgNDU1LjExMSAxMDEuODMxIDQ1NS4xMTEgMjI3LjU1Ni0yMDMuNjYyIDIyNy41NTYtNDU1LjExMSAyMjcuNTU2ek0wIDYxOC42Njd2LTE3MC42NjdjMC0xMjUuNzI0IDIwMy42NjItMjI3LjU1NiA0NTUuMTExLTIyNy41NTZzNDU1LjExMSAxMDEuODMxIDQ1NS4xMTEgMjI3LjU1NnYxNzAuNjY3YzAtMTI1LjcyNC0yMDMuNjYyLTIyNy41NTYtNDU1LjExMS0yMjcuNTU2cy00NTUuMTExIDEwMS44MzEtNDU1LjExMSAyMjcuNTU2ek0wIDMzNC4yMjJ2LTE3MC42NjdjMC0xMjUuNzI0IDIwMy42NjItMjI3LjU1NiA0NTUuMTExLTIyNy41NTZzNDU1LjExMSAxMDEuODMxIDQ1NS4xMTEgMjI3LjU1NnYxNzAuNjY3YzAtMTI1LjcyNC0yMDMuNjYyLTIyNy41NTYtNDU1LjExMS0yMjcuNTU2cy00NTUuMTExIDEwMS44MzEtNDU1LjExMSAyMjcuNTU2eiIgLz4NCjwvZm9udD48L2RlZnM+PC9zdmc+) format('svg'); + src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAcEAAsAAAAABrgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIFc2NtYXAAAAFoAAAAXAAAAFzpVumzZ2FzcAAAAcQAAAAIAAAACAAAABBnbHlmAAABzAAAAuwAAALs3l4nFmhlYWQAAAS4AAAANgAAADYbA9uPaGhlYQAABPAAAAAkAAAAJAfCA8dobXR4AAAFFAAAABgAAAAYDY4AAGxvY2EAAAUsAAAADgAAAA4BngC4bWF4cAAABTwAAAAgAAAAIAAMAJRuYW1lAAAFXAAAAYYAAAGGmUoJ+3Bvc3QAAAbkAAAAIAAAACAAAwAAAAMDLwGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA6RoDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEAEAAAAAMAAgAAgAEAAEAIOkB6Rr//f//AAAAAAAg6QHpGv/9//8AAf/jFwMW6wADAAEAAAAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAADAAD/wAOOA8AAGwA6AFkAAAEiBw4BBwYVFBceARcWMzI3PgE3NjU0Jy4BJyYBFRQXHgEXFjMyNz4BNzY9ARQHDgEHBiMiJy4BJyY1ERUUFx4BFxYzMjc+ATc2PQEUBw4BBwYjIicuAScmNQHHXlNTeyQkJCR7U1NeXlNTfCMkJCN8U1P92yQke1NTXl5TU3wjJCQjfFNTXl5TU3skJCQke1NTXl5TU3wjJCQjfFNTXl5TU3skJAPAEhI+KSkwLykqPRISEhI9KikvMCkpPhIS/qurLyopPhISEhI+KSovqy8qKT4SEhISPikqL/7jqjApKT4SEhISPikpMKovKSo+ERISET4qKS8AAAAABQAAAAIEAAOAACoATgBjAG0AkQAAATQnLgEnJic4ATEjMAcOAQcGBw4BFRQWFxYXHgEXFjEzMDQxMjc+ATc2NQMiJicuAScuATU0Njc+ATc+ATMyFhceARceARUUBgcOAQcOAQE0NjcOASMqATEHFRcwMjMyFhcuARcnEx4BPwE+AScBIiYnLgEnLgE1NDY3PgE3PgEzMhYXHgEXHgEVFAYHDgEHDgEEAAoLIxgYG1MiI35XWGkGCAgGaVhXfiMiUxsYGCMLCp8HDgQJEggSEhISCBIJBA4HBw4ECRIIERMTEQgSCQQO/ZQFBiRCJjMRNzcRMyZCJAYFdIBSAxYMdgwJBwF2AwUCAwcDBwcHBwMHAwIFAwMFAQQHAwcHBwcDBwQBBQITS0JDYx0cARgYQSMiFiJRLi9RIhUjIkIYGAEdHWNCQkz+ygsECyAVLndCQncuFCEKBQsLBQohFC53QkJ3LhUgCwQLATYnSyMFBV9YXwUFI0uuGP6/DQsFMAQXDAFCBQEEDQgRLhoZLhIIDAQCBAQCBAwIEi4ZGi4RCA0EAQUAAQAAAAAAAPoSCcNfDzz1AAsEAAAAAADb8suJAAAAANvyy4kAAP/ABAADwAAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAAEAAABAAAAAAAAAAAAAAAAAAAABgQAAAAAAAAAAAAAAAIAAAADjgAABAAAAAAAAAAACgAUAB4ApAF2AAAAAQAAAAYAkgAFAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGljb21vb24AaQBjAG8AbQBvAG8AblZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGljb21vb24AaQBjAG8AbQBvAG8Abmljb21vb24AaQBjAG8AbQBvAG8AblJlZ3VsYXIAUgBlAGcAdQBsAGEAcmljb21vb24AaQBjAG8AbQBvAG8AbkZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format('woff'), + url(data:application/font-svg;charset=utf-8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+R2VuZXJhdGVkIGJ5IEljb01vb248L21ldGFkYXRhPgo8ZGVmcz4KPGZvbnQgaWQ9Imljb21vb24iIGhvcml6LWFkdi14PSIxMDI0Ij4KPGZvbnQtZmFjZSB1bml0cy1wZXItZW09IjEwMjQiIGFzY2VudD0iOTYwIiBkZXNjZW50PSItNjQiIC8+CjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIxMDI0IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjA7IiBob3Jpei1hZHYteD0iNTEyIiBkPSIiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTAxOyIgZ2x5cGgtbmFtZT0iZGF0YWJhc2UiIGhvcml6LWFkdi14PSI5MTAiIGQ9Ik00NTUuMTExIDk2MGMtMjUxLjQ0OSAwLTQ1NS4xMTEtMTAxLjgzMS00NTUuMTExLTIyNy41NTZzMjAzLjY2Mi0yMjcuNTU2IDQ1NS4xMTEtMjI3LjU1NiA0NTUuMTExIDEwMS44MzEgNDU1LjExMSAyMjcuNTU2LTIwMy42NjIgMjI3LjU1Ni00NTUuMTExIDIyNy41NTZ6TTAgNjE4LjY2N3YtMTcwLjY2N2MwLTEyNS43MjQgMjAzLjY2Mi0yMjcuNTU2IDQ1NS4xMTEtMjI3LjU1NnM0NTUuMTExIDEwMS44MzEgNDU1LjExMSAyMjcuNTU2djE3MC42NjdjMC0xMjUuNzI0LTIwMy42NjItMjI3LjU1Ni00NTUuMTExLTIyNy41NTZzLTQ1NS4xMTEgMTAxLjgzMS00NTUuMTExIDIyNy41NTZ6TTAgMzM0LjIyMnYtMTcwLjY2N2MwLTEyNS43MjQgMjAzLjY2Mi0yMjcuNTU2IDQ1NS4xMTEtMjI3LjU1NnM0NTUuMTExIDEwMS44MzEgNDU1LjExMSAyMjcuNTU2djE3MC42NjdjMC0xMjUuNzI0LTIwMy42NjItMjI3LjU1Ni00NTUuMTExLTIyNy41NTZzLTQ1NS4xMTEgMTAxLjgzMS00NTUuMTExIDIyNy41NTZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkxYTsiIGdseXBoLW5hbWU9Im5vdGlmaWVzIiBkPSJNMTAyNCA1MzAuNzQ0YzAgMjAwLjkyNi01OC43OTIgMzYzLjkzOC0xMzEuNDgyIDM2NS4yMjYgMC4yOTIgMC4wMDYgMC41NzggMC4wMzAgMC44NzIgMC4wMzBoLTgyLjk0MmMwIDAtMTk0LjgtMTQ2LjMzNi00NzUuMjMtMjAzLjc1NC04LjU2LTQ1LjI5Mi0xNC4wMzAtOTkuMjc0LTE0LjAzMC0xNjEuNTAyczUuNDY2LTExNi4yMDggMTQuMDMwLTE2MS41YzI4MC40MjgtNTcuNDE4IDQ3NS4yMy0yMDMuNzU2IDQ3NS4yMy0yMDMuNzU2aDgyLjk0MmMtMC4yOTIgMC0wLjU3OCAwLjAyNC0wLjg3MiAwLjAzMiA3Mi42OTYgMS4yODggMTMxLjQ4MiAxNjQuMjk4IDEzMS40ODIgMzY1LjIyNHpNODY0LjgyNCAyMjAuNzQ4Yy05LjM4MiAwLTE5LjUzMiA5Ljc0Mi0yNC43NDYgMTUuNTQ4LTEyLjYzIDE0LjA2NC0yNC43OTIgMzUuOTYtMzUuMTg4IDYzLjMyOC0yMy4yNTYgNjEuMjMyLTM2LjA2NiAxNDMuMzEtMzYuMDY2IDIzMS4xMjQgMCA4Ny44MSAxMi44MSAxNjkuODkgMzYuMDY2IDIzMS4xMjIgMTAuMzk0IDI3LjM2OCAyMi41NjIgNDkuMjY2IDM1LjE4OCA2My4zMjggNS4yMTQgNS44MTIgMTUuMzY0IDE1LjU1MiAyNC43NDYgMTUuNTUyIDkuMzggMCAxOS41MzYtOS43NDQgMjQuNzQ0LTE1LjU1MiAxMi42MzQtMTQuMDY0IDI0Ljc5Ni0zNS45NTggMzUuMTg4LTYzLjMyOCAyMy4yNTgtNjEuMjMgMzYuMDY4LTE0My4zMTIgMzYuMDY4LTIzMS4xMjIgMC04Ny44MDQtMTIuODEtMTY5Ljg4OC0zNi4wNjgtMjMxLjEyNC0xMC4zOS0yNy4zNjgtMjIuNTYyLTQ5LjI2NC0zNS4xODgtNjMuMzI4LTUuMjA4LTUuODA2LTE1LjM2LTE1LjU0OC0yNC43NDQtMTUuNTQ4ek0yNTEuODEyIDUzMC43NDRjMCA1MS45NSAzLjgxIDEwMi40MyAxMS4wNTIgMTQ5LjA5NC00Ny4zNzItNi41NTQtODguOTQyLTEwLjMyNC0xNDAuMzQtMTAuMzI0LTY3LjA1OCAwLTY3LjA1OCAwLTY3LjA1OCAwbC01NS40NjYtOTQuNjg2di04OC4xN2w1NS40Ni05NC42ODZjMCAwIDAgMCA2Ny4wNjAgMCA1MS4zOTggMCA5Mi45NjgtMy43NzQgMTQwLjM0LTEwLjMyNC03LjIzNiA0Ni42NjQtMTEuMDQ4IDk3LjE0Ni0xMS4wNDggMTQ5LjA5NnpNMzY4LjE1IDMxNy44MjhsLTEyNy45OTggMjQuNTEgODEuODQyLTMyMS41NDRjNC4yMzYtMTYuNjM0IDIwLjc0NC0yNS4wMzggMzYuNjg2LTE4LjY1NGwxMTguNTU2IDQ3LjQ1MmMxNS45NDQgNi4zNzYgMjIuMzI4IDIzLjk2NCAxNC4xOTYgMzkuMDg0bC0xMjMuMjgyIDIyOS4xNTJ6TTg2NC44MjQgNDExLjI3Yy0zLjYxOCAwLTcuNTI4IDMuNzU0LTkuNTM4IDUuOTkyLTQuODcgNS40Mi05LjU1NiAxMy44Ni0xMy41NjIgMjQuNDA4LTguOTYyIDIzLjYtMTMuOSA1NS4yMzQtMTMuOSA4OS4wNzhzNC45MzggNjUuNDc4IDEzLjkgODkuMDc4YzQuMDA2IDEwLjU0OCA4LjY5NiAxOC45ODggMTMuNTYyIDI0LjQwOCAyLjAxMCAyLjI0IDUuOTIgNS45OTQgOS41MzggNS45OTQgMy42MTYgMCA3LjUzLTMuNzU2IDkuNTM4LTUuOTk0IDQuODctNS40MiA5LjU1Ni0xMy44NTggMTMuNTYtMjQuNDA4IDguOTY0LTIzLjU5OCAxMy45MDItNTUuMjM0IDEzLjkwMi04OS4wNzggMC0zMy44NDItNC45MzgtNjUuNDc4LTEzLjkwMi04OS4wNzgtNC4wMDQtMTAuNTQ4LTguNjk2LTE4Ljk4OC0xMy41Ni0yNC40MDgtMi4wMDgtMi4yMzgtNS45Mi01Ljk5Mi05LjUzOC01Ljk5MnoiIC8+CjwvZm9udD48L2RlZnM+PC9zdmc+) format('svg'); font-weight: normal; font-style: normal; } @@ -61,7 +61,7 @@ [class^="plugicon-"]:before, [class*=" plugicon-"]:before { font-family: "pluginicons"; } - + .icon-volume:before { content: '\e800'; } .icon-plus:before { content: '\e801'; } .icon-edit:before { content: '\e802'; } @@ -85,6 +85,7 @@ /* Plugin Icons id-s (copy from generated icon style.css) */ .plugicon-database:before { content: "\e901"; } +.plugicon-notifies:before { content: "\e91a"; } html, body { margin: 0; diff --git a/tests/XX_clean.test.js b/tests/XX_clean.test.js new file mode 100644 index 00000000000..0698c14f82a --- /dev/null +++ b/tests/XX_clean.test.js @@ -0,0 +1,39 @@ +'use strict'; + +var _ = require('lodash'); +var language = require('../lib/language')(); + +describe('Clean MONGO after tests', function ( ) { + this.timeout(10000); + var self = this; + + var api = require('../lib/api/'); + beforeEach(function (done) { + process.env.API_SECRET = 'this is my long pass phrase'; + self.env = require('../env')(); + self.env.settings.authDefaultRoles = 'readable'; + self.env.settings.enable = ['careportal', 'api']; + this.wares = require('../lib/middleware/')(self.env); + self.app = require('express')(); + self.app.enable('api'); + require('../lib/server/bootevent')(self.env, language).boot(function booted(ctx) { + self.ctx = ctx; + self.ctx.ddata = require('../lib/data/ddata')(); + self.app.use('/api', api(self.env, ctx)); + done(); + }); + }); + + it('wipe treatment data', function (done) { + self.ctx.treatments().remove({ }, function ( ) { + done(); + }); + }); + + it('wipe entries data', function (done) { + self.ctx.entries().remove({ }, function ( ) { + done(); + }); + }); + +}); diff --git a/tests/adminnotifies.test.js b/tests/adminnotifies.test.js new file mode 100644 index 00000000000..76b9eba11ef --- /dev/null +++ b/tests/adminnotifies.test.js @@ -0,0 +1,30 @@ + +'use strict'; + +const should = require('should'); + +const ctx = {}; + +ctx.bus = {}; +ctx.bus.on = function mockOn(channel, f) { }; + +const adminnotifies = require('../lib/adminnotifies')(ctx); + +describe('adminnotifies', function ( ) { + + it('should aggregate a message', function () { + + const notify = { + title: 'Foo' + , message: 'Bar' + }; + + adminnotifies.addNotify(notify); + adminnotifies.addNotify(notify); + + const notifies = adminnotifies.getNotifies(); + + notifies.length.should.equal(1); + }); + +}); \ No newline at end of file diff --git a/tests/admintools.test.js b/tests/admintools.test.js index b151381cf07..b8ed0e102ce 100644 --- a/tests/admintools.test.js +++ b/tests/admintools.test.js @@ -70,7 +70,7 @@ describe('admintools', function ( ) { before(function (done) { benv.setup(function() { - benv.require(__dirname + '/../tmp/js/bundle.report.js'); + benv.require(__dirname + '/../tmp/js/bundle.app.js'); self.$ = $; diff --git a/tests/api.devicestatus.test.js b/tests/api.devicestatus.test.js index 34a0908610e..8a796dc3683 100644 --- a/tests/api.devicestatus.test.js +++ b/tests/api.devicestatus.test.js @@ -60,6 +60,7 @@ describe('Devicestatus API', function ( ) { .set('api-secret', self.env.api_secret || '') .expect(200) .expect(function (response) { + console.log(JSON.stringify(response.body[0])); response.body[0].xdripjs.state.should.equal(6); response.body[0].utcOffset.should.equal(0); }) diff --git a/tests/api.treatments.test.js b/tests/api.treatments.test.js index 2b1d3ee877d..567ea1da278 100644 --- a/tests/api.treatments.test.js +++ b/tests/api.treatments.test.js @@ -38,7 +38,7 @@ describe('Treatment API', function ( ) { request(self.app) .post('/api/treatments/') .set('api-secret', self.env.api_secret || '') - .send({eventType: 'Meal Bolus', created_at: now, carbs: '30', insulin: '2.00', preBolus: '15', glucose: 100, glucoseType: 'Finger', units: 'mg/dl'}) + .send({eventType: 'Meal Bolus', created_at: now, carbs: '30', insulin: '2.00', preBolus: '15', glucose: 100, glucoseType: 'Finger', units: 'mg/dl', notes: ''}) .expect(200) .end(function (err) { if (err) { @@ -50,10 +50,10 @@ describe('Treatment API', function ( ) { }); sorted.length.should.equal(2); sorted[0].glucose.should.equal(100); + sorted[0].notes.should.equal(''); should.not.exist(sorted[0].eventTime); sorted[0].insulin.should.equal(2); sorted[1].carbs.should.equal(30); - done(); }); } diff --git a/tests/api3.create.test.js b/tests/api3.create.test.js index d6e1406bec1..0ab4f3d5b42 100644 --- a/tests/api3.create.test.js +++ b/tests/api3.create.test.js @@ -423,7 +423,6 @@ describe('API3 CREATE', function() { delete doc._id; // APIv1 updates input document, we must get rid of _id for the next round oldBody.should.containEql(doc); - const doc2 = Object.assign({}, doc, { eventType: 'Meal Bolus', insulin: 0.4, diff --git a/tests/careportal.test.js b/tests/careportal.test.js index d16ec95e472..2051448efa2 100644 --- a/tests/careportal.test.js +++ b/tests/careportal.test.js @@ -13,7 +13,7 @@ var nowData = { }; describe('client', function ( ) { - this.timeout(30000); // TODO: see why this test takes longer on Travis to complete + this.timeout(40000); // TODO: see why this test takes longer on Travis to complete var self = this; @@ -47,7 +47,6 @@ describe('client', function ( ) { next(true); }; - client.init(); client.dataUpdate(nowData, true); diff --git a/tests/pebble.test.js b/tests/pebble.test.js index e6e683f78a6..4b4a5c5a744 100644 --- a/tests/pebble.test.js +++ b/tests/pebble.test.js @@ -86,6 +86,9 @@ ctx.ddata.devicestatus = [{uploader: {battery: 100}}]; var bootevent = require('../lib/server/bootevent'); describe('Pebble Endpoint', function ( ) { + + this.timeout(10000); + var pebble = require('../lib/server/pebble'); before(function (done) { var env = require('../env')( ); diff --git a/tests/reports.test.js b/tests/reports.test.js index 3029b32a9e2..f2332aa47d2 100644 --- a/tests/reports.test.js +++ b/tests/reports.test.js @@ -220,8 +220,10 @@ describe('reports', function ( ) { window.alert = function mockAlert () { return true; }; - - window.setTimeout = function mockSetTimeout (call) { + + + window.setTimeout = function mockSetTimeout (call, timer) { + if (timer == 60000) return; call(); }; @@ -296,9 +298,10 @@ describe('reports', function ( ) { window.alert = function mockAlert () { return true; }; - - window.setTimeout = function mockSetTimeout (call) { - call(); + + window.setTimeout = function mockSetTimeout (call, timer) { + if (timer == 60000) return; + call(); }; client.init(function afterInit ( ) { diff --git a/tests/security.test.js b/tests/security.test.js index 1f182970019..4dfc51baeb3 100644 --- a/tests/security.test.js +++ b/tests/security.test.js @@ -64,7 +64,7 @@ describe('API_SECRET', function ( ) { process.env.API_SECRET = 'tooshort'; var env = require('../env')( ); should.not.exist(env.api_secret); - env.err.desc.should.startWith('API_SECRET should be at least'); + env.err[0].desc.should.startWith('API_SECRET should be at least'); }); function ping_status (app, fn) { diff --git a/translations/en/en.json b/translations/en/en.json index 89345ce03f4..ebf44b08816 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -655,6 +655,11 @@ ,"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" @@ -685,4 +690,7 @@ ,"view without token":"view without token" ,"Remove stored token":"Remove stored token" ,"Weekly Distribution":"Weekly Distribution" + ,"Failed authentication":"Failed authentication" + ,"A device at IP number":"A device at IP number" + ,"attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?":"attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/views/index.html b/views/index.html index da32087af6c..b9a0a564585 100644 --- a/views/index.html +++ b/views/index.html @@ -302,6 +302,9 @@
+
+
+
diff --git a/views/partials/toolbar.ejs b/views/partials/toolbar.ejs index b98f2756c3d..e81e06bb8fa 100644 --- a/views/partials/toolbar.ejs +++ b/views/partials/toolbar.ejs @@ -23,6 +23,7 @@ +
<% } %> From cfdbaa8bbd6969dc84c468ecc28734fdfcf76b52 Mon Sep 17 00:00:00 2001 From: Petr Ondrusek <34578008+PetrOndrusek@users.noreply.github.com> Date: Thu, 7 Jan 2021 21:58:23 +0100 Subject: [PATCH 068/194] APIv3: wrapping all results in JSON (#6703) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * APIv3: isolating documents from tests (not allowing clashes of calculated identifiers) * removing unused async keyword * fixing api v3 swagger and moving it to /api3-docs * APIv3: adding cachedCollection stub of cachedCollection storage implementation * APIv3: mongo cachedCollection storage implementation * APIv3: testing and debugging cache updates * APIv3: more testing on cache updates * APIv3: fixing bad async functions * APIv3: finishing cache invalidation tests * APIv3: wrapping VERSION result * APIv3: wrapping STATUS result * APIv3: wrapping DELETE result * APIv3: wrapping READ result + partially SEARCH and HISTORY * APIv3: wrapping CREATE result * APIv3: wrapping UPDATE + PATCH result * APIv3: wrapping LAST MODIFIED result * APIv3: updating swagger doc * APIv3: updating tutorial.md * APIv3: tuning tests * APIv3: merge dev Co-authored-by: Petr Ondrusek Co-authored-by: Petr Ondrůšek Co-authored-by: Sulka Haro --- lib/api3/const.json | 5 +- lib/api3/doc/formats.md | 53 +- lib/api3/doc/tutorial.md | 240 +++--- lib/api3/generic/create/insert.js | 11 +- lib/api3/generic/delete/operation.js | 12 +- lib/api3/generic/history/operation.js | 3 +- lib/api3/generic/patch/operation.js | 10 +- lib/api3/generic/read/operation.js | 6 +- lib/api3/generic/update/operation.js | 6 +- lib/api3/generic/update/replace.js | 13 +- lib/api3/index.js | 5 + lib/api3/shared/operationTools.js | 34 +- lib/api3/shared/renderer.js | 17 +- lib/api3/specific/lastModified.js | 4 +- lib/api3/specific/status.js | 2 +- lib/api3/specific/version.js | 2 +- lib/api3/swagger.json | 1043 ++++++++++++++++++++----- lib/api3/swagger.yaml | 294 +++++-- tests/api3.basic.test.js | 10 +- tests/api3.create.test.js | 73 +- tests/api3.delete.test.js | 2 +- tests/api3.generic.workflow.test.js | 76 +- tests/api3.patch.test.js | 13 +- tests/api3.read.test.js | 56 +- tests/api3.renderer.test.js | 14 +- tests/api3.search.test.js | 72 +- tests/api3.socket.test.js | 6 +- tests/api3.update.test.js | 28 +- 28 files changed, 1543 insertions(+), 567 deletions(-) diff --git a/lib/api3/const.json b/lib/api3/const.json index fd874a1175a..e82104ddb53 100644 --- a/lib/api3/const.json +++ b/lib/api3/const.json @@ -1,5 +1,5 @@ { - "API3_VERSION": "3.0.0-alpha", + "API3_VERSION": "3.0.2-alpha", "API3_SECURITY_ENABLE": true, "API3_TIME_SKEW_TOLERANCE": 5, "API3_DEDUP_FALLBACK_ENABLED": true, @@ -41,6 +41,7 @@ "HTTP_401_MISSING_OR_BAD_TOKEN": "Missing or bad access token or JWT", "HTTP_403_MISSING_PERMISSION": "Missing permission {0}", "HTTP_403_NOT_USING_HTTPS": "Not using SSL/TLS", + "HTTP_404_BAD_OPERATION": "Bad operation or collection", "HTTP_406_UNSUPPORTED_FORMAT": "Unsupported output format requested", "HTTP_422_READONLY_MODIFICATION": "Trying to modify read-only document", "HTTP_500_INTERNAL_ERROR": "Internal Server Error", @@ -52,4 +53,4 @@ "MIN_TIMESTAMP": 946684800000, "MIN_UTC_OFFSET": -1440, "MAX_UTC_OFFSET": 1440 -} \ No newline at end of file +} diff --git a/lib/api3/doc/formats.md b/lib/api3/doc/formats.md index 5a01a802f3e..a0c9f73b3fa 100644 --- a/lib/api3/doc/formats.md +++ b/lib/api3/doc/formats.md @@ -18,31 +18,34 @@ The server replies with `406 Not Acceptable` HTTP status in case of not supporte Default content type is JSON, output can look like this: -``` -[ - { - "type":"sgv", - "sgv":"171", - "dateString":"2014-07-19T02:44:15.000-07:00", - "date":1405763055000, - "device":"dexcom", - "direction":"Flat", - "identifier":"5c5a2404e0196f4d3d9a718a", - "srvModified":1405763055000, - "srvCreated":1405763055000 - }, - { - "type":"sgv", - "sgv":"176", - "dateString":"2014-07-19T03:09:15.000-07:00", - "date":1405764555000, - "device":"dexcom", - "direction":"Flat", - "identifier":"5c5a2404e0196f4d3d9a7187", - "srvModified":1405764555000, - "srvCreated":1405764555000 - } -] +```json +{ + "status": 200, + "result": [ + { + "type": "sgv", + "sgv": "171", + "dateString": "2014-07-19T02:44:15.000-07:00", + "date": 1405763055000, + "device": "dexcom", + "direction": "Flat", + "identifier": "5c5a2404e0196f4d3d9a718a", + "srvModified": 1405763055000, + "srvCreated": 1405763055000 + }, + { + "type": "sgv", + "sgv": "176", + "dateString": "2014-07-19T03:09:15.000-07:00", + "date": 1405764555000, + "device": "dexcom", + "direction": "Flat", + "identifier": "5c5a2404e0196f4d3d9a7187", + "srvModified": 1405764555000, + "srvCreated": 1405764555000 + } + ] +} ``` ### XML diff --git a/lib/api3/doc/tutorial.md b/lib/api3/doc/tutorial.md index d69e95ef4a4..73bc6c99f8d 100644 --- a/lib/api3/doc/tutorial.md +++ b/lib/api3/doc/tutorial.md @@ -22,15 +22,18 @@ request('https://nsapiv3.herokuapp.com/api/v3/version', (error, response, body) => console.log(body)); ``` Sample result: -```javascript -{ - "version":"0.12.2", - "apiVersion":"3.0.0-alpha", - "srvDate":1564386001772, - "storage":{ - "storage":"mongodb", - "version":"3.6.12" - } +```json +{ + "status": 200, + "result": { + "version": "14.1.0", + "apiVersion": "3.0.2-alpha", + "srvDate": 1609402081548, + "storage": { + "storage": "mongodb", + "version": "4.2.11" + } + } } ``` @@ -50,22 +53,25 @@ request(`https://nsapiv3.herokuapp.com/api/v3/status?${auth}`, (error, response, body) => console.log(body)); ``` Sample result: -```javascript -{ - "version":"0.12.2", - "apiVersion":"3.0.0-alpha", - "srvDate":1564391740738, - "storage":{ - "storage":"mongodb", - "version":"3.6.12" - }, - "apiPermissions":{ - "devicestatus":"crud", - "entries":"crud", - "food":"crud", - "profile":"crud", - "settings":"crud", - "treatments":"crud" +```json +{ + "status": 200, + "result": { + "version": "14.1.0", + "apiVersion": "3.0.2-alpha", + "srvDate": 1609427571833, + "storage": { + "storage": "mongodb", + "version": "4.2.11" + }, + "apiPermissions": { + "devicestatus": "crud", + "entries": "crud", + "food": "crud", + "profile": "crud", + "settings": "crud", + "treatments": "crud" + } } } ``` @@ -86,24 +92,27 @@ request(`https://nsapiv3.herokuapp.com/api/v3/entries?${auth}&sort$desc=date&lim (error, response, body) => console.log(body)); ``` Sample result: -``` -[ - { - "dateString":"2019-07-30T02:24:50.434+0200", - "sgv":115, - "direction":"FortyFiveDown" - }, - { - "dateString":"2019-07-30T02:19:50.374+0200", - "sgv":121, - "direction":"FortyFiveDown" - }, - { - "dateString":"2019-07-30T02:14:50.450+0200", - "sgv":129, - "direction":"FortyFiveDown" - } -] +```json +{ + "status": 200, + "result": [ + { + "dateString": "2019-07-30T02:24:50.434+0200", + "sgv": 115, + "direction": "FortyFiveDown" + }, + { + "dateString": "2019-07-30T02:19:50.374+0200", + "sgv": 121, + "direction": "FortyFiveDown" + }, + { + "dateString": "2019-07-30T02:14:50.450+0200", + "sgv": 129, + "direction": "FortyFiveDown" + } + ] +} ``` @@ -129,11 +138,15 @@ request({ json: true, url: `https://nsapiv3.herokuapp.com/api/v3/treatments?${auth}` }, - (error, response, body) => console.log(response.headers.location)); + (error, response, body) => console.log(body)); ``` Sample result: -``` -/api/v3/treatments/95e1a6e3-1146-5d6a-a3f1-41567cae0895 +```json +{ + "status": 201, + "identifier": "95e1a6e3-1146-5d6a-a3f1-41567cae0895", + "lastModified": 1564591511711 +} ``` @@ -152,19 +165,22 @@ request(`https://nsapiv3.herokuapp.com/api/v3/treatments/${identifier}?${auth}`, (error, response, body) => console.log(body)); ``` Sample result: -``` -{ - "date":1564591511232, - "app":"AndroidAPS", - "device":"Samsung XCover 4-861536030196001", - "eventType":"Correction Bolus", - "insulin":0.3, - "identifier":"95e1a6e3-1146-5d6a-a3f1-41567cae0895", - "utcOffset":0, - "created_at":"2019-07-31T16:45:11.232Z", - "srvModified":1564591627732, - "srvCreated":1564591511711, - "subject":"test-admin" +```json +{ + "status": 200, + "result": { + "date": 1564591511232, + "app": "AndroidAPS", + "device": "Samsung XCover 4-861536030196001", + "eventType": "Correction Bolus", + "insulin": 0.3, + "identifier": "95e1a6e3-1146-5d6a-a3f1-41567cae0895", + "utcOffset": 0, + "created_at": "2019-07-31T16:45:11.232Z", + "srvModified": 1564591627732, + "srvCreated": 1564591511711, + "subject": "test-admin" + } } ``` @@ -183,14 +199,17 @@ request(`https://nsapiv3.herokuapp.com/api/v3/lastModified?${auth}`, (error, response, body) => console.log(body)); ``` Sample result: -```javascript +```json { - "srvDate":1564591783202, - "collections":{ - "devicestatus":1564591490074, - "entries":1564591486801, - "profile":1548524042744, - "treatments":1564591627732 + "status": 200, + "result": { + "srvDate": 1564591783202, + "collections": { + "devicestatus": 1564591490074, + "entries": 1564591486801, + "profile": 1548524042744, + "treatments": 1564591627732 + } } } ``` @@ -220,11 +239,13 @@ request({ json: true, url: `https://nsapiv3.herokuapp.com/api/v3/treatments/${identifier}?${auth}` }, - (error, response, body) => console.log(response.statusCode)); + (error, response, body) => console.log(body)); ``` Sample result: -``` -204 +```json +{ + "status": 200 +} ``` @@ -248,11 +269,13 @@ request({ json: true, url: `https://nsapiv3.herokuapp.com/api/v3/treatments/${identifier}?${auth}` }, - (error, response, body) => console.log(response.statusCode)); + (error, response, body) => console.log(body)); ``` Sample result: -``` -204 +```json +{ + "status": 200 +} ``` @@ -271,11 +294,13 @@ request({ method: 'delete', url: `https://nsapiv3.herokuapp.com/api/v3/treatments/${identifier}?${auth}` }, - (error, response, body) => console.log(response.statusCode)); + (error, response, body) => console.log(body)); ``` Sample result: -``` -204 +```json +{ + "status": 200 +} ``` @@ -294,36 +319,39 @@ request(`https://nsapiv3.herokuapp.com/api/v3/treatments/history/${lastModified} (error, response, body) => console.log(response.body)); ``` Sample result: -``` -[ - { - "date":1564521267421, - "app":"AndroidAPS", - "device":"Samsung XCover 4-861536030196001", - "eventType":"Correction Bolus", - "insulin":0.5, - "utcOffset":0, - "created_at":"2019-07-30T21:14:27.421Z", - "identifier":"95e1a6e3-1146-5d6a-a3f1-41567cae0895", - "srvModified":1564592440416, - "srvCreated":1564592334853, - "subject":"test-admin", - "modifiedBy":"test-admin", - "isValid":false - }, - { - "date":1564592545299, - "app":"AndroidAPS", - "device":"Samsung XCover 4-861536030196001", - "eventType":"Snack Bolus", - "carbs":10, - "identifier":"267c43c2-f629-5191-a542-4f410c69e486", - "utcOffset":0, - "created_at":"2019-07-31T17:02:25.299Z", - "srvModified":1564592545781, - "srvCreated":1564592545781, - "subject":"test-admin" - } -] +```json +{ + "status": 200, + "result": [ + { + "date": 1564521267421, + "app": "AndroidAPS", + "device": "Samsung XCover 4-861536030196001", + "eventType": "Correction Bolus", + "insulin": 0.5, + "utcOffset": 0, + "created_at": "2019-07-30T21:14:27.421Z", + "identifier": "95e1a6e3-1146-5d6a-a3f1-41567cae0895", + "srvModified": 1564592440416, + "srvCreated": 1564592334853, + "subject": "test-admin", + "modifiedBy": "test-admin", + "isValid": false + }, + { + "date": 1564592545299, + "app": "AndroidAPS", + "device": "Samsung XCover 4-861536030196001", + "eventType": "Snack Bolus", + "carbs": 10, + "identifier": "267c43c2-f629-5191-a542-4f410c69e486", + "utcOffset": 0, + "created_at": "2019-07-31T17:02:25.299Z", + "srvModified": 1564592545781, + "srvCreated": 1564592545781, + "subject": "test-admin" + } + ] +} ``` Notice the `"isValid":false` field marking the deletion of the document. diff --git a/lib/api3/generic/create/insert.js b/lib/api3/generic/create/insert.js index b643818569a..56cb608cdf2 100644 --- a/lib/api3/generic/create/insert.js +++ b/lib/api3/generic/create/insert.js @@ -4,6 +4,7 @@ const apiConst = require('../../const.json') , security = require('../../security') , validate = require('./validate.js') , path = require('path') + , opTools = require('../../shared/operationTools') ; /** @@ -35,7 +36,13 @@ async function insert (opCtx, doc) { res.setHeader('Last-Modified', now.toUTCString()); res.setHeader('Location', path.posix.join(req.baseUrl, req.path, identifier)); - res.status(apiConst.HTTP.CREATED).send({ }); + + + const fields = { + identifier: identifier, + lastModified: now.getTime() + }; + opTools.sendJSON({ res, status: apiConst.HTTP.CREATED, fields: fields }); ctx.bus.emit('storage-socket-create', { colName: col.colName, doc }); col.autoPrune(); @@ -43,4 +50,4 @@ async function insert (opCtx, doc) { } -module.exports = insert; \ No newline at end of file +module.exports = insert; diff --git a/lib/api3/generic/delete/operation.js b/lib/api3/generic/delete/operation.js index 8f9463f3ef9..f5e8c3b5b27 100644 --- a/lib/api3/generic/delete/operation.js +++ b/lib/api3/generic/delete/operation.js @@ -36,7 +36,7 @@ async function validateDelete (opCtx) { throw new Error('empty result'); if (result.length === 0) { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.NOT_FOUND }); } else { const storageDoc = result[0]; @@ -62,13 +62,13 @@ async function deletePermanently (opCtx) { throw new Error('empty result'); if (!result.deleted) { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.NOT_FOUND }); } col.autoPrune(); ctx.bus.emit('storage-socket-delete', { colName: col.colName, identifier }); ctx.bus.emit('data-received'); - return res.status(apiConst.HTTP.NO_CONTENT).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.OK }); } @@ -89,13 +89,13 @@ async function markAsDeleted (opCtx) { throw new Error('empty result'); if (!result.updated) { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.NOT_FOUND }); } ctx.bus.emit('storage-socket-delete', { colName: col.colName, identifier }); col.autoPrune(); ctx.bus.emit('data-received'); - return res.status(apiConst.HTTP.NO_CONTENT).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.OK }); } @@ -119,4 +119,4 @@ function deleteOperation (ctx, env, app, col) { }; } -module.exports = deleteOperation; \ No newline at end of file +module.exports = deleteOperation; diff --git a/lib/api3/generic/history/operation.js b/lib/api3/generic/history/operation.js index fb3ed0184ec..47bd41b2056 100644 --- a/lib/api3/generic/history/operation.js +++ b/lib/api3/generic/history/operation.js @@ -39,7 +39,8 @@ async function history (opCtx, fieldsProjector) { throw new Error('empty result'); if (result.length === 0) { - return res.status(apiConst.HTTP.NO_CONTENT).end(); + res.status(apiConst.HTTP.OK); + return renderer.render(res, result); } _.each(result, col.resolveDates); diff --git a/lib/api3/generic/patch/operation.js b/lib/api3/generic/patch/operation.js index d7bb5fc2b4d..1e5cd0f129b 100644 --- a/lib/api3/generic/patch/operation.js +++ b/lib/api3/generic/patch/operation.js @@ -36,7 +36,7 @@ async function patch (opCtx) { const storageDoc = result[0]; if (storageDoc.isValid === false) { - return res.status(apiConst.HTTP.GONE).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.GONE); } const modifiedDate = col.resolveDates(storageDoc) @@ -44,13 +44,13 @@ async function patch (opCtx) { if (ifUnmodifiedSince && dateTools.floorSeconds(modifiedDate) > dateTools.floorSeconds(new Date(ifUnmodifiedSince))) { - return res.status(apiConst.HTTP.PRECONDITION_FAILED).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.PRECONDITION_FAILED); } await applyPatch(opCtx, identifier, doc, storageDoc); } else { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.NOT_FOUND); } } @@ -82,7 +82,7 @@ async function applyPatch (opCtx, identifier, doc, storageDoc) { throw new Error('matchedCount empty'); res.setHeader('Last-Modified', now.toUTCString()); - res.status(apiConst.HTTP.NO_CONTENT).send({ }); + opTools.sendJSONStatus(res, apiConst.HTTP.OK); const fieldsProjector = new FieldsProjector('_all'); const patchedDocs = await col.storage.findOne(identifier, fieldsProjector); @@ -115,4 +115,4 @@ function patchOperation (ctx, env, app, col) { }; } -module.exports = patchOperation; \ No newline at end of file +module.exports = patchOperation; diff --git a/lib/api3/generic/read/operation.js b/lib/api3/generic/read/operation.js index c2e65a4afcc..3f4efb75dd9 100644 --- a/lib/api3/generic/read/operation.js +++ b/lib/api3/generic/read/operation.js @@ -26,12 +26,12 @@ async function read (opCtx) { throw new Error('empty result'); if (result.length === 0) { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.NOT_FOUND }); } const doc = result[0]; if (doc.isValid === false) { - return res.status(apiConst.HTTP.GONE).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.GONE }); } @@ -74,4 +74,4 @@ function readOperation (ctx, env, app, col) { }; } -module.exports = readOperation; \ No newline at end of file +module.exports = readOperation; diff --git a/lib/api3/generic/update/operation.js b/lib/api3/generic/update/operation.js index 3e517a32d11..5098ffa1773 100644 --- a/lib/api3/generic/update/operation.js +++ b/lib/api3/generic/update/operation.js @@ -48,7 +48,7 @@ async function updateConditional (opCtx, doc, storageDoc) { const { col, req, res } = opCtx; if (storageDoc.isValid === false) { - return res.status(apiConst.HTTP.GONE).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.GONE); } const modifiedDate = col.resolveDates(storageDoc) @@ -56,7 +56,7 @@ async function updateConditional (opCtx, doc, storageDoc) { if (ifUnmodifiedSince && dateTools.floorSeconds(modifiedDate) > dateTools.floorSeconds(new Date(ifUnmodifiedSince))) { - return res.status(apiConst.HTTP.PRECONDITION_FAILED).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.PRECONDITION_FAILED); } await replace(opCtx, doc, storageDoc); @@ -83,4 +83,4 @@ function updateOperation (ctx, env, app, col) { }; } -module.exports = updateOperation; \ No newline at end of file +module.exports = updateOperation; diff --git a/lib/api3/generic/update/replace.js b/lib/api3/generic/update/replace.js index fdf803ed16f..c0c76c4b6eb 100644 --- a/lib/api3/generic/update/replace.js +++ b/lib/api3/generic/update/replace.js @@ -4,6 +4,7 @@ const apiConst = require('../../const.json') , security = require('../../security') , validate = require('./validate.js') , path = require('path') + , opTools = require('../../shared/operationTools') ; /** @@ -37,12 +38,20 @@ async function replace (opCtx, doc, storageDoc, options) { throw new Error('empty matchedCount'); res.setHeader('Last-Modified', now.toUTCString()); + const fields = { + lastModified: now.getTime() + } if (storageDoc.identifier !== doc.identifier || isDeduplication) { res.setHeader('Location', path.posix.join(req.baseUrl, req.path, doc.identifier)); + fields.identifier = doc.identifier; + fields.isDeduplication = true; + if (storageDoc.identifier !== doc.identifier) { + fields.deduplicatedIdentifier = storageDoc.identifier; + } } - res.status(apiConst.HTTP.NO_CONTENT).send({ }); + opTools.sendJSON({ res, status: apiConst.HTTP.OK, fields }); ctx.bus.emit('storage-socket-update', { colName: col.colName, doc }); col.autoPrune(); @@ -50,4 +59,4 @@ async function replace (opCtx, doc, storageDoc, options) { } -module.exports = replace; \ No newline at end of file +module.exports = replace; diff --git a/lib/api3/index.js b/lib/api3/index.js index bff0899536f..e1cde9f2ae8 100644 --- a/lib/api3/index.js +++ b/lib/api3/index.js @@ -7,6 +7,7 @@ const express = require('express') , apiConst = require('./const.json') , security = require('./security') , genericSetup = require('./generic/setup') + , opTools = require('./shared/operationTools') ; function configure (env, ctx) { @@ -104,6 +105,10 @@ function configure (env, ctx) { res.redirect(307, '../../../api3-docs'); }); + app.use((req, res) => { + opTools.sendJSONStatus(res, apiConst.HTTP.NOT_FOUND, apiConst.MSG.HTTP_404_BAD_OPERATION); + }) + ctx.storageSocket = new StorageSocket(app, env, ctx); return app; diff --git a/lib/api3/shared/operationTools.js b/lib/api3/shared/operationTools.js index 1955b9c2068..6b2e62e12e7 100644 --- a/lib/api3/shared/operationTools.js +++ b/lib/api3/shared/operationTools.js @@ -6,18 +6,41 @@ const apiConst = require('../const.json') , uuidNamespace = [...Buffer.from("NightscoutRocks!", "ascii")] // official namespace for NS :-) ; + +function sendJSON ({ res, result, status, fields }) { + + const json = { + status: status || apiConst.HTTP.OK, + result: result + }; + + if (result) { + json.result = result + } + + if (fields) { + Object.assign(json, fields); + } + + res.status(json.status).json(json); +} + + function sendJSONStatus (res, status, title, description, warning) { const json = { - status: status, - message: title, - description: description + status: status }; + if (title) { json.message = title } + + if (description) { json.description = description } + // Add optional warning message. if (warning) { json.warning = warning; } - res.status(status).json(json); + res.status(status) + .json(json); return title; } @@ -104,8 +127,9 @@ function resolveIdentifier (doc) { module.exports = { + sendJSON, sendJSONStatus, validateCommon, calculateIdentifier, resolveIdentifier -}; \ No newline at end of file +}; diff --git a/lib/api3/shared/renderer.js b/lib/api3/shared/renderer.js index a3588819a72..842785709b6 100644 --- a/lib/api3/shared/renderer.js +++ b/lib/api3/shared/renderer.js @@ -53,7 +53,7 @@ function extension2accept (req, res, next) { */ function render (res, data) { res.format({ - 'json': () => res.send(data), + 'json': () => renderJson(res, data), 'csv': () => renderCsv(res, data), 'xml': () => renderXml(res, data), 'default': () => @@ -62,6 +62,19 @@ function render (res, data) { } +/** + * Format data to output as JSON + * @param {Object} res + * @param {any} data + */ +function renderJson (res, data) { + res.send({ + status: apiConst.HTTP.OK, + result: data + }); +} + + /** * Format data to output as .csv * @param {Object} res @@ -96,4 +109,4 @@ function renderXml (res, data) { module.exports = { extension2accept, render -}; \ No newline at end of file +}; diff --git a/lib/api3/specific/lastModified.js b/lib/api3/specific/lastModified.js index b27ecaca852..f550d56f89c 100644 --- a/lib/api3/specific/lastModified.js +++ b/lib/api3/specific/lastModified.js @@ -38,7 +38,7 @@ function configure (app, ctx, env) { return { colName: col.colName, lastModified: result }; } - + async function collectionsAsync (auth) { const cols = app.get('collections') @@ -77,7 +77,7 @@ function configure (app, ctx, env) { info.collections = await collectionsAsync(auth); - res.json(info); + opTools.sendJSON({ res, result: info }); } diff --git a/lib/api3/specific/status.js b/lib/api3/specific/status.js index 7b70b24ab71..5ec28929fbe 100644 --- a/lib/api3/specific/status.js +++ b/lib/api3/specific/status.js @@ -47,7 +47,7 @@ function configure (app, ctx, env) { } } - res.json(info); + opTools.sendJSON({ res, result: info }); } diff --git a/lib/api3/specific/version.js b/lib/api3/specific/version.js index 25392fe99d7..ba7685fe486 100644 --- a/lib/api3/specific/version.js +++ b/lib/api3/specific/version.js @@ -13,7 +13,7 @@ function configure (app) { try { const versionInfo = await storageTools.getVersionInfo(app); - res.json(versionInfo); + opTools.sendJSON({ res, result: versionInfo }); } catch(error) { console.error(error); diff --git a/lib/api3/swagger.json b/lib/api3/swagger.json index b20bb0e6761..a380be3e0f5 100644 --- a/lib/api3/swagger.json +++ b/lib/api3/swagger.json @@ -11,7 +11,7 @@ "name": "AGPL 3", "url": "https://www.gnu.org/licenses/agpl.txt" }, - "version": "3.0.1" + "version": "3.0.2" }, "servers": [ { @@ -35,7 +35,7 @@ "generic" ], "summary": "SEARCH: Search documents from the collection", - "description": "General search operation through documents of one collection, matching the specified filtering criteria. You can apply:\n\n1) filtering - combining any number of filtering parameters\n\n2) ordering - using `sort` or `sort$desc` parameter\n\n3) paging - using `limit` and `skip` parameters\n\nWhen there is no document matching the filtering criteria, HTTP status 204 is returned with empty response content. Otherwise HTTP 200 code is returned with JSON array of matching documents as a response content.\n\nThis operation requires `read` permission for the API and the collection (e.g. `*:*:read`, `api:*:read`, `*:treatments:read`, `api:treatments:read`).\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", + "description": "General search operation through documents of one collection, matching the specified filtering criteria. You can apply:\n\n1) filtering - combining any number of filtering parameters\n\n2) ordering - using `sort` or `sort$desc` parameter\n\n3) paging - using `limit` and `skip` parameters\n\nIf successful, HTTP 200 code is returned with JSON array of matching documents as a response content (it may be empty).\n\nThis operation requires `read` permission for the API and the collection (e.g. `*:*:read`, `api:*:read`, `*:treatments:read`, `api:treatments:read`).\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", "operationId": "SEARCH", "parameters": [ { @@ -172,7 +172,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -187,28 +187,63 @@ } } }, - "204": { - "description": "Successful operation - no documents matching the filtering criteria" - }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] }, @@ -217,7 +252,7 @@ "generic" ], "summary": "CREATE: Inserts a new document into the collection", - "description": "Using this operation you can insert new documents into collection. Normally the operation ends with 201 HTTP status code, `Last-Modified` and `Location` headers specified and with an empty response content. `identifier` can be parsed from the `Location` response header.\n\nWhen the document to post is marked as a duplicate (using rules described at `API3_DEDUP_FALLBACK_ENABLED` switch), the update operation takes place instead of inserting. In this case the original document in the collection is found and it gets updated by the actual operation POST body. Finally the operation ends with 204 HTTP status code along with `Last-Modified` and correct `Location` headers.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `create` (and/or `update` for deduplication) permission for the API and the collection (e.g. `api:treatments:create` and `api:treatments:update`)", + "description": "Using this operation you can insert new documents into collection. Normally the operation ends with 201 HTTP status code, `Last-Modified` and `Location` headers specified. `identifier` is included in response body or it can be parsed from the `Location` response header.\n\nWhen the document to post is marked as a duplicate (using rules described at `API3_DEDUP_FALLBACK_ENABLED` switch), the update operation takes place instead of inserting. In this case the original document in the collection is found and it gets updated by the actual operation POST body. Finally the operation ends with 200 HTTP status code along with `Last-Modified` and correct `Location` headers. The response body then includes `isDeduplication`=`true` and `deduplicatedIdentifier` fields.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `create` (and/or `update` for deduplication) permission for the API and the collection (e.g. `api:treatments:create` and `api:treatments:update`)", "parameters": [ { "name": "collection", @@ -277,8 +312,8 @@ "required": true }, "responses": { - "201": { - "description": "Successfully created a new document in collection", + "200": { + "description": "Successfully updated a duplicate document in the collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" @@ -286,10 +321,17 @@ "Location": { "$ref": "#/components/schemas/headerLocation" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_1" + } + } } }, - "204": { - "description": "Successfully finished operation", + "201": { + "description": "Successfully created a new document in collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" @@ -297,27 +339,72 @@ "Location": { "$ref": "#/components/schemas/headerLocation" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_201" + } + } } }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "422": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -328,7 +415,7 @@ "generic" ], "summary": "READ: Retrieves a single document from the collection", - "description": "Basically this operation looks for a document matching the `identifier` field returning 200 or 404 HTTP status code.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned.\n\nWhen `If-Modified-Since` header is used and its value is greater than the timestamp of the document in the collection, 304 HTTP status code with empty response content is returned. It means that the document has not been modified on server since the last retrieval to client side. With `If-Modified-Since` header and less or equal timestamp `srvModified` a normal 200 HTTP status with full response is returned.\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)", + "description": "Basically this operation looks for a document matching the `identifier` field returning 200 or 404 HTTP status code.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned.\n\nWhen `If-Modified-Since` header is used and its value is greater than the timestamp of the document in the collection, 304 HTTP status code with empty response content is returned. It means that the document has not been modified on server since the last retrieval to client side. With `If-Modified-Since` header and less or equal timestamp `srvModified` a normal 200 HTTP status with full response is returned.\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)", "parameters": [ { "name": "collection", @@ -431,7 +518,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/inline_response_200_2" } }, "text/csv": { @@ -455,24 +542,62 @@ } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } }, "410": { - "description": "The requested document has already been deleted." + "description": "The requested document has already been deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_410" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] }, @@ -481,7 +606,7 @@ "generic" ], "summary": "UPDATE: Updates a document in the collection", - "description": "Normally the document with the matching `identifier` will be replaced in the collection by the whole JSON request body and 204 HTTP status code will be returned with empty response body.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then an insert operation takes place instead of updating. Finally 201 HTTP status code is returned with only `Last-Modified` header (`identifier` is already known from the path parameter).\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` (and/or `create`) permission for the API and the collection (e.g. `api:treatments:update` and `api:treatments:create`)", + "description": "Normally the document with the matching `identifier` will be replaced in the collection by the whole JSON request body and 200 HTTP status code will be returned.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then an insert operation takes place instead of updating. Finally 201 HTTP status code is returned with only `Last-Modified` header (`identifier` is already known from the path parameter).\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` (and/or `create`) permission for the API and the collection (e.g. `api:treatments:update` and `api:treatments:create`)", "parameters": [ { "name": "collection", @@ -563,50 +688,108 @@ "required": true }, "responses": { - "201": { - "description": "Successfully created a new document in collection", - "headers": { - "Last-Modified": { - "$ref": "#/components/schemas/headerLastModified" + "200": { + "description": "The request was successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_3" + } } } }, - "204": { - "description": "Successfully finished operation", + "201": { + "description": "Successfully created a new document in collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" - }, - "Location": { - "$ref": "#/components/schemas/headerLocation" + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_201" + } } } }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "410": { - "description": "The requested document has already been deleted." + "description": "The requested document has already been deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_410" + } + } + } }, "412": { - "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header)." + "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_412" + } + } + } }, "422": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] }, @@ -686,25 +869,63 @@ } ], "responses": { - "204": { - "description": "Successful operation - empty response" + "200": { + "description": "The request was successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_3" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "422": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] }, @@ -713,7 +934,7 @@ "generic" ], "summary": "PATCH: Partially updates document in the collection", - "description": "Normally the document with the matching `identifier` will be retrieved from the collection and it will be patched by all specified fields from the JSON request body. Finally 204 HTTP status code will be returned with empty response body.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then the operation ends with 404 HTTP status code.\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\n`PATCH` operation can save some bandwidth for incremental document updates in comparison with `GET` - `UPDATE` operation sequence.\n\nWhile patching the document, the field `modifiedBy` is automatically set to the authorized subject's name.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` permission for the API and the collection (e.g. `api:treatments:update`)", + "description": "Normally the document with the matching `identifier` will be retrieved from the collection and it will be patched by all specified fields from the JSON request body. Finally 200 HTTP status code will be returned.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then the operation ends with 404 HTTP status code.\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\n`PATCH` operation can save some bandwidth for incremental document updates in comparison with `GET` - `UPDATE` operation sequence.\n\nWhile patching the document, the field `modifiedBy` is automatically set to the authorized subject's name.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` permission for the API and the collection (e.g. `api:treatments:update`)", "parameters": [ { "name": "collection", @@ -795,42 +1016,93 @@ "required": true }, "responses": { - "204": { - "description": "Successfully finished operation", - "headers": { - "Last-Modified": { - "$ref": "#/components/schemas/headerLastModified" - }, - "Location": { - "$ref": "#/components/schemas/headerLocation" + "200": { + "description": "The request was successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_3" + } } } }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "410": { - "description": "The requested document has already been deleted." + "description": "The requested document has already been deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_410" + } + } + } }, "412": { - "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header)." + "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_412" + } + } + } }, "422": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -841,7 +1113,7 @@ "generic" ], "summary": "HISTORY: Retrieves incremental changes since timestamp", - "description": "HISTORY operation is intended for continuous data synchronization with other systems.\nEvery insertion, update and deletion will be included in the resulting JSON array of documents (since timestamp in `Last-Modified` request header value). All changes are listed chronologically in response with 200 HTTP status code. The maximum listed `srvModified` timestamp is also stored in `Last-Modified` and `ETag` response headers that you can use for future, directly following synchronization. You can also limit the array's length using `limit` parameter.\n\nDeleted documents will appear with `isValid` = `false` field.\n\nWhen there is no change detected since the timestamp the operation ends with 204 HTTP status code and empty response content.\n\nHISTORY operation has a fallback mechanism in place for documents, which were not created by API v3. For such documents `srvModified` is virtually assigned from the `date` field (for `entries` collection) or from the `created_at` field (for other collections).\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", + "description": "HISTORY operation is intended for continuous data synchronization with other systems.\nEvery insertion, update and deletion will be included in the resulting JSON array of documents (since timestamp in `Last-Modified` request header value). All changes are listed chronologically in response with 200 HTTP status code. The maximum listed `srvModified` timestamp is also stored in `Last-Modified` and `ETag` response headers that you can use for future, directly following synchronization. You can also limit the array's length using `limit` parameter.\n\nDeleted documents will appear with `isValid` = `false` field.\n\nHISTORY operation has a fallback mechanism in place for documents, which were not created by API v3. For such documents `srvModified` is virtually assigned from the `date` field (for `entries` collection) or from the `created_at` field (for other collections).\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", "operationId": "HISTORY", "parameters": [ { @@ -950,7 +1222,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -965,28 +1237,63 @@ } } }, - "204": { - "description": "No changes detected" - }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -1107,7 +1414,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -1122,28 +1429,63 @@ } } }, - "204": { - "description": "No changes detected" - }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -1188,15 +1530,32 @@ } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -1251,21 +1610,38 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LastModifiedResult" + "$ref": "#/components/schemas/inline_response_200_4" + } + } + } + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" } } } }, - "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." - }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -1305,6 +1681,32 @@ "type": "string", "example": "53409478-105f-11e9-ab14-d663bd873d93" }, + "identifierField": { + "type": "string", + "description": "Identifier of created or modified document", + "example": "53409478-105f-11e9-ab14-d663bd873d93" + }, + "lastModifiedField": { + "type": "integer", + "description": "Timestamp of the last document modification on the server, formatted as\nUnix epoch in milliseconds (1525383610088)", + "format": "int64", + "example": 1525383610088 + }, + "statusField": { + "type": "integer", + "description": "HTTP response status code. The status appears also in response body's field for those clients that are unable to process standard HTTP status code.", + "example": 200 + }, + "isDeduplicationField": { + "type": "boolean", + "description": "Flag whether the operation found a duplicate document (to update)", + "example": true + }, + "deduplicatedIdentifierField": { + "type": "string", + "description": "The original document that has been marked as a duplicate document and which has been updated", + "example": "abc09478-105f-11e9-ab14-d663bd873d93" + }, "DocumentBase": { "required": [ "app", @@ -1795,6 +2197,18 @@ ] }, "Version": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/statusField" + }, + "result": { + "$ref": "#/components/schemas/VersionResult" + } + }, + "description": "Information about versions" + }, + "VersionResult": { "type": "object", "properties": { "version": { @@ -1813,56 +2227,31 @@ "example": 1532936118000 }, "storage": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Type of storage engine used", - "example": "mongodb" - }, - "version": { - "type": "string", - "description": "Version of the storage engine", - "example": "4.0.6" - } - } + "$ref": "#/components/schemas/VersionResult_storage" } - }, - "description": "Information about versions" + } }, "Status": { - "description": "Information about versions and API permissions", + "properties": { + "status": { + "$ref": "#/components/schemas/statusField" + }, + "result": { + "$ref": "#/components/schemas/StatusResult" + } + }, + "description": "Information about versions and API permissions" + }, + "StatusResult": { "allOf": [ { - "$ref": "#/components/schemas/Version" + "$ref": "#/components/schemas/VersionResult" }, { "type": "object", "properties": { "apiPermissions": { - "type": "object", - "properties": { - "devicestatus": { - "type": "string", - "example": "crud" - }, - "entries": { - "type": "string", - "example": "r" - }, - "food": { - "type": "string", - "example": "crud" - }, - "profile": { - "type": "string", - "example": "r" - }, - "treatments": { - "type": "string", - "example": "crud" - } - } + "$ref": "#/components/schemas/StatusResult_apiPermissions" } } } @@ -1877,50 +2266,231 @@ "example": 1556260878776 }, "collections": { - "type": "object", - "properties": { - "devicestatus": { - "type": "integer", - "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", - "format": "int64", - "example": 1556260760974 - }, - "treatments": { - "type": "integer", - "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", - "format": "int64", - "example": 1553374184169 - }, - "entries": { - "type": "integer", - "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", - "format": "int64", - "example": 1556260758768 - }, - "profile": { - "type": "integer", - "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", - "format": "int64", - "example": 1548524042744 - } - }, - "description": "Collections which the user have read access to." + "$ref": "#/components/schemas/LastModifiedResult_collections" } }, "description": "Result of LAST MODIFIED operation" + }, + "inline_response_200": { + "properties": { + "status": { + "type": "integer", + "example": 200 + }, + "result": { + "$ref": "#/components/schemas/DocumentArray" + } + } + }, + "inline_response_400": { + "properties": { + "status": { + "type": "integer", + "example": 400 + } + } + }, + "inline_response_401": { + "properties": { + "status": { + "type": "integer", + "example": 401 + } + } + }, + "inline_response_403": { + "properties": { + "status": { + "type": "integer", + "example": 403 + } + } + }, + "inline_response_404": { + "properties": { + "status": { + "type": "integer", + "example": 404 + } + } + }, + "inline_response_406": { + "properties": { + "status": { + "type": "integer", + "example": 406 + } + } + }, + "inline_response_200_1": { + "properties": { + "status": { + "type": "integer", + "example": 200 + }, + "identifier": { + "$ref": "#/components/schemas/identifierField" + }, + "isDeduplication": { + "$ref": "#/components/schemas/isDeduplicationField" + }, + "deduplicatedIdentifier": { + "$ref": "#/components/schemas/deduplicatedIdentifierField" + } + } + }, + "inline_response_201": { + "properties": { + "status": { + "type": "integer", + "example": 201 + }, + "identifier": { + "$ref": "#/components/schemas/identifierField" + }, + "lastModified": { + "$ref": "#/components/schemas/lastModifiedField" + } + } + }, + "inline_response_422": { + "properties": { + "status": { + "type": "integer", + "example": 422 + } + } + }, + "inline_response_200_2": { + "properties": { + "status": { + "type": "integer", + "example": 200 + }, + "result": { + "$ref": "#/components/schemas/Document" + } + } + }, + "inline_response_410": { + "properties": { + "status": { + "type": "integer", + "example": 410 + } + } + }, + "inline_response_200_3": { + "properties": { + "status": { + "type": "integer", + "example": 200 + } + } + }, + "inline_response_412": { + "properties": { + "status": { + "type": "integer", + "example": 412 + } + } + }, + "inline_response_200_4": { + "properties": { + "status": { + "type": "integer", + "example": 200 + }, + "result": { + "$ref": "#/components/schemas/LastModifiedResult" + } + } + }, + "VersionResult_storage": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of storage engine used", + "example": "mongodb" + }, + "version": { + "type": "string", + "description": "Version of the storage engine", + "example": "4.0.6" + } + } + }, + "StatusResult_apiPermissions": { + "type": "object", + "properties": { + "devicestatus": { + "type": "string", + "example": "crud" + }, + "entries": { + "type": "string", + "example": "r" + }, + "food": { + "type": "string", + "example": "crud" + }, + "profile": { + "type": "string", + "example": "r" + }, + "treatments": { + "type": "string", + "example": "crud" + } + } + }, + "LastModifiedResult_collections": { + "type": "object", + "properties": { + "devicestatus": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1556260760974 + }, + "treatments": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1553374184169 + }, + "entries": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1556260758768 + }, + "profile": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1548524042744 + } + }, + "description": "Collections which the user have read access to." } }, "responses": { - "201Created": { - "description": "Successfully created a new document in collection", - "headers": { - "Last-Modified": { - "$ref": "#/components/schemas/headerLastModified" + "200Ok": { + "description": "The request was successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_3" + } } } }, - "201CreatedLocation": { - "description": "Successfully created a new document in collection", + "200Deduplication": { + "description": "Successfully updated a duplicate document in the collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" @@ -1928,18 +2498,32 @@ "Location": { "$ref": "#/components/schemas/headerLocation" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_1" + } + } } }, - "204NoContent": { - "description": "Successfully finished operation", + "201Created": { + "description": "Successfully created a new document in collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_201" + } + } } }, - "204NoContentLocation": { - "description": "Successfully finished operation", + "201CreatedLocation": { + "description": "Successfully created a new document in collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" @@ -1947,6 +2531,13 @@ "Location": { "$ref": "#/components/schemas/headerLocation" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_201" + } + } } }, "304NotModified": { @@ -1958,35 +2549,91 @@ } }, "400BadRequest": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401Unauthorized": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403Forbidden": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404NotFound": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406NotAcceptable": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } }, "412PreconditionFailed": { - "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header)." + "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_412" + } + } + } }, "410Gone": { - "description": "The requested document has already been deleted." + "description": "The requested document has already been deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_410" + } + } + } }, "422UnprocessableEntity": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } }, "search200": { "description": "Successful operation returning array of documents matching the filtering criteria", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -2001,9 +2648,6 @@ } } }, - "search204": { - "description": "Successful operation - no documents matching the filtering criteria" - }, "read200": { "description": "The document has been succesfully found and its JSON form returned in the response content.", "headers": { @@ -2014,7 +2658,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/inline_response_200_2" } }, "text/csv": { @@ -2042,7 +2686,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -2057,15 +2701,12 @@ } } }, - "history204": { - "description": "No changes detected" - }, "lastModified200": { "description": "Successful operation returning the timestamps", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LastModifiedResult" + "$ref": "#/components/schemas/inline_response_200_4" } } } diff --git a/lib/api3/swagger.yaml b/lib/api3/swagger.yaml index 5cbb2a05544..56175263924 100644 --- a/lib/api3/swagger.yaml +++ b/lib/api3/swagger.yaml @@ -2,7 +2,7 @@ openapi: 3.0.0 servers: - url: '/api/v3' info: - version: "3.0.1" + version: "3.0.2" title: Nightscout API contact: name: NS development discussion channel @@ -102,7 +102,7 @@ paths: 3) paging - using `limit` and `skip` parameters - When there is no document matching the filtering criteria, HTTP status 204 is returned with empty response content. Otherwise HTTP 200 code is returned with JSON array of matching documents as a response content. + If successful, HTTP 200 code is returned with JSON array of matching documents as a response content (it may be empty). This operation requires `read` permission for the API and the collection (e.g. `*:*:read`, `api:*:read`, `*:treatments:read`, `api:treatments:read`). @@ -120,13 +120,12 @@ paths: - $ref: '#/components/parameters/fieldsParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: $ref: '#/components/responses/search200' - 204: - $ref: '#/components/responses/search204' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -145,10 +144,11 @@ paths: - generic summary: 'CREATE: Inserts a new document into the collection' description: - Using this operation you can insert new documents into collection. Normally the operation ends with 201 HTTP status code, `Last-Modified` and `Location` headers specified and with an empty response content. `identifier` can be parsed from the `Location` response header. + Using this operation you can insert new documents into collection. Normally the operation ends with 201 HTTP status code, `Last-Modified` and `Location` headers specified. + `identifier` is included in response body or it can be parsed from the `Location` response header. - When the document to post is marked as a duplicate (using rules described at `API3_DEDUP_FALLBACK_ENABLED` switch), the update operation takes place instead of inserting. In this case the original document in the collection is found and it gets updated by the actual operation POST body. Finally the operation ends with 204 HTTP status code along with `Last-Modified` and correct `Location` headers. + When the document to post is marked as a duplicate (using rules described at `API3_DEDUP_FALLBACK_ENABLED` switch), the update operation takes place instead of inserting. In this case the original document in the collection is found and it gets updated by the actual operation POST body. Finally the operation ends with 200 HTTP status code along with `Last-Modified` and correct `Location` headers. The response body then includes `isDeduplication`=`true` and `deduplicatedIdentifier` fields. This operation provides autopruning of the collection (if autopruning is enabled). @@ -165,13 +165,14 @@ paths: $ref: '#/components/schemas/DocumentToPost' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: + 200: + $ref: '#/components/responses/200Deduplication' 201: $ref: '#/components/responses/201CreatedLocation' - 204: - $ref: '#/components/responses/204NoContentLocation' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -215,7 +216,7 @@ paths: Basically this operation looks for a document matching the `identifier` field returning 200 or 404 HTTP status code. - If the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned. + If the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned. When `If-Modified-Since` header is used and its value is greater than the timestamp of the document in the collection, 304 HTTP status code with empty response content is returned. It means that the document has not been modified on server since the last retrieval to client side. @@ -229,7 +230,8 @@ paths: - $ref: '#/components/parameters/fieldsParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: @@ -254,10 +256,10 @@ paths: - generic summary: 'UPDATE: Updates a document in the collection' description: - Normally the document with the matching `identifier` will be replaced in the collection by the whole JSON request body and 204 HTTP status code will be returned with empty response body. + Normally the document with the matching `identifier` will be replaced in the collection by the whole JSON request body and 200 HTTP status code will be returned. - If the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned. + If the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned. When no document with `identifier` has been found in the collection, then an insert operation takes place instead of updating. Finally 201 HTTP status code is returned with only `Last-Modified` header (`identifier` is already known from the path parameter). @@ -283,13 +285,14 @@ paths: $ref: '#/components/schemas/DocumentToPost' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: + 200: + $ref: '#/components/responses/200Ok' 201: $ref: '#/components/responses/201Created' - 204: - $ref: '#/components/responses/204NoContentLocation' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -312,10 +315,10 @@ paths: - generic summary: 'PATCH: Partially updates document in the collection' description: - Normally the document with the matching `identifier` will be retrieved from the collection and it will be patched by all specified fields from the JSON request body. Finally 204 HTTP status code will be returned with empty response body. + Normally the document with the matching `identifier` will be retrieved from the collection and it will be patched by all specified fields from the JSON request body. Finally 200 HTTP status code will be returned. - If the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned. + If the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned. When no document with `identifier` has been found in the collection, then the operation ends with 404 HTTP status code. @@ -347,11 +350,12 @@ paths: $ref: '#/components/schemas/DocumentToPost' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: - 204: - $ref: '#/components/responses/204NoContentLocation' + 200: + $ref: '#/components/responses/200Ok' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -360,10 +364,10 @@ paths: $ref: '#/components/responses/403Forbidden' 404: $ref: '#/components/responses/404NotFound' - 412: - $ref: '#/components/responses/412PreconditionFailed' 410: $ref: '#/components/responses/410Gone' + 412: + $ref: '#/components/responses/412PreconditionFailed' 422: $ref: '#/components/responses/422UnprocessableEntity' @@ -387,11 +391,12 @@ paths: - $ref: '#/components/parameters/permanentParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: - 204: - description: Successful operation - empty response + 200: + $ref: '#/components/responses/200Ok' 401: $ref: '#/components/responses/401Unauthorized' 403: @@ -430,9 +435,6 @@ paths: Deleted documents will appear with `isValid` = `false` field. - When there is no change detected since the timestamp the operation ends with 204 HTTP status code and empty response content. - - HISTORY operation has a fallback mechanism in place for documents, which were not created by API v3. For such documents `srvModified` is virtually assigned from the `date` field (for `entries` collection) or from the `created_at` field (for other collections). @@ -448,13 +450,12 @@ paths: - $ref: '#/components/parameters/fieldsParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: $ref: '#/components/responses/history200' - 204: - $ref: '#/components/responses/history204' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -509,13 +510,12 @@ paths: - $ref: '#/components/parameters/fieldsParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: $ref: '#/components/responses/history200' - 204: - $ref: '#/components/responses/history204' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -556,7 +556,8 @@ paths: This operation requires authorization in contrast with VERSION operation. security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: @@ -591,7 +592,8 @@ paths: This operation requires `read` permission for the API and the collections (e.g. `api:treatments:read`). For each collection the permission is checked separately, you will get timestamps only for those collections that you have access to. security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: @@ -850,33 +852,73 @@ components: ###################################################################################### responses: - 201Created: - description: Successfully created a new document in collection - headers: - 'Last-Modified': - $ref: '#/components/schemas/headerLastModified' + 200Ok: + description: The request was successfully processed + content: + application/json: + schema: + properties: + status: + type: integer + example: 200 - 201CreatedLocation: - description: Successfully created a new document in collection + 200Deduplication: + description: Successfully updated a duplicate document in the collection headers: 'Last-Modified': $ref: '#/components/schemas/headerLastModified' 'Location': $ref: '#/components/schemas/headerLocation' + content: + application/json: + schema: + properties: + status: + type: integer + example: 200 + identifier: + $ref: '#/components/schemas/identifierField' + isDeduplication: + $ref: '#/components/schemas/isDeduplicationField' + deduplicatedIdentifier: + $ref: '#/components/schemas/deduplicatedIdentifierField' + - 204NoContent: - description: Successfully finished operation + 201Created: + description: Successfully created a new document in collection headers: 'Last-Modified': $ref: '#/components/schemas/headerLastModified' + content: + application/json: + schema: + properties: + status: + type: integer + example: 201 + identifier: + $ref: '#/components/schemas/identifierField' + lastModified: + $ref: '#/components/schemas/lastModifiedField' - 204NoContentLocation: - description: Successfully finished operation + 201CreatedLocation: + description: Successfully created a new document in collection headers: 'Last-Modified': $ref: '#/components/schemas/headerLastModified' 'Location': $ref: '#/components/schemas/headerLocation' + content: + application/json: + schema: + properties: + status: + type: integer + example: 201 + identifier: + $ref: '#/components/schemas/identifierField' + lastModified: + $ref: '#/components/schemas/lastModifiedField' 304NotModified: description: The document has not been modified on the server since timestamp specified in If-Modified-Since header @@ -886,34 +928,95 @@ components: 400BadRequest: description: The request is malformed. There may be some required parameters missing or there are unrecognized parameters present. + content: + application/json: + schema: + properties: + status: + type: integer + example: 400 401Unauthorized: description: The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy. + content: + application/json: + schema: + properties: + status: + type: integer + example: 401 403Forbidden: description: Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation. + content: + application/json: + schema: + properties: + status: + type: integer + example: 403 404NotFound: description: The collection or document specified was not found. + content: + application/json: + schema: + properties: + status: + type: integer + example: 404 406NotAcceptable: description: The requested content type (in `Accept` header) is not supported. + content: + application/json: + schema: + properties: + status: + type: integer + example: 406 412PreconditionFailed: description: The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header). + content: + application/json: + schema: + properties: + status: + type: integer + example: 412 410Gone: description: The requested document has already been deleted. + content: + application/json: + schema: + properties: + status: + type: integer + example: 410 422UnprocessableEntity: description: The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`). + content: + application/json: + schema: + properties: + status: + type: integer + example: 422 search200: description: Successful operation returning array of documents matching the filtering criteria content: application/json: schema: - $ref: '#/components/schemas/DocumentArray' + properties: + status: + type: integer + example: 200 + result: + $ref: '#/components/schemas/DocumentArray' text/csv: schema: $ref: '#/components/schemas/DocumentArray' @@ -921,15 +1024,17 @@ components: schema: $ref: '#/components/schemas/DocumentArray' - search204: - description: Successful operation - no documents matching the filtering criteria - read200: description: The document has been succesfully found and its JSON form returned in the response content. content: application/json: schema: - $ref: '#/components/schemas/Document' + properties: + status: + type: integer + example: 200 + result: + $ref: '#/components/schemas/Document' text/csv: schema: $ref: '#/components/schemas/Document' @@ -946,7 +1051,12 @@ components: content: application/json: schema: - $ref: '#/components/schemas/DocumentArray' + properties: + status: + type: integer + example: 200 + result: + $ref: '#/components/schemas/DocumentArray' text/csv: schema: $ref: '#/components/schemas/DocumentArray' @@ -959,15 +1069,18 @@ components: 'ETag': $ref: '#/components/schemas/headerEtagLastModifiedMaximum' - history204: - description: No changes detected - lastModified200: description: Successful operation returning the timestamps content: application/json: schema: - $ref: '#/components/schemas/LastModifiedResult' + properties: + status: + type: integer + example: 200 + result: + $ref: '#/components/schemas/LastModifiedResult' + ###################################################################################### schemas: @@ -1025,6 +1138,44 @@ components: example: '53409478-105f-11e9-ab14-d663bd873d93' + identifierField: + description: + Identifier of created or modified document + type: string + example: '53409478-105f-11e9-ab14-d663bd873d93' + + + lastModifiedField: + type: integer + format: int64 + description: + Timestamp of the last document modification on the server, formatted as + + Unix epoch in milliseconds (1525383610088) + example: 1525383610088 + + statusField: + type: integer + description: + HTTP response status code. The status appears also in response body's field for those clients + that are unable to process standard HTTP status code. + example: 200 + + + isDeduplicationField: + type: boolean + description: + Flag whether the operation found a duplicate document (to update) + example: true + + + deduplicatedIdentifierField: + type: string + description: + The original document that has been marked as a duplicate document and which has been updated + example: 'abc09478-105f-11e9-ab14-d663bd873d93' + + DocumentBase: description: Shared base for all documents properties: @@ -1527,6 +1678,17 @@ components: Version: description: Information about versions + type: object + properties: + + status: + $ref: '#/components/schemas/statusField' + + result: + $ref: '#/components/schemas/VersionResult' + + + VersionResult: type: object properties: @@ -1562,8 +1724,17 @@ components: Status: description: Information about versions and API permissions + properties: + status: + $ref: '#/components/schemas/statusField' + + result: + $ref: '#/components/schemas/StatusResult' + + + StatusResult: allOf: - - $ref: '#/components/schemas/Version' + - $ref: '#/components/schemas/VersionResult' - type: object properties: @@ -1586,7 +1757,6 @@ components: type: string example: 'crud' - LastModifiedResult: description: Result of LAST MODIFIED operation properties: @@ -1644,4 +1814,4 @@ components: type: http scheme: bearer description: Use this if you know the temporary json webtoken. - bearerFormat: JWT \ No newline at end of file + bearerFormat: JWT diff --git a/tests/api3.basic.test.js b/tests/api3.basic.test.js index d13b8628562..28f4c667ee1 100644 --- a/tests/api3.basic.test.js +++ b/tests/api3.basic.test.js @@ -29,11 +29,13 @@ describe('Basic REST API3', function() { .expect(200); const apiConst = require('../lib/api3/const.json') - , software = require('../package.json'); + , software = require('../package.json') + , result = res.body.result; - res.body.version.should.equal(software.version); - res.body.apiVersion.should.equal(apiConst.API3_VERSION); - res.body.srvDate.should.be.within(testConst.YEAR_2019, testConst.YEAR_2050); + res.body.status.should.equal(200); + result.version.should.equal(software.version); + result.apiVersion.should.equal(apiConst.API3_VERSION); + result.srvDate.should.be.within(testConst.YEAR_2019, testConst.YEAR_2050); }); }); diff --git a/tests/api3.create.test.js b/tests/api3.create.test.js index 0ab4f3d5b42..5d155f4ecc1 100644 --- a/tests/api3.create.test.js +++ b/tests/api3.create.test.js @@ -29,8 +29,10 @@ describe('API3 CREATE', function() { * Cleanup after successful creation */ self.delete = async function deletePermanent (identifier) { - await self.instance.delete(`${self.url}/${identifier}?permanent=true&token=${self.token.delete}`) - .expect(204); + let res = await self.instance.delete(`${self.url}/${identifier}?permanent=true&token=${self.token.delete}`) + .expect(200); + + res.body.status.should.equal(200); }; @@ -41,7 +43,8 @@ describe('API3 CREATE', function() { let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) .expect(200); - return res.body; + res.body.status.should.equal(200); + return res.body.result; }; @@ -52,7 +55,8 @@ describe('API3 CREATE', function() { let res = await self.instance.get(`${self.url}?date$eq=${date}&token=${self.token.read}`) .expect(200); - return res.body; + res.body.status.should.equal(200); + return res.body.result; }; @@ -103,7 +107,8 @@ describe('API3 CREATE', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); + should.not.exist(res.body.result); }); @@ -118,9 +123,11 @@ describe('API3 CREATE', function() { it('should reject empty body', async () => { - await self.instance.post(self.urlToken) + let res = await self.instance.post(self.urlToken) .send({ }) .expect(400); + + res.body.status.should.equal(400); }); @@ -129,12 +136,15 @@ describe('API3 CREATE', function() { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); + res.body.identifier.should.equal(self.validDoc.identifier); res.headers.location.should.equal(`${self.url}/${self.validDoc.identifier}`); + const lastModifiedBody = res.body.lastModified; const lastModified = new Date(res.headers['last-modified']).getTime(); // Last-Modified has trimmed milliseconds let body = await self.get(self.validDoc.identifier); body.should.containEql(self.validDoc); + body.srvModified.should.equal(lastModifiedBody); self.cache.nextShouldEql(self.col, self.validDoc) const ms = body.srvModified % 1000; @@ -331,7 +341,7 @@ describe('API3 CREATE', function() { }); - it('should deduplicate document by identifier', async () => { + it('should upsert document (matched by identifier)', async () => { self.validDoc.date = (new Date()).getTime(); self.validDoc.identifier = utils.randomString('32', 'aA#'); @@ -349,9 +359,11 @@ describe('API3 CREATE', function() { insulin: 0.5 }); - await self.instance.post(`${self.url}?token=${self.token.all}`) + let resPost2 = await self.instance.post(`${self.url}?token=${self.token.all}`) .send(doc2) - .expect(204); + .expect(200); + + resPost2.body.status.should.equal(200); let updatedBody = await self.get(doc2.identifier); updatedBody.should.containEql(doc2); @@ -387,9 +399,15 @@ describe('API3 CREATE', function() { }); delete doc2._id; // APIv1 updates input document, we must get rid of _id for the next round - await self.instance.post(`${self.url}?token=${self.token.all}`) + const resPost2 = await self.instance.post(`${self.url}?token=${self.token.all}`) .send(doc2) - .expect(204); + .expect(200); + + resPost2.body.status.should.equal(200); + resPost2.body.identifier.should.equal(doc2.identifier); + resPost2.body.isDeduplication.should.equal(true); + // doc (first document) was created "the old way" without identifier, so _id becomes the identifier for doc + resPost2.body.deduplicatedIdentifier.should.equal(doc._id); let updatedBody = await self.get(doc2.identifier); updatedBody.should.containEql(doc2); @@ -436,6 +454,8 @@ describe('API3 CREATE', function() { let updatedBody = await self.get(doc2.identifier); updatedBody.should.containEql(doc2); updatedBody.identifier.should.not.equal(oldBody.identifier); + should.not.exist(updatedBody.isDeduplication); + should.not.exist(updatedBody.deduplicatedIdentifier); self.cache.nextShouldEql(self.col, doc2) await self.delete(doc2.identifier); @@ -456,25 +476,27 @@ describe('API3 CREATE', function() { .expect(201); self.cache.nextShouldEql(self.col, Object.assign({}, doc, { date: date1.getTime() })); - await self.instance.delete(`${self.url}/${identifier}?token=${self.token.delete}`) - .expect(204); + let res = await self.instance.delete(`${self.url}/${identifier}?token=${self.token.delete}`) + .expect(200); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) const date2 = new Date(); - let res = await self.instance.post(self.urlToken) + res = await self.instance.post(self.urlToken) .send(Object.assign({}, self.validDoc, { identifier, date: date2.toISOString() })) .expect(403); - res.body.status.should.be.equal(403); - res.body.message.should.be.equal('Missing permission api:treatments:update'); + res.body.status.should.equal(403); + res.body.message.should.equal('Missing permission api:treatments:update'); self.cache.shouldBeEmpty() const doc2 = Object.assign({}, self.validDoc, { identifier, date: date2.toISOString() }); res = await self.instance.post(`${self.url}?token=${self.token.all}`) .send(doc2) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); + res.body.identifier.should.equal(identifier); self.cache.nextShouldEql(self.col, Object.assign({}, doc2, { date: date2.getTime() })); let body = await self.get(identifier); @@ -495,7 +517,8 @@ describe('API3 CREATE', function() { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); + res.body.identifier.should.equal(validIdentifier); res.headers.location.should.equal(`${self.url}/${validIdentifier}`); self.validDoc.identifier = validIdentifier; @@ -517,7 +540,8 @@ describe('API3 CREATE', function() { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); + res.body.identifier.should.equal(validIdentifier); res.headers.location.should.equal(`${self.url}/${validIdentifier}`); self.validDoc.identifier = validIdentifier; @@ -528,9 +552,12 @@ describe('API3 CREATE', function() { delete self.validDoc.identifier; res = await self.instance.post(`${self.url}?token=${self.token.update}`) .send(self.validDoc) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); + res.body.identifier.should.equal(validIdentifier); + res.body.isDeduplication.should.equal(true); + should.not.exist(res.body.deduplicatedIdentifier); // no identifier change occured res.headers.location.should.equal(`${self.url}/${validIdentifier}`); self.validDoc.identifier = validIdentifier; self.cache.nextShouldEql(self.col, self.validDoc); diff --git a/tests/api3.delete.test.js b/tests/api3.delete.test.js index 5ca87a0d57b..fb15754ed9d 100644 --- a/tests/api3.delete.test.js +++ b/tests/api3.delete.test.js @@ -57,7 +57,7 @@ describe('API3 UPDATE', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); }); }); diff --git a/tests/api3.generic.workflow.test.js b/tests/api3.generic.workflow.test.js index 49bd7664d30..a4888505fe8 100644 --- a/tests/api3.generic.workflow.test.js +++ b/tests/api3.generic.workflow.test.js @@ -65,8 +65,9 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlHistory}/${self.historyTimestamp}?token=${self.token.read}`) .expect(200); - res.body.length.should.be.above(0); - res.body.should.matchAny(value => { + res.body.status.should.equal(200); + res.body.result.length.should.be.above(0); + res.body.result.should.matchAny(value => { value.identifier.should.be.eql(self.identifier); value.srvModified.should.be.above(self.historyTimestamp); @@ -83,9 +84,10 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlLastModified}?token=${self.token.read}`) .expect(200); - self.historyTimestamp = res.body.collections.treatments; + res.body.status.should.equal(200); + self.historyTimestamp = res.body.result.collections.treatments; if (!self.historyTimestamp) { - self.historyTimestamp = res.body.srvDate - (10 * 60 * 1000); + self.historyTimestamp = res.body.result.srvDate - (10 * 60 * 1000); } self.historyTimestamp.should.be.aboveOrEqual(testConst.YEAR_2019); }); @@ -95,7 +97,8 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`/api/v3/status?token=${self.token.read}`) .expect(200); - self.historyTimestamp = res.body.srvDate; + res.body.status.should.equal(200); + self.historyTimestamp = res.body.result.srvDate; self.historyTimestamp.should.be.aboveOrEqual(testConst.YEAR_2019); }); @@ -111,7 +114,8 @@ describe('Generic REST API3', function() { .query({ 'identifier_eq': self.identifier }) .expect(200); - res.body.should.have.length(0); + res.body.status.should.equal(200); + res.body.result.should.have.length(0); }); @@ -134,8 +138,9 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); - res.body.should.containEql(self.docOriginal); - self.docActual = res.body; + res.body.status.should.equal(200); + res.body.result.should.containEql(self.docOriginal); + self.docActual = res.body.result; if (self.historyTimestamp >= self.docActual.srvModified) { self.historyTimestamp = self.docActual.srvModified - 1; @@ -148,8 +153,9 @@ describe('Generic REST API3', function() { .query({ 'identifier$eq': self.identifier }) .expect(200); - res.body.length.should.be.above(0); - res.body.should.matchAny(value => { + res.body.status.should.equal(200); + res.body.result.length.should.be.above(0); + res.body.result.should.matchAny(value => { value.identifier.should.be.eql(self.identifier); }); }); @@ -163,10 +169,11 @@ describe('Generic REST API3', function() { it('UPDATE document', async () => { self.docActual.insulin = 0.5; - await self.instance.put(`${self.urlResource}?token=${self.token.update}`) + let res = await self.instance.put(`${self.urlResource}?token=${self.token.update}`) .send(self.docActual) - .expect(204); + .expect(200); + res.body.status.should.equal(200); self.docActual.subject = self.subject.apiUpdate.name; delete self.docActual.srvModified; @@ -183,9 +190,10 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); + res.body.status.should.equal(200); delete self.docActual.srvModified; - res.body.should.containEql(self.docActual); - self.docActual = res.body; + res.body.result.should.containEql(self.docActual); + self.docActual = res.body.result; }); @@ -193,10 +201,11 @@ describe('Generic REST API3', function() { self.docActual.carbs = 5; self.docActual.insulin = 0.4; - await self.instance.patch(`${self.urlResource}?token=${self.token.update}`) + let res = await self.instance.patch(`${self.urlResource}?token=${self.token.update}`) .send({ 'carbs': self.docActual.carbs, 'insulin': self.docActual.insulin }) - .expect(204); + .expect(200); + res.body.status.should.equal(200); delete self.docActual.srvModified; self.cache.nextShouldEql(self.col, self.docActual) @@ -212,16 +221,18 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); + res.body.status.should.equal(200); delete self.docActual.srvModified; - res.body.should.containEql(self.docActual); - self.docActual = res.body; + res.body.result.should.containEql(self.docActual); + self.docActual = res.body.result; }); it('soft DELETE', async () => { - await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) - .expect(204); + let res = await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) + .expect(200); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) }); @@ -238,7 +249,8 @@ describe('Generic REST API3', function() { .query({ 'identifier_eq': self.identifier }) .expect(200); - res.body.should.have.length(0); + res.body.status.should.equal(200); + res.body.result.should.have.length(0); }); @@ -250,10 +262,11 @@ describe('Generic REST API3', function() { it('permanent DELETE', async () => { - await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) + let res = await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) .query({ 'permanent': 'true' }) - .expect(204); + .expect(200); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) }); @@ -267,13 +280,10 @@ describe('Generic REST API3', function() { it('document permanently deleted not in HISTORY', async () => { let res = await self.instance.get(`${self.urlHistory}/${self.historyTimestamp}?token=${self.token.read}`); - if (res.status === 200) { - res.body.should.matchEach(value => { - value.identifier.should.not.be.eql(self.identifier); - }); - } else { - res.status.should.equal(204); - } + res.body.status.should.equal(200); + res.body.result.should.matchEach(value => { + value.identifier.should.not.be.eql(self.identifier); + }); }); @@ -285,7 +295,8 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); - self.docActual = res.body; + res.body.status.should.equal(200); + self.docActual = res.body.result; delete self.docActual.srvModified; const readOnlyMessage = 'Trying to modify read-only document'; @@ -314,7 +325,8 @@ describe('Generic REST API3', function() { res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); - res.body.should.containEql(self.docOriginal); + res.body.status.should.equal(200); + res.body.result.should.containEql(self.docOriginal); }); }); diff --git a/tests/api3.patch.test.js b/tests/api3.patch.test.js index 750bb37b745..8bf13a68f4f 100644 --- a/tests/api3.patch.test.js +++ b/tests/api3.patch.test.js @@ -31,7 +31,8 @@ describe('API3 PATCH', function() { let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) .expect(200); - return res.body; + res.body.status.should.equal(200); + return res.body.result; }; @@ -81,7 +82,7 @@ describe('API3 PATCH', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); }); @@ -90,14 +91,14 @@ describe('API3 PATCH', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); // now let's insert the document for further patching res = await self.instance.post(`${self.url}?token=${self.token.create}`) .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); self.cache.nextShouldEql(self.col, self.validDoc) }); @@ -217,9 +218,9 @@ describe('API3 PATCH', function() { let res = await self.instance.patch(self.urlToken) .send(self.validDoc) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); let body = await self.get(self.validDoc.identifier); body.carbs.should.equal(10); diff --git a/tests/api3.read.test.js b/tests/api3.read.test.js index 3c7f0eaf964..7a330769f7c 100644 --- a/tests/api3.read.test.js +++ b/tests/api3.read.test.js @@ -68,16 +68,18 @@ describe('API3 READ', function () { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); - + res.body.status.should.equal(404); + should.not.exist(res.body.result); self.cache.shouldBeEmpty() }); it('should not found not existing document', async () => { - await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) + let res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(404); + res.body.status.should.equal(404); + should.not.exist(res.body.result); self.cache.shouldBeEmpty() }); @@ -87,16 +89,18 @@ describe('API3 READ', function () { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(200); - res.body.should.containEql(self.validDoc); - res.body.should.have.property('srvCreated').which.is.a.Number(); - res.body.should.have.property('srvModified').which.is.a.Number(); - res.body.should.have.property('subject'); - self.validDoc.subject = res.body.subject; // let's store subject for later tests + res.body.status.should.equal(200); + const result = res.body.result; + result.should.containEql(self.validDoc); + result.should.have.property('srvCreated').which.is.a.Number(); + result.should.have.property('srvModified').which.is.a.Number(); + result.should.have.property('subject'); + self.validDoc.subject = result.subject; // let's store subject for later tests self.cache.nextShouldEql(self.col, self.validDoc) }); @@ -106,12 +110,13 @@ describe('API3 READ', function () { let res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?fields=date,device,subject&token=${self.token.read}`) .expect(200); + res.body.status.should.equal(200); const correct = { date: self.validDoc.date, device: self.validDoc.device, subject: self.validDoc.subject }; - res.body.should.eql(correct); + res.body.result.should.eql(correct); }); @@ -119,8 +124,9 @@ describe('API3 READ', function () { let res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?fields=_all&token=${self.token.read}`) .expect(200); + res.body.status.should.equal(200); for (let fieldName of ['app', 'date', 'device', 'identifier', 'srvModified', 'uploaderBattery', 'subject']) { - res.body.should.have.property(fieldName); + res.body.result.should.have.property(fieldName); } }); @@ -139,39 +145,42 @@ describe('API3 READ', function () { .set('If-Modified-Since', new Date(new Date(self.validDoc.date).getTime() - 1000).toUTCString()) .expect(200); - res.body.should.containEql(self.validDoc); + res.body.status.should.equal(200); + res.body.result.should.containEql(self.validDoc); }); it('should recognize softly deleted document', async () => { let res = await self.instance.delete(`${self.url}/${self.validDoc.identifier}?token=${self.token.delete}`) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(410); - res.body.should.be.empty(); + res.body.status.should.equal(410); + should.not.exist(res.body.result); }); - it('should not found permanently deleted document', async () => { + it('should not find permanently deleted document', async () => { let res = await self.instance.delete(`${self.url}/${self.validDoc.identifier}?permanent=true&token=${self.token.delete}`) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); + should.not.exist(res.body.result); }); - it('should found document created by APIv1', async () => { + it('should find document created by APIv1', async () => { const doc = Object.assign({}, self.validDoc, { created_at: new Date(self.validDoc.date).toISOString() @@ -195,12 +204,13 @@ describe('API3 READ', function () { let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) .expect(200); - res.body.should.containEql(doc); + res.body.status.should.equal(200); + res.body.result.should.containEql(doc); res = await self.instance.delete(`${self.url}/${identifier}?permanent=true&token=${self.token.delete}`) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) }); diff --git a/tests/api3.renderer.test.js b/tests/api3.renderer.test.js index f92af5b7d72..d897cf96306 100644 --- a/tests/api3.renderer.test.js +++ b/tests/api3.renderer.test.js @@ -143,7 +143,7 @@ describe('API3 output renderers', function() { .send(doc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); res = await self.instance.get(`${self.url}/${doc.identifier}?token=${self.token.read}`) .expect(200); @@ -163,7 +163,9 @@ describe('API3 output renderers', function() { async function check406 (request) { const res = await request .expect(406); + res.status.should.equal(406); res.body.message.should.eql('Unsupported output format requested'); + should.not.exist(res.body.result); } await check406(self.instance.get(`${self.url}/${self.doc1.identifier}.ttf?fields=_all&token=${self.token.read}`)); @@ -271,16 +273,16 @@ describe('API3 output renderers', function() { it('should remove mock documents', async () => { async function deleteDoc (identifier) { - await self.instance.delete(`${self.url}/${identifier}?token=${self.token.delete}`) + let res = await self.instance.delete(`${self.url}/${identifier}?token=${self.token.delete}`) .query({ 'permanent': 'true' }) - .expect(204); + .expect(200); + + res.body.status.should.equal(200); + self.cache.nextShouldDeleteLast(self.col); } await deleteDoc(self.doc1.identifier); - self.cache.nextShouldDeleteLast(self.col) - await deleteDoc(self.doc2.identifier); - self.cache.nextShouldDeleteLast(self.col) }); }); diff --git a/tests/api3.search.test.js b/tests/api3.search.test.js index af109a18451..d504bdb7937 100644 --- a/tests/api3.search.test.js +++ b/tests/api3.search.test.js @@ -75,6 +75,7 @@ describe('API3 SEARCH', function() { res.body.status.should.equal(401); res.body.message.should.equal('Missing or bad access token or JWT'); + should.not.exist(res.body.result); }); @@ -83,7 +84,8 @@ describe('API3 SEARCH', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); + should.not.exist(res.body.result); }); @@ -91,7 +93,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(self.urlToken) .expect(200); - res.body.length.should.be.aboveOrEqual(self.docs.length); + res.body.status.should.equal(200); + res.body.result.length.should.be.aboveOrEqual(self.docs.length); }); @@ -99,7 +102,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(self.urlTest) .expect(200); - res.body.length.should.be.aboveOrEqual(self.docs.length); + res.body.status.should.equal(200); + res.body.result.length.should.be.aboveOrEqual(self.docs.length); }); @@ -107,8 +111,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=INVALID`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter limit out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter limit out of tolerance'); + should.not.exist(res.body.result); }); @@ -116,8 +121,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=-1`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter limit out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter limit out of tolerance'); + should.not.exist(res.body.result); }); @@ -125,8 +131,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=0`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter limit out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter limit out of tolerance'); + should.not.exist(res.body.result); }); @@ -134,7 +141,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=3`) .expect(200); - res.body.length.should.be.equal(3); + res.body.status.should.equal(200); + res.body.result.length.should.equal(3); }); @@ -142,8 +150,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&skip=INVALID`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter skip out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter skip out of tolerance'); + should.not.exist(res.body.result); }); @@ -151,8 +160,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&skip=-5`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter skip out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter skip out of tolerance'); + should.not.exist(res.body.result); }); @@ -160,8 +170,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&sort=date&sort$desc=created_at`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameters sort and sort_desc cannot be combined'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameters sort and sort_desc cannot be combined'); + should.not.exist(res.body.result); }); @@ -169,14 +180,16 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlTest}&sort=date`) .expect(200); - const ascending = res.body; + res.body.status.should.equal(200); + const ascending = res.body.result; const length = ascending.length; length.should.be.aboveOrEqual(self.docs.length); res = await self.instance.get(`${self.urlTest}&sort$desc=date`) .expect(200); - const descending = res.body; + res.body.status.should.equal(200); + const descending = res.body.result; descending.length.should.equal(length); for (let i in ascending) { @@ -193,14 +206,16 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&sort=date&limit=8`) .expect(200); - const fullDocs = res.body; - fullDocs.length.should.be.equal(8); + res.body.status.should.equal(200); + const fullDocs = res.body.result; + fullDocs.length.should.equal(8); res = await self.instance.get(`${self.urlToken}&sort=date&skip=3&limit=5`) .expect(200); - const skipDocs = res.body; - skipDocs.length.should.be.equal(5); + res.body.status.should.equal(200); + const skipDocs = res.body.result; + skipDocs.length.should.equal(5); for (let i = 0; i < 3; i++) { skipDocs[i].should.be.eql(fullDocs[i + 3]); @@ -212,7 +227,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&fields=date,app,subject`) .expect(200); - res.body.forEach(doc => { + res.body.status.should.equal(200); + res.body.result.forEach(doc => { const docFields = Object.getOwnPropertyNames(doc); docFields.sort().should.be.eql(['app', 'date', 'subject']); }); @@ -223,7 +239,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&fields=_all`) .expect(200); - res.body.forEach(doc => { + res.body.status.should.equal(200); + res.body.result.forEach(doc => { Object.getOwnPropertyNames(doc).length.should.be.aboveOrEqual(10); Object.prototype.hasOwnProperty.call(doc, '_id').should.not.be.true(); Object.prototype.hasOwnProperty.call(doc, 'identifier').should.be.true(); @@ -240,8 +257,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=10`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter limit out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter limit out of tolerance'); apiApp.set('API3_MAX_LIMIT', limitBackup); }); @@ -253,7 +270,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}`) .expect(200); - res.body.length.should.be.equal(5); + res.body.status.should.equal(200); + res.body.result.length.should.equal(5); apiApp.set('API3_MAX_LIMIT', limitBackup); }); diff --git a/tests/api3.socket.test.js b/tests/api3.socket.test.js index 9560c200c65..8c63486bba1 100644 --- a/tests/api3.socket.test.js +++ b/tests/api3.socket.test.js @@ -128,7 +128,7 @@ describe('Socket.IO in REST API3', function() { self.instance.put(`${self.urlResource}?token=${self.token.update}`) .send(self.docActual) - .expect(204) + .expect(200) .end((err) => { should.not.exist(err); self.docActual.subject = self.subject.apiUpdate.name; @@ -152,7 +152,7 @@ describe('Socket.IO in REST API3', function() { self.instance.patch(`${self.urlResource}?token=${self.token.update}`) .send({ 'carbs': self.docActual.carbs, 'insulin': self.docActual.insulin }) - .expect(204) + .expect(200) .end((err) => { should.not.exist(err); }); @@ -168,7 +168,7 @@ describe('Socket.IO in REST API3', function() { }); self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) - .expect(204) + .expect(200) .end((err) => { should.not.exist(err); }); diff --git a/tests/api3.update.test.js b/tests/api3.update.test.js index 71f1c021192..7c28dbb2205 100644 --- a/tests/api3.update.test.js +++ b/tests/api3.update.test.js @@ -32,7 +32,8 @@ describe('API3 UPDATE', function() { let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) .expect(200); - return res.body; + res.body.status.should.equal(200); + return res.body.result; }; @@ -82,7 +83,7 @@ describe('API3 UPDATE', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); }); @@ -101,7 +102,8 @@ describe('API3 UPDATE', function() { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); + res.body.identifier.should.equal(self.validDoc.identifier); self.cache.nextShouldEql(self.col, self.validDoc) const lastModified = new Date(res.headers['last-modified']).getTime(); // Last-Modified has trimmed milliseconds @@ -123,9 +125,9 @@ describe('API3 UPDATE', function() { let res = await self.instance.put(self.urlToken) .send(self.validDoc) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldEql(self.col, self.validDoc) const lastModified = new Date(res.headers['last-modified']).getTime(); // Last-Modified has trimmed milliseconds @@ -148,9 +150,9 @@ describe('API3 UPDATE', function() { let res = await self.instance.put(self.urlToken) .set('If-Unmodified-Since', new Date(new Date().getTime() + 1000).toUTCString()) .send(doc) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldEql(self.col, doc) let body = await self.get(self.validDoc.identifier); @@ -170,7 +172,7 @@ describe('API3 UPDATE', function() { .send(doc) .expect(412); - res.body.should.be.empty(); + res.body.status.should.equal(412); body = await self.get(doc.identifier); body.should.eql(self.validDoc); @@ -282,9 +284,9 @@ describe('API3 UPDATE', function() { let res = await self.instance.put(self.urlToken) .send(Object.assign({}, self.validDoc, { identifier: 'MODIFIED' })) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); delete self.validDoc.srvModified; self.cache.nextShouldEql(self.col, self.validDoc) }); @@ -292,16 +294,16 @@ describe('API3 UPDATE', function() { it('should not update deleted document', async () => { let res = await self.instance.delete(`${self.url}/${self.validDoc.identifier}?token=${self.token.delete}`) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) res = await self.instance.put(self.urlToken) .send(self.validDoc) .expect(410); - res.body.should.be.empty(); + res.body.status.should.equal(410); }); }); From 1351d35066bd889be16c6ab665dd3e355ffb142f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Fri, 8 Jan 2021 16:25:51 +0200 Subject: [PATCH 069/194] * Improved internal API for injecting values into localization keys * Fix a hard to translate key that was split to two separate values --- lib/authorization/index.js | 2 +- lib/language.js | 80 ++++++++++++++++++++++++-------------- tests/language.test.js | 8 ++++ translations/en/en.json | 3 +- 4 files changed, 61 insertions(+), 32 deletions(-) diff --git a/lib/authorization/index.js b/lib/authorization/index.js index 31e42b242e8..b63038c0533 100644 --- a/lib/authorization/index.js +++ b/lib/authorization/index.js @@ -209,7 +209,7 @@ function init (env, ctx) { ctx.bus.emit('admin-notify', { title: ctx.language.translate('Failed authentication') - , message: ctx.language.translate('A device at IP number') + ' ' + data.ip + ' ' + ctx.language.translate('attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?') + , message: ctx.language.translate('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?', data.ip) }); if (callback) { callback('All validation failed', {}); } diff --git a/lib/language.js b/lib/language.js index 951ddb7c07d..ea3f7e71143 100644 --- a/lib/language.js +++ b/lib/language.js @@ -2,9 +2,9 @@ var _ = require('lodash'); -function init(fs) { +function init (fs) { - function language() { + function language () { return language; } @@ -16,7 +16,7 @@ function init(fs) { , { code: 'cs', file: 'cs_CZ', language: 'Čeština', speechCode: 'cs-CZ' } , { code: 'de', file: 'de_DE', language: 'Deutsch', speechCode: 'de-DE' } , { code: 'dk', file: 'da_DK', language: 'Dansk', speechCode: 'dk-DK' } - , { code: 'el', file: 'el_GR', language: 'Ελληνικά', speechCode: 'el-GR'} + , { code: 'el', file: 'el_GR', language: 'Ελληνικά', speechCode: 'el-GR' } , { code: 'en', file: 'en_US', language: 'English', speechCode: 'en-US' } , { code: 'es', file: 'es_ES', language: 'Español', speechCode: 'es-ES' } , { code: 'fi', file: 'fi_FI', language: 'Suomi', speechCode: 'fi-FI' } @@ -33,7 +33,7 @@ function init(fs) { , { code: 'pt', file: 'pt_BR', language: 'Português (Brasil)', speechCode: 'pt-BR' } , { code: 'ro', file: 'ro_RO', language: 'Română', speechCode: 'ro-RO' } , { code: 'ru', file: 'ru_RU', language: 'Русский', speechCode: 'ru-RU' } - , { code: 'sk', file: 'sl_SL', language: 'Slovenčina', speechCode: 'sk-SK' } + , { code: 'sk', file: 'sl_SL', language: 'Slovenčina', speechCode: 'sk-SK' } , { code: 'sv', file: 'sv_SE', language: 'Svenska', speechCode: 'sv-SE' } , { code: 'tr', file: 'tr_TR', language: 'Türkçe', speechCode: 'tr-TR' } , { code: 'zh_cn', file: 'zh_CN', language: '中文(简体)', speechCode: 'cmn-Hans-CN' } @@ -41,27 +41,27 @@ function init(fs) { ]; var translations = {}; - + language.translations = translations; - language.offerTranslations = function offerTranslations(localization) { + language.offerTranslations = function offerTranslations (localization) { translations = localization; language.translations = translations; } // case sensitive - language.translateCS = function translateCaseSensitive(text) { + language.translateCS = function translateCaseSensitive (text) { if (translations[text]) { return translations[text]; } - // console.log('localization:', text, 'not found'); + // console.log('localization:', text, 'not found'); return text; }; // case insensitive - language.translateCI = function translateCaseInsensitive(text) { + language.translateCI = function translateCaseInsensitive (text) { var utext = text.toUpperCase(); - _.forEach(translations, function (ts, key) { + _.forEach(translations, function(ts, key) { var ukey = key.toUpperCase(); if (ukey === utext) { text = ts; @@ -70,69 +70,91 @@ function init(fs) { return text; }; - language.translate = function translate(text, options) { + language.translate = function translate (text, options) { var translated; if (options && options.ci) { translated = language.translateCI(text); } else { translated = language.translateCS(text); } + + let keys = null; + if (options && options.params) { - for (var i = 0; i < options.params.length; i++) { + keys = options.params; + } + + if (options && !options.hasOwnProperty('ci') && !options.hasOwnProperty('params')) { + keys = []; + for (var i = 1; i < arguments.length; i++) { + keys.push(arguments[i]); + } + } + + if (options && (options.hasOwnProperty('ci') || options.hasOwnProperty('params')) && arguments.length > 2) { + if (!keys) keys = []; + for (var i = 2; i < arguments.length; i++) { + keys.push(arguments[i]); + } + } + + if (keys) { + for (var i = 0; i < keys.length; i++) { // eslint-disable-next-line no-useless-escape - var r = new RegExp('\%' + (i+1), 'g'); - translated = translated.replace(r, options.params[i]); + var r = new RegExp('\%' + (i + 1), 'g'); + translated = translated.replace(r, keys[i]); } } + return translated; }; - language.DOMtranslate = function DOMtranslate($) { + language.DOMtranslate = function DOMtranslate ($) { // do translation of static text on load - $('.translate').each(function () { + $('.translate').each(function() { $(this).text(language.translate($(this).text())); - }); - $('.titletranslate, .tip').each(function () { - $(this).attr('title',language.translate($(this).attr('title'))); - $(this).attr('original-title',language.translate($(this).attr('original-title'))); - $(this).attr('placeholder',language.translate($(this).attr('placeholder'))); - }); + }); + $('.titletranslate, .tip').each(function() { + $(this).attr('title', language.translate($(this).attr('title'))); + $(this).attr('original-title', language.translate($(this).attr('original-title'))); + $(this).attr('placeholder', language.translate($(this).attr('placeholder'))); + }); }; - language.getFilename = function getFilename(code) { + language.getFilename = function getFilename (code) { if (code == 'en') { return 'en/en.json'; } let file; - language.languages.forEach(function (l) { + language.languages.forEach(function(l) { if (l.code == code) file = l.file; }); return file + '.json'; } // this is a server only call and needs fs by reference as the class is also used in the client - language.loadLocalization = function loadLocalization(fs, path) { + language.loadLocalization = function loadLocalization (fs, path) { let filename = './translations/' + this.getFilename(this.lang); if (path) filename = path.resolve(__dirname, filename); const l = fs.readFileSync(filename); this.offerTranslations(JSON.parse(l)); } - language.set = function set(newlang) { + language.set = function set (newlang) { language.lang = newlang; - language.languages.forEach(function (l) { + language.languages.forEach(function(l) { if (l.code === language.lang && l.speechCode) language.speechCode = l.speechCode; }); return language(); }; - language.get = function get(lang) { + language.get = function get (lang) { var r; - language.languages.forEach(function (l) { + language.languages.forEach(function(l) { if (l.code === lang) r = l; }); return r; diff --git a/tests/language.test.js b/tests/language.test.js index d61eec72ddd..0de87999b4a 100644 --- a/tests/language.test.js +++ b/tests/language.test.js @@ -11,6 +11,14 @@ describe('language', function ( ) { language.translate('Carbs').should.equal('Carbs'); }); + it('replace strings in translations', function () { + var language = require('../lib/language')(); + language.translate('%1 records deleted', '1').should.equal('1 records deleted'); + language.translate('%1 records deleted', 1).should.equal('1 records deleted'); + language.translate('%1 records deleted', {params: ['1']}).should.equal('1 records deleted'); + language.translate('Sensor age %1 days %2 hours', '1', '2').should.equal('Sensor age 1 days 2 hours'); + }); + it('translate to French', function () { var language = require('../lib/language')(); language.set('fr'); diff --git a/translations/en/en.json b/translations/en/en.json index ebf44b08816..cb55e4a0736 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -691,6 +691,5 @@ ,"Remove stored token":"Remove stored token" ,"Weekly Distribution":"Weekly Distribution" ,"Failed authentication":"Failed authentication" - ,"A device at IP number":"A device at IP number" - ,"attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?":"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?": "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?" } From 22c007120520e12468d99054800e6dc69b398bea Mon Sep 17 00:00:00 2001 From: Stephen Brown II Date: Fri, 8 Jan 2021 19:54:41 -0700 Subject: [PATCH 070/194] Don't run docker push on forks (#6718) Skip the docker push steps if the repo owner is not 'nightscout'. --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3c8e1db7bb6..d867f073f9d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -44,7 +44,7 @@ jobs: name: Publish dev branch to Docker Hub needs: test runs-on: ubuntu-latest - if: github.ref == 'refs/heads/dev' + if: github.ref == 'refs/heads/dev' && github.repository_owner == 'nightscout' env: DOCKER_IMAGE: nightscout/cgm-remote-monitor steps: @@ -68,7 +68,7 @@ jobs: name: Publish master branch to Docker Hub needs: test runs-on: ubuntu-latest - if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' && github.repository_owner == 'nightscout' env: DOCKER_IMAGE: nightscout/cgm-remote-monitor steps: From e893d73e319bac5af55106c793a7a246bc130c0a Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 12 Jan 2021 14:08:06 +0200 Subject: [PATCH 071/194] Cherry picking CI flow file so users don't get a CI build fail after merging to latest release --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3c8e1db7bb6..d867f073f9d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -44,7 +44,7 @@ jobs: name: Publish dev branch to Docker Hub needs: test runs-on: ubuntu-latest - if: github.ref == 'refs/heads/dev' + if: github.ref == 'refs/heads/dev' && github.repository_owner == 'nightscout' env: DOCKER_IMAGE: nightscout/cgm-remote-monitor steps: @@ -68,7 +68,7 @@ jobs: name: Publish master branch to Docker Hub needs: test runs-on: ubuntu-latest - if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' && github.repository_owner == 'nightscout' env: DOCKER_IMAGE: nightscout/cgm-remote-monitor steps: From 44c544a9ac80401dfbd0405f8542abf96480e409 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 12 Jan 2021 16:45:23 +0200 Subject: [PATCH 072/194] Support pump status upload display override (#6698) --- lib/plugins/pump.js | 7 ++++- tests/pump.test.js | 71 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/lib/plugins/pump.js b/lib/plugins/pump.js index 33236b7b61f..21b1261739b 100644 --- a/lib/plugins/pump.js +++ b/lib/plugins/pump.js @@ -225,7 +225,11 @@ function init (ctx) { function updateReservoir (prefs, result) { if (result.reservoir) { result.reservoir.label = 'Reservoir'; - result.reservoir.display = result.reservoir.value.toPrecision(3) + 'U'; + if (result.reservoir_display_override) { + result.reservoir.display = result.reservoir_display_override; + } else { + result.reservoir.display = result.reservoir.value.toPrecision(3) + 'U'; + } if (result.reservoir.value < prefs.urgentRes) { result.reservoir.level = levels.URGENT; result.reservoir.message = 'URGENT: Pump Reservoir Low'; @@ -301,6 +305,7 @@ function init (ctx) { level: levels.NONE , clock: pump.clock ? { value: moment(pump.clock) } : null , reservoir: pump.reservoir || pump.reservoir === 0 ? { value: pump.reservoir } : null + , reservoir_display_override: pump.reservoir_display_override || null , manufacturer: pump.manufacturer , model: pump.model , extended: pump.extended || null diff --git a/tests/pump.test.js b/tests/pump.test.js index f82b9fb27c6..dc072c7fabe 100644 --- a/tests/pump.test.js +++ b/tests/pump.test.js @@ -51,12 +51,54 @@ var statuses = [{ } }]; + +var statuses2 = [{ + created_at: '2015-12-05T17:35:00.000Z' + , device: 'openaps://farawaypi' + , pump: { + battery: { + status: 'normal', + voltage: 1.52 + }, + status: { + status: 'normal', + bolusing: false, + suspended: false + }, + reservoir: 86.4, + reservoir_display_override: '50+U', + clock: '2015-12-05T17:32:00.000Z' + } +}, { + created_at: '2015-12-05T19:05:00.000Z' + , device: 'openaps://abusypi' + , pump: { + battery: { + status: 'normal', + voltage: 1.52 + }, + status: { + status: 'normal', + bolusing: false, + suspended: false + }, + reservoir: 86.4, + reservoir_display_override: '50+U', + clock: '2015-12-05T19:02:00.000Z' + } +}]; + + var now = moment(statuses[1].created_at); _.forEach(statuses, function updateMills (status) { status.mills = moment(status.created_at).valueOf(); }); +_.forEach(statuses2, function updateMills (status) { + status.mills = moment(status.created_at).valueOf(); +}); + describe('pump', function ( ) { it('set the property and update the pill', function (done) { @@ -92,7 +134,36 @@ describe('pump', function ( ) { }; pump.setProperties(sbx); + pump.updateVisualisation(sbx); + + }); + it('use reservoir_display_override when available', function (done) { + var ctx = { + settings: { + units: 'mmol' + } + , pluginBase: { + updatePillText: function mockedUpdatePillText(plugin, options) { + options.label.should.equal('Pump'); + options.value.should.equal('50+U'); + done(); + } + } + , language: language + , levels: levels + }; + + var sbx = sandbox.clientInit(ctx, now.valueOf(), {devicestatus: statuses2}); + + var unmockedOfferProperty = sbx.offerProperty; + sbx.offerProperty = function mockedOfferProperty (name, setter) { + name.should.equal('pump'); + sbx.offerProperty = unmockedOfferProperty; + unmockedOfferProperty(name, setter); + }; + + pump.setProperties(sbx); pump.updateVisualisation(sbx); }); From c0b96a714e618c79f79995f3cf325c16074921ed Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 14 Jan 2021 09:29:00 +0200 Subject: [PATCH 073/194] Fix admin localization --- lib/admin_plugins/roles.js | 2 +- lib/admin_plugins/subjects.js | 2 +- translations/en/en.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/admin_plugins/roles.js b/lib/admin_plugins/roles.js index a054fc48c05..ee3bc30b89c 100644 --- a/lib/admin_plugins/roles.js +++ b/lib/admin_plugins/roles.js @@ -46,7 +46,7 @@ function createOrSaveRole (role, client, callback) { reload(client, callback); }).fail(function fail (err) { console.error('Unable to ' + method + ' Role', err.responseText); - window.alert(client.translate('Unable to %1 Role', { params: [method] })); + window.alert(client.translate('Unable to save Role')); if (callback) { callback(err); } diff --git a/lib/admin_plugins/subjects.js b/lib/admin_plugins/subjects.js index 828011f88e0..b1123029eaf 100644 --- a/lib/admin_plugins/subjects.js +++ b/lib/admin_plugins/subjects.js @@ -45,7 +45,7 @@ function createOrSaveSubject (subject, client, callback) { reload(client, callback); }).fail(function fail (err) { console.error('Unable to ' + method + ' Subject', err.responseText); - window.alert(client.translate('Unable to ' + method + ' Subject')); + window.alert(client.translate('Unable to save Subject')); if (callback) { callback(); } diff --git a/translations/en/en.json b/translations/en/en.json index cb55e4a0736..6c0ff498456 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -417,7 +417,7 @@ ,"Negative temp basal insulin:":"Negative temp basal insulin:" ,"Total basal insulin:":"Total basal insulin:" ,"Total daily insulin:":"Total daily insulin:" - ,"Unable to %1 Role":"Unable to %1 Role" + ,"Unable to save Role":"Unable to save Role" ,"Unable to delete Role":"Unable to delete Role" ,"Database contains %1 roles":"Database contains %1 roles" ,"Edit Role":"Edit Role" @@ -432,7 +432,7 @@ ,"Subjects - People, Devices, etc":"Subjects - People, Devices, etc" ,"Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.":"Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared." ,"Add new Subject":"Add new Subject" - ,"Unable to %1 Subject":"Unable to %1 Subject" + ,"Unable to save Subject":"Unable to save Subject" ,"Unable to delete Subject":"Unable to delete Subject" ,"Database contains %1 subjects":"Database contains %1 subjects" ,"Edit Subject":"Edit Subject" From 647ed20de15e11469cf3740f4b5e0443e4702958 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 17 Jan 2021 12:20:48 +0200 Subject: [PATCH 074/194] Clean statics & bundle more (#6745) * * Remove unused old version of MFB * Bundle food, profile editor * Clean up the static folders * Fix tests --- bundle/bundle.reports.source.js | 2 + {static/food/js => lib/food}/food.js | 8 +- .../js => lib/profile}/profileeditor.js | 9 +- lib/report/reportclient.js | 3 - static/js/foodinit.js | 6 + static/js/profileinit.js | 6 + .../{report/js/report.js => js/reportinit.js} | 0 static/mfb/lib/modernizr.touch.js | 4 - static/mfb/mfb.css | 671 ------------------ static/mfb/mfb.css.map | 7 - static/mfb/mfb.js | 98 --- static/mfb/mfb.min.css | 1 - static/mfb/mfb.min.js | 1 - static/radio/js/radio.js | 110 --- static/report/css/mfb.min.css | 1 - tests/profileeditor.test.js | 4 +- tests/reports.test.js | 11 +- views/foodindex.html | 4 +- views/profileindex.html | 4 +- views/reportindex.html | 2 +- 20 files changed, 40 insertions(+), 912 deletions(-) rename {static/food/js => lib/food}/food.js (99%) rename {static/profile/js => lib/profile}/profileeditor.js (99%) create mode 100644 static/js/foodinit.js create mode 100644 static/js/profileinit.js rename static/{report/js/report.js => js/reportinit.js} (100%) delete mode 100644 static/mfb/lib/modernizr.touch.js delete mode 100644 static/mfb/mfb.css delete mode 100644 static/mfb/mfb.css.map delete mode 100644 static/mfb/mfb.js delete mode 100644 static/mfb/mfb.min.css delete mode 100644 static/mfb/mfb.min.js delete mode 100644 static/radio/js/radio.js delete mode 100644 static/report/css/mfb.min.css diff --git a/bundle/bundle.reports.source.js b/bundle/bundle.reports.source.js index e633f73ea27..265cf87e34b 100644 --- a/bundle/bundle.reports.source.js +++ b/bundle/bundle.reports.source.js @@ -5,6 +5,8 @@ console.info('Nightscout report bundle start'); window.Nightscout.report_plugins_preinit = require('../lib/report_plugins/'); window.Nightscout.predictions = require('../lib/report/predictions'); window.Nightscout.reportclient = require('../lib/report/reportclient'); +window.Nightscout.profileclient = require('../lib/profile/profileeditor'); +window.Nightscout.foodclient = require('../lib/food/food'); console.info('Nightscout report bundle ready'); diff --git a/static/food/js/food.js b/lib/food/food.js similarity index 99% rename from static/food/js/food.js rename to lib/food/food.js index 2ffc78d2623..d5b32b84b36 100644 --- a/static/food/js/food.js +++ b/lib/food/food.js @@ -1,13 +1,13 @@ 'use strict'; +var init = function init () { + //for the tests window isn't the global object var $ = window.$; var _ = window._; var Nightscout = window.Nightscout; var client = Nightscout.client; -(function () { - client.init(function loaded () { var translate = client.translate; @@ -677,4 +677,6 @@ client.init(function loaded () { } } }); -})(); \ No newline at end of file +}; + +module.exports = init; diff --git a/static/profile/js/profileeditor.js b/lib/profile/profileeditor.js similarity index 99% rename from static/profile/js/profileeditor.js rename to lib/profile/profileeditor.js index 77a1b205d7a..a8fecce1a25 100644 --- a/static/profile/js/profileeditor.js +++ b/lib/profile/profileeditor.js @@ -1,5 +1,6 @@ -(function () { - 'use strict'; +'use strict'; + +var init = function init () { //for the tests window isn't the global object var $ = window.$; var _ = window._; @@ -721,4 +722,6 @@ } } }); -})(); +}; + +module.exports = init; diff --git a/lib/report/reportclient.js b/lib/report/reportclient.js index 171186f9a90..a074a793cb3 100644 --- a/lib/report/reportclient.js +++ b/lib/report/reportclient.js @@ -1,6 +1,3 @@ -// TODO: -// - bypass nightmode in reports -// - on save/delete treatment ctx.bus.emit('data-received'); is not enough. we must add something like 'data-updated' var init = function init () { 'use strict'; diff --git a/static/js/foodinit.js b/static/js/foodinit.js new file mode 100644 index 00000000000..d2e90ddcc23 --- /dev/null +++ b/static/js/foodinit.js @@ -0,0 +1,6 @@ +'use strict'; + +$(document).ready(function() { + console.log('Application got ready event'); + window.Nightscout.foodclient(); +}); diff --git a/static/js/profileinit.js b/static/js/profileinit.js new file mode 100644 index 00000000000..470f8bf623a --- /dev/null +++ b/static/js/profileinit.js @@ -0,0 +1,6 @@ +'use strict'; + +$(document).ready(function() { + console.log('Application got ready event'); + window.Nightscout.profileclient(); +}); diff --git a/static/report/js/report.js b/static/js/reportinit.js similarity index 100% rename from static/report/js/report.js rename to static/js/reportinit.js diff --git a/static/mfb/lib/modernizr.touch.js b/static/mfb/lib/modernizr.touch.js deleted file mode 100644 index 0280cf2b976..00000000000 --- a/static/mfb/lib/modernizr.touch.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.8.3 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-touch-teststyles-prefixes - */ -;window.Modernizr=function(a,b,c){function v(a){i.cssText=a}function w(a,b){return v(l.join(a+";")+(b||""))}function x(a,b){return typeof a===b}function y(a,b){return!!~(""+a).indexOf(b)}function z(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:x(f,"function")?f.bind(d||b):f}return!1}var d="2.8.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l=" -webkit- -moz- -o- -ms- ".split(" "),m={},n={},o={},p=[],q=p.slice,r,s=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["­",'"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},t={}.hasOwnProperty,u;!x(t,"undefined")&&!x(t.call,"undefined")?u=function(a,b){return t.call(a,b)}:u=function(a,b){return b in a&&x(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e}),m.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:s(["@media (",l.join("touch-enabled),("),g,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c};for(var A in m)u(m,A)&&(r=A.toLowerCase(),e[r]=m[A](),p.push((e[r]?"":"no-")+r));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)u(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},v(""),h=j=null,e._version=d,e._prefixes=l,e.testStyles=s,e}(this,this.document); \ No newline at end of file diff --git a/static/mfb/mfb.css b/static/mfb/mfb.css deleted file mode 100644 index 39063306c34..00000000000 --- a/static/mfb/mfb.css +++ /dev/null @@ -1,671 +0,0 @@ -/** - * CONTENTS - * - * #Introduction........Naming conventions used throughout the code. - * - * #SETTINGS - * Variables............Globally-available variables and config. - * - * #TOOLS - * Mixins...............Useful mixins. - * - * #GENERIC - * Demo styles..........Styles for demo only (consider removing these). - * - * #BASE - * Raw styles...........The very basic component wrapper. - * Modifiers............The basic styles dependant on component placement. - * Debuggers............The basic styles dependant on component placement. - * - * #BUTTONS - * Base..................Wrapping and constraining every button. - * Modifiers.............Styles that depends on state and settings. - * Animations............Main animations of the component. - * Debuggers.............Styles for development. - * - * #LABELS - * Base..................Wrapping and constraining every label. - * Modifiers.............Styles that depends on state and settings. - * Debuggers.............Styles for development. - * - * #DEVELOPMENT - * In development........These styles are in development and not yet finalised - * Debuggers.............Helper styles and flags for development. - */ -/*------------------------------------*\ - #Introduction -\*------------------------------------*/ -/** - * The code AND the comments use naming conventions to refer to each part of - * the UI put in place by this component. If you see that somewhere they are - * not followed please consider a Pull Request. The naming conventions are: - * - * "Component" : the widget itself as a whole. This is the last time it will be - * called anything different than "component". So, stay away from - * "widget", "button" or anything else when referring to the - * Component in general. - * - * "Main Button" : the button that is always in view. Hovering or clicking on it - * will reveal the child buttons. - * - * "Child buttons" : if you've read the previous point you know what they are. - * Did you read the previous point? :) - * - * "Label(s)" : the tooltip that fades in when hovering over a button. - -/*------------------------------------*\ - #SETTINGS | Variables -\*------------------------------------*/ -/** - * These variables are the default styles that serve as fallback and can be - * easily customised at compile time. - * Consider overriding them in your own style sheets rather than editing them - * here. Refer to the docs for more info. - */ -/* COLORS ----------------------------*/ -/* EFFECTS ---------------------------*/ -/* SPEEDS ----------------------------*/ -/* SIZES -----------------------------*/ -/* SPACING ---------------------------*/ -/* OTHER VARIABLES -------------------*/ -/*------------------------------------*\ - #BASE | Raw styles -\*------------------------------------*/ -/** - * The very core styling of the button. - * These styles are shared by every instance of the button. - * Styles placed here should NOT care about placement in the screen, - * options chosen by the user or state of the button. - */ -.mfb-component--tl, .mfb-component--tr, .mfb-component--bl, .mfb-component--br { - box-sizing: border-box; - margin: 25px; - position: fixed; - white-space: nowrap; - z-index: 30; - padding-left: 0; - list-style: none; } - .mfb-component--tl *, .mfb-component--tr *, .mfb-component--bl *, .mfb-component--br *, .mfb-component--tl *:before, .mfb-component--tr *:before, .mfb-component--bl *:before, .mfb-component--br *:before, .mfb-component--tl *:after, .mfb-component--tr *:after, .mfb-component--bl *:after, .mfb-component--br *:after { - box-sizing: inherit; } - -/*------------------------------------*\ - #BASE | Modifiers -\*------------------------------------*/ -/** - * These styles depends on the placement of the button. - * Styles can be: - * 1. Top-left: modified by the " --tl " suffix. - * 2. Top-right: modified by the " --tr " suffix. - * 3. Bottom-left: modified by the " --bl " suffix. - * 4. Bottom-right: modified by the " --br " suffix. - */ -.mfb-component--tl { - left: 0; - top: 0; } - -.mfb-component--tr { - right: 0; - top: 0; } - -.mfb-component--bl { - left: 0; - bottom: 0; } - -.mfb-component--br { - right: 0; - bottom: 0; } - -/*------------------------------------*\ - #BUTTONS | Base -\*------------------------------------*/ -.mfb-component__button--main, .mfb-component__button--child { - background-color: #E40A5D; - display: inline-block; - position: relative; - border: none; - border-radius: 50%; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); - cursor: pointer; - outline: none; - padding: 0; - position: relative; - -webkit-user-drag: none; - color: #f1f1f1; } - -/** - * This is the unordered list for the list items that contain - * the child buttons. - * - */ -.mfb-component__list { - list-style: none; - margin: 0; - padding: 0; } - .mfb-component__list > li { - display: block; - position: absolute; - top: 0; - right: 1px; - padding: 10px 0; - margin: -10px 0; } - -/** - * These are the basic styles for all the icons inside the main button - */ -.mfb-component__icon, .mfb-component__main-icon--active, -.mfb-component__main-icon--resting, .mfb-component__child-icon { - position: absolute; - font-size: 18px; - text-align: center; - line-height: 56px; - width: 100%; } - -.mfb-component__wrap { - padding: 25px; - margin: -25px; } - -[data-mfb-toggle="hover"]:hover .mfb-component__icon, [data-mfb-toggle="hover"]:hover .mfb-component__main-icon--active, -[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--resting, [data-mfb-toggle="hover"]:hover .mfb-component__child-icon, -[data-mfb-state="open"] .mfb-component__icon, -[data-mfb-state="open"] .mfb-component__main-icon--active, -[data-mfb-state="open"] .mfb-component__main-icon--resting, -[data-mfb-state="open"] .mfb-component__child-icon { - -webkit-transform: scale(1) rotate(0deg); - transform: scale(1) rotate(0deg); } - -/*------------------------------------*\ - #BUTTONS | Modifiers -\*------------------------------------*/ -.mfb-component__button--main { - height: 56px; - width: 56px; - z-index: 20; } - -.mfb-component__button--child { - height: 56px; - width: 56px; } - -.mfb-component__main-icon--active, -.mfb-component__main-icon--resting { - -webkit-transform: scale(1) rotate(360deg); - transform: scale(1) rotate(360deg); - -webkit-transition: -webkit-transform 150ms cubic-bezier(0.4, 0, 1, 1); - transition: transform 150ms cubic-bezier(0.4, 0, 1, 1); } - -.mfb-component__child-icon, -.mfb-component__child-icon { - line-height: 56px; - font-size: 18px; } - -.mfb-component__main-icon--active { - opacity: 0; } - -[data-mfb-toggle="hover"]:hover .mfb-component__main-icon, -[data-mfb-state="open"] .mfb-component__main-icon { - -webkit-transform: scale(1) rotate(0deg); - transform: scale(1) rotate(0deg); } -[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--resting, -[data-mfb-state="open"] .mfb-component__main-icon--resting { - opacity: 0; - position: absolute !important; } -[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--active, -[data-mfb-state="open"] .mfb-component__main-icon--active { - opacity: 1; } - -/*------------------------------------*\ - #BUTTONS | Animations -\*------------------------------------*/ -/** - * SLIDE IN + FADE - * When hovering the main button, the child buttons slide out from beneath - * the main button while transitioning from transparent to opaque. - * - */ -.mfb-component--tl.mfb-slidein .mfb-component__list li, -.mfb-component--tr.mfb-slidein .mfb-component__list li { - opacity: 0; - transition: all 0.5s; } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li, -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li { - opacity: 1; } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px); - transform: translateY(70px); } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px); - transform: translateY(140px); } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px); - transform: translateY(210px); } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px); - transform: translateY(280px); } - -.mfb-component--bl.mfb-slidein .mfb-component__list li, -.mfb-component--br.mfb-slidein .mfb-component__list li { - opacity: 0; - transition: all 0.5s; } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li, -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li { - opacity: 1; } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px); - transform: translateY(-70px); } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px); - transform: translateY(-140px); } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px); - transform: translateY(-210px); } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px); - transform: translateY(-280px); } - -/** - * SLIDE IN SPRING - * Same as slide-in but with a springy animation. - * - */ -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li, -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li { - opacity: 0; - transition: all 0.5s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(1) { - transition-delay: 0.05s; } -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(2) { - transition-delay: 0.1s; } -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(3) { - transition-delay: 0.15s; } -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(4) { - transition-delay: 0.2s; } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li, -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li { - opacity: 1; } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - transition-delay: 0.05s; - -webkit-transform: translateY(70px); - transform: translateY(70px); } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - transition-delay: 0.1s; - -webkit-transform: translateY(140px); - transform: translateY(140px); } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - transition-delay: 0.15s; - -webkit-transform: translateY(210px); - transform: translateY(210px); } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - transition-delay: 0.2s; - -webkit-transform: translateY(280px); - transform: translateY(280px); } - -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li, -.mfb-component--br.mfb-slidein-spring .mfb-component__list li { - opacity: 0; - transition: all 0.5s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(1) { - transition-delay: 0.05s; } -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(2) { - transition-delay: 0.1s; } -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(3) { - transition-delay: 0.15s; } -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(4) { - transition-delay: 0.2s; } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li, -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li { - opacity: 1; } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - transition-delay: 0.05s; - -webkit-transform: translateY(-70px); - transform: translateY(-70px); } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - transition-delay: 0.1s; - -webkit-transform: translateY(-140px); - transform: translateY(-140px); } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - transition-delay: 0.15s; - -webkit-transform: translateY(-210px); - transform: translateY(-210px); } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - transition-delay: 0.2s; - -webkit-transform: translateY(-280px); - transform: translateY(-280px); } - -/** - * ZOOM-IN - * When hovering the main button, the child buttons grow - * from zero to normal size. - * - */ -.mfb-component--tl.mfb-zoomin .mfb-component__list li, -.mfb-component--tr.mfb-zoomin .mfb-component__list li { - -webkit-transform: scale(0); - transform: scale(0); } -.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px) scale(0); - transform: translateY(70px) scale(0); - transition: all 0.5s; - transition-delay: 0.15s; } -.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px) scale(0); - transform: translateY(140px) scale(0); - transition: all 0.5s; - transition-delay: 0.1s; } -.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px) scale(0); - transform: translateY(210px) scale(0); - transition: all 0.5s; - transition-delay: 0.05s; } -.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px) scale(0); - transform: translateY(280px) scale(0); - transition: all 0.5s; - transition-delay: 0s; } -.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px) scale(1); - transform: translateY(70px) scale(1); - transition-delay: 0.05s; } -.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px) scale(1); - transform: translateY(140px) scale(1); - transition-delay: 0.1s; } -.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px) scale(1); - transform: translateY(210px) scale(1); - transition-delay: 0.15s; } -.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px) scale(1); - transform: translateY(280px) scale(1); - transition-delay: 0.2s; } - -.mfb-component--bl.mfb-zoomin .mfb-component__list li, -.mfb-component--br.mfb-zoomin .mfb-component__list li { - -webkit-transform: scale(0); - transform: scale(0); } -.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px) scale(0); - transform: translateY(-70px) scale(0); - transition: all 0.5s; - transition-delay: 0.15s; } -.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px) scale(0); - transform: translateY(-140px) scale(0); - transition: all 0.5s; - transition-delay: 0.1s; } -.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px) scale(0); - transform: translateY(-210px) scale(0); - transition: all 0.5s; - transition-delay: 0.05s; } -.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px) scale(0); - transform: translateY(-280px) scale(0); - transition: all 0.5s; - transition-delay: 0s; } -.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px) scale(1); - transform: translateY(-70px) scale(1); - transition-delay: 0.05s; } -.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px) scale(1); - transform: translateY(-140px) scale(1); - transition-delay: 0.1s; } -.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px) scale(1); - transform: translateY(-210px) scale(1); - transition-delay: 0.15s; } -.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px) scale(1); - transform: translateY(-280px) scale(1); - transition-delay: 0.2s; } - -/** - * FOUNTAIN - * When hovering the main button the child buttons - * jump into view from outside the viewport - */ -.mfb-component--tl.mfb-fountain .mfb-component__list li, -.mfb-component--tr.mfb-fountain .mfb-component__list li { - -webkit-transform: scale(0); - transform: scale(0); } -.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px) scale(0); - transform: translateY(-70px) scale(0); - transition: all 0.5s; - transition-delay: 0.15s; } -.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px) scale(0); - transform: translateY(-140px) scale(0); - transition: all 0.5s; - transition-delay: 0.1s; } -.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px) scale(0); - transform: translateY(-210px) scale(0); - transition: all 0.5s; - transition-delay: 0.05s; } -.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px) scale(0); - transform: translateY(-280px) scale(0); - transition: all 0.5s; - transition-delay: 0s; } -.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px) scale(1); - transform: translateY(70px) scale(1); - transition-delay: 0.05s; } -.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px) scale(1); - transform: translateY(140px) scale(1); - transition-delay: 0.1s; } -.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px) scale(1); - transform: translateY(210px) scale(1); - transition-delay: 0.15s; } -.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px) scale(1); - transform: translateY(280px) scale(1); - transition-delay: 0.2s; } - -.mfb-component--bl.mfb-fountain .mfb-component__list li, -.mfb-component--br.mfb-fountain .mfb-component__list li { - -webkit-transform: scale(0); - transform: scale(0); } -.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px) scale(0); - transform: translateY(70px) scale(0); - transition: all 0.5s; - transition-delay: 0.15s; } -.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px) scale(0); - transform: translateY(140px) scale(0); - transition: all 0.5s; - transition-delay: 0.1s; } -.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px) scale(0); - transform: translateY(210px) scale(0); - transition: all 0.5s; - transition-delay: 0.05s; } -.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px) scale(0); - transform: translateY(280px) scale(0); - transition: all 0.5s; - transition-delay: 0s; } -.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px) scale(1); - transform: translateY(-70px) scale(1); - transition-delay: 0.05s; } -.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px) scale(1); - transform: translateY(-140px) scale(1); - transition-delay: 0.1s; } -.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px) scale(1); - transform: translateY(-210px) scale(1); - transition-delay: 0.15s; } -.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px) scale(1); - transform: translateY(-280px) scale(1); - transition-delay: 0.2s; } - -/*------------------------------------*\ - #LABELS | base -\*------------------------------------*/ -/** - * These are the labels associated to each button, - * exposed only when hovering the related button. - * They are called labels but are in fact data-attributes of - * each button (an anchor tag). - */ -[data-mfb-label]:after { - content: attr(data-mfb-label); - opacity: 0; - transition: all 0.5s; - background: rgba(0, 0, 0, 0.4); - padding: 4px 10px; - border-radius: 3px; - color: rgba(255, 255, 255, 0.8); - font-size: 14px; - font-weight: normal; - pointer-events: none; - line-height: normal; - position: absolute; - top: 50%; - margin-top: -11px; - transition: all 0.5s; } - -[data-mfb-toggle="hover"] [data-mfb-label]:hover:after, -[data-mfb-state="open"] [data-mfb-label]:after { - content: attr(data-mfb-label); - opacity: 1; - transition: all 0.3s; } - -/*------------------------------------*\ - #LABELS | Modifiers -\*------------------------------------*/ -.mfb-component--br [data-mfb-label]:after, .mfb-component--tr [data-mfb-label]:after { - content: attr(data-mfb-label); - right: 70px; } - -.mfb-component--br .mfb-component__list [data-mfb-label]:after, .mfb-component--tr .mfb-component__list [data-mfb-label]:after { - content: attr(data-mfb-label); - right: 70px; } - -.mfb-component--tl [data-mfb-label]:after, .mfb-component--bl [data-mfb-label]:after { - content: attr(data-mfb-label); - left: 70px; } - -.mfb-component--tl .mfb-component__list [data-mfb-label]:after, .mfb-component--bl .mfb-component__list [data-mfb-label]:after { - content: attr(data-mfb-label); - left: 70px; } - -/*------------------------------------*\ - #DEVELOPMENT | In development -\*------------------------------------*/ -/** - * This part is where unfinished code should stay. - * When a feature is ready(sh) move these styles to their proper place. - */ -/*------------------------------------*\ - #DEVELOPMENT | Debuggers -\*------------------------------------*/ -/** - * These are mainly helpers for development. They do not have to end up - * in production but it's handy to keep them when developing. - */ -/** - * Apply this class to the html tag when developing the slide-in button - */ - -/*# sourceMappingURL=mfb.css.map */ diff --git a/static/mfb/mfb.css.map b/static/mfb/mfb.css.map deleted file mode 100644 index 9541680413b..00000000000 --- a/static/mfb/mfb.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0IA,8EAAc;EACZ,UAAU,EAAE,UAAU;EACtB,MAAM,EArCU,IAAI;EAsCpB,QAAQ,EAAE,KAAK;EACf,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,EAAE;EAGX,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;EAIhB,0TAAqB;IACnB,UAAU,EAAE,OAAO;;;;;;;;;;;;;AAiBvB,kBAAkB;EAEhB,IAAI,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;;AAEjB,kBAAkB;EAEhB,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;;AAElB,kBAAkB;EAEhB,IAAI,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;;AAEpB,kBAAkB;EAEhB,KAAK,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;;;;;AAQrB,2DAAsB;EACpB,gBAAgB,EA1HL,OAAO;EA2HlB,OAAO,EAAE,YAAY;EACrB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,UAAU,EA5HQ,0DAAuB;EA6HzC,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,iBAAiB,EAAE,IAAI;EACvB,KAAK,EAnIa,OAAO;;;;;;;AA2I3B,oBAAoB;EAClB,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,yBAAI;IACF,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,GAAgD;IACvD,OAAO,EAAE,MAAqD;IAC9D,MAAM,EAAE,OAAwD;;;;;AAOpE;8DAAoB;EAClB,QAAQ,EAAE,QAAQ;EAClB,SAAS,EA7HO,IAAI;EA8HpB,UAAU,EAAE,MAAM;EAClB,WAAW,EArIM,IAAI;EAsIrB,KAAK,EAAE,IAAI;;AAGb,oBAAoB;EAKlB,OAAO,EA1IS,IAAI;EA2IpB,MAAM,EAAE,KAAiB;;AAKzB;;;;;kDAAqB;EACnB,iBAAiB,EAAE,qBAAqB;EACxC,SAAS,EAAE,qBAAqB;;;;;AASpC,4BAA4B;EAE1B,MAAM,EAjKW,IAAI;EAkKrB,KAAK,EAlKY,IAAI;EAmKrB,OAAO,EAAE,EAAE;;AAEb,6BAA6B;EAE3B,MAAM,EArKY,IAAI;EAsKtB,KAAK,EAtKa,IAAI;;AAyKxB;kCACkC;EAEhC,iBAAiB,EAAE,uBAAuB;EAClC,SAAS,EAAE,uBAAuB;EAC1C,kBAAkB,EAAE,kDAA8C;EAC1D,UAAU,EAAE,0CAAsC;;AAG5D;0BAC0B;EAExB,WAAW,EArLO,IAAI;EAsLtB,SAAS,EAAE,IAA4B;;AAEzC,iCAAiC;EAC/B,OAAO,EAAE,CAAC;;AAIV;iDAAyB;EACvB,iBAAiB,EAAE,qBAAqB;EACxC,SAAS,EAAE,qBAAqB;AAElC;0DAAkC;EAChC,OAAO,EAAE,CAAC;EAEV,QAAQ,EAAE,mBAAmB;AAE/B;yDAAiC;EAC/B,OAAO,EAAE,CAAC;;;;;;;;;;;ACjSV;sDAAuB;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAgB;AAK1B;;6EAAE;EACA,OAAO,EAAE,CAAC;AAIV;;0FAAsB;EACpB,iBAAiB,EAAE,gBAAuB;EAClC,SAAS,EAAE,gBAAuB;AAF5C;;0FAAsB;EACpB,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAF5C;;0FAAsB;EACpB,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAF5C;;0FAAsB;EACpB,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;;AAQlD;sDAAuB;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAgB;AAK1B;;6EAAE;EACA,OAAO,EAAE,CAAC;AAIV;;0FAAsB;EAAE,iBAAiB,EAAE,iBAAuB;EACnC,SAAS,EAAE,iBAAuB;AADjE;;0FAAsB;EAAE,iBAAiB,EAAE,kBAAuB;EACnC,SAAS,EAAE,kBAAuB;AADjE;;0FAAsB;EAAE,iBAAiB,EAAE,kBAAuB;EACnC,SAAS,EAAE,kBAAuB;AADjE;;0FAAsB;EAAE,iBAAiB,EAAE,kBAAuB;EACnC,SAAS,EAAE,kBAAuB;;;;;;;ACpCvE;6DAAuB;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAgB;EAC5B,0BAA0B,EAAE,sCAAsC;AAGlE;0EAA2C;EACzC,gBAAgB,EAAE,KAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,IAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,KAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,IAAa;AAM/B;;oFAAE;EACA,OAAO,EAAE,CAAC;AAIV;;iGAAsB;EACpB,gBAAgB,EAAE,KAAa;EAC/B,iBAAiB,EAAE,gBAAuB;EAClC,SAAS,EAAE,gBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,IAAa;EAC/B,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,KAAa;EAC/B,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,IAAa;EAC/B,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;;AAQlD;6DAAuB;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAgB;EAC5B,0BAA0B,EAAE,sCAAsC;AAGlE;0EAA2C;EACzC,gBAAgB,EAAE,KAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,IAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,KAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,IAAa;AAM/B;;oFAAE;EACA,OAAO,EAAE,CAAC;AAIV;;iGAAsB;EACpB,gBAAgB,EAAE,KAAa;EAC/B,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,IAAa;EAC/B,iBAAiB,EAAE,kBAAuB;EAClC,SAAS,EAAE,kBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,KAAa;EAC/B,iBAAiB,EAAE,kBAAuB;EAClC,SAAS,EAAE,kBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,IAAa;EAC/B,iBAAiB,EAAE,kBAAuB;EAClC,SAAS,EAAE,kBAAuB;;;;;;;;AChDhD;qDAAE;EACA,iBAAiB,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;AAI3B;kEAAsB;EACpB,iBAAiB,EAAE,yBAA8B;EACzC,SAAS,EAAE,yBAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,IAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,EAAyC;AAS3D;;yFAAsB;EACpB,iBAAiB,EAAE,yBAA8B;EACzC,SAAS,EAAE,yBAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,IAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,IAAU;;AAUlC;qDAAE;EACA,iBAAiB,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;AAI3B;kEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,IAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,EAAyC;AAS3D;;yFAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,IAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,IAAU;;;;;;;AC3DlC;uDAAE;EACA,iBAAiB,EAAE,QAAQ;EAC3B,SAAS,EAAE,QAAQ;AAInB;oEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,IAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,EAAyC;AAS3D;;2FAAsB;EACpB,iBAAiB,EAAE,yBAA8B;EACzC,SAAS,EAAE,yBAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,IAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,IAAU;;AAUlC;uDAAE;EACA,iBAAiB,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;AAI3B;oEAAsB;EACpB,iBAAiB,EAAE,yBAA8B;EACzC,SAAS,EAAE,yBAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,IAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,EAAyC;AAS3D;;2FAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,IAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,IAAU;;;;;;;;;;;AJ6QxC,sBAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAoB;EAChC,UAAU,EAzQa,kBAAe;EA0QtC,OAAO,EAAE,QAAmD;EAC5D,aAAa,EAAE,GAAG;EAClB,KAAK,EA9QY,wBAAwB;EA+QzC,SAAS,EA/OQ,IAAI;EAgPrB,WAAW,EA9OQ,MAAM;EA+OzB,cAAc,EAAE,IAAI;EACpB,WAAW,EAAE,MAAM;EACnB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,UAAU,EAAE,KAAoD;EAChE,UAAU,EAAE,QAAoB;;AAElC;8CAC8C;EAC5C,OAAO,EAAE,oBAAoB;EAC7B,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAmB;;;;;AAM/B,oFAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,KAAK,EAvPY,IAAI;;AA2PvB,8HAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,KAAK,EAAE,IAAkE;;AAI3E,oFAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,IAAI,EAnQa,IAAI;;AAuQvB,8HAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,IAAI,EAAE,IAAkE", -"sources": ["../src/mfb.scss","../src/_/_slidein.scss","../src/_/_slidein-spring.scss","../src/_/_zoomin.scss","../src/_/_fountain.scss"], -"names": [], -"file": "mfb.css" -} diff --git a/static/mfb/mfb.js b/static/mfb/mfb.js deleted file mode 100644 index ea6ce731fed..00000000000 --- a/static/mfb/mfb.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Material floating button - * By: Nobita - * Repo and docs: https://github.com/nobitagit/material-floating-button - * - * License: MIT - */ - - // build script hook - don't remove - ;(function ( window, document, undefined ) { - - - 'use strict'; - - /** - * Some defaults - */ - var clickOpt = 'click', - hoverOpt = 'hover', - toggleMethod = 'data-mfb-toggle', - menuState = 'data-mfb-state', - isOpen = 'open', - isClosed = 'closed', - mainButtonClass = 'mfb-component__button--main'; - - /** - * Internal references - */ - var elemsToClick, - elemsToHover, - mainButton, - target, - currentState; - - /** - * For every menu we need to get the main button and attach the appropriate evt. - */ - function attachEvt( elems, evt ){ - for( var i = 0, len = elems.length; i < len; i++ ){ - mainButton = elems[i].querySelector('.' + mainButtonClass); - mainButton.addEventListener( evt , toggleButton, false); - } - } - - /** - * Remove the hover option, set a click toggle and a default, - * initial state of 'closed' to menu that's been targeted. - */ - function replaceAttrs( elems ){ - for( var i = 0, len = elems.length; i < len; i++ ){ - elems[i].setAttribute( toggleMethod, clickOpt ); - elems[i].setAttribute( menuState, isClosed ); - } - } - - function getElemsByToggleMethod( selector ){ - return document.querySelectorAll('[' + toggleMethod + '="' + selector + '"]'); - } - - /** - * The open/close action is performed by toggling an attribute - * on the menu main element. - * - * First, check if the target is the menu itself. If it's a child - * keep walking up the tree until we found the main element - * where we can toggle the state. - */ - function toggleButton( evt ){ - - target = evt.target; - while ( target && !target.getAttribute( toggleMethod ) ){ - target = target.parentNode; - if(!target) { return; } - } - - currentState = target.getAttribute( menuState ) === isOpen ? isClosed : isOpen; - - target.setAttribute(menuState, currentState); - - } - - /** - * On touch enabled devices we assume that no hover state is possible. - * So, we get the menu with hover action configured and we set it up - * in order to make it usable with tap/click. - **/ - if ( window.Modernizr && Modernizr.touch ){ - elemsToHover = getElemsByToggleMethod( hoverOpt ); - replaceAttrs( elemsToHover ); - } - - elemsToClick = getElemsByToggleMethod( clickOpt ); - - attachEvt( elemsToClick, 'click' ); - -// build script hook - don't remove -})( window, document ); - diff --git a/static/mfb/mfb.min.css b/static/mfb/mfb.min.css deleted file mode 100644 index 60c34aaa1ff..00000000000 --- a/static/mfb/mfb.min.css +++ /dev/null @@ -1 +0,0 @@ -.mfb-component--bl,.mfb-component--br,.mfb-component--tl,.mfb-component--tr{box-sizing:border-box;margin:25px;position:fixed;white-space:nowrap;z-index:30;padding-left:0;list-style:none}.mfb-component--bl *,.mfb-component--bl :after,.mfb-component--bl :before,.mfb-component--br *,.mfb-component--br :after,.mfb-component--br :before,.mfb-component--tl *,.mfb-component--tl :after,.mfb-component--tl :before,.mfb-component--tr *,.mfb-component--tr :after,.mfb-component--tr :before{box-sizing:inherit}.mfb-component--tl{left:0;top:0}.mfb-component--tr{right:0;top:0}.mfb-component--bl{left:0;bottom:0}.mfb-component--br{right:0;bottom:0}.mfb-component__button--child,.mfb-component__button--main{background-color:#E40A5D;display:inline-block;border:none;border-radius:50%;box-shadow:0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28);cursor:pointer;outline:0;padding:0;position:relative;-webkit-user-drag:none;font-weight:700;color:#f1f1f1}.mfb-component__list{list-style:none;margin:0;padding:0}.mfb-component__list>li{display:block;position:absolute;top:0;right:1px;padding:10px 0;margin:-10px 0}.mfb-component__child-icon,.mfb-component__icon,.mfb-component__main-icon--active,.mfb-component__main-icon--resting{position:absolute;font-size:18px;text-align:center;line-height:56px;width:100%}.mfb-component__wrap{padding:25px;margin:-25px}[data-mfb-state=open] .mfb-component__child-icon,[data-mfb-state=open] .mfb-component__icon,[data-mfb-state=open] .mfb-component__main-icon--active,[data-mfb-state=open] .mfb-component__main-icon--resting,[data-mfb-toggle=hover]:hover .mfb-component__child-icon,[data-mfb-toggle=hover]:hover .mfb-component__icon,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--active,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--resting{-webkit-transform:scale(1) rotate(0deg);transform:scale(1) rotate(0deg)}.mfb-component__button--main{height:56px;width:56px;z-index:20}.mfb-component__button--child{height:56px;width:56px}.mfb-component__main-icon--active,.mfb-component__main-icon--resting{-webkit-transform:scale(1) rotate(360deg);transform:scale(1) rotate(360deg);-webkit-transition:-webkit-transform 150ms cubic-bezier(.4,0,1,1);transition:transform 150ms cubic-bezier(.4,0,1,1)}.mfb-component__child-icon{line-height:56px;font-size:18px}.mfb-component__main-icon--active{opacity:0}[data-mfb-state=open] .mfb-component__main-icon,[data-mfb-toggle=hover]:hover .mfb-component__main-icon{-webkit-transform:scale(1) rotate(0deg);transform:scale(1) rotate(0deg)}[data-mfb-state=open] .mfb-component__main-icon--resting,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--resting{opacity:0}[data-mfb-state=open] .mfb-component__main-icon--active,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--active{opacity:1}.mfb-component--tl.mfb-slidein .mfb-component__list li,.mfb-component--tr.mfb-slidein .mfb-component__list li{opacity:0;transition:all .5s}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px);transform:translateY(70px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px);transform:translateY(140px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px);transform:translateY(210px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px);transform:translateY(280px)}.mfb-component--bl.mfb-slidein .mfb-component__list li,.mfb-component--br.mfb-slidein .mfb-component__list li{opacity:0;transition:all .5s}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px);transform:translateY(-70px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px);transform:translateY(-140px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px);transform:translateY(-210px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px);transform:translateY(-280px)}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring .mfb-component__list li{opacity:0;transition:all .5s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(1){transition-delay:.05s}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(2){transition-delay:.1s}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(3){transition-delay:.15s}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(4){transition-delay:.2s}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){transition-delay:.05s;-webkit-transform:translateY(70px);transform:translateY(70px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){transition-delay:.1s;-webkit-transform:translateY(140px);transform:translateY(140px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){transition-delay:.15s;-webkit-transform:translateY(210px);transform:translateY(210px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){transition-delay:.2s;-webkit-transform:translateY(280px);transform:translateY(280px)}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li,.mfb-component--br.mfb-slidein-spring .mfb-component__list li{opacity:0;transition:all .5s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(1){transition-delay:.05s}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(2){transition-delay:.1s}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(3){transition-delay:.15s}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(4){transition-delay:.2s}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){transition-delay:.05s;-webkit-transform:translateY(-70px);transform:translateY(-70px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){transition-delay:.1s;-webkit-transform:translateY(-140px);transform:translateY(-140px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){transition-delay:.15s;-webkit-transform:translateY(-210px);transform:translateY(-210px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){transition-delay:.2s;-webkit-transform:translateY(-280px);transform:translateY(-280px)}.mfb-component--tl.mfb-zoomin .mfb-component__list li,.mfb-component--tr.mfb-zoomin .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(0);transform:translateY(70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(0);transform:translateY(140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(0);transform:translateY(210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(0);transform:translateY(280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(1);transform:translateY(70px) scale(1);transition-delay:.05s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(1);transform:translateY(140px) scale(1);transition-delay:.1s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(1);transform:translateY(210px) scale(1);transition-delay:.15s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(1);transform:translateY(280px) scale(1);transition-delay:.2s}.mfb-component--bl.mfb-zoomin .mfb-component__list li,.mfb-component--br.mfb-zoomin .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(0);transform:translateY(-70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(0);transform:translateY(-140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(0);transform:translateY(-210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(0);transform:translateY(-280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(1);transform:translateY(-70px) scale(1);transition-delay:.05s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(1);transform:translateY(-140px) scale(1);transition-delay:.1s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(1);transform:translateY(-210px) scale(1);transition-delay:.15s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(1);transform:translateY(-280px) scale(1);transition-delay:.2s}.mfb-component--tl.mfb-fountain .mfb-component__list li,.mfb-component--tr.mfb-fountain .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(0);transform:translateY(-70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(0);transform:translateY(-140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(0);transform:translateY(-210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(0);transform:translateY(-280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(1);transform:translateY(70px) scale(1);transition-delay:.05s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(1);transform:translateY(140px) scale(1);transition-delay:.1s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(1);transform:translateY(210px) scale(1);transition-delay:.15s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(1);transform:translateY(280px) scale(1);transition-delay:.2s}.mfb-component--bl.mfb-fountain .mfb-component__list li,.mfb-component--br.mfb-fountain .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(0);transform:translateY(70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(0);transform:translateY(140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(0);transform:translateY(210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(0);transform:translateY(280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(1);transform:translateY(-70px) scale(1);transition-delay:.05s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(1);transform:translateY(-140px) scale(1);transition-delay:.1s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(1);transform:translateY(-210px) scale(1);transition-delay:.15s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(1);transform:translateY(-280px) scale(1);transition-delay:.2s}[data-mfb-label]:after{content:attr(data-mfb-label);opacity:0;background:rgba(0,0,0,.4);padding:4px 10px;border-radius:3px;color:rgba(255,255,255,.8);font-size:13px;pointer-events:none;position:absolute;top:50%;margin-top:-10.5px;transition:all .5s}[data-mfb-state=open] [data-mfb-label]:after,[data-mfb-toggle=hover] [data-mfb-label]:hover:after{content:attr(data-mfb-label);opacity:1;transition:all .3s}.mfb-component--br .mfb-component__list [data-mfb-label]:after,.mfb-component--br [data-mfb-label]:after,.mfb-component--tr .mfb-component__list [data-mfb-label]:after,.mfb-component--tr [data-mfb-label]:after{content:attr(data-mfb-label);right:70px}.mfb-component--bl .mfb-component__list [data-mfb-label]:after,.mfb-component--bl [data-mfb-label]:after,.mfb-component--tl .mfb-component__list [data-mfb-label]:after,.mfb-component--tl [data-mfb-label]:after{content:attr(data-mfb-label);left:70px} \ No newline at end of file diff --git a/static/mfb/mfb.min.js b/static/mfb/mfb.min.js deleted file mode 100644 index e895497a051..00000000000 --- a/static/mfb/mfb.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a,b){"use strict";function c(a,b){for(var c=0,d=a.length;d>c;c++)i=a[c].querySelector("."+r),i.addEventListener(b,f,!1)}function d(a){for(var b=0,c=a.length;c>b;b++)a[b].setAttribute(n,l),a[b].setAttribute(o,q)}function e(a){return b.querySelectorAll("["+n+'="'+a+'"]')}function f(a){for(j=a.target;j&&!j.getAttribute(n);)if(j=j.parentNode,!j)return;k=j.getAttribute(o)===p?q:p,j.setAttribute(o,k)}var g,h,i,j,k,l="click",m="hover",n="data-mfb-toggle",o="data-mfb-state",p="open",q="closed",r="mfb-component__button--main";a.Modernizr&&Modernizr.touch&&(h=e(m),d(h)),g=e(l),c(g,"click")}(window,document); \ No newline at end of file diff --git a/static/radio/js/radio.js b/static/radio/js/radio.js deleted file mode 100644 index b5bdf48abc4..00000000000 --- a/static/radio/js/radio.js +++ /dev/null @@ -1,110 +0,0 @@ -window.Nightscout.client.init(function loaded() { - /* - Many thanks to @ps2, Pete Schwamb - * https://gist.github.com/ps2/314145bb91fa720bba59cf58f7e9cad2 - 2**((numOctaves/(maxBG-minBG))*(bg-minBG) + Math.log2(minFreq)) - */ - function convert (opts) { - opts = opts || { }; - var octaves = opts.octaves || 9; - var maxBG = opts.maxBG || 400; - var minBG = opts.minBG || 40; - var minFreq = opts.minFreq || 55; - var x = minBG - , y = minFreq - , z = octaves/(maxBG - minBG) - ; - - function freq (bg) { - return Math.pow(2, (z* (bg - x ) ) + Math.log2(y)) ; - // return Math.pow(2, (z* (bg + x ) ) + Math.log2(y)) ; - } - - function invert (freq) { - - return ((Math.log2(freq) - Math.log2(y)) / z ) + x; - } - - function api (glucose) { - return freq(glucose); - } - - api.invert = invert; - api.freq = freq; - return api; - } - - - - function createLoop (synth, sgvs) { - function callback (time, note) { - console.log(time, note); - synth.triggerAttackRelease(note, '16n', time); - } - var seq = new Tone.Sequence(callback, sgvs, '16n'); - seq.loop = false; - return seq; - } - - function glucose (sgv) { - if (sgv) { - return parseInt(sgv.mgdl || sgv.sgv || sgv.glucose || 35); - } - - return 20; - } - - $(document).ready(function ( ) { - console.log('OK'); - var converter = convert( ); - var synth = new Tone.PolySynth(16, Tone.MonoSynth); - // default volume always makes my ears bleed - synth.chain(new Tone.Volume(-26), Tone.Master); - // synth.toMaster(); - Tone.Transport.timeSignature = [ 3, 2 ]; - Tone.Transport.bpm.value = 320; - - // function play_next (time) { - // var sgv = sgvs.shift( ); - // console.log(sgv); - // if (!sgv) { - // loop.stop( ); - // } - // if (sgv) { - // var freq = converter.freq(sgv.mgdl || 30); - // synth.triggerAttackRelease(parseInt(sgv.mgdl || sgv.sgv || sgv.glucose || 39) * 4, '8n', time); - // } - // } - - // var loop = new Tone.Loop(play_next, '4n'); - var loop; - function play_data ( ) { - var sgvs = Nightscout.client.sbx.data.sgvs.slice( ).map(glucose).map(converter.freq); - console.log('last two hours', sgvs.length); - var new_loop = createLoop(synth, sgvs); - if (loop) { - loop.stop( ); - loop.dispose( ); - loop = null; - } - loop = new_loop; - Nightscout.client.radio.loop = loop; - loop.start( ); - } - - Nightscout.client.radio = { - converter: converter - , synth: synth - , loop: loop - }; - - Nightscout.client.socket.on('dataUpdate', function ( ) { - play_data( ); - }); - $('#again').on('click', function ( ) { - play_data( ); - }); - Tone.Transport.start( ); - - }); -}); \ No newline at end of file diff --git a/static/report/css/mfb.min.css b/static/report/css/mfb.min.css deleted file mode 100644 index 0c4d5e49dfc..00000000000 --- a/static/report/css/mfb.min.css +++ /dev/null @@ -1 +0,0 @@ -.mfb-component,.mfb-component--bl,.mfb-component--br,.mfb-component--tl,.mfb-component--tr{box-sizing:border-box;margin:25px;position:fixed;white-space:nowrap;z-index:30;padding-left:0;list-style:none}.mfb-component *,.mfb-component :after,.mfb-component :before,.mfb-component--bl *,.mfb-component--bl :after,.mfb-component--bl :before,.mfb-component--br *,.mfb-component--br :after,.mfb-component--br :before,.mfb-component--tl *,.mfb-component--tl :after,.mfb-component--tl :before,.mfb-component--tr *,.mfb-component--tr :after,.mfb-component--tr :before{box-sizing:inherit}.mfb-component--tl{left:0;top:0}.mfb-component--tr{right:0;top:0}.mfb-component--bl{left:0;bottom:0}.mfb-component--br{right:0;bottom:0}.mfb-component__button,.mfb-component__button--child,.mfb-component__button--main{background-color:#E40A5D;display:inline-block;border:none;border-radius:50%;box-shadow:0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28);cursor:pointer;outline:0;padding:0;position:relative;-webkit-user-drag:none;font-weight:700;color:#f1f1f1}.mfb-component__list{list-style:none;margin:0;padding:0}.mfb-component__list>li{display:block;position:absolute;top:0;right:1px;padding:10px 0;margin:-10px 0}.mfb-component__child-icon,.mfb-component__icon,.mfb-component__main-icon--active,.mfb-component__main-icon--resting{position:absolute;font-size:18px;text-align:center;line-height:56px;width:100%}.mfb-component__wrap{padding:25px;margin:-25px}[data-mfb-state=open] .mfb-component__child-icon,[data-mfb-state=open] .mfb-component__icon,[data-mfb-state=open] .mfb-component__main-icon--active,[data-mfb-state=open] .mfb-component__main-icon--resting,[data-mfb-toggle=hover]:hover .mfb-component__child-icon,[data-mfb-toggle=hover]:hover .mfb-component__icon,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--active,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--resting{-webkit-transform:scale(1) rotate(0deg);transform:scale(1) rotate(0deg)}.mfb-component__button--main{height:56px;width:56px;z-index:20}.mfb-component__button--child{height:56px;width:56px}.mfb-component__main-icon--active,.mfb-component__main-icon--resting{-webkit-transform:scale(1) rotate(360deg);transform:scale(1) rotate(360deg);-webkit-transition:-webkit-transform 150ms cubic-bezier(.4,0,1,1);transition:transform 150ms cubic-bezier(.4,0,1,1)}.mfb-component__child-icon{line-height:56px;font-size:18px}.mfb-component__main-icon--active{opacity:0}[data-mfb-state=open] .mfb-component__main-icon,[data-mfb-toggle=hover]:hover .mfb-component__main-icon{-webkit-transform:scale(1) rotate(0deg);transform:scale(1) rotate(0deg)}[data-mfb-state=open] .mfb-component__main-icon--resting,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--resting{opacity:0}[data-mfb-state=open] .mfb-component__main-icon--active,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--active{opacity:1}.mfb-component--tl.mfb-slidein .mfb-component__list li,.mfb-component--tr.mfb-slidein .mfb-component__list li{opacity:0;transition:all .5s}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px);transform:translateY(70px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px);transform:translateY(140px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px);transform:translateY(210px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px);transform:translateY(280px)}.mfb-component--bl.mfb-slidein .mfb-component__list li,.mfb-component--br.mfb-slidein .mfb-component__list li{opacity:0;transition:all .5s}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px);transform:translateY(-70px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px);transform:translateY(-140px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px);transform:translateY(-210px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px);transform:translateY(-280px)}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring .mfb-component__list li{opacity:0;transition:all .5s cubic-bezier(.68,-.55,.265,1.55)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px);transform:translateY(70px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px);transform:translateY(140px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px);transform:translateY(210px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px);transform:translateY(280px)}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li,.mfb-component--br.mfb-slidein-spring .mfb-component__list li{opacity:0;transition:all .5s cubic-bezier(.68,-.55,.265,1.55)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px);transform:translateY(-70px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px);transform:translateY(-140px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px);transform:translateY(-210px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px);transform:translateY(-280px)}.mfb-component--tl.mfb-zoomin .mfb-component__list li,.mfb-component--tr.mfb-zoomin .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(0);transform:translateY(70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(0);transform:translateY(140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(0);transform:translateY(210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(0);transform:translateY(280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(1);transform:translateY(70px) scale(1);transition-delay:.05s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(1);transform:translateY(140px) scale(1);transition-delay:.1s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(1);transform:translateY(210px) scale(1);transition-delay:.15s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(1);transform:translateY(280px) scale(1);transition-delay:.2s}.mfb-component--bl.mfb-zoomin .mfb-component__list li,.mfb-component--br.mfb-zoomin .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(0);transform:translateY(-70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(0);transform:translateY(-140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(0);transform:translateY(-210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(0);transform:translateY(-280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(1);transform:translateY(-70px) scale(1);transition-delay:.05s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(1);transform:translateY(-140px) scale(1);transition-delay:.1s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(1);transform:translateY(-210px) scale(1);transition-delay:.15s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(1);transform:translateY(-280px) scale(1);transition-delay:.2s}.mfb-component--tl.mfb-fountain .mfb-component__list li,.mfb-component--tr.mfb-fountain .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(0);transform:translateY(-70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(0);transform:translateY(-140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(0);transform:translateY(-210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(0);transform:translateY(-280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(1);transform:translateY(70px) scale(1);transition-delay:.05s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(1);transform:translateY(140px) scale(1);transition-delay:.1s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(1);transform:translateY(210px) scale(1);transition-delay:.15s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(1);transform:translateY(280px) scale(1);transition-delay:.2s}.mfb-component--bl.mfb-fountain .mfb-component__list li,.mfb-component--br.mfb-fountain .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(0);transform:translateY(70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(0);transform:translateY(140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(0);transform:translateY(210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(0);transform:translateY(280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(1);transform:translateY(-70px) scale(1);transition-delay:.05s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(1);transform:translateY(-140px) scale(1);transition-delay:.1s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(1);transform:translateY(-210px) scale(1);transition-delay:.15s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(1);transform:translateY(-280px) scale(1);transition-delay:.2s}[data-mfb-label]:after{content:attr(data-mfb-label);opacity:0;background:rgba(0,0,0,.4);padding:4px 10px;border-radius:3px;color:rgba(255,255,255,.8);font-size:13px;pointer-events:none;position:absolute;top:50%;margin-top:-10.5px;transition:all .5s}[data-mfb-state=open] [data-mfb-label]:after,[data-mfb-toggle=hover] [data-mfb-label]:hover:after{content:attr(data-mfb-label);opacity:1;transition:all .3s}.mfb-component--br .mfb-component__list [data-mfb-label]:after,.mfb-component--br [data-mfb-label]:after,.mfb-component--tr .mfb-component__list [data-mfb-label]:after,.mfb-component--tr [data-mfb-label]:after{content:attr(data-mfb-label);right:70px}.mfb-component--bl .mfb-component__list [data-mfb-label]:after,.mfb-component--bl [data-mfb-label]:after,.mfb-component--tl .mfb-component__list [data-mfb-label]:after,.mfb-component--tl [data-mfb-label]:after{content:attr(data-mfb-label);left:70px} \ No newline at end of file diff --git a/tests/profileeditor.test.js b/tests/profileeditor.test.js index cdca12764b7..c55d9add3ac 100644 --- a/tests/profileeditor.test.js +++ b/tests/profileeditor.test.js @@ -87,7 +87,7 @@ describe('Profile editor', function ( ) { , mockProfileEditor: true , mockAjax: someData , benvRequires: [ - __dirname + '/../static/profile/js/profileeditor.js' + __dirname + '/../static/js/profileinit.js' ] }; headless.setup(opts, done); @@ -117,6 +117,8 @@ describe('Profile editor', function ( ) { return true; }; + window.Nightscout.profileclient(); + client.init(); client.dataUpdate(nowData); diff --git a/tests/reports.test.js b/tests/reports.test.js index f2332aa47d2..947eb5e5b03 100644 --- a/tests/reports.test.js +++ b/tests/reports.test.js @@ -191,7 +191,7 @@ describe('reports', function ( ) { , serverSettings: serverSettings , mockSimpleAjax: someData , benvRequires: [ - __dirname + '/../static/report/js/report.js' + __dirname + '/../static/js/reportinit.js' ] }; headless.setup(opts, done); @@ -227,6 +227,8 @@ describe('reports', function ( ) { call(); }; + window.Nightscout.reportclient(); + client.init(function afterInit ( ) { client.dataUpdate(nowData); @@ -260,13 +262,14 @@ describe('reports', function ( ) { $('img.editTreatment:first').click(); $('.ui-button:contains("Save")').click(); - /* + var result = $('body').html(); + /* var filesys = require('fs'); var logfile = filesys.createWriteStream('out.txt', { flags: 'a'} ) logfile.write(result); console.log('RESULT', result); - + */ result.indexOf('Milk now').should.be.greaterThan(-1); // daytoday result.indexOf('50 g').should.be.greaterThan(-1); // daytoday result.indexOf('TDD average: 2.9U').should.be.greaterThan(-1); // daytoday @@ -276,7 +279,7 @@ describe('reports', function ( ) { result.indexOf('
').should.be.greaterThan(-1); //success result.indexOf('CAL: Scale: 1.10 Intercept: 31102 Slope: 776.91').should.be.greaterThan(-1); //calibrations result.indexOf('Correction Bolus250 (Sensor)0.75').should.be.greaterThan(-1); //treatments -*/ + done(); }); }); diff --git a/views/foodindex.html b/views/foodindex.html index 7168897467f..38606b00d32 100644 --- a/views/foodindex.html +++ b/views/foodindex.html @@ -112,8 +112,8 @@ <%- include('partials/authentication-status') %> - + - + diff --git a/views/profileindex.html b/views/profileindex.html index d915d0c8cc8..a24bb0b7193 100644 --- a/views/profileindex.html +++ b/views/profileindex.html @@ -166,8 +166,8 @@ <%- include('partials/authentication-status') %> - + - + diff --git a/views/reportindex.html b/views/reportindex.html index ea1284b6cd4..235dea41b61 100644 --- a/views/reportindex.html +++ b/views/reportindex.html @@ -124,8 +124,8 @@ - + \ No newline at end of file From 3ee90d69277f58dc501eccb1a5ff013455969013 Mon Sep 17 00:00:00 2001 From: Jeremy Cunningham <34543464+jpcunningh@users.noreply.github.com> Date: Sun, 17 Jan 2021 07:31:31 -0600 Subject: [PATCH 075/194] feat: disable pump battery alarms at night option (#5359) * feat: add feature to disable pump battery alarms at night * add timezone handling for server side * Update pump.test.js * Update pump.test.js * Update pump.test.js Co-authored-by: Jeremy Cunningham Co-authored-by: Sulka Haro --- README.md | 3 +++ lib/plugins/pump.js | 25 ++++++++++++++----- lib/settings.js | 2 ++ tests/pump.test.js | 61 ++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 79 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index b6860841242..a0ee207f8f1 100644 --- a/README.md +++ b/README.md @@ -294,6 +294,8 @@ To learn more about the Nightscout API, visit https://YOUR-SITE.com/api-docs/ or ### Predefined values for your browser settings (optional) * `TIME_FORMAT` (`12`)- possible values `12` or `24` + * `DAY_START` (`7.0`) - time for start of day (0.0 - 24.0) for features using day time / night time options + * `DAY_END` (`21.0`) - time for end of day (0.0 - 24.0) for features using day time / night time options * `NIGHT_MODE` (`off`) - possible values `on` or `off` * `SHOW_RAWBG` (`never`) - possible values `always`, `never` or `noise` * `CUSTOM_TITLE` (`Nightscout`) - Title for the main view @@ -511,6 +513,7 @@ To learn more about the Nightscout API, visit https://YOUR-SITE.com/api-docs/ or * `PUMP_URGENT_BATT_P` (`20`) - The % of the pump battery remaining, an urgent alarm will be triggered when dropping below this threshold. * `PUMP_WARN_BATT_V` (`1.35`) - The voltage (if percent isn't available) of the pump battery, a warning will be triggered when dropping below this threshold. * `PUMP_URGENT_BATT_V` (`1.30`) - The voltage (if percent isn't available) of the pump battery, an urgent alarm will be triggered when dropping below this threshold. + * `PUMP_WARN_BATT_QUIET_NIGHT` (`false`) - Do not generate battery alarms at night. ##### `openaps` (OpenAPS) Integrated OpenAPS loop monitoring, uses these extended settings: diff --git a/lib/plugins/pump.js b/lib/plugins/pump.js index 21b1261739b..8a0d397a300 100644 --- a/lib/plugins/pump.js +++ b/lib/plugins/pump.js @@ -34,6 +34,14 @@ function init (ctx) { var retroFields = cleanList(sbx.extendedSettings.retroFields); retroFields = isEmpty(retroFields) ? ['reservoir', 'battery'] : retroFields; + var profile = sbx.data.profile; + var warnBattQuietNight = sbx.extendedSettings.warnBattQuietNight; + + if (warnBattQuietNight && (!profile || !profile.hasData() || !profile.getTimezone())) { + console.warn('PUMP_WARN_BATT_QUIET_NIGHT requires a treatment profile with time zone set to obtain user time zone'); + warnBattQuietNight = false; + } + return { fields: fields , retroFields: retroFields @@ -47,6 +55,9 @@ function init (ctx) { , urgentBattP: sbx.extendedSettings.urgentBattP || 20 , warnOnSuspend: sbx.extendedSettings.warnOnSuspend || false , enableAlerts: sbx.extendedSettings.enableAlerts || false + , warnBattQuietNight: warnBattQuietNight || false + , dayStart: sbx.settings.dayStart + , dayEnd: sbx.settings.dayEnd }; }; @@ -246,17 +257,17 @@ function init (ctx) { } } - function updateBattery (type, prefs, result) { + function updateBattery (type, prefs, result, batteryWarn) { if (result.battery) { result.battery.label = 'Battery'; result.battery.display = result.battery.value + type; var urgent = type === 'v' ? prefs.urgentBattV : prefs.urgentBattP; var warn = type === 'v' ? prefs.warnBattV : prefs.warnBattP; - if (result.battery.value < urgent) { + if (result.battery.value < urgent && batteryWarn) { result.battery.level = levels.URGENT; result.battery.message = 'URGENT: Pump Battery Low'; - } else if (result.battery.value < warn) { + } else if (result.battery.value < warn && batteryWarn) { result.battery.level = levels.WARN; result.battery.message = 'Warning, Pump Battery Low'; } else { @@ -300,7 +311,9 @@ function init (ctx) { function prepareData (prop, prefs, sbx) { var pump = (prop && prop.pump) || { }; - + var time = (sbx.data.profile && sbx.data.profile.getTimezone()) ? moment(sbx.time).tz(sbx.data.profile.getTimezone()) : moment(sbx.time); + var now = time.hours() + time.minutes() / 60.0 + time.seconds() / 3600.0; + var batteryWarn = !(prefs.warnBattQuietNight && (now < prefs.dayStart || now > prefs.dayEnd)); var result = { level: levels.NONE , clock: pump.clock ? { value: moment(pump.clock) } : null @@ -317,10 +330,10 @@ function init (ctx) { if (pump.battery && pump.battery.percent) { result.battery = { value: pump.battery.percent, unit: 'percent' }; - updateBattery('%', prefs, result); + updateBattery('%', prefs, result, batteryWarn); } else if (pump.battery && pump.battery.voltage) { result.battery = { value: pump.battery.voltage, unit: 'volts'}; - updateBattery('v', prefs, result); + updateBattery('v', prefs, result, batteryWarn); } result.device = { label: translate('Device'), display: prop.device }; diff --git a/lib/settings.js b/lib/settings.js index 9b220ec746b..0982c63a821 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -8,6 +8,8 @@ function init () { var settings = { units: 'mg/dl' , timeFormat: 12 + , dayStart: 7.0 + , dayEnd: 21.0 , nightMode: false , editMode: true , showRawbg: 'never' diff --git a/tests/pump.test.js b/tests/pump.test.js index dc072c7fabe..6b38f814183 100644 --- a/tests/pump.test.js +++ b/tests/pump.test.js @@ -13,6 +13,7 @@ var top_ctx = { top_ctx.language.set('en'); var env = require('../env')(); var levels = require('../lib/levels'); +var profile = require('../lib/profilefunctions')(); top_ctx.levels = levels; var pump = require('../lib/plugins/pump')(top_ctx); var sandbox = require('../lib/sandbox')(top_ctx); @@ -51,6 +52,10 @@ var statuses = [{ } }]; +var profileData = +{ + 'timezone': moment.tz.guess() +}; var statuses2 = [{ created_at: '2015-12-05T17:35:00.000Z' @@ -183,7 +188,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: statuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -211,7 +216,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: lowResStatuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -240,7 +245,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: lowResStatuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -270,7 +275,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: lowBattStatuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -299,7 +304,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: lowBattStatuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -310,6 +315,50 @@ describe('pump', function ( ) { done(); }); + it('not generate a battery alarm during night when PUMP_WARN_BATT_QUIET_NIGHT is true', function (done) { + var ctx = { + settings: { + units: 'mg/dl' + , dayStart: 24 // Set to 24 so it always evaluates true in test + , dayEnd: 21.0 + } + , pluginBase: { + updatePillText: function mockedUpdatePillText(plugin, options) { + options.label.should.equal('Pump'); + options.value.should.equal('86.4U'); + done(); + } + } + , notifications: require('../lib/notifications')(env, top_ctx) + , language: require('../lib/language')() + , levels: levels + }; + + ctx.notifications.initRequests(); + + var lowBattStatuses = _.cloneDeep(statuses); + lowBattStatuses[1].pump.battery.voltage = 1.00; + + var sbx = sandbox.clientInit(ctx, now.valueOf(), { + devicestatus: lowBattStatuses + , profiles: [profileData] + }); + profile.loadData(_.cloneDeep([profileData])); + sbx.data.profile = profile; + + sbx.extendedSettings = { + enableAlerts: true + , warnBattQuietNight: true + }; + pump.setProperties(sbx); + pump.checkNotifications(sbx); + + var highest = ctx.notifications.findHighestAlarm('Pump'); + should.not.exist(highest); + + done(); + }); + it('not generate an alert for a stale pump data, when there is an offline marker', function (done) { var ctx = { settings: { @@ -326,7 +375,7 @@ describe('pump', function ( ) { devicestatus: statuses , treatments: [{eventType: 'OpenAPS Offline', mills: now.valueOf(), duration: 60}] }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); From ccd591d4efa3916137ccb56e3b8bcad5d44d0fe7 Mon Sep 17 00:00:00 2001 From: Jakob Date: Sun, 17 Jan 2021 09:45:42 -0800 Subject: [PATCH 076/194] Add eslint security plugin (#5450) Co-authored-by: Jakob Sandberg Co-authored-by: Sulka Haro --- .eslintrc.js | 7 +++++-- npm-shrinkwrap.json | 9 +++++++++ package.json | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 974a562c7c6..69cb41cb491 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,10 @@ module.exports = { - "plugins": [ ], + "plugins": [ + "security" + ], "extends": [ - "eslint:recommended" + "eslint:recommended", + "plugin:security/recommended" ], "parser": "babel-eslint", "env": { diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 765f8d59121..ed9d903b610 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -3737,6 +3737,15 @@ "rimraf": "^2.6.1" } }, + "eslint-plugin-security": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-1.4.0.tgz", + "integrity": "sha512-xlS7P2PLMXeqfhyf3NpqbvbnW04kN8M9NtmhpR3XGyOvt/vNKS7XPXT5EDbwKW9vCjWH4PpfQvgD/+JgN0VJKA==", + "dev": true, + "requires": { + "safe-regex": "^1.1.0" + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", diff --git a/package.json b/package.json index 63f765b4e3d..8498fd3bcd3 100644 --- a/package.json +++ b/package.json @@ -140,6 +140,7 @@ "env-cmd": "^10.1.0", "eslint": "^6.8.0", "eslint-loader": "^2.2.1", + "eslint-plugin-security": "^1.4.0", "mocha": "^8.1.1", "nodemon": "^1.19.4", "nyc": "^14.1.1", From f6f7e18888f1e3fa719c17ca635c70f768a05c31 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 17 Jan 2021 18:46:28 +0100 Subject: [PATCH 077/194] Allow api3 behind reverse proxy (#5631) * Allow api3 behind reverse proxy * fix test Co-authored-by: Sulka Haro --- lib/api3/security.js | 10 +++++----- tests/api3.security.test.js | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/api3/security.js b/lib/api3/security.js index 1488a0ee3b8..6d6afe21055 100644 --- a/lib/api3/security.js +++ b/lib/api3/security.js @@ -56,10 +56,10 @@ function authenticate (opCtx) { return resolve({ shiros: [ adminShiro ] }); } - if (req.protocol !== 'https') { - return reject( - opTools.sendJSONStatus(res, apiConst.HTTP.FORBIDDEN, apiConst.MSG.HTTP_403_NOT_USING_HTTPS)); - } +// if (req.protocol !== 'https') { +// return reject( +// opTools.sendJSONStatus(res, apiConst.HTTP.FORBIDDEN, apiConst.MSG.HTTP_403_NOT_USING_HTTPS)); +// } const checkDateResult = checkDateHeader(opCtx); if (checkDateResult !== true) { @@ -123,4 +123,4 @@ module.exports = { authenticate, checkPermission, demandPermission -}; \ No newline at end of file +}; diff --git a/tests/api3.security.test.js b/tests/api3.security.test.js index 0e88e9fae19..7cd811acfe6 100644 --- a/tests/api3.security.test.js +++ b/tests/api3.security.test.js @@ -33,16 +33,16 @@ describe('Security of REST API3', function() { }); - it('should require HTTPS', async () => { - if (semver.gte(process.version, '10.0.0')) { - let res = await request(self.http.baseUrl) // hangs on 8.x.x (no reason why) - .get('/api/v3/test') - .expect(403); - - res.body.status.should.equal(403); - res.body.message.should.equal(apiConst.MSG.HTTP_403_NOT_USING_HTTPS); - } - }); +// it('should require HTTPS', async () => { +// if (semver.gte(process.version, '10.0.0')) { +// let res = await request(self.http.baseUrl) // hangs on 8.x.x (no reason why) +// .get('/api/v3/test') +// .expect(403); +// +// res.body.status.should.equal(403); +// res.body.message.should.equal(apiConst.MSG.HTTP_403_NOT_USING_HTTPS); +// } +// }); it('should require Date header', async () => { @@ -186,4 +186,4 @@ describe('Security of REST API3', function() { .expect(200); }); -}); \ No newline at end of file +}); From 14872695ba1ae8d9477b610fefc06993c6e81bbe Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 17 Jan 2021 20:08:14 +0200 Subject: [PATCH 078/194] Move to package-lock, as per #5735 --- npm-shrinkwrap.json => package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename npm-shrinkwrap.json => package-lock.json (99%) diff --git a/npm-shrinkwrap.json b/package-lock.json similarity index 99% rename from npm-shrinkwrap.json rename to package-lock.json index ed9d903b610..e04b32ee1ed 100644 --- a/npm-shrinkwrap.json +++ b/package-lock.json @@ -6970,9 +6970,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "log-symbols": { "version": "2.2.0", From 8500a1b33d8c0b7657d9e7e513101a4c4fd5b64f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 17 Jan 2021 20:32:40 +0200 Subject: [PATCH 079/194] New Crowdin updates (#6713) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * Update source file en.json * New translations en.json (Norwegian Bokmal) * New translations en.json (Greek) * New translations en.json (French) * New translations en.json (Dutch) * New translations en.json (Greek) * New translations en.json (Swedish) * New translations en.json (Czech) * New translations en.json (Russian) * New translations en.json (Romanian) * Update source file en.json * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * New translations en.json (Romanian) * New translations en.json (Hebrew) * New translations en.json (Norwegian Bokmal) * New translations en.json (Hungarian) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * Update source file en.json * New translations en.json (Norwegian Bokmal) * New translations en.json (Greek) * New translations en.json (Swedish) * New translations en.json (German) * New translations en.json (Russian) * New translations en.json (Czech) * New translations en.json (German) * New translations en.json (Hungarian) * New translations en.json (Hungarian) * New translations en.json (Dutch) * New translations en.json (Hebrew) * New translations en.json (Russian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Russian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Danish) * New translations en.json (Portuguese, Brazilian) --- translations/bg_BG.json | 13 +- translations/cs_CZ.json | 13 +- translations/da_DK.json | 43 +++--- translations/de_DE.json | 13 +- translations/el_GR.json | 21 ++- translations/es_ES.json | 327 ++++++++++++++++++++-------------------- translations/fi_FI.json | 13 +- translations/fr_FR.json | 163 ++++++++++---------- translations/he_IL.json | 57 ++++--- translations/hr_HR.json | 13 +- translations/hu_HU.json | 327 ++++++++++++++++++++-------------------- translations/it_IT.json | 13 +- translations/ja_JP.json | 13 +- translations/ko_KR.json | 13 +- translations/nb_NO.json | 13 +- translations/nl_NL.json | 13 +- translations/pl_PL.json | 13 +- translations/pt_BR.json | 39 +++-- translations/ro_RO.json | 13 +- translations/ru_RU.json | 41 ++--- translations/sl_SI.json | 13 +- translations/sv_SE.json | 15 +- translations/tr_TR.json | 13 +- translations/zh_CN.json | 13 +- translations/zh_TW.json | 13 +- 25 files changed, 708 insertions(+), 533 deletions(-) diff --git a/translations/bg_BG.json b/translations/bg_BG.json index dccd84a9236..c9d4b279a7d 100644 --- a/translations/bg_BG.json +++ b/translations/bg_BG.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Отрицателен временен базален инсулин", "Total basal insulin:": "Общо базален инсулин", "Total daily insulin:": "Общо инсулин за деня", - "Unable to %1 Role": "Невъзможно да %1 Роля", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Невъзможно изтриването на Роля", "Database contains %1 roles": "Базата данни съдържа %1 роли", "Edit Role": "Промени Роля", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Субекти - Хора,Устройства,т.н.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Всеки обект ще има уникален ключ за достъп и 1 или повече роли. Кликнете върху ключа за достъп, за да отворите нов изглед с избрания обект, тази секретна връзка може след това да се споделя", "Add new Subject": "Добави нов субект", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Невъзможно изтриването на субекта", "Database contains %1 subjects": "Базата данни съдържа %1 субекти", "Edit Subject": "Промени субект", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/cs_CZ.json b/translations/cs_CZ.json index 87d1dad7113..89acea2a310 100644 --- a/translations/cs_CZ.json +++ b/translations/cs_CZ.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativní dočasný bazální inzulín:", "Total basal insulin:": "Celkový bazální inzulín:", "Total daily insulin:": "Celkový denní inzulín:", - "Unable to %1 Role": "Chyba volání %1 Role", + "Unable to save Role": "Role nelze uložit", "Unable to delete Role": "Nelze odstranit Roli", "Database contains %1 roles": "Databáze obsahuje %1 rolí", "Edit Role": "Editovat roli", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjekty - Lidé, zařízení atd.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Každý subjekt má svůj unikátní token a 1 nebo více rolí. Klikem na přístupový token se otevře nové okno pro tento subjekt. Tento link je možné sdílet.", "Add new Subject": "Přidat nový subjekt", - "Unable to %1 Subject": "Nelze %1 Subjekt", + "Unable to save Subject": "Subjekt nelze uložit", "Unable to delete Subject": "Nelze odstranit Subjekt", "Database contains %1 subjects": "Databáze obsahuje %1 subjektů", "Edit Subject": "Editovat subjekt", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. To odpovídá %2% dostupného místa v databázi.", "virtAsstTitleDatabaseSize": "Velikost databáze", "Carbs/Food/Time": "Sacharidy/Jídlo/Čas", + "You have administration messages": "Máte zprávy pro administrátora", + "Admin messages in queue": "Ve frontě jsou zprávy pro adminstrátora", + "Queue empty": "Fronta je prázdná", + "There are no admin messages in queue": "Ve frontě nejsou žádné zprávy pro administrátora", + "Please sign in using the API_SECRET to see your administration messages": "Pro zobrazení zpráv pro administrátora se přihlašte pomocí API_SECRET", "Reads enabled in default permissions": "Ve výchozích oprávněních je čtení povoleno", "Data reads enabled": "Čtení dat povoleno", "Data writes enabled": "Zápis dat povolen", @@ -685,5 +690,7 @@ "Auth role": "Autorizační role", "view without token": "zobrazit bez tokenu", "Remove stored token": "Odstranit uložený token", - "Weekly Distribution": "Týdenní rozložení" + "Weekly Distribution": "Týdenní rozložení", + "Failed authentication": "Ověření selhalo", + "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?": "Zařízení s IP adresou %1 se pokusilo o příhlášení do Nightscoutu s nesprávnými údaji. Zkontrolujte, zda nemáte v uploaderu nastaveno špatné API_SECRET nebo token." } diff --git a/translations/da_DK.json b/translations/da_DK.json index 8585c0e0c22..dc21df58a64 100644 --- a/translations/da_DK.json +++ b/translations/da_DK.json @@ -24,9 +24,9 @@ "Last 2 weeks": "Sidste 2 uger", "Last month": "Sidste måned", "Last 3 months": "Sidste 3 måneder", - "between": "between", - "around": "around", - "and": "and", + "between": "mellem", + "around": "omkring", + "and": "og", "From": "Fra", "To": "Til", "Notes": "Noter", @@ -53,13 +53,13 @@ "": "", "Result is empty": "Tomt resultat", "Day to day": "Dag til dag", - "Week to week": "Week to week", + "Week to week": "Uge til uge", "Daily Stats": "Daglig statistik", "Percentile Chart": "Procentgraf", - "Distribution": "Distribution", + "Distribution": "Fordeling", "Hourly stats": "Timestatistik", "netIOB stats": "netIOB statistik", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "temp basals must be rendered to display this report": "temp basaler skal være tilgængelige for at vise denne rapport", "No data available": "Mangler data", "Low": "Lav", "In Range": "Indenfor intervallet", @@ -85,7 +85,7 @@ "# of Readings": "Antal aflæsninger", "Mean": "Gennemsnit", "Standard Deviation": "Standardafvigelse", - "Max": "Max", + "Max": "Maks", "Min": "Min", "A1c estimation*": "Beregnet A1c-værdi ", "Weekly Success": "Uge resultat", @@ -94,7 +94,7 @@ "No API secret hash stored yet. You need to enter API secret.": "Mangler API-nøgle. Du skal indtaste API nøglen", "Database loaded": "Database indlæst", "Error: Database failed to load": "Fejl: Database kan ikke indlæses", - "Error": "Error", + "Error": "Fejl", "Create new record": "Opret ny post", "Save record": "Gemmer post", "Portions": "Portioner", @@ -112,14 +112,14 @@ "Not loaded": "Ikke indlæst", "Food Editor": "Mad editor", "Your database": "Din database", - "Filter": "Filter", + "Filter": "Filtrer", "Save": "Gem", "Clear": "Rense", "Record": "Post", "Quick picks": "Hurtig valg", "Show hidden": "Vis skjulte", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Din API kode", + "Remember this device. (Do not enable this on public computers.)": "Husk denne enhed. (Aktiver ikke dette på offentlige computere)", "Treatments": "Behandling", "Time": "Tid", "Event Type": "Hændelsestype", @@ -147,7 +147,7 @@ "Insulin needed": "Insulin påkrævet", "Carbs needed": "Kulhydrater påkrævet", "Carbs needed if Insulin total is negative value": "Kulhydrater er nødvendige når total insulin mængde er negativ", - "Basal rate": "Basal rate", + "Basal rate": "Basalrate", "60 minutes earlier": "60 min tidligere", "45 minutes earlier": "45 min tidligere", "30 minutes earlier": "30 min tidigere", @@ -205,7 +205,7 @@ "Snack Bolus": "Mellemmåltidsbolus", "Correction Bolus": "Korrektionsbolus", "Carb Correction": "Kulhydratskorrektion", - "Note": "Note", + "Note": "Kommentar", "Question": "Spørgsmål", "Exercise": "Træning", "Pump Site Change": "Skift insulin infusionssted", @@ -301,7 +301,7 @@ "Record %1 removed ...": "Indgang %1 fjernet ...", "Error removing record %1": "Fejl ved fjernelse af indgang %1", "Deleting records ...": "Sletter indgange ...", - "%1 records deleted": "%1 records deleted", + "%1 records deleted": "%1 poster slettet", "Clean Mongo status database": "Slet Mongo status database", "Delete all documents from devicestatus collection": "Fjerne alle dokumenter fra device status tabellen", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Denne handling fjerner alle dokumenter fra device status tabellen. Brugbart når uploader batteri status ikke opdateres korrekt.", @@ -309,7 +309,7 @@ "Delete all documents from devicestatus collection?": "Fjern alle dokumenter fra device status tabellen", "Database contains %1 records": "Databasen indeholder %1 indgange", "All records removed ...": "Alle hændelser fjernet ...", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Delete all documents from devicestatus collection older than 30 days": "Fjerne alle dokumenter fra device status tabellen", "Number of Days to Keep:": "Number of Days to Keep:", "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativ midlertidig basalinsulin:", "Total basal insulin:": "Total daglig basalinsulin:", "Total daily insulin:": "Total dagsdosis insulin", - "Unable to %1 Role": "Kan ikke slette %1 rolle", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Kan ikke slette rolle", "Database contains %1 roles": "Databasen indeholder %1 roller", "Edit Role": "Rediger rolle", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Emner - Brugere, Enheder, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Hvert emne vil have en unik sikkerhedsnøgle samt en eller flere roller. Klik på sikkerhedsnøglen for at åbne et nyt view med det valgte emne, dette hemmelige link kan derefter blive delt.", "Add new Subject": "Tilføj nye emner", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Kan ikke slette emne", "Database contains %1 subjects": "Databasen indeholder %1 emner", "Edit Subject": "Rediger emne", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/de_DE.json b/translations/de_DE.json index 69f83fb8c08..3e363f76acb 100644 --- a/translations/de_DE.json +++ b/translations/de_DE.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatives temporäres Basal Insulin:", "Total basal insulin:": "Gesamt Basal Insulin:", "Total daily insulin:": "Gesamtes tägliches Insulin:", - "Unable to %1 Role": "Fehler bei der %1 Rolle", + "Unable to save Role": "Rolle kann nicht gespeichert werden", "Unable to delete Role": "Rolle nicht löschbar", "Database contains %1 roles": "Datenbank enthält %1 Rollen", "Edit Role": "Rolle editieren", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjekte - Menschen, Geräte, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Jedes Subjekt erhält einen einzigartigen Zugriffsschlüssel und eine oder mehrere Rollen. Klicke auf den Zugriffsschlüssel, um eine neue Ansicht mit dem ausgewählten Subjekt zu erhalten. Dieser geheime Link kann geteilt werden.", "Add new Subject": "Füge ein neues Subjekt hinzu", - "Unable to %1 Subject": "Kann Subjekt nicht %1", + "Unable to save Subject": "Subjekt kann nicht gespeichert werden", "Unable to delete Subject": "Kann Subjekt nicht löschen", "Database contains %1 subjects": "Datenbank enthält %1 Subjekte", "Edit Subject": "Editiere Subjekt", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Das sind %2% des verfügbaren Datenbank-Speicherplatzes.", "virtAsstTitleDatabaseSize": "Datenbank-Dateigröße", "Carbs/Food/Time": "Kohlenhydrate/Nahrung/Zeit", + "You have administration messages": "Neue Admin-Nachrichten liegen vor", + "Admin messages in queue": "Admin-Nachrichten in Warteschlange", + "Queue empty": "Warteschlange leer", + "There are no admin messages in queue": "Keine Admin-Nachrichten in der Warteschlange", + "Please sign in using the API_SECRET to see your administration messages": "Bitte melde dich mit dem API_SECRET an, um die Admin-Nachrichten sehen zu können", "Reads enabled in default permissions": "Leseberechtigung aktiviert durch Standardberechtigungen", "Data reads enabled": "Daten lesen aktiviert", "Data writes enabled": "Datenschreibvorgänge aktiviert", @@ -685,5 +690,7 @@ "Auth role": "Auth-Rolle", "view without token": "Ohne Token anzeigen", "Remove stored token": "Gespeichertes Token entfernen", - "Weekly Distribution": "Wöchentliche Verteilung" + "Weekly Distribution": "Wöchentliche Verteilung", + "Failed authentication": "Authentifizierung fehlgeschlagen", + "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?": "Ein Gerät mit der IP-Adresse %1 hat versucht sich mit falschen Zugangsdaten bei Nightscout anzumelden. Prüfe, ob einer deiner Uploader ein falsches API_SECRET oder Token verwendet." } diff --git a/translations/el_GR.json b/translations/el_GR.json index 80c91bb40c3..a0d254789f0 100644 --- a/translations/el_GR.json +++ b/translations/el_GR.json @@ -124,7 +124,7 @@ "Time": "Ώρα", "Event Type": "Ενέργεια", "Blood Glucose": "Γλυκόζη Αίματος", - "Entered By": "Εισήχθη από", + "Entered By": "Εισαγωγή από", "Delete this treatment?": "Διαγραφή ενέργειας", "Carbs Given": "Υδατάνθρακες", "Insulin Given": "Ινσουλίνη", @@ -204,7 +204,7 @@ "Meal Bolus": "Ινσουλίνη Γέυματος", "Snack Bolus": "Ινσουλίνη Σνακ", "Correction Bolus": "Διόρθωση με Ινσουλίνη", - "Carb Correction": "Διόρθωση με Υδατάνθρακεςς", + "Carb Correction": "Διόρθωση με Υδατάνθρακες", "Note": "Σημείωση", "Question": "Ερώτηση", "Exercise": "Άσκηση", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Αρνητική βασική ινσουλίνη", "Total basal insulin:": "Συνολική Βασική Ινσουλίνη (BASAL)", "Total daily insulin:": "Συνολική Ημερήσια Ινσουλίνη", - "Unable to %1 Role": "Unable to %1 Role", + "Unable to save Role": "Δεν ήταν δυνατή η αποθήκευση του Ρόλου", "Unable to delete Role": "Unable to delete Role", "Database contains %1 roles": "Database contains %1 roles", "Edit Role": "Επεξεργασία ρόλου", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", "Add new Subject": "Add new Subject", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Δεν ήταν δυνατή η αποθήκευση του Θέματος", "Unable to delete Subject": "Unable to delete Subject", "Database contains %1 subjects": "Database contains %1 subjects", "Edit Subject": "Edit Subject", @@ -529,7 +529,7 @@ "Sensor Start": "Sensor Start", "days": "days", "Insulin distribution": "Insulin distribution", - "To see this report, press SHOW while in this view": "To see this report, press SHOW while in this view", + "To see this report, press SHOW while in this view": "Για να δείτε την αναφορά, πιέστε το κουμπί \"ΕΜΦΑΝΙΣΗ\".", "AR2 Forecast": "AR2 Forecast", "OpenAPS Forecasts": "OpenAPS Forecasts", "Temporary Target": "Temporary Target", @@ -656,6 +656,11 @@ "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": "Διαθέσιμα μηνύματα διαχείρισης", + "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": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -672,7 +677,7 @@ "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", + "Show predictions": "Εμφάνιση προβλέψεων", "Timeshift on meals larger than": "Timeshift on meals larger than", "g carbs": "g carbs'", "consumed between": "consumed between", @@ -685,5 +690,7 @@ "Auth role": "Πιστοποίηση ρόλου", "view without token": "view without token", "Remove stored token": "Αφαίρεση αποθηκευμένου token", - "Weekly Distribution": "Εκτίμηση γλυκοζυλιωμένης - 7 ημέρες" + "Weekly Distribution": "Εκτίμηση γλυκοζυλιωμένης - 7 ημέρες", + "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?": "Έγινε προσπάθεια πιστοποίησης στο Nightscout μια συσκευής από τη διεύθυνση IP %1 με λάθος διαπιστευτήρια. Ελέγξτε αν έχετε ρυθμίσει τον uploader με λάθος API_SECRET ή token." } diff --git a/translations/es_ES.json b/translations/es_ES.json index 64754df51a5..999753d914f 100644 --- a/translations/es_ES.json +++ b/translations/es_ES.json @@ -42,8 +42,8 @@ "Loading profile": "Cargando perfil", "Loading status": "Cargando estado", "Loading food database": "Cargando base de datos de alimentos", - "not displayed": "No mostrado", - "Loading CGM data of": "Cargando datos de CGM de", + "not displayed": "no mostrado", + "Loading CGM data of": "Cargando datos de MCG de", "Loading treatments data of": "Cargando datos de tratamientos de", "Processing data of": "Procesando datos de", "Portion": "Porción", @@ -59,7 +59,7 @@ "Distribution": "Distribución", "Hourly stats": "Estadísticas por hora", "netIOB stats": "estadísticas netIOB", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "temp basals must be rendered to display this report": "basales temporales deben ser terminadas para mostrar este informe", "No data available": "No hay datos disponibles", "Low": "Bajo", "In Range": "En rango", @@ -78,15 +78,15 @@ "Glucose Percentile report": "Informe de percetiles de glucemia", "Glucose distribution": "Distribución de glucemias", "days total": "Total de días", - "Total per day": "Total de días", + "Total per day": "Total por días", "Overall": "General", "Range": "Intervalo", "% of Readings": "% de valores", "# of Readings": "N° de valores", "Mean": "Media", "Standard Deviation": "Desviación estándar", - "Max": "Max", - "Min": "Min", + "Max": "Máx", + "Min": "Mín", "A1c estimation*": "Estimación de HbA1c*", "Weekly Success": "Resultados semanales", "There is not sufficient data to run this report. Select more days.": "No hay datos suficientes para generar este informe. Seleccione más días.", @@ -118,16 +118,16 @@ "Record": "Guardar", "Quick picks": "Selección rápida", "Show hidden": "Mostrar ocultos", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Tu API secret o token", + "Remember this device. (Do not enable this on public computers.)": "Recordar este dispositivo. (No activar esto en ordenadores públicos.)", "Treatments": "Tratamientos", "Time": "Hora", "Event Type": "Tipo de evento", "Blood Glucose": "Glucemia", "Entered By": "Introducido por", "Delete this treatment?": "¿Borrar este tratamiento?", - "Carbs Given": "Hidratos de carbono dados", - "Insulin Given": "Insulina", + "Carbs Given": "Hidratos de carbono puestos", + "Insulin Given": "Insulina introducida", "Event Time": "Hora del evento", "Please verify that the data entered is correct": "Por favor, verifique que los datos introducidos son correctos", "BG": "Glucemia en sangre", @@ -165,7 +165,7 @@ "Other": "Otro", "Submit Form": "Enviar formulario", "Profile Editor": "Editor de perfil", - "Reports": "Herramienta de informes", + "Reports": "Informes", "Add food from your database": "Añadir alimento a su base de datos", "Reload database": "Recargar base de datos", "Add": "Añadir", @@ -210,7 +210,7 @@ "Exercise": "Ejercicio", "Pump Site Change": "Cambio de catéter", "CGM Sensor Start": "Inicio de sensor", - "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Stop": "Detener sensor MCG", "CGM Sensor Insert": "Cambio de sensor", "Dexcom Sensor Start": "Inicio de sensor Dexcom", "Dexcom Sensor Change": "Cambio de sensor Dexcom", @@ -223,9 +223,9 @@ "Amount in units": "Cantidad en unidades", "View all treatments": "Visualizar todos los tratamientos", "Enable Alarms": "Activar las alarmas", - "Pump Battery Change": "Pump Battery Change", - "Pump Battery Low Alarm": "Pump Battery Low Alarm", - "Pump Battery change overdue!": "Pump Battery change overdue!", + "Pump Battery Change": "Cambio batería bomba", + "Pump Battery Low Alarm": "Alarma de Bomba Baja", + "Pump Battery change overdue!": "Cambio de batería de bomba atrasado!", "When enabled an alarm may sound.": "Cuando estén activas, una alarma podrá sonar", "Urgent High Alarm": "Alarma de glucemia alta urgente", "High Alarm": "Alarma de glucemia alta", @@ -250,7 +250,7 @@ "Reset, and use defaults": "Inicializar y utilizar los valores por defecto", "Calibrations": "Calibraciones", "Alarm Test / Smartphone Enable": "Test de Alarma / Activar teléfono", - "Bolus Wizard": "Calculo Bolos sugeridos", + "Bolus Wizard": "Calculador Bolos", "in the future": "en el futuro", "time ago": "tiempo atrás", "hr ago": "hr atrás", @@ -277,7 +277,7 @@ "Add new": "Añadir nuevo", "g": "gr", "ml": "ml", - "pcs": "pcs", + "pcs": "pza", "Drag&drop food here": "Arrastre y suelte aquí alimentos", "Care Portal": "Portal cuidador", "Medium/Unknown": "Medio/Desconocido", @@ -301,7 +301,7 @@ "Record %1 removed ...": "Registro %1 eliminado ...", "Error removing record %1": "Error al eliminar registro %1", "Deleting records ...": "Eliminando registros ...", - "%1 records deleted": "%1 records deleted", + "%1 records deleted": "%1 registros eliminados", "Clean Mongo status database": "Limpiar estado de la base de datos Mongo", "Delete all documents from devicestatus collection": "Borrar todos los documentos desde colección devicesatatus", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Este comando elimina todos los documentos desde la colección devicestatus. Útil cuando el estado de la batería cargadora no se actualiza correctamente", @@ -309,21 +309,21 @@ "Delete all documents from devicestatus collection?": "Borrar todos los documentos desde la colección devicestatus?", "Database contains %1 records": "La Base de datos contiene %1 registros", "All records removed ...": "Todos los registros eliminados ...", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", - "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", - "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents": "Delete old documents", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", - "%1 is not a valid number": "%1 is not a valid number", - "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Delete all documents from devicestatus collection older than 30 days": "Eliminar todos los documentos de la colección devicestatus de hace más de 30 días", + "Number of Days to Keep:": "Número de días a guardar:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Esta tarea elimina todos los documentos de la colección de devicestatus que tienen más de 30 días. Es útil cuando el estado de la batería del cargador no se actualiza correctamente.", + "Delete old documents from devicestatus collection?": "Borrar todos los documentos desde la colección devicestatus?", + "Clean Mongo entries (glucose entries) database": "Limpiar base de datos Mongo entradas (entradas glucosas)", + "Delete all documents from entries collection older than 180 days": "Eliminar todos los documentos de la colección entries de hace más de 180 días", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Esta tarea elimina todos los documentos de la colección entradas que tienen más de 180 días. Es útil cuando el estado de la batería del cargador no se actualiza correctamente.", + "Delete old documents": "Eliminar documentos antiguos", + "Delete old documents from entries collection?": "¿Eliminar documentos antiguos de la colección de entradas?", + "%1 is not a valid number": "%1 no es un número válido", + "%1 is not a valid number - must be more than 2": "%1 no es un número válido - debe ser más de 2", + "Clean Mongo treatments database": "Limpiar base de datos de tratamientos de Mongo", + "Delete all documents from treatments collection older than 180 days": "Eliminar todos los documentos de la colección de tratamientos de hace más de 180 días", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Esta tarea elimina todos los documentos de la colección de tratamientos que tienen más de 180 días. Es útil cuando el estado de la batería del cargador no se actualiza correctamente.", + "Delete old documents from treatments collection?": "¿Eliminar documentos antiguos de la colección de entradas?", "Admin Tools": "Herramientas Administrativas", "Nightscout reporting": "Informes - Nightscout", "Cancel": "Cancelar", @@ -334,7 +334,7 @@ "Temp Basal Start": "Inicio Tasa Basal temporal", "Temp Basal End": "Fin Tasa Basal temporal", "Percent": "Porcentaje", - "Basal change in %": "Basal modificado en %", + "Basal change in %": "Basal modificada en %", "Basal value": "Valor basal", "Absolute basal value": "Valor basal absoluto", "Announcement": "Aviso", @@ -379,7 +379,7 @@ "Add new interval before": "Agregar nuevo intervalo antes", "Delete interval": "Borrar intervalo", "I:C": "I:C", - "ISF": "ISF", + "ISF": "ISF (Factor Sensibilidad Insulina)", "Combo Bolus": "Combo-Bolo", "Difference": "Diferencia", "New time": "Nueva hora", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Insulina basal temporal negativa:", "Total basal insulin:": "Total Insulina basal:", "Total daily insulin:": "Total Insulina diaria:", - "Unable to %1 Role": "Incapaz de %1 Rol", + "Unable to save Role": "No se ha podido guardar el perfil", "Unable to delete Role": "Imposible elimar Rol", "Database contains %1 roles": "Base de datos contiene %1 Roles", "Edit Role": "Editar Rol", @@ -433,13 +433,13 @@ "Subjects - People, Devices, etc": "Sujetos - Personas, Dispositivos, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Cada sujeto tendrá un identificador de acceso único y 1 o más roles. Haga clic en el identificador de acceso para abrir una nueva vista con el tema seleccionado, este enlace secreto puede ser compartido.", "Add new Subject": "Añadir nuevo Sujeto", - "Unable to %1 Subject": "Unable to %1 Subject", - "Unable to delete Subject": "Imposible eliminar sujeto", - "Database contains %1 subjects": "Base de datos contiene %1 sujetos", - "Edit Subject": "Editar sujeto", + "Unable to save Subject": "No se puede guardar el objeto", + "Unable to delete Subject": "Imposible eliminar objeto", + "Database contains %1 subjects": "Base de datos contiene %1 objetos", + "Edit Subject": "Editar objeto", "person, device, etc": "Persona, dispositivo, etc", "role1, role2": "Rol1, Rol2", - "Edit this subject": "Editar este sujeto", + "Edit this subject": "Editar este objeto", "Delete this subject": "Eliminar este sujeto", "Roles": "Roles", "Access Token": "Acceso Identificador", @@ -494,10 +494,10 @@ "Check BG using glucometer before correcting!": "Verifique glucemia antes de corregir!", "Basal reduction to account %1 units:": "Reducir basal para compesar %1 unidades:", "30m temp basal": "30 min. temporal basal", - "1h temp basal": "1h temporal Basasl", + "1h temp basal": "1h temporal Basal", "Cannula change overdue!": "¡Cambio de agujas vencido!", "Time to change cannula": " Hora sustituir cánula", - "Change cannula soon": "Change cannula soon", + "Change cannula soon": "Cambiar cannula pronto", "Cannula age %1 hours": "Cánula usada %1 horas", "Inserted": "Insertado", "CAGE": "Cánula desde", @@ -535,7 +535,7 @@ "Temporary Target": "Objetivo temporal", "Temporary Target Cancel": "Objetivo temporal cancelado", "OpenAPS Offline": "OpenAPS desconectado", - "Profiles": "Perfil", + "Profiles": "Perfiles", "Time in fluctuation": "Tiempo fluctuando", "Time in rapid fluctuation": "Tiempo fluctuando rápido", "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Esto es sólo una estimación apróximada que puede ser muy inexacta y no reemplaza las pruebas de sangre reales. La fórmula utilizada está tomada de: ", @@ -543,7 +543,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tiempo en fluctuación y Tiempo en fluctuación rápida miden el % de tiempo del período exáminado, durante la cual la glucosa en sangre ha estado cambiando relativamente rápido o rápidamente. Valores más bajos son mejores.", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "El cambio medio diario total es la suma de los valores absolutos de todas las glucémias en el período examinado, dividido por el número de días. Mejor valores bajos.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "El cambio medio por hora, es la suma del valor absoluto de todas las glucemias para el período examinado, dividido por el número de horas en el período. Más bajo es mejor.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "El RMS fuera de rango se calcula al cuadrar la distancia fuera de rango para todas las lecturas de glucosa durante el período examinado. resumiéndolos, dividiéndolos por el contador y tomando la raíz cuadrada. Esta métrica es similar al porcentaje en el rango pero pesa lecturas fuera del rango más alto. Valores más bajos son mejores.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", "Mean Total Daily Change": "Variación media total diaria", @@ -555,135 +555,142 @@ "SingleDown": "Bajando", "DoubleDown": "Bajando rápido", "DoubleUp": "Subiendo rápido", - "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", + "virtAsstUnknown": "Ese valor es desconocido en este momento. Por favor, consulta tu sitio de Nightscout para más detalles.", + "virtAsstTitleAR2Forecast": "Pronóstico AR2", + "virtAsstTitleCurrentBasal": "Basal actual", + "virtAsstTitleCurrentCOB": "COB actual", + "virtAsstTitleCurrentIOB": "IOB actual", + "virtAsstTitleLaunch": "Bienvenido a Nightscout", + "virtAsstTitleLoopForecast": "Pronóstico del lazo", + "virtAsstTitleLastLoop": "Último ciclo del lazo", + "virtAsstTitleOpenAPSForecast": "Pronóstico OpenAPS", + "virtAsstTitlePumpReservoir": "Insulina restante", + "virtAsstTitlePumpBattery": "Batería de la Bomba", + "virtAsstTitleRawBG": "GS Actual en crudo", + "virtAsstTitleUploaderBattery": "Batería del Uploader", + "virtAsstTitleCurrentBG": "BG actual", + "virtAsstTitleFullStatus": "Estado completo", + "virtAsstTitleCGMMode": "Modo MCG", + "virtAsstTitleCGMStatus": "Estado de MCG", + "virtAsstTitleCGMSessionAge": "Edad de la sesión MCG", + "virtAsstTitleCGMTxStatus": "Estado del transmisor MCG", + "virtAsstTitleCGMTxAge": "Edad del transmisor MCG", + "virtAsstTitleCGMNoise": "Ruido MCG", + "virtAsstTitleDelta": "Delta glucosa de sangre", "virtAsstStatus": "%1 y %2 como de %3.", "virtAsstBasal": "%1 basal actual es %2 unidades por hora", "virtAsstBasalTemp": "%1 Basal temporal de %2 unidades por hora hasta el fin %3", "virtAsstIob": "y tu tienes %1 insulina activa.", "virtAsstIobIntent": "Tienes %1 insulina activa", "virtAsstIobUnits": "%1 unidades de", - "virtAsstLaunch": "What would you like to check on Nightscout?", - "virtAsstPreamble": "Tú", + "virtAsstLaunch": "¿Qué te gustaría comprobar en Nightscout?", + "virtAsstPreamble": "Tu", "virtAsstPreamble3person": "%1 tiene un ", "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", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", - "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstUploadBattery": "La batería del cargador está en %1", + "virtAsstReservoir": "Tienes %1 unidades restantes", + "virtAsstPumpBattery": "La batería de la bomba está en %1 %2", + "virtAsstUploaderBattery": "La batería del cargador está en %1", + "virtAsstLastLoop": "El último lazo exitoso fue %1", + "virtAsstLoopNotAvailable": "El plugin Loop parece no estar habilitado", + "virtAsstLoopForecastAround": "De acuerdo con la previsión del lazo se espera que estés alrededor de %1 durante los siguientes %2", + "virtAsstLoopForecastBetween": "De acuerdo con la previsión del lazo se espera que estés entre %1 y %2 en los siguientes %3", + "virtAsstAR2ForecastAround": "De acuerdo con la previsión del lazo se espera que estés alrededor de %1 durante los siguientes %2", + "virtAsstAR2ForecastBetween": "De acuerdo con la previsión del lazo se espera que estés entre %1 y %2 en los siguientes %2", + "virtAsstForecastUnavailable": "No se puede predecir con los datos que están disponibles", + "virtAsstRawBG": "Tu Bg crudo es %1", + "virtAsstOpenAPSForecast": "El pronóstico de BG de OpenAPS es %1", + "virtAsstCob3person": "%1 tiene %2 hidratos de carbono a bordo", + "virtAsstCob": "Tienes %1 hidratos de carbono a bordo", + "virtAsstCGMMode": "Tu modo MCG era %1 a partir de %2.", + "virtAsstCGMStatus": "Su estado MCG fue %1 a partir de %2.", + "virtAsstCGMSessAge": "Su sesión MCG ha estado activa durante %1 días y %2 horas.", + "virtAsstCGMSessNotStarted": "No hay ninguna sesión MCG activa en este momento.", + "virtAsstCGMTxStatus": "Su estado del transmisor MCG fue %1 a %2.", + "virtAsstCGMTxAge": "Tu transmisor MCG tiene %1 días.", + "virtAsstCGMNoise": "El ruido MCG fue %1 a partir de %2.", + "virtAsstCGMBattOne": "Su batería MCG fue de %1 voltios a %2.", + "virtAsstCGMBattTwo": "Sus niveles de batería MCG eran %1 voltios y %2 voltios a %3.", + "virtAsstDelta": "Tu delta estaba %1 entre %2 y %3.", + "virtAsstDeltaEstimated": "Tu delta estimada era %1 entre %2 y %3.", + "virtAsstUnknownIntentTitle": "Intento desconocido", + "virtAsstUnknownIntentText": "Lo siento, no sé lo que estás pidiendo.", "Fat [g]": "Grasas [g]", "Protein [g]": "Proteina [g]", "Energy [kJ]": "Energía [Kj]", "Clock Views:": "Vista del reloj:", - "Clock": "Clock", + "Clock": "Reloj", "Color": "Color", "Simple": "Simple", - "TDD average": "TDD average", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", - "Carbs average": "Carbs average", - "Eating Soon": "Eating Soon", - "Last entry {0} minutes ago": "Last entry {0} minutes ago", - "change": "change", - "Speech": "Speech", - "Target Top": "Target Top", - "Target Bottom": "Target Bottom", - "Canceled": "Canceled", + "TDD average": "Promedio de TDD", + "Bolus average": "Bolo medio", + "Basal average": "Basal media", + "Base basal average:": "Media basal base:", + "Carbs average": "Carbohidratos promedio", + "Eating Soon": "ComidendoPronto", + "Last entry {0} minutes ago": "Última entrada hace {0} minutos", + "change": "cambio", + "Speech": "Voz", + "Target Top": "Objetivo alto", + "Target Bottom": "Objetivo Bajo", + "Canceled": "Cancelado", "Meter BG": "Meter BG", - "predicted": "predicted", - "future": "future", - "ago": "ago", - "Last data received": "Last data received", + "predicted": "previsto", + "future": "próximo", + "ago": "hace", + "Last data received": "Últimos datos recibidos", "Clock View": "Vista del reloj", - "Protein": "Protein", - "Fat": "Fat", - "Protein average": "Protein average", - "Fat average": "Fat average", - "Total carbs": "Total carbs", - "Total protein": "Total protein", - "Total fat": "Total fat", - "Database Size": "Database Size", - "Database Size near its limits!": "Database Size near its limits!", - "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", - "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", - "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": "Timeshift on meals larger than", - "g carbs": "g carbs'", - "consumed between": "consumed between", - "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" + "Protein": "Proteínas", + "Fat": "Grasa", + "Protein average": "Proteína media", + "Fat average": "Media de grasa", + "Total carbs": "Total de glúcidos", + "Total protein": "Total de proteínas", + "Total fat": "Grasa total", + "Database Size": "Tamaño de la Base de Datos", + "Database Size near its limits!": "Tamaño de la base de datos cerca de sus límites!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "El tamaño de la base de datos es %1 MiB de %2 MiB. ¡Por favor, haz una copia de seguridad y limpia la base de datos!", + "Database file size": "Tamaño del archivo de la base de datos", + "%1 MiB of %2 MiB (%3%)": "%1 MiB de %2 MiB (%3%)", + "Data size": "Tamaño de los datos", + "virtAsstDatabaseSize": "%1 MiB. Es el %2% del espacio disponible en la base de datos.", + "virtAsstTitleDatabaseSize": "Tamaño del archivo de la base de datos", + "Carbs/Food/Time": "Carbs/Comida/Hora", + "You have administration messages": "Tienes mensajes de administración", + "Admin messages in queue": "Mensajes de administración en cola", + "Queue empty": "Cola vacía", + "There are no admin messages in queue": "No hay mensajes de administración en cola", + "Please sign in using the API_SECRET to see your administration messages": "Por favor, inicia sesión usando API_SECRET para ver tus mensajes de administración", + "Reads enabled in default permissions": "Lecturas habilitadas en los permisos por defecto", + "Data reads enabled": "Lecturas de datos habilitadas", + "Data writes enabled": "Escrituras de datos habilitadas", + "Data writes not enabled": "Escrituras de datos no habilitadas", + "Color prediction lines": "Líneas de predicción de color", + "Release Notes": "Notas informativas", + "Check for Updates": "Buscar actualizaciones", + "Open Source": "Código abierto", + "Nightscout Info": "Información de 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.": "El objetivo principal de Loopalyzer es visualizar cómo funciona el sistema de lazo cerrado. También puede funcionar con otras configuraciones, tanto de lazo cerrado como abierto, y sin loop. Sin embargo, dependiendo del uploader que utilice, con qué frecuencia es capaz de capturar sus datos y cargar, y cómo es capaz de rellenar datos faltantes, algunos gráficos pueden tener lagunas o incluso estar completamente vacíos. Siempre asegúrese de que los gráficos se vean razonables. Mejor es ver un día a la vez y pasar a través de un número de días para ver.", + "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 incluye una función de cambio de tiempo. Si por ejemplo usted toma el desayuno a las 07:00 un día y a las 08:00 el día después de su curva media de glucosa, estos dos días muy probablemente se verán aplanados y no mostrarán la respuesta real después de un desayuno. El cambio de tiempo calculará el tiempo promedio de estas comidas se comieron y luego desplazará todos los datos (carbones, insulina, basal etc. durante ambos días la diferencia horaria correspondiente de modo que ambas comidas se alineen con la hora media de inicio de la comida.", + "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.": "En este ejemplo todos los datos del primer día se empujan 30 minutos hacia adelante en el tiempo y todos los datos del segundo día 30 minutos hacia atrás en el tiempo así que parece como si usted tuviera el desayuno a las 07:30 ambos días. Esto le permite ver su respuesta real promedio de glucosa en la sangre a través de una comida.", + "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.": "El cambio de tiempo resalta el período después de la comida media de inicio en gris, durante la duración de la DIA (Duración de la acción de la insulina). Como todos los datos apuntan el día entero se desplazan las curvas fuera del área gris pueden no ser exactas.", + "Note that time shift is available only when viewing multiple days.": "Tenga en cuenta que el cambio de tiempo sólo está disponible cuando se visualiza varios días.", + "Please select a maximum of two weeks duration and click Show again.": "Por favor, seleccione un máximo de dos semanas de duración y haga clic en Mostrar de nuevo.", + "Show profiles table": "Mostrar tabla de perfiles", + "Show predictions": "Mostrar las predicciones", + "Timeshift on meals larger than": "Intercambio de tiempo en comidas más grandes que", + "g carbs": "g glúcidos", + "consumed between": "consumido entre", + "Previous": "Anterior", + "Previous day": "Día anterior", + "Next day": "Día siguiente", + "Next": "Siguiente", + "Temp basal delta": "Delta basal temporal", + "Authorized by token": "Autorizado por token", + "Auth role": "Rol de autenticación", + "view without token": "ver sin token", + "Remove stored token": "Eliminar token almacenado", + "Weekly Distribution": "Distribución semanal", + "Failed authentication": "Autenticación fallida", + "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?": "Un dispositivo en la dirección IP %1 intentó autenticarse con Nightscout con credenciales incorrectas. Compruebe si tiene una configuración del cargador/uploader con API_SECRET o token incorrecto?" } diff --git a/translations/fi_FI.json b/translations/fi_FI.json index cdd881448c7..f56f878791f 100644 --- a/translations/fi_FI.json +++ b/translations/fi_FI.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatiivinen tilapäisbasaali:", "Total basal insulin:": "Basaali yhteensä:", "Total daily insulin:": "Päivän kokonaisinsuliiniannos:", - "Unable to %1 Role": "%1 operaatio roolille opäonnistui", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Roolin poistaminen epäonnistui", "Database contains %1 roles": "Tietokanta sisältää %1 roolia", "Edit Role": "Muokkaa roolia", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Käyttäjät (Ihmiset, laitteet jne)", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Jokaisella käyttäjällä on uniikki pääsytunniste ja yksi tai useampi rooli. Klikkaa pääsytunnistetta nähdäksesi käyttäjän, jolloin saat jaettavan osoitteen tämän käyttäjän oikeuksilla.", "Add new Subject": "Lisää uusi käyttäjä", - "Unable to %1 Subject": "Operaatio %1 roolille epäonnistui", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Käyttäjän poistaminen epäonnistui", "Database contains %1 subjects": "Tietokanta sisältää %1 käyttäjää", "Edit Subject": "Muokkaa käyttäjää", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Se on %2% saatavilla olevasta koosta.", "virtAsstTitleDatabaseSize": "Tietokantatiedoston koko", "Carbs/Food/Time": "Hiilihydraatit/Ruoka/Aika", + "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": "Tietojen lukeminen käytössä oletuskäyttöoikeuksilla", "Data reads enabled": "Tiedon lukeminen mahdollista", "Data writes enabled": "Tiedon kirjoittaminen mahdollista", @@ -685,5 +690,7 @@ "Auth role": "Authentikaatiorooli", "view without token": "Näytä ilman tunnistetta", "Remove stored token": "Poista talletettu tunniste", - "Weekly Distribution": "Viikkojakauma" + "Weekly Distribution": "Viikkojakauma", + "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?" } diff --git a/translations/fr_FR.json b/translations/fr_FR.json index 71a1d3e75b6..c83d4187c12 100644 --- a/translations/fr_FR.json +++ b/translations/fr_FR.json @@ -5,7 +5,7 @@ "We": "Me", "Th": "Je", "Fr": "Ve", - "Sa": "Sam", + "Sa": "Sa", "Su": "Di", "Monday": "Lundi", "Tuesday": "Mardi", @@ -33,9 +33,9 @@ "Food": "Nourriture", "Insulin": "Insuline", "Carbs": "Glucides", - "Notes contain": "Notes contiennent", + "Notes contain": "Les notes contiennent", "Target BG range bottom": "Limite inférieure glycémie", - "top": "Supérieure", + "top": "supérieure", "Show": "Montrer", "Display": "Afficher", "Loading": "Chargement", @@ -50,7 +50,7 @@ "Size": "Taille", "(none)": "(aucun)", "None": "aucun", - "": "", + "": "", "Result is empty": "Pas de résultat", "Day to day": "jour par jour", "Week to week": "Semaine après semaine", @@ -277,7 +277,7 @@ "Add new": "Ajouter nouveau", "g": "g", "ml": "ml", - "pcs": "pcs", + "pcs": "unités", "Drag&drop food here": "Glisser et déposer repas ici ", "Care Portal": "Portail de soins", "Medium/Unknown": "Moyen/Inconnu", @@ -315,14 +315,14 @@ "Delete old documents from devicestatus collection?": "Effacer les vieux résultats de votre appareil?", "Clean Mongo entries (glucose entries) database": "Nettoyer la base de données des entrées Mongo (entrées de glycémie)", "Delete all documents from entries collection older than 180 days": "Effacer les résultats de plus de 180 jours", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Cette action efface tous les documents de la collection qui sont vieux de plus de 180 jours. Utile lorsque l'indicateur de chargement de la batterie n'est pas affichée correctement.", "Delete old documents": "Effacer les anciens documents", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "Delete old documents from entries collection?": "Voulez vous effacer les plus anciens résultats?", "%1 is not a valid number": "%1 n'est pas un nombre valide", "%1 is not a valid number - must be more than 2": "%1 n'est pas un nombre valide - doit être supérieur à 2", "Clean Mongo treatments database": "Nettoyage de la base de données des traitements Mongo", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete all documents from treatments collection older than 180 days": "Effacer les données des traitements de plus de 180 jours", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Cette action efface tous les documents de la collection des traitements qui sont vieux de plus de 180 jours. Utile lorsque l'indicateur de chargement de la batterie n'est pas affiché correctement.", "Delete old documents from treatments collection?": "Voulez vous effacer les plus vieux résultats?", "Admin Tools": "Outils d'administration", "Nightscout reporting": "Rapports Nightscout", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Débit basal temporaire négatif", "Total basal insulin:": "Insuline basale au total:", "Total daily insulin:": "Insuline totale journalière", - "Unable to %1 Role": "Incapable de %1 rôle", + "Unable to save Role": "Impossible d'enregistrer le role", "Unable to delete Role": "Effacement de rôle impossible", "Database contains %1 roles": "La base de données contient %1 rôles", "Edit Role": "Éditer le rôle", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Utilisateurs - Personnes, Appareils, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Chaque utilisateur aura un identificateur unique et un ou plusieurs rôles. Cliquez sur l'identificateur pour révéler l'utilisateur, ce lien secret peut être partagé.", "Add new Subject": "Ajouter un nouvel Utilisateur", - "Unable to %1 Subject": "Incapable de %1 sujet", + "Unable to save Subject": "Impossible d'enregistrer le sujet", "Unable to delete Subject": "Impossible d'effacer l'Utilisateur", "Database contains %1 subjects": "La base de données contient %1 utilisateurs", "Edit Subject": "Éditer l'Utilisateur", @@ -500,17 +500,17 @@ "Change cannula soon": "Changement de canule bientòt", "Cannula age %1 hours": "âge de la canule %1 heures", "Inserted": "Insérée", - "CAGE": "CAGE", + "CAGE": "Age de la canule (ie dernier changement de cathéter)", "COB": "COB glucides actifs", "Last Carbs": "Derniers glucides", - "IAGE": "IAGE", + "IAGE": "Age de l'insuline", "Insulin reservoir change overdue!": "Dépassement de date de changement de réservoir d'insuline!", "Time to change insulin reservoir": "Le moment est venu de changer de réservoir d'insuline", "Change insulin reservoir soon": "Changement de réservoir d'insuline bientôt", "Insulin reservoir age %1 hours": "Âge du réservoir d'insuline %1 heures", "Changed": "Changé", "IOB": "Insuline Active", - "Careportal IOB": "Careportal IOB", + "Careportal IOB": "Insuline active du careportal", "Last Bolus": "Dernier Bolus", "Basal IOB": "IOB du débit basal", "Source": "Source", @@ -520,7 +520,7 @@ "%1h ago": "%1 heures plus tôt", "%1d ago": "%1 jours plus tôt", "RETRO": "RETRO", - "SAGE": "SAGE", + "SAGE": "Age du sensor", "Sensor change/restart overdue!": "Changement/Redémarrage du senseur dépassé!", "Time to change/restart sensor": "C'est le moment de changer/redémarrer le senseur", "Change/restart sensor soon": "Changement/Redémarrage du senseur bientôt", @@ -556,7 +556,7 @@ "DoubleDown": "en chute rapide", "DoubleUp": "en montée rapide", "virtAsstUnknown": "Cette valeur est inconnue pour le moment. Veuillez consulter votre site Nightscout pour plus de détails.", - "virtAsstTitleAR2Forecast": "AR2 Forecast", + "virtAsstTitleAR2Forecast": "Prévision AR2", "virtAsstTitleCurrentBasal": "Débit basal actuel", "virtAsstTitleCurrentCOB": "Glucides actuels", "virtAsstTitleCurrentIOB": "Insuline actuelle", @@ -566,55 +566,55 @@ "virtAsstTitleOpenAPSForecast": "Prédictions OpenAPS", "virtAsstTitlePumpReservoir": "Insuline restante", "virtAsstTitlePumpBattery": "Batterie Pompe", - "virtAsstTitleRawBG": "Current Raw BG", - "virtAsstTitleUploaderBattery": "Uploader Battery", + "virtAsstTitleRawBG": "Glycémie actuelle", + "virtAsstTitleUploaderBattery": "Batterie du téléphone", "virtAsstTitleCurrentBG": "Glycémie actuelle", "virtAsstTitleFullStatus": "Statut complet", - "virtAsstTitleCGMMode": "CGM Mode", + "virtAsstTitleCGMMode": "Mode CGM", "virtAsstTitleCGMStatus": "Statut CGM", "virtAsstTitleCGMSessionAge": "L’âge de la session du CGM", - "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", + "virtAsstTitleCGMTxStatus": "Statut du transmetteur CGM", + "virtAsstTitleCGMTxAge": "Age du transmetteur", + "virtAsstTitleCGMNoise": "Bruit CGM", + "virtAsstTitleDelta": "Delta de glycémie", + "virtAsstStatus": "%1 et %2 à partir de %3.", + "virtAsstBasal": "%1 le Basal actuel est %2 unités par heure", + "virtAsstBasalTemp": "%1 basal temporaire de %2 unités par heure se terminera %3", + "virtAsstIob": "et vous avez %1 insuline active.", + "virtAsstIobIntent": "Vous avez %1 insuline active", + "virtAsstIobUnits": "%1 unités de", "virtAsstLaunch": "Qu'est ce que vous voulez voir sur Nightscout?", "virtAsstPreamble": "Vous", - "virtAsstPreamble3person": "%1 has a ", + "virtAsstPreamble3person": "%1 a un ", "virtAsstNoInsulin": "non", "virtAsstUploadBattery": "Votre appareil est chargé a %1", "virtAsstReservoir": "Vous avez %1 unités non utilisé", - "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", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstPumpBattery": "La batterie de votre pompe est à %1 %2", + "virtAsstUploaderBattery": "La batterie de votre téléphone est à %1", + "virtAsstLastLoop": "La dernière boucle effetive a été %1", + "virtAsstLoopNotAvailable": "Le plugin Loop ne semble pas être activé", + "virtAsstLoopForecastAround": "Selon les prévisions de Loop, vous devriez être aux alentours de %1 dans les prochaines %2", + "virtAsstLoopForecastBetween": "Selon les prévisions de Loop, vous devriez être entre %1 et %2 dans les prochaines %3", + "virtAsstAR2ForecastAround": "Selon les prévisions de l'AR2, vous devriez être aux alentours de %1 dans les prochaines %2", + "virtAsstAR2ForecastBetween": "Selon les prévisions de l'AR2, vous devriez être entre %1 et %2 dans les prochaines %3", + "virtAsstForecastUnavailable": "Impossible de prévoir avec les données disponibles", + "virtAsstRawBG": "Votre glycémie brut est %1", + "virtAsstOpenAPSForecast": "La glycémie éventuelle OpenAPS est %1", + "virtAsstCob3person": "%1 a %2 glucides actifs", + "virtAsstCob": "Vous avez %1 glucides actifs", + "virtAsstCGMMode": "Le mode du CGM était %1 à partir de %2.", + "virtAsstCGMStatus": "Le statut de votre CGM était de %1 sur %2.", + "virtAsstCGMSessAge": "Votre session CGM est active depuis %1 jours et %2 heures.", + "virtAsstCGMSessNotStarted": "Il n'y a pas de session CGM active pour le moment.", + "virtAsstCGMTxStatus": "Le statut de votre transmetteur CGM était %1 de %2.", + "virtAsstCGMTxAge": "Votre transmetteur CGM a %1 jours.", + "virtAsstCGMNoise": "Le bruit de votre CGM était de %1 sur %2.", + "virtAsstCGMBattOne": "Votre batterie du CGM était de %1 volts sur %2.", + "virtAsstCGMBattTwo": "Les batteries de votre CGM étaient de %1 volts et de %2 volts sur %3.", + "virtAsstDelta": "Votre delta estimé est %1 entre %2 et %3.", "virtAsstDeltaEstimated": "Votre delta estimé est %1 entre %2 et %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstUnknownIntentTitle": "Intentions inconnues", + "virtAsstUnknownIntentText": "« Je suis désolée, je ne sais pas ce que vous demandez. ».", "Fat [g]": "Graisses [g]", "Protein [g]": "Protéines [g]", "Energy [kJ]": "Énergie [kJ]", @@ -622,19 +622,19 @@ "Clock": "L'horloge", "Color": "Couleur", "Simple": "Simple", - "TDD average": "TDD average", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", - "Carbs average": "Carbs average", - "Eating Soon": "Eating Soon", - "Last entry {0} minutes ago": "Last entry {0} minutes ago", - "change": "change", - "Speech": "Speech", - "Target Top": "Target Top", - "Target Bottom": "Target Bottom", + "TDD average": "Moyenne TDD (dose journalière totale)", + "Bolus average": "Bolus moyen", + "Basal average": "Basale moyenne", + "Base basal average:": "Débit de base moyen:", + "Carbs average": "Glucides moyens", + "Eating Soon": "Repas à venir bientôt", + "Last entry {0} minutes ago": "Dernière entrée : il y a {0} minutes", + "change": "modifier", + "Speech": "Voix", + "Target Top": "Cible haute", + "Target Bottom": "Cible basse", "Canceled": "Annulé", - "Meter BG": "Meter BG", + "Meter BG": "Glucomètre", "predicted": "prédiction", "future": "futur", "ago": "plus tôt", @@ -650,12 +650,17 @@ "Database Size": "Taille de la base de données", "Database Size near its limits!": "Taille de la base de données proche de ses limites !", "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "La taille de la base de données est de %1 MiB sur %2 Mio. Veuillez sauvegarder et nettoyer la base de données !", - "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", + "Database file size": "Taille de la base de données", + "%1 MiB of %2 MiB (%3%)": "%1 MiB sur %2 Mio (%3%)", + "Data size": "Taille des données", + "virtAsstDatabaseSize": "%1 MiB. Cela représente %2% de l'espace disponible dans la base de données.", + "virtAsstTitleDatabaseSize": "Taille du fichier de la base de données", "Carbs/Food/Time": "Glucides/Alimentation/Temps", + "You have administration messages": "Vous avez des messages d'administration", + "Admin messages in queue": "Messages de l'administrateur dans la file d'attente", + "Queue empty": "File d'attente vide", + "There are no admin messages in queue": "Il n'y a pas de messages d'administration dans la file d'attente", + "Please sign in using the API_SECRET to see your administration messages": "Veuillez vous connecter à l'aide de l'API_SECRET pour voir vos messages d'administration", "Reads enabled in default permissions": "Lectures activées dans les autorisations par défaut", "Data reads enabled": "Lectures des données activées", "Data writes enabled": "Écriture de données activée", @@ -680,10 +685,12 @@ "Previous day": "Jour précédent", "Next day": "Jour suivant", "Next": "Suivant", - "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": "Distribution hebdomadaire" + "Temp basal delta": "Delta de basale temporaire", + "Authorized by token": "Autorisé par le jeton", + "Auth role": "Rôle d'authentification", + "view without token": "afficher sans jeton", + "Remove stored token": "Supprimer le jeton stocké", + "Weekly Distribution": "Distribution hebdomadaire", + "Failed authentication": "Échec de l'authentification", + "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?": "Un appareil à l'adresse IP %1 a tenté de s'authentifier avec Nightscout avec des informations d'identification erronées. Vérifiez si vous avez une configuration avec une mauvaise API_SECRET ou un mauvais jeton ?" } diff --git a/translations/he_IL.json b/translations/he_IL.json index 4e9d74e4bd3..c691065a2eb 100644 --- a/translations/he_IL.json +++ b/translations/he_IL.json @@ -99,7 +99,7 @@ "Save record": "שמור רשומה", "Portions": "מנות", "Unit": "יחידות", - "GI": "GI", + "GI": "אינדקס גליקמי", "Edit record": "ערוך רשומה", "Delete record": "מחק רשומה", "Move to the top": "עבור למעלה", @@ -304,15 +304,15 @@ "%1 records deleted": "%1 רשומות נמחקו", "Clean Mongo status database": "נקי מסד הנתונים מצב מונגו ", "Delete all documents from devicestatus collection": "מחק את כל המסמכים מאוסף סטטוס המכשיר ", - "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "הפעולה הבאה מסירה את כל התיעוד ממכשיר האיסוף, פעולה זו שימושית כאשר מצב הסוללה לא מתעדכן כראוי.", "Delete all documents": "מחק את כל המסמכים ", "Delete all documents from devicestatus collection?": "מחק את כל המסמכים מרשימת סטטוס ההתקנים ", "Database contains %1 records": "מסד נתונים מכיל %1 רשומות ", "All records removed ...": "כל הרשומות נמחקו ", "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Number of Days to Keep:": "מספר ימים לשמירה:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "הפעולה הבאה מסירה את כל רשומות התיעוד ממכשיר האיסוף שגילן מעל 30 יום, פעולה זו שימושית כאשר מצב הסוללה לא מתעדכן כראוי.", + "Delete old documents from devicestatus collection?": "האם למחוק את כל המסמכים מרשימת סטטוס ההתקנים?", "Clean Mongo entries (glucose entries) database": "ניקוי מסד נתוני רשומות Mongo (רשומות סוכר)", "Delete all documents from entries collection older than 180 days": "מחיקת כל המסמכים מאוסף הרשומות שגילם מעל 180 יום", "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", @@ -320,8 +320,8 @@ "Delete old documents from entries collection?": "למחוק את כל המסמכים מאוסף הרשומות?", "%1 is not a valid number": "זה לא מיספר %1", "%1 is not a valid number - must be more than 2": "%1 אינו מספר חוקי - עליו להיות גדול מ-2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "Clean Mongo treatments database": "נקה את כל הטיפולים ממסד הנתונים מונגו", + "Delete all documents from treatments collection older than 180 days": "מחיקת כל המסמכים מאוסף הרשומות שגילם מעל 180 יום", "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", "Admin Tools": "כלי אדמיניסטרציה ", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "אינסולין בזלי זמני שלילי ", "Total basal insulin:": "סך אינסולין בזלי ", "Total daily insulin:": "סך אינסולין ביום ", - "Unable to %1 Role": "לא יכול תפקיד %1", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "לא יכול לבטל תפקיד ", "Database contains %1 roles": "בסיס הנתונים מכיל %1 תפקידים ", "Edit Role": "ערוך תפקיד ", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "נושאים - אנשים, התקנים וכו ", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "לכל נושא תהיה אסימון גישה ייחודי ותפקיד אחד או יותר. לחץ על אסימון הגישה כדי לפתוח תצוגה חדשה עם הנושא הנבחר, קישור סודי זה יכול להיות משותף ", "Add new Subject": "הוסף נושא חדש ", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "לא יכול לבטל נושא ", "Database contains %1 subjects": "מסד נתונים מכיל %1 נושאים ", "Edit Subject": "ערוך נושא ", @@ -539,10 +539,10 @@ "Time in fluctuation": "זמן בתנודות ", "Time in rapid fluctuation": "זמן בתנודות מהירות ", "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "זוהי רק הערכה גסה שיכולה להיות מאוד לא מדויקת ואינה מחליפה את בדיקת הדם בפועל. הנוסחה המשמשת נלקחת מ: ", - "Filter by hours": "Filter by hours", + "Filter by hours": "סנן לפי שעות", "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.", - "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.", - "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "ממוצע השינוי היומי מחושב כך:\nהסכום של הערך המוחלט של ערכי הסוכר (גלוקוז) מחוץ לטווח עבור התקופה המבוקשת, חלקי מספר הימים בתקופה המבוקשת.\nתוצאה נמוכה יותר היא טובה יותר.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "ממוצע השינוי השעתי מחושב כך:\nהסכום של הערך המוחלט של ערכי הסוכר (גלוקוז) מחוץ לטווח עבור התקופה המבוקשת, חלקי מספר השעות בתקופה המבוקשת.\nתוצאה נמוכה יותר היא טובה יותר.", "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", @@ -551,32 +551,32 @@ "FortyFiveDown": "slightly dropping", "FortyFiveUp": "slightly rising", "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", + "SingleUp": "עולה", + "SingleDown": "נופל", + "DoubleDown": "נופל במהירות", + "DoubleUp": "עולה במהירות", + "virtAsstUnknown": "הערך המבוקש אינו ידוע כרגע. בקרו באתר ה\"Nighscout\" שלכם למידע נוסף.", + "virtAsstTitleAR2Forecast": "תחזית AR2", + "virtAsstTitleCurrentBasal": "ערך באזלי נוכחי", "virtAsstTitleCurrentCOB": "פחמ' פעילות כעת", "virtAsstTitleCurrentIOB": "אינסולין פעיל כעת", "virtAsstTitleLaunch": "ברוכים הבאים ל-Nightscout", "virtAsstTitleLoopForecast": "Loop Forecast", "virtAsstTitleLastLoop": "Last Loop", - "virtAsstTitleOpenAPSForecast": "OpenAPS Forecast", + "virtAsstTitleOpenAPSForecast": "תחזית OpenAPS", "virtAsstTitlePumpReservoir": "אינסולין נותר", "virtAsstTitlePumpBattery": "סוללת משאבה", - "virtAsstTitleRawBG": "Current Raw BG", - "virtAsstTitleUploaderBattery": "Uploader Battery", + "virtAsstTitleRawBG": "רמת סוכר גולמית", + "virtAsstTitleUploaderBattery": "רמת סוללה במשדר", "virtAsstTitleCurrentBG": "רמת סוכר נוכחית", - "virtAsstTitleFullStatus": "Full Status", + "virtAsstTitleFullStatus": "סטאטוס מלא", "virtAsstTitleCGMMode": "CGM Mode", "virtAsstTitleCGMStatus": "מצב חיישן", "virtAsstTitleCGMSessionAge": "CGM Session Age", "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", "virtAsstTitleCGMTxAge": "CGM Transmitter Age", "virtAsstTitleCGMNoise": "רעש נתוני חיישן", - "virtAsstTitleDelta": "Blood Glucose Delta", + "virtAsstTitleDelta": "שינוי ברמת הסוכר", "virtAsstStatus": "%1 ו-%2 החל מ-%3.", "virtAsstBasal": "%1 מינון בזאלי נוכחי הוא %2 יח' לשעה", "virtAsstBasalTemp": "%1 בזאלי זמני במינון %2 יח' לשעה יסתיים ב-%3", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "גודל קובץ מסד נתונים", "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": "קריאת נתונים מופעלת תחת הרשאות ברירת מחדל", "Data reads enabled": "קריאת נתונים מופעלת", "Data writes enabled": "רישום נתונים מופעל", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/hr_HR.json b/translations/hr_HR.json index 9f612a78630..76319af2419 100644 --- a/translations/hr_HR.json +++ b/translations/hr_HR.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativni temp bazal:", "Total basal insulin:": "Ukupno bazali:", "Total daily insulin:": "Ukupno dnevni inzulin:", - "Unable to %1 Role": "Unable to %1 Role", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Ne mogu obrisati ulogu", "Database contains %1 roles": "baza sadrži %1 uloga", "Edit Role": "Uredi ulogu", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjekti - Ljudi, uređaji, itd.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Svaki subjekt će dobiti jedinstveni pristupni token i jednu ili više uloga. Kliknite na pristupni token kako bi se otvorio novi pogled sa odabranim subjektom, a tada se tajni link može podijeliti.", "Add new Subject": "Dodaj novi subjekt", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Ne mogu obrisati subjekt", "Database contains %1 subjects": "Baza sadrži %1 subjekata", "Edit Subject": "Uredi subjekt", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/hu_HU.json b/translations/hu_HU.json index 32909404ac0..18abfa019a1 100644 --- a/translations/hu_HU.json +++ b/translations/hu_HU.json @@ -1,12 +1,12 @@ { "Listening on port": "Port figyelése", - "Mo": "Hé", - "Tu": "Ke", + "Mo": "H", + "Tu": "K", "We": "Sze", - "Th": "Csü", - "Fr": "Pé", + "Th": "Cs", + "Fr": "P", "Sa": "Szo", - "Su": "Va", + "Su": "V", "Monday": "Hétfő", "Tuesday": "Kedd", "Wednesday": "Szerda", @@ -18,82 +18,82 @@ "Subcategory": "Alkategória", "Name": "Név", "Today": "Ma", - "Last 2 days": "Utolsó 2 nap", - "Last 3 days": "Utolsó 3 nap", - "Last week": "Előző hét", + "Last 2 days": "Elmúlt 2 nap", + "Last 3 days": "Elmúlt 3 nap", + "Last week": "Elmúlt hét", "Last 2 weeks": "Elmúlt 2 hét", - "Last month": "Elmúlt 1 hónap", + "Last month": "Elmúlt hónap", "Last 3 months": "Elmúlt 3 hónap", "between": "között", "around": "körülbelül", "and": "és", - "From": "Tól", - "To": "Ig", - "Notes": "Jegyzetek", + "From": "Ettől", + "To": "Eddig", + "Notes": "Megjegyzések", "Food": "Étel", "Insulin": "Inzulin", "Carbs": "Szénhidrát", "Notes contain": "Jegyzet tartalmazza", - "Target BG range bottom": "Alsó cukorszint határ", - "top": "Felső", + "Target BG range bottom": "Vércukor céltartomány alja", + "top": "teteje", "Show": "Mutasd", - "Display": "Ábrázol", + "Display": "Megjelenítés", "Loading": "Betöltés", "Loading profile": "Profil betöltése", "Loading status": "Állapot betöltése", "Loading food database": "Étel adatbázis betöltése", "not displayed": "nincs megjelenítve", - "Loading CGM data of": "CGM adatok betöltése", - "Loading treatments data of": "Kezelés adatainak betöltése", - "Processing data of": "Adatok feldolgozása", - "Portion": "Porció", + "Loading CGM data of": "CGM adatok betöltése tőle", + "Loading treatments data of": "Kezelési adatok betöltése tőle", + "Processing data of": "Adatok feldolgozása tőle", + "Portion": "Rész", "Size": "Méret", - "(none)": "(semmilyen)", - "None": "Semmilyen", - "": "", + "(none)": "(semmi)", + "None": "Semmi", + "": "", "Result is empty": "Az eredmény üres", "Day to day": "Napi", "Week to week": "Heti", "Daily Stats": "Napi statisztika", - "Percentile Chart": "Százalékos", - "Distribution": "Szétosztás", - "Hourly stats": "Óránkra való szétosztás", + "Percentile Chart": "Percentilis", + "Distribution": "Eloszlás", + "Hourly stats": "Óránkénti statisztika", "netIOB stats": "netIOB statisztika", "temp basals must be rendered to display this report": "Az átmeneti bazálnak meg kell lennie jelenítve az adott jelentls megtekintéséhez", "No data available": "Nincs elérhető adat", "Low": "Alacsony", - "In Range": "Normális", + "In Range": "Tartományon belül", "Period": "Időszak", "High": "Magas", - "Average": "Átlagos", - "Low Quartile": "Alacsony kvartil", - "Upper Quartile": "Magas kvartil", - "Quartile": "Kvartil", + "Average": "Átlag", + "Low Quartile": "Alacsony kvartilis", + "Upper Quartile": "Magas kvartilis", + "Quartile": "Kvartilis", "Date": "Dátum", "Normal": "Normális", "Median": "Medián", "Readings": "Értékek", "StDev": "Standard eltérés", - "Daily stats report": "Napi statisztikák", - "Glucose Percentile report": "Cukorszint percentil jelentés", - "Glucose distribution": "Cukorszint szétosztása", + "Daily stats report": "Napi statisztika jelentés", + "Glucose Percentile report": "Vércukorszint percentilis jelentés", + "Glucose distribution": "Vércukorszint eloszlás", "days total": "nap összesen", "Total per day": "Naponta összesen", "Overall": "Összesen", "Range": "Tartomány", - "% of Readings": "% az értékeknek", - "# of Readings": "Olvasott értékek száma", - "Mean": "Közép", - "Standard Deviation": "Átlagos eltérés", + "% of Readings": "értékek %-a", + "# of Readings": "értékek száma", + "Mean": "Középérték", + "Standard Deviation": "Standard eltérés", "Max": "Max", "Min": "Min", - "A1c estimation*": "Megközelítőleges HbA1c", - "Weekly Success": "Heti sikeresség", - "There is not sufficient data to run this report. Select more days.": "Nincs elég adat a jelentés elkészítéséhez. Válassz több napot.", + "A1c estimation*": "HbA1c becslés*", + "Weekly Success": "Heti eloszlás", + "There is not sufficient data to run this report. Select more days.": "Nincs elég adat a jelentés elkészítéséhez. Válassz több napot!", "Using stored API secret hash": "Az elmentett API hash jelszót használom", "No API secret hash stored yet. You need to enter API secret.": "Még nem lett a titkos API hash elmentve. Add meg a titkos API jelszót", "Database loaded": "Adatbázis betöltve", - "Error: Database failed to load": "Hiba: Az adatbázist nem sikerült betölteni", + "Error: Database failed to load": "Hiba: adatbázis betöltése sikertelen", "Error": "Hiba", "Create new record": "Új bejegyzés", "Save record": "Bejegyzés mentése", @@ -102,51 +102,51 @@ "GI": "GI", "Edit record": "Bejegyzés szerkesztése", "Delete record": "Bejegyzés törlése", - "Move to the top": "Áthelyezni az elejére", - "Hidden": "Elrejtett", - "Hide after use": "Elrejteni használat után", - "Your API secret must be at least 12 characters long": "Az API jelszó több mint 12 karakterből kell hogy álljon", - "Bad API secret": "Helytelen API jelszó", - "API secret hash stored": "API jelszó elmentve", + "Move to the top": "Mozgasd legfelülre", + "Hidden": "Rejtett", + "Hide after use": "Elrejtés használat után", + "Your API secret must be at least 12 characters long": "Az API_SECRET több mint 12 karakterből kell hogy álljon", + "Bad API secret": "Helytelen API_SECRET", + "API secret hash stored": "API_SECRET hash elmentve", "Status": "Állapot", "Not loaded": "Nincs betöltve", - "Food Editor": "Étel szerkesztése", - "Your database": "Ön adatbázisa", - "Filter": "Filter", + "Food Editor": "Étel Szerkesztő", + "Your database": "Az adatbázisod", + "Filter": "Szűrő", "Save": "Mentés", - "Clear": "Kitöröl", + "Clear": "Törlés", "Record": "Bejegyzés", - "Quick picks": "Gyors választás", - "Show hidden": "Eltakart mutatása", + "Quick picks": "Gyors választások", + "Show hidden": "Rejtettek mutatása", "Your API secret or token": "Az API jelszo", "Remember this device. (Do not enable this on public computers.)": "A berendezés megjegyzése. (Csak saját berendezésen használd", "Treatments": "Kezelések", "Time": "Idő", "Event Type": "Esemény típusa", - "Blood Glucose": "Vércukor szint", + "Blood Glucose": "Vércukorszint", "Entered By": "Beírta", "Delete this treatment?": "Kezelés törlése?", - "Carbs Given": "Szénhidrátok", - "Insulin Given": "Inzulin Beadva", - "Event Time": "Időpont", - "Please verify that the data entered is correct": "Kérlek ellenőrizd, hogy az adatok helyesek.", - "BG": "Cukorszint", - "Use BG correction in calculation": "Használj korekciót a számításban", - "BG from CGM (autoupdated)": "Cukorszint a CGM-ből (Automatikus frissítés)", - "BG from meter": "Cukorszint a merőből", - "Manual BG": "Kézi cukorszint", + "Carbs Given": "Bevitt szénhidrát", + "Insulin Given": "Beadott inzulin", + "Event Time": "Esemény időpontja", + "Please verify that the data entered is correct": "Kérlek ellenőrizd az adatok helyességét", + "BG": "VC", + "Use BG correction in calculation": "Használj VC korrekciót a számításban", + "BG from CGM (autoupdated)": "VC a CGM-től (automatikusan frissítve)", + "BG from meter": "VC a merőtől", + "Manual BG": "Kézi VC", "Quickpick": "Gyors választás", "or": "vagy", "Add from database": "Hozzáadás adatbázisból", - "Use carbs correction in calculation": "Használj szénhidrát korekciót a számításban", + "Use carbs correction in calculation": "Használj szénhidrát korrekciót a számításban", "Use COB correction in calculation": "Használj COB korrekciót a számításban", - "Use IOB in calculation": "Használj IOB kalkulációt", - "Other correction": "Egyébb korrekció", + "Use IOB in calculation": "Használd az IOB-t a számításban", + "Other correction": "Egyéb korrekció", "Rounding": "Kerekítés", "Enter insulin correction in treatment": "Add be az inzulin korrekciót a kezeléshez", "Insulin needed": "Inzulin szükséges", - "Carbs needed": "Szenhidrát szükséges", - "Carbs needed if Insulin total is negative value": "Szénhidrát szükséges ha az összes inzulin negatív érték", + "Carbs needed": "Szénhidrát szükséges", + "Carbs needed if Insulin total is negative value": "Szénhidrát szükséges ha a teljes inzulin negatív", "Basal rate": "Bazál arány", "60 minutes earlier": "60 perccel korábban", "45 minutes earlier": "45 perccel korábban", @@ -156,31 +156,31 @@ "Time in minutes": "Idő percekben", "15 minutes later": "15 perccel később", "20 minutes later": "20 perccel később", - "30 minutes later": "30 perccel kesőbb", + "30 minutes later": "30 perccel később", "45 minutes later": "45 perccel később", "60 minutes later": "60 perccel később", - "Additional Notes, Comments": "Feljegyzések, hozzászólások", - "RETRO MODE": "RETRO mód", + "Additional Notes, Comments": "További megjegyzések, kommentárok", + "RETRO MODE": "RETRO MÓD", "Now": "Most", - "Other": "Más", + "Other": "Egyéb", "Submit Form": "Elküldés", "Profile Editor": "Profil Szerkesztő", "Reports": "Jelentések", - "Add food from your database": "Étel hozzáadása az adatbázisból", + "Add food from your database": "Étel hozzáadása az adatbázisodból", "Reload database": "Adatbázis újratöltése", "Add": "Hozzáadni", - "Unauthorized": "Nincs autorizávla", + "Unauthorized": "Jogosulatlan", "Entering record failed": "Hozzáadás nem sikerült", "Device authenticated": "Berendezés hitelesítve", - "Device not authenticated": "Berendezés nincs hitelesítve", + "Device not authenticated": "Nem hitelesített eszköz", "Authentication status": "Hitelesítés állapota", - "Authenticate": "Hitelesítés", + "Authenticate": "Hitelesít", "Remove": "Eltávolítani", "Your device is not authenticated yet": "A berendezés még nincs hitelesítve", "Sensor": "Szenzor", - "Finger": "Új", + "Finger": "Ujj", "Manual": "Kézi", - "Scale": "Mérték", + "Scale": "Méretarány", "Linear": "Lineáris", "Logarithmic": "Logaritmikus", "Logarithmic (Dynamic)": "Logaritmikus (Dinamikus)", @@ -188,44 +188,44 @@ "Carbs-on-Board": "Aktív szénhidrát (COB)", "Bolus Wizard Preview": "Bolus Varázsló", "Value Loaded": "Érték betöltve", - "Cannula Age": "Kanula élettartalma (CAGE)", + "Cannula Age": "Kanül kora", "Basal Profile": "Bazál profil", - "Silence for 30 minutes": "Lehalkítás 30 percre", - "Silence for 60 minutes": "Lehalkítás 60 percre", - "Silence for 90 minutes": "Lehalkítás 90 percre", - "Silence for 120 minutes": "Lehalkítás 120 percre", + "Silence for 30 minutes": "Némítás 30 percre", + "Silence for 60 minutes": "Némítás 60 percre", + "Silence for 90 minutes": "Némítás 90 percre", + "Silence for 120 minutes": "Némítás 120 percre", "Settings": "Beállítások", - "Units": "Egységek", - "Date format": "Időformátum", + "Units": "Egység", + "Date format": "Dátum formátum", "12 hours": "12 óra", "24 hours": "24 óra", "Log a Treatment": "Kezelés bejegyzése", - "BG Check": "Cukorszint ellenőrzés", - "Meal Bolus": "Étel bólus", - "Snack Bolus": "Tízórai/Uzsonna bólus", + "BG Check": "VC ellenőrzés", + "Meal Bolus": "Étkezési bólus", + "Snack Bolus": "Kis étkezési bólus", "Correction Bolus": "Korrekciós bólus", - "Carb Correction": "Szénhidrát korrekció", + "Carb Correction": "Korrekciós szénhidrát", "Note": "Jegyzet", "Question": "Kérdés", "Exercise": "Edzés", - "Pump Site Change": "Pumpa szett csere", - "CGM Sensor Start": "CGM Szenzor Indítása", - "CGM Sensor Stop": "CGM Szenzor Leállítása", - "CGM Sensor Insert": "CGM Szenzor Csere", + "Pump Site Change": "Beszúrási Pont Csere", + "CGM Sensor Start": "CGM Szenzor Indítás", + "CGM Sensor Stop": "CGM Szenzor Leállítás", + "CGM Sensor Insert": "CGM Szenzor Behelyezés", "Dexcom Sensor Start": "Dexcom Szenzor Indítása", "Dexcom Sensor Change": "Dexcom Szenzor Csere", "Insulin Cartridge Change": "Inzulin Tartály Csere", "D.A.D. Alert": "D.A.D Figyelmeztetés", - "Glucose Reading": "Vércukorszint Érték", - "Measurement Method": "Cukorszint mérés metódusa", - "Meter": "Cukorszint mérő", - "Amount in grams": "Adag grammokban (g)", - "Amount in units": "Adag egységekben", + "Glucose Reading": "Vércukor Érték", + "Measurement Method": "Mérés módja", + "Meter": "Vércukormérő", + "Amount in grams": "Adag gramm-ban", + "Amount in units": "Adag egység-ben", "View all treatments": "Összes kezelés mutatása", - "Enable Alarms": "Figyelmeztetők bekapcsolása", - "Pump Battery Change": "Pumpa elem csere", - "Pump Battery Low Alarm": "Alacsony pumpa töltöttség figyelmeztetés", - "Pump Battery change overdue!": "A pumpa eleme cserére szorul", + "Enable Alarms": "Riasztások bekapcsolása", + "Pump Battery Change": "Pumpa Elem Csere", + "Pump Battery Low Alarm": "Pumpa Elem Alacsony Töltöttség Riasztás", + "Pump Battery change overdue!": "Pumpa Elem cserére szorul!", "When enabled an alarm may sound.": "Bekapcsoláskor hang figyelmeztetés várható", "Urgent High Alarm": "Nagyon magas cukorszint figyelmeztetés", "High Alarm": "Magas cukorszint fegyelmeztetés", @@ -234,26 +234,26 @@ "Stale Data: Warn": "Figyelmeztetés: Az adatok öregnek tűnnek", "Stale Data: Urgent": "Figyelmeztetés: Az adatok nagyon öregnek tűnnek", "mins": "perc", - "Night Mode": "Éjjeli üzemmód", + "Night Mode": "Éjjeli Mód", "When enabled the page will be dimmed from 10pm - 6am.": "Ezt bekapcsolva a képernyő halványabb lesz 22-től 6-ig", - "Enable": "Engedélyezve", - "Show Raw BG Data": "Nyers BG adatok mutatása", + "Enable": "Bekapcsolva", + "Show Raw BG Data": "Nyers VC értékek megjelenítése", "Never": "Soha", - "Always": "Mindíg", - "When there is noise": "Ha zavar van:", - "When enabled small white dots will be displayed for raw BG data": "Bekapcsolasnál kis fehért pontok fogják jelezni a nyers BG adatokat", - "Custom Title": "Saját Cím", + "Always": "Mindig", + "When there is noise": "Ha zajos a mérés", + "When enabled small white dots will be displayed for raw BG data": "Ha be van kapcsolva, kis fehér pontok jelezik a nyers VC értékeket", + "Custom Title": "Egyedi Cím", "Theme": "Téma", - "Default": "Alap", + "Default": "Alapértelmezett", "Colors": "Színek", "Colorblind-friendly colors": "Beállítás színvakok számára", "Reset, and use defaults": "Visszaállítás a kiinduló állapotba", - "Calibrations": "Kalibráció", + "Calibrations": "Kalibrációk", "Alarm Test / Smartphone Enable": "Figyelmeztetés teszt / Mobiltelefon aktiválása", "Bolus Wizard": "Bólus Varázsló", "in the future": "a jövőben", - "time ago": "idő elött", - "hr ago": "óra elött", + "time ago": "idővel ezelőtt", + "hr ago": "órája", "hrs ago": "órája", "min ago": "perce", "mins ago": "perce", @@ -265,12 +265,12 @@ "Medium": "Közepes", "Heavy": "Nehéz", "Treatment type": "Kezelés típusa", - "Raw BG": "Nyers BG", - "Device": "Berendezés", - "Noise": "Zavar", + "Raw BG": "Nyers VC", + "Device": "Készülék", + "Noise": "Zaj", "Calibration": "Kalibráció", "Show Plugins": "Mutasd a kiegészítőket", - "About": "Az aplikációról", + "About": "Az alkalmazásról", "Value in": "Érték", "Carb Time": "Étkezés ideje", "Language": "Nyelv", @@ -294,13 +294,13 @@ "Find and remove entries in the future": "Jövőbeli bejegyzések eltávolítása", "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Ez a feladat megkeresi és eltávolítja az összes CGM adatot amit a feltöltő rossz idővel-dátummal töltött fel", "Remove entries in the future": "Jövőbeli bejegyzések törlése", - "Loading database ...": "Adatbázis betöltése...", + "Loading database ...": "Adatbázis betöltése ...", "Database contains %1 future records": "Az adatbázis %1 jövöbeli adatot tartalmaz", "Remove %1 selected records?": "Kitöröljük a %1 kiválasztott adatot?", "Error loading database": "Hiba az adatbázis betöltése közben", "Record %1 removed ...": "A %1 bejegyzés törölve...", "Error removing record %1": "Hiba lépett fel a %1 bejegyzés törlése közben", - "Deleting records ...": "Bejegyzések törlése...", + "Deleting records ...": "Bejegyzések törlése ...", "%1 records deleted": "%1 bejegyzés törölve", "Clean Mongo status database": "Mongo állapot (status) adatbázis tisztítása", "Delete all documents from devicestatus collection": "Az összes \"devicestatus\" dokumentum törlése", @@ -351,7 +351,7 @@ "Record valid from": "Bejegyzés érvényessége", "Stored profiles": "Tárolt profilok", "Timezone": "Időzóna", - "Duration of Insulin Activity (DIA)": "Inzulin aktivitás időtartalma", + "Duration of Insulin Activity (DIA)": "Inzulin aktivitás időtartama (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.": "Kimutatja hogy általában meddig hat az inzulin. Változó különböző pácienseknél és inzulinoknál. Általában 3-4 óra között mozog. Néha inzulin élettartalomnak is nevezik.", "Insulin to carb ratio (I:C)": "Inzulin-szénhidrát arány", "Hours:": "Óra:", @@ -413,12 +413,12 @@ "Activity": "Aktivitás", "Targets": "Célok", "Bolus insulin:": "Bólus inzulin", - "Base basal insulin:": "Általános bazal inzulin", + "Base basal insulin:": "Teljes bázis inzulin:", "Positive temp basal insulin:": "Pozitív átmeneti bazál inzulin", "Negative temp basal insulin:": "Negatív átmeneti bazál inzulin", "Total basal insulin:": "Teljes bazál inzulin", "Total daily insulin:": "Teljes napi inzulin", - "Unable to %1 Role": "Hiba a %1 szabály hívásánál", + "Unable to save Role": "Szerep mentése sikertelen", "Unable to delete Role": "Nem lehetett a Szerepet törölni", "Database contains %1 roles": "Az adatbázis %1 szerepet tartalmaz", "Edit Role": "Szerep szerkesztése", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Semélyek - Emberek csoportja, berendezések, stb.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Mindegyik személynek egy egyedi hozzáférése lesz 1 vagy több szereppel. Kattints a tokenre, hogy egy új nézetet kapj - a kapott linket megoszthatod velük.", "Add new Subject": "Új személy hozzáadása", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Személy mentése sikertelen", "Unable to delete Subject": "A személyt nem sikerült törölni", "Database contains %1 subjects": "Az adatbázis %1 személyt tartalmaz", "Edit Subject": "Személy szerkesztése", @@ -543,7 +543,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "A sima és magas kilengésnél mért idő százalékban kifelyezve, ahol a cukorszint aránylag nagyokat változott. A kisebb értékek jobbak ebben az esetben", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Az átlagos napi változás az abszolút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Az átlagos óránkénti változás az abszút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Tartományon kívüli RMS számítása: a vizsgált időszak összes glükózértékének tartományon kívüli távolságát négyzetre emelik, összegzik, elosztják a glükózértékek számával, és négyzetgyököt vonnak belőle. Ez a mutató hasonló a \"tartományon belül töltött százalék\"-hoz, de jobban súlyozza a tartománytól távolabbi értékeket. Az alacsonyabb érték jobb.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">itt találhatóak.", "Mean Total Daily Change": "Áltagos napi változás", @@ -574,7 +574,7 @@ "virtAsstTitleCGMStatus": "CGM Státusz", "virtAsstTitleCGMSessionAge": "CGM életkora", "virtAsstTitleCGMTxStatus": "CGM kapcsolat státusza", - "virtAsstTitleCGMTxAge": "CGM Transmitter Age", + "virtAsstTitleCGMTxAge": "CGM Transmitter kora", "virtAsstTitleCGMNoise": "CGM Zaj", "virtAsstTitleDelta": "Csukoszint delta", "virtAsstStatus": "%1 es %2 %3-tól.", @@ -612,8 +612,8 @@ "virtAsstCGMBattOne": "A CGM töltöttsége %1 VOLT volt %2-kor", "virtAsstCGMBattTwo": "A CGM töltöttsége %1 és %2 VOLT volt %3-kor", "virtAsstDelta": "A deltád %1 volt %2 és %3 között", - "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstDeltaEstimated": "A becsült deltád %1 volt %2 és %3 között.", + "virtAsstUnknownIntentTitle": "Ismeretlen szándék", "virtAsstUnknownIntentText": "Sajnálom, nem tudom mit szeretnél tőlem.", "Fat [g]": "Zsír [g]", "Protein [g]": "Fehérje [g]", @@ -623,9 +623,9 @@ "Color": "Szinek", "Simple": "Csak cukor", "TDD average": "Átlagos napi adag (TDD)", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", + "Bolus average": "Átlag bólus", + "Basal average": "Átlag bázis", + "Base basal average:": "Átlag bázis inzulin:", "Carbs average": "Szenhidrát átlag", "Eating Soon": "Hamarosan evés", "Last entry {0} minutes ago": "Utolsó bejegyzés {0} volt", @@ -655,35 +655,42 @@ "Data size": "Adatok mérete", "virtAsstDatabaseSize": "%1 MiB ami %2% a rendelkezésre álló méretből", "virtAsstTitleDatabaseSize": "Adatbázis file méret", - "Carbs/Food/Time": "Carbs/Food/Time", - "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", + "Carbs/Food/Time": "Szénhidrát/étel/idő", + "You have administration messages": "Új rendszergazda-üzenetek", + "Admin messages in queue": "Sorban álló rendszergazda-üzenetek", + "Queue empty": "Várólista üres", + "There are no admin messages in queue": "Nincs sorban álló rendszergazda-üzenet", + "Please sign in using the API_SECRET to see your administration messages": "Jelentkezz be API_SECRET-tel, hogy láthasd a rendszergazda-üzeneteket", + "Reads enabled in default permissions": "Olvasások bekapcsolva az alapértelmezett engedélyeknél", + "Data reads enabled": "Adatok olvasása bekapcsolva", + "Data writes enabled": "Adatok írása bekapcsolva", + "Data writes not enabled": "Adatok írása nincs bekapcsolva", + "Color prediction lines": "Színes prognózis vonalak", + "Release Notes": "Kiadási megjegyzések", + "Check for Updates": "Frissítés ellenőrzése", + "Open Source": "Nyílt forráskódú", "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": "Timeshift on meals larger than", - "g carbs": "g carbs'", - "consumed between": "consumed between", - "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" + "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.": "A Loopalyzer elsődleges célja a zárt hurkú rendszer működésének megjelenítése. Működhet más beállításokkal is: zárt és nyitott hurokkal, és hurok nélkül is. Azonban attól függően, hogy milyen feltöltőt használsz, az milyen gyakorisággal képes rögzíteni és feltölteni az adataidat, valamint hogy képes pótolni a hiányzó adatokat, néhány grafikonon hiányos vagy akár teljesen üres részek is lehetnek. Mindig győződjön meg arról, hogy a grafikonok megfelelőek-e. A legjobb, ha egyszerre egy napot jelenítesz meg, és több napon görgetsz végig.", + "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.": "A Loopalyzer tartalmaz egy időeltolás funkciót. Ha például egy nap 07:00-kor, másnap 08:00-kor reggelizel, a két nap átlagában valószínűleg lapos lesz a vércukorszint-görbéd, és nem látszik a tényleges reggeli utáni hatás. Az időeltolás funkció kiszámítja az étkezések átlagos időpontját, majd mindkét nap az összes adatot (szénhidrát, inzulin, bázisok, stb.) eltolja a megfelelő időeltolódással, hogy mindkét étkezés igazodjon az étkezések átlagos kezdési időpontjához.", + "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.": "Ebben a példában az első nap összes adata 30 perccel előre lett tolva, a második nap összes adata pedig 30 perccel hátra lett tolva, tehát úgy tűnik, mintha mindkét nap 07:30-kor reggeliztél volna. Ez láthatóvá teszi az étkezés tényleges átlagos vércukorra gyakorolt hatását.", + "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.": "Az időeltolás az étkezés átlagos kezdési időpontja utáni időszakot szürke színnel emeli ki, a DIA (inzulin aktivitás időtartama) alatt. Mivel egész nap az összes adatpont eltolódik, előfordulhat, hogy a görbék a szürke területen kívül nem pontosak.", + "Note that time shift is available only when viewing multiple days.": "Ne feledd: az időeltolás csak több nap megtekintése esetén érhető el.", + "Please select a maximum of two weeks duration and click Show again.": "Válassz legfeljebb két hét időtartamot, majd kattints újra a Megjelenítés gombra.", + "Show profiles table": "Profil táblázat megjelenítése", + "Show predictions": "Prognózis megjelenítése", + "Timeshift on meals larger than": "Időeltolás étkezéseknél, melyek nagyobbak mint", + "g carbs": "g szénhidrát'", + "consumed between": "elfogyasztva ekkor", + "Previous": "Előző", + "Previous day": "Előző nap", + "Next day": "Következő nap", + "Next": "Következő", + "Temp basal delta": "Átmeneti bázis delta", + "Authorized by token": "Tokennel engedélyezve", + "Auth role": "Hitelesítési szerep", + "view without token": "megtekintés token nélkül", + "Remove stored token": "Tárolt token eltávolítása", + "Weekly Distribution": "Heti eloszlás", + "Failed authentication": "Sikertelen hitelesítés", + "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(z) %1 IP-címmel rendelkező eszköz hibás adatokkal próbálta meg a hitelesítést a Nightscout-tal. Ellenőrizd, hogy van-e rossz API_SECRET-tel vagy tokennel rendelkező feltöltő." } diff --git a/translations/it_IT.json b/translations/it_IT.json index 63aa11d55dc..a138fac8ae6 100644 --- a/translations/it_IT.json +++ b/translations/it_IT.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Insulina basale Temp negativa:", "Total basal insulin:": "Insulina Basale Totale:", "Total daily insulin:": "Totale giornaliero d'insulina:", - "Unable to %1 Role": "Impossibile %1 Ruolo", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Impossibile eliminare il Ruolo", "Database contains %1 roles": "Database contiene %1 ruolo", "Edit Role": "Modifica ruolo", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Soggetti - persone, dispositivi, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Ogni soggetto avrà un gettone d'accesso unico e 1 o più ruoli. Fare clic sul gettone d'accesso per aprire una nuova vista con il soggetto selezionato, questo legame segreto può quindi essere condiviso.", "Add new Subject": "Aggiungere un nuovo Soggetto", - "Unable to %1 Subject": "Impossibile %1 eliminare oggetto", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Impossibile eliminare Soggetto", "Database contains %1 subjects": "Database contiene %1 soggetti", "Edit Subject": "Modifica Oggetto", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Questo è il %2% dello spazio del database disponibile.", "virtAsstTitleDatabaseSize": "Dimensione file database", "Carbs/Food/Time": "Carboidrati/Cibo/Tempo", + "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/ja_JP.json b/translations/ja_JP.json index bdae2d591b3..ffae78fe543 100644 --- a/translations/ja_JP.json +++ b/translations/ja_JP.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negative temp basal insulin:", "Total basal insulin:": "Total basal insulin:", "Total daily insulin:": "Total daily insulin:", - "Unable to %1 Role": "Unable to %1 Role", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Unable to delete Role", "Database contains %1 roles": "Database contains %1 roles", "Edit Role": "Edit Role", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", "Add new Subject": "Add new Subject", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Unable to delete Subject", "Database contains %1 subjects": "Database contains %1 subjects", "Edit Subject": "Edit Subject", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/ko_KR.json b/translations/ko_KR.json index 7790608a30c..347889e422a 100644 --- a/translations/ko_KR.json +++ b/translations/ko_KR.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "남은 임시 basal 인슐린", "Total basal insulin:": "전체 basal 인슐린", "Total daily insulin:": "하루 인슐린 총량", - "Unable to %1 Role": "%1로 비활성", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "삭제로 비활성", "Database contains %1 roles": "데이터베이스가 %1 포함", "Edit Role": "편집 모드", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "주제 - 사람, 기기 등", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "각 주제는 유일한 access token을 가지고 1 또는 그 이상의 역할을 가질 것이다. 선택된 주제와 새로운 뷰를 열기 위해 access token을 클릭하세요. 이 비밀 링크는 공유되어질 수 있다.", "Add new Subject": "새 주제 추가", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "주제를 지우기 위해 비활성화", "Database contains %1 subjects": "데이터베이스는 %1 주제를 포함", "Edit Subject": "주제 편집", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/nb_NO.json b/translations/nb_NO.json index 01147da7867..07dbdf4fb2d 100644 --- a/translations/nb_NO.json +++ b/translations/nb_NO.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativ midlertidig basalinsulin:", "Total basal insulin:": "Total daglig basalinsulin:", "Total daily insulin:": "Total daglig insulin", - "Unable to %1 Role": "Kan ikke %1 rolle", + "Unable to save Role": "Kan ikke lagre rolle", "Unable to delete Role": "Kan ikke ta bort rolle", "Database contains %1 roles": "Databasen inneholder %1 roller", "Edit Role": "Editer rolle", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Ressurser - Brukere, enheter osv", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Hver enkelt ressurs får en unik tilgangsnøkkel og en eller flere roller. Klikk på tilgangsnøkkelen for å åpne valgte ressurs, denne hemmelige lenken kan så deles.", "Add new Subject": "Legg til ny ressurs", - "Unable to %1 Subject": "Kan ikke %1 ressurs", + "Unable to save Subject": "Kan ikke lagre emne", "Unable to delete Subject": "Kan ikke slette ressurs", "Database contains %1 subjects": "Databasen inneholder %1 ressurser", "Edit Subject": "Editer ressurs", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Dette er %2% av tilgjengelig databaseplass.", "virtAsstTitleDatabaseSize": "Database filstørrelse", "Carbs/Food/Time": "Karbo/Mat/Abs.tid", + "You have administration messages": "Du har administrasjonsmeldinger", + "Admin messages in queue": "Admin meldinger i køen", + "Queue empty": "Kø tom", + "There are no admin messages in queue": "Det er ingen admin meldinger i køen", + "Please sign in using the API_SECRET to see your administration messages": "Vennligst logg inn med API_SECRET for å se administrasjonsmeldingene dine", "Reads enabled in default permissions": "Lesetilgang er aktivert i innstillingene", "Data reads enabled": "Lesetilgang aktivert", "Data writes enabled": "Skrivetilgang aktivert", @@ -685,5 +690,7 @@ "Auth role": "Autorisert", "view without token": "vis uten tilgangsnøkkel", "Remove stored token": "Fjern lagret tilgangsnøkkel", - "Weekly Distribution": "Ukentlige resultat" + "Weekly Distribution": "Ukentlige resultat", + "Failed authentication": "Autentisering mislykket", + "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?": "En enhet med IP-adresse %1 forsøkte å autentisere Nightscout med feil legitimasjon. Sjekk om du har en opplaster-app med feil API_SECRET eller tilgangsnøkkel." } diff --git a/translations/nl_NL.json b/translations/nl_NL.json index 3ff51e89410..6b529d6d94c 100644 --- a/translations/nl_NL.json +++ b/translations/nl_NL.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatieve tijdelijke basaal insuline", "Total basal insulin:": "Totaal basaal insuline", "Total daily insulin:": "Totaal dagelijkse insuline", - "Unable to %1 Role": "Kan %1 rol niet verwijderen", + "Unable to save Role": "Kan rol niet opslaan", "Unable to delete Role": "Niet mogelijk rol te verwijderen", "Database contains %1 roles": "Database bevat %1 rollen", "Edit Role": "Pas rol aan", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Onderwerpen - Mensen, apparaten etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Elk onderwerp heeft een unieke toegangscode en 1 of meer rollen. Klik op de toegangscode om een nieu venster te openen om het onderwerp te bekijken, deze verborgen link kan gedeeld worden.", "Add new Subject": "Voeg onderwerp toe", - "Unable to %1 Subject": "Kan onderwerp niet %1", + "Unable to save Subject": "Kan onderwerp niet opslaan", "Unable to delete Subject": "Kan onderwerp niet verwijderen", "Database contains %1 subjects": "Database bevat %1 onderwerpen", "Edit Subject": "Pas onderwerp aan", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB dat is %2% van de beschikbaare database ruimte", "virtAsstTitleDatabaseSize": "Database bestandsgrootte", "Carbs/Food/Time": "Koolhydraten/Voedsel/Tijd", + "You have administration messages": "U heeft beheerberichten", + "Admin messages in queue": "Administratie berichten in wachtrij", + "Queue empty": "Wachtrij leeg", + "There are no admin messages in queue": "Er staan geen administratie berichten in de wachtrij", + "Please sign in using the API_SECRET to see your administration messages": "Log in met behulp van uw API_SECRET om de administratie berichten te zien", "Reads enabled in default permissions": "Lezen ingeschakeld in standaard toestemmingen", "Data reads enabled": "Gegevens lezen ingeschakeld", "Data writes enabled": "Gegevens schrijven ingeschakeld", @@ -685,5 +690,7 @@ "Auth role": "Auth rol", "view without token": "bekijken zonder token", "Remove stored token": "Verwijder opgeslagen token", - "Weekly Distribution": "Wekelijkse spreiding" + "Weekly Distribution": "Wekelijkse spreiding", + "Failed authentication": "Mislukte authenticatie", + "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?": "Een apparaat met IP adres %1 heeft een poging gedaan om te authenticeren met Nightscout met verkeerde inloggegevens. Controleer of je een uploader hebt ingesteld met een verkeerd API_SECRET of token?" } diff --git a/translations/pl_PL.json b/translations/pl_PL.json index 5dd6f72d24b..458cd0b64a5 100644 --- a/translations/pl_PL.json +++ b/translations/pl_PL.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Zmniejszona bazowa dawka insuliny", "Total basal insulin:": "Całkowita ilość bazowej dawki insuliny", "Total daily insulin:": "Całkowita dzienna ilość insuliny", - "Unable to %1 Role": "Nie można %1 roli", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Nie można usunąć roli", "Database contains %1 roles": "Baza danych zawiera %1 ról", "Edit Role": "Edycja roli", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Obiekty - ludzie, urządzenia itp", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Każdy obiekt będzie miał unikalny token dostępu i jedną lub więcej ról. Kliknij token dostępu, aby otworzyć nowy widok z wybranym obiektem, ten tajny link może być następnie udostępniony", "Add new Subject": "Dodaj obiekt", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Nie można usunąć obiektu", "Database contains %1 subjects": "Baza danych zawiera %1 obiektów", "Edit Subject": "Edytuj obiekt", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB co stanowi %2% przestrzeni dostępnej dla bazy danych", "virtAsstTitleDatabaseSize": "Rozmiar pliku bazy danych", "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/pt_BR.json b/translations/pt_BR.json index 3f6bcd32f18..06d8a79b7f6 100644 --- a/translations/pt_BR.json +++ b/translations/pt_BR.json @@ -24,9 +24,9 @@ "Last 2 weeks": "Últimas 2 semanas", "Last month": "Mês passado", "Last 3 months": "Últimos 3 meses", - "between": "between", - "around": "around", - "and": "and", + "between": "entre", + "around": "cerca de", + "and": "e", "From": "De", "To": "a", "Notes": "Notas", @@ -53,13 +53,13 @@ "": "", "Result is empty": "Resultado vazio", "Day to day": "Dia a dia", - "Week to week": "Week to week", + "Week to week": "Semana a semana", "Daily Stats": "Estatísticas diárias", "Percentile Chart": "Percentis", "Distribution": "Distribuição", "Hourly stats": "Estatísticas por hora", - "netIOB stats": "netIOB stats", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "netIOB stats": "Estatísticas de netIOB", + "temp basals must be rendered to display this report": "basais temporárias devem ser renderizadas para exibir este relatório", "No data available": "Não há dados", "Low": "Baixo", "In Range": "Na meta", @@ -94,7 +94,7 @@ "No API secret hash stored yet. You need to enter API secret.": "Hash de segredo de API inexistente. Insira um segredo de API.", "Database loaded": "Banco de dados carregado", "Error: Database failed to load": "Erro: Banco de dados não carregado", - "Error": "Error", + "Error": "Erro", "Create new record": "Criar novo registro", "Save record": "Salvar registro", "Portions": "Porções", @@ -108,7 +108,7 @@ "Your API secret must be at least 12 characters long": "Seu segredo de API deve conter no mínimo 12 caracteres", "Bad API secret": "Segredo de API incorreto", "API secret hash stored": "Segredo de API guardado", - "Status": "Status", + "Status": "Estado", "Not loaded": "Não carregado", "Food Editor": "Editor de alimentos", "Your database": "Seu banco de dados", @@ -118,8 +118,8 @@ "Record": "Gravar", "Quick picks": "Seleção rápida", "Show hidden": "Mostrar ocultos", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Suq senha do API ou token", + "Remember this device. (Do not enable this on public computers.)": "Lembrar deste dispositivo. (Não ative isso em computadores de acesso público.)", "Treatments": "Procedimentos", "Time": "Hora", "Event Type": "Tipo de evento", @@ -210,7 +210,7 @@ "Exercise": "Exercício", "Pump Site Change": "Troca de catéter", "CGM Sensor Start": "Início de sensor", - "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Stop": "Parar sensor de glicose", "CGM Sensor Insert": "Troca de sensor", "Dexcom Sensor Start": "Início de sensor", "Dexcom Sensor Change": "Troca de sensor", @@ -223,8 +223,8 @@ "Amount in units": "Quantidade em unidades", "View all treatments": "Visualizar todos os procedimentos", "Enable Alarms": "Ativar alarmes", - "Pump Battery Change": "Pump Battery Change", - "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery Change": "Bateria da bomba de infusão de insulina descarregada", + "Pump Battery Low Alarm": "Alarme de bateria baixa da bomba de infusão de insulina", "Pump Battery change overdue!": "Pump Battery change overdue!", "When enabled an alarm may sound.": "Quando ativado, um alarme poderá soar", "Urgent High Alarm": "URGENTE: Alarme de glicemia alta", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Insulina basal temporária negativa:", "Total basal insulin:": "Insulina basal total:", "Total daily insulin:": "Insulina diária total:", - "Unable to %1 Role": "Função %1 não foi possível", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Não foi possível apagar a Função", "Database contains %1 roles": "Banco de dados contém %1 Funções", "Edit Role": "Editar Função", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Assunto - Pessoas, dispositivos, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Cada assunto terá um único token de acesso e uma ou mais Funções. Clique no token de acesso para abrir uma nova visualização com o assunto selecionado. Este link secreto poderá então ser compartilhado", "Add new Subject": "Adicionar novo assunto", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Impossível apagar assunto", "Database contains %1 subjects": "Banco de dados contém %1 assuntos", "Edit Subject": "Editar assunto", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/ro_RO.json b/translations/ro_RO.json index 9f0cdb25db3..d931cb6bbdf 100644 --- a/translations/ro_RO.json +++ b/translations/ro_RO.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Bazală temporară micșorată:", "Total basal insulin:": "Bazală totală:", "Total daily insulin:": "Insulină totală zilnică:", - "Unable to %1 Role": "Imposibil de %1 Rolul", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Imposibil de șters Rolul", "Database contains %1 roles": "Baza de date conține %1 rol(uri)", "Edit Role": "Editează Rolul", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subiecte - Persoane, dispozitive, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Fiecare subiect va avea o cheie unică de acces și unul sau mai multe roluri. Apăsați pe cheia de acces pentru a vizualiza subiectul selectat, acest link poate fi distribuit.", "Add new Subject": "Adaugă un Subiect nou", - "Unable to %1 Subject": "Imposibil de %1 Subiect", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Imposibil de șters Subiectul", "Database contains %1 subjects": "Baza de date are %1 subiecți", "Edit Subject": "Editează Subiectul", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MB. Aceasta este %2% din spațiul disponibil pentru baza de date.", "virtAsstTitleDatabaseSize": "Dimensiunea bazei de date", "Carbs/Food/Time": "Carbohidrati/Mâncare/Timp", + "You have administration messages": "Aveți mesaje de administrare", + "Admin messages in queue": "Mesajele administratorului în așteptare", + "Queue empty": "Coadă goală", + "There are no admin messages in queue": "Nu există mesaje de administrator în coadă", + "Please sign in using the API_SECRET to see your administration messages": "Te rugăm să te autentifici folosind API_SECRET pentru a vedea mesajele de administrare", "Reads enabled in default permissions": "Citiri activate în permisiunile implicite", "Data reads enabled": "Citire date activată", "Data writes enabled": "Scriere date activată", @@ -685,5 +690,7 @@ "Auth role": "Rolul de autentificare", "view without token": "vizualizare fără cheie de acces", "Remove stored token": "Elimină cheia de acces stocată", - "Weekly Distribution": "Distribuție săptămânală" + "Weekly Distribution": "Distribuție săptămânală", + "Failed authentication": "Autentificare eșuată", + "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?": "Un dispozitiv cu adresa IP %1 a încercat autentificarea la Nightscout cu datele de autentificare greșite. Verificați dacă o instanta de încărcare a fost configurata cu API_SECRET sau token greșit?" } diff --git a/translations/ru_RU.json b/translations/ru_RU.json index a69750402d6..a076d2a077b 100644 --- a/translations/ru_RU.json +++ b/translations/ru_RU.json @@ -301,7 +301,7 @@ "Record %1 removed ...": "запись %1 удалена", "Error removing record %1": "Ошибка удаления записи %1", "Deleting records ...": "Записи удаляются", - "%1 records deleted": "% записей удалено", + "%1 records deleted": "%1 записей удалено", "Clean Mongo status database": "Очистить статус базы данных Mongo", "Delete all documents from devicestatus collection": "Стереть все документы из коллекции статус устройства", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Эта опция удаляет все документы из коллекции статус устройства. Полезно когда состояние батвреи загрузчика не обновляется", @@ -318,8 +318,8 @@ "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Это удалит все документы коллекции entries старше 180 дней. Полезно, когда статус батареи загрузчика должным образом не обновляется", "Delete old documents": "Удалить старые документы", "Delete old documents from entries collection?": "Удалить старые документы коллекции entries?", - "%1 is not a valid number": "% не является допустимым значением", - "%1 is not a valid number - must be more than 2": "% не является допустимым значением - должно быть больше 2", + "%1 is not a valid number": "%1 не является допустимым значением", + "%1 is not a valid number - must be more than 2": "%1 не является допустимым значением - должно быть больше 2", "Clean Mongo treatments database": "Очистить базу лечения Mongo", "Delete all documents from treatments collection older than 180 days": "Удалить все документы коллекции treatments старше 180 дней", "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Это удалит все документы коллекции treatments старше 180 дней. Полезно, когда статус батареи загрузчика не обновляется должным образом", @@ -393,8 +393,8 @@ "Remove insulin": "Удалить инсулин", "Remove carbs": "Удалить углеводы", "Change treatment time to %1 ?": "Изменить время события на %1 ?", - "Change carbs time to %1 ?": "Изменить время приема углеводов на % ?", - "Change insulin time to %1 ?": "Изменить время подачи инсулина на % ?", + "Change carbs time to %1 ?": "Изменить время приема углеводов на %1 ?", + "Change insulin time to %1 ?": "Изменить время подачи инсулина на %1 ?", "Remove treatment ?": "Удалить событие ?", "Remove insulin from treatment ?": "Удалить инсулин из событий ?", "Remove carbs from treatment ?": "Удалить углеводы из событий ?", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Отриц знач временн базал инс", "Total basal insulin:": "Всего базал инсулина", "Total daily insulin:": "Всего суточн базал инсулина", - "Unable to %1 Role": "Невозможно назначить %1 Роль", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Невозможно удалить Роль", "Database contains %1 roles": "База данных содержит %1 Ролей", "Edit Role": "Редактировать Роль", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Субъекты - Люди, устройства и т п", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Каждый субъект получает уникальный код доступа и 1 или более ролей. Нажмите на иконку кода доступа чтобы открыть новое окно с выбранным субъектом, эту секретную ссылку можно переслать.", "Add new Subject": "Добавить нового субъекта", - "Unable to %1 Subject": "Невозможно %1 Субъект", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Невозможно удалить Субъект ", "Database contains %1 subjects": "База данных содержит %1 субъекта/ов", "Edit Subject": "Редактировать Субъект", @@ -480,9 +480,9 @@ "Expected effect": "Ожидаемый эффект", "Expected outcome": "Ожидаемый результат", "Carb Equivalent": "Эквивалент в углеводах", - "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Избыток инсулина равного %1U, необходимого для достижения нижнего целевого значения, углеводы не приняты в расчет", - "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Избыток инсулина, равного %1U, необходимого для достижения нижнего целевого значения, ПОКРОЙТЕ АКТИВН IOB ИНСУЛИН УГЛЕВОДАМИ", - "%1U reduction needed in active insulin to reach low target, too much basal?": "Для достижения нижнего целевого значения необходимо понизить величину активного инсулина на %1U, велика база?", + "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ед, необходимого для достижения нижнего целевого значения, ПОКРОЙТЕ АКТИВН IOB ИНСУЛИН УГЛЕВОДАМИ", + "%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": "Выше верхней границы", @@ -516,9 +516,9 @@ "Source": "Источник", "Stale data, check rig?": "Старые данные, проверьте загрузчик", "Last received:": "Получено:", - "%1m ago": "% мин назад", - "%1h ago": "% час назад", - "%1d ago": "% дн назад", + "%1m ago": "%1 мин назад", + "%1h ago": "%1 час назад", + "%1d ago": "%1 дн назад", "RETRO": "ПРОШЛОЕ", "SAGE": "Сенсор работает", "Sensor change/restart overdue!": "Рестарт сенсора пропущен", @@ -612,7 +612,7 @@ "virtAsstCGMBattOne": "Батарея мониторинга была %1 вольт по состоянию на %2.", "virtAsstCGMBattTwo": "Уровни заряда аккумулятора были %1 вольт и %2 вольт по состоянию на %3.", "virtAsstDelta": "Дельта была %1 между %2 и %3.", - "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Ваша ожидаемая дельта была %1 между %2 и %3.", "virtAsstUnknownIntentTitle": "Неизвестное намерение", "virtAsstUnknownIntentText": "Ваш запрос непонятен", "Fat [g]": "жиры [g]", @@ -656,13 +656,18 @@ "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": "Color prediction lines", + "Color prediction lines": "Цветные линии прогнозов", "Release Notes": "Release Notes", - "Check for Updates": "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.", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "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 или токеном." } diff --git a/translations/sl_SI.json b/translations/sl_SI.json index 7cb94728a1c..06c4b29fb75 100644 --- a/translations/sl_SI.json +++ b/translations/sl_SI.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatívny dočasný bazálny inzulín:", "Total basal insulin:": "Celkový bazálny inzulín:", "Total daily insulin:": "Celkový denný inzulín:", - "Unable to %1 Role": "Chyba volania %1 Role", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Rola sa nedá zmazať", "Database contains %1 roles": "Databáza obsahuje %1 rolí", "Edit Role": "Editovať rolu", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjekty - ľudia, zariadenia atď...", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Každý objekt má svoj unikátny prístupový token a 1 alebo viac rolí. Klikni na prístupový token pre otvorenie nového okna pre tento subjekt. Tento link je možné zdielať.", "Add new Subject": "Pridať nový subjekt", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Subjekt sa nedá odstrániť", "Database contains %1 subjects": "Databáza obsahuje %1 subjektov", "Edit Subject": "Editovať subjekt", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/sv_SE.json b/translations/sv_SE.json index ecf852a45a3..4bb1e303074 100644 --- a/translations/sv_SE.json +++ b/translations/sv_SE.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativ tempbasal för insulin:", "Total basal insulin:": "Total dagsdos basalinsulin:", "Total daily insulin:": "Total dagsdos insulin", - "Unable to %1 Role": "Kan inte ta bort roll %1", + "Unable to save Role": "Det går inte att spara Roll", "Unable to delete Role": "Kan ej ta bort roll", "Database contains %1 roles": "Databasen innehåller %1 roller", "Edit Role": "Editera roll", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Ämnen - Användare, Enheter, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Varje ämne får en unik säkerhetsnyckel och en eller flera roller. Klicka på accessnyckeln för att öppna en ny vy med det valda ämnet, denna hemliga länk kan sedan delas.", "Add new Subject": "Lägg till nytt ämne", - "Unable to %1 Subject": "Det gick inte att %1 Ämne", + "Unable to save Subject": "Det gick inte att spara Ämnet", "Unable to delete Subject": "Kan ej ta bort ämne", "Database contains %1 subjects": "Databasen innehåller %1 ämnen", "Edit Subject": "Editera ämne", @@ -612,7 +612,7 @@ "virtAsstCGMBattOne": "Ditt CGM batteri var %1 volt från och med %2.", "virtAsstCGMBattTwo": "Dina CGM batterinivåer var %1 volt och %2 volt från och med %3.", "virtAsstDelta": "Ditt delta var %1 mellan %2 och %3.", - "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Ditt uppskattade delta var %1 mellan %2 och %3.", "virtAsstUnknownIntentTitle": "Okänd Avsikt", "virtAsstUnknownIntentText": "Jag är ledsen, jag vet inte vad du ber om.", "Fat [g]": "Fett [g]", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Det är %2% av tillgänglig databasutrymme.", "virtAsstTitleDatabaseSize": "Databasens filstorlek", "Carbs/Food/Time": "Kolhydrater/Mat/Tid", + "You have administration messages": "Du har administrationsmeddelanden", + "Admin messages in queue": "Admin meddelanden i kö", + "Queue empty": "Kön är tom", + "There are no admin messages in queue": "Det finns inga administratörsmeddelanden i kön", + "Please sign in using the API_SECRET to see your administration messages": "Logga in med API_SECRET för att se dina administrationsmeddelanden", "Reads enabled in default permissions": "Läser aktiverade i standardbehörigheter", "Data reads enabled": "Dataläsningar aktiverade", "Data writes enabled": "Dataskrivningar aktiverade", @@ -685,5 +690,7 @@ "Auth role": "Auth roll", "view without token": "visa utan token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Misslyckad autentisering", + "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?" } diff --git a/translations/tr_TR.json b/translations/tr_TR.json index adabab552be..3f5c0f1313d 100644 --- a/translations/tr_TR.json +++ b/translations/tr_TR.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatif geçici bazal insülin:", "Total basal insulin:": "Toplam bazal insülin:", "Total daily insulin:": "Günlük toplam insülin:", - "Unable to %1 Role": "%1 Rolü yapılandırılamadı", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Rol silinemedi", "Database contains %1 roles": "Veritabanı %1 rol içerir", "Edit Role": "Rolü düzenle", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Konular - İnsanlar, Cihazlar, vb.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Her konu benzersiz bir erişim anahtarı ve bir veya daha fazla rol alır. Seçilen konuyla ilgili yeni bir görünüm elde etmek için erişim tuşuna tıklayın. Bu gizli bağlantı paylaşılabilinir.", "Add new Subject": "Yeni konu ekle", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Konu silinemedi", "Database contains %1 subjects": "Veritabanı %1 konu içeriyor", "Edit Subject": "Konuyu düzenle", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/zh_CN.json b/translations/zh_CN.json index 78bce9212c3..140b2a21ea7 100644 --- a/translations/zh_CN.json +++ b/translations/zh_CN.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "其余临时基础率胰岛素", "Total basal insulin:": "基础率胰岛素合计", "Total daily insulin:": "每日胰岛素合计", - "Unable to %1 Role": "%1角色不可用", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "无法删除角色", "Database contains %1 roles": "数据库包含%1个角色", "Edit Role": "编辑角色", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "用户 - 人、设备等", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "每个用户具有唯一的访问令牌和一个或多个角色。在访问令牌上单击打开新窗口查看已选择用户,此时该链接可分享。", "Add new Subject": "添加新用户", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "无法删除用户", "Database contains %1 subjects": "数据库包含%1个用户", "Edit Subject": "编辑用户", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } diff --git a/translations/zh_TW.json b/translations/zh_TW.json index 085bfed60e4..9df57623a95 100644 --- a/translations/zh_TW.json +++ b/translations/zh_TW.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negative temp basal insulin:", "Total basal insulin:": "Total basal insulin:", "Total daily insulin:": "Total daily insulin:", - "Unable to %1 Role": "Unable to %1 Role", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Unable to delete Role", "Database contains %1 roles": "Database contains %1 roles", "Edit Role": "Edit Role", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", "Add new Subject": "Add new Subject", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Unable to delete Subject", "Database contains %1 subjects": "Database contains %1 subjects", "Edit Subject": "Edit Subject", @@ -656,6 +656,11 @@ "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", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "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?" } From 5aa98eeaf64a27834ebbd7f50469defd261e2221 Mon Sep 17 00:00:00 2001 From: Caleb Date: Thu, 21 Jan 2021 01:51:58 -0700 Subject: [PATCH 080/194] Implemented #6720 - Added es_ES template for Alexa (#6779) --- docs/plugins/alexa-templates/es-es.json | 320 ++++++++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 docs/plugins/alexa-templates/es-es.json diff --git a/docs/plugins/alexa-templates/es-es.json b/docs/plugins/alexa-templates/es-es.json new file mode 100644 index 00000000000..dd705d91bd9 --- /dev/null +++ b/docs/plugins/alexa-templates/es-es.json @@ -0,0 +1,320 @@ +{ + "interactionModel": { + "languageModel": { + "invocationName": "mi monitor", + "intents": [ + { + "name": "NSStatus", + "slots": [], + "samples": [ + "Como lo estoy haciendo" + ] + }, + { + "name": "LastLoop", + "slots": [], + "samples": [ + "Cuando fue mi ultimo bucle" + ] + }, + { + "name": "MetricNow", + "slots": [ + { + "name": "metric", + "type": "LIST_OF_METRICS", + "samples": [ + "que es {pwd} {metric}", + "cual es mi {metric}", + "como es {pwd} {metric}", + "como es {metric}", + "cuanta {metric} tiene {pwd}", + "cuanta {metric} tengo", + "cuanta {metric}", + "{pwd} {metric}", + "{metric}", + "mi {metric}" + ] + }, + { + "name": "pwd", + "type": "AMAZON.FirstName" + } + ], + "samples": [ + "cuanto {metric} le queda a {pwd}", + "cual es mi {metric}", + "cuanta {metric} queda", + "Cuanta {metric}", + "como es {metric}", + "como es mi {metric}", + "como es {pwd} {metric}", + "como esta mi {metric}", + "que es {metric}", + "cuanta {metric} tengo", + "cuanta {metric} tiene {pwd}", + "que es {pwd} {metric}" + ] + }, + { + "name": "AMAZON.NavigateHomeIntent", + "samples": [] + }, + { + "name": "AMAZON.StopIntent", + "samples": [] + }, + { + "name": "AMAZON.CancelIntent", + "samples": [] + }, + { + "name": "AMAZON.HelpIntent", + "samples": [] + } + ], + "types": [ + { + "name": "LIST_OF_METRICS", + "values": [ + { + "name": { + "value": "delta", + "synonyms": [ + "delta de glucosa en sangre", + "delta de azucar en sangre", + "delta azucar", + "delta glucosa" + ] + } + }, + { + "name": { + "value": "uploader battery", + "synonyms": [ + "bateria restante del cargador", + "carga de la batera" + ] + } + }, + { + "name": { + "value": "pump reservoir", + "synonyms": [ + "insulina restante", + "queda insulina", + "insulina que queda", + "insulina en mi bomba", + "insulina" + ] + } + }, + { + "name": { + "value": "pump battery", + "synonyms": [ + "bateria de la bomba restante", + "bomba de energia de la bateria" + ] + } + }, + { + "name": { + "value": "bg", + "synonyms": [ + "numero", + "glucosa", + "azucar en sangre", + "glucosa en sangre" + ] + } + }, + { + "name": { + "value": "iob", + "synonyms": [ + "insulina que tengo", + "insulina a bordo" + ] + } + }, + { + "name": { + "value": "basal", + "synonyms": [ + "basal que tengo", + "basal", + "basal actual" + ] + } + }, + { + "name": { + "value": "cob", + "synonyms": [ + "carbohidratos", + "carbohidratos a bordo", + "carbo hidratos", + "carbohidratos que tengo" + ] + } + }, + { + "name": { + "value": "forecast", + "synonyms": [ + "prevision ar2", + "prevision del bucle" + ] + } + }, + { + "name": { + "value": "raw bg", + "synonyms": [ + "numero bruto", + "azucar en sangre en bruto", + "glucosa en sangre en bruto" + ] + } + }, + { + "name": { + "value": "cgm noise", + "synonyms": [ + "ruido cgm", + "ruido del cgm" + ] + } + }, + { + "name": { + "value": "cgm tx age", + "synonyms": [ + "edad del transmisor", + "transmisor edad", + "edad del transmisor cgm" + ] + } + }, + { + "name": { + "value": "cgm tx status", + "synonyms": [ + "estado del transmisor", + "estado transmisor", + "estado del transmisor cgm" + ] + } + }, + { + "name": { + "value": "cgm battery", + "synonyms": [ + "nivel de bateria cgm", + "niveles de bateria cgm", + "bateria del cgm", + "bateria del transmisor cgm", + "nivel de bateria del transmisor cgm", + "nivel bateria transmisor cgm", + "nivel bateria del transmisor cgm", + "bateria transmisor", + "nivel bateria transmisor", + "niveles de bateria del transmisor", + "baterias del transmisor" + ] + } + }, + { + "name": { + "value": "cgm session age", + "synonyms": [ + "edad de la sesion" + ] + } + }, + { + "name": { + "value": "cgm status", + "synonyms": [ + "estado cgm", + "estado del cgm" + ] + } + }, + { + "name": { + "value": "cgm mode", + "synonyms": [ + "modo cgm", + "modo del cgm" + ] + } + }, + { + "name": { + "value": "db size", + "synonyms": [ + "ocupacion de la base de datos", + "ocupacion de datos", + "ocupacion fichero" + ] + } + } + ] + } + ] + }, + "dialog": { + "intents": [ + { + "name": "MetricNow", + "confirmationRequired": false, + "prompts": {}, + "slots": [ + { + "name": "metric", + "type": "LIST_OF_METRICS", + "confirmationRequired": false, + "elicitationRequired": true, + "prompts": { + "elicitation": "Elicit.Slot.1421281086569.34001419564" + } + }, + { + "name": "pwd", + "type": "AMAZON.FirstName", + "confirmationRequired": false, + "elicitationRequired": false, + "prompts": {} + } + ] + } + ], + "delegationStrategy": "ALWAYS" + }, + "prompts": [ + { + "id": "Elicit.Slot.1421281086569.34001419564", + "variations": [ + { + "type": "PlainText", + "value": "¿Que metrica estas buscando?" + }, + { + "type": "PlainText", + "value": "¿Que valor buscas?" + }, + { + "type": "PlainText", + "value": "¿Que metrica quieres saber?" + }, + { + "type": "PlainText", + "value": "¿Que valor quieres saber?" + } + ] + } + ] + } +} \ No newline at end of file From 85aea0fec56c7be553fbf520ab827301994f8895 Mon Sep 17 00:00:00 2001 From: Caleb Date: Tue, 26 Jan 2021 12:33:10 -0700 Subject: [PATCH 081/194] Added sensor code transmitter ID fields (#6780) * Copied #5442 - Duplicated @c-robertson's work * Added tx id and sensor code to tooltip * Added swagger docs for the new fields * Added missing language keys * Added new fields to sage plugin display Co-authored-by: Sulka Haro --- lib/client/careportal.js | 12 ++++++++++- lib/client/renderer.js | 2 ++ lib/plugins/careportal.js | 42 +++++++++++++++++++-------------------- lib/plugins/sensorage.js | 6 ++++++ swagger.json | 8 ++++++++ swagger.yaml | 6 ++++++ translations/en/en.json | 2 ++ views/index.html | 12 +++++++++++ 8 files changed, 68 insertions(+), 22 deletions(-) diff --git a/lib/client/careportal.js b/lib/client/careportal.js index a6edfe3ec22..38704d7c76b 100644 --- a/lib/client/careportal.js +++ b/lib/client/careportal.js @@ -52,7 +52,7 @@ function init (client, $) { submitHooks = {}; _.forEach(careportal.allEventTypes, function each (event) { - inputMatrix[event.val] = _.pick(event, ['otp','remoteCarbs', 'remoteAbsorption', 'remoteBolus', 'bg', 'insulin', 'carbs', 'protein', 'fat', 'prebolus', 'duration', 'percent', 'absolute', 'profile', 'split', 'reasons', 'targets']); + inputMatrix[event.val] = _.pick(event, ['otp','remoteCarbs', 'remoteAbsorption', 'remoteBolus', 'bg', 'insulin', 'carbs', 'protein', 'fat', 'prebolus', 'duration', 'percent', 'absolute', 'profile', 'split', 'sensor', 'reasons', 'targets']); submitHooks[event.val] = event.submitHook; }); } @@ -92,6 +92,8 @@ function init (client, $) { $('#proteinGivenLabel').css('display', displayType(inputMatrix[eventType]['protein'])); $('#fatGivenLabel').css('display', displayType(inputMatrix[eventType]['fat'])); + $('#sensorInfo').css('display', displayType(inputMatrix[eventType]['sensor'])); + $('#durationLabel').css('display', displayType(inputMatrix[eventType]['duration'])); $('#percentLabel').css('display', displayType(inputMatrix[eventType]['percent'] && $('#absolute').val() === '')); $('#absoluteLabel').css('display', displayType(inputMatrix[eventType]['absolute'] && $('#percent').val() === '')); @@ -115,6 +117,8 @@ function init (client, $) { resetIfHidden(inputMatrix[eventType]['carbs'], '#carbsGiven'); resetIfHidden(inputMatrix[eventType]['protein'], '#proteinGiven'); resetIfHidden(inputMatrix[eventType]['fat'], '#fatGiven'); + resetIfHidden(inputMatrix[eventType]['sensor'], '#sensorCode'); + resetIfHidden(inputMatrix[eventType]['sensor'], '#transmitterId'); resetIfHidden(inputMatrix[eventType]['duration'], '#duration'); resetIfHidden(inputMatrix[eventType]['absolute'], '#absolute'); resetIfHidden(inputMatrix[eventType]['percent'], '#percent'); @@ -213,6 +217,8 @@ function init (client, $) { $('#carbsGiven').val(''); $('#proteinGiven').val(''); $('#fatGiven').val(''); + $('#sensorCode').val(''); + $('#transmitterId').val(''); $('#insulinGiven').val(''); $('#duration').val(''); $('#percent').val(''); @@ -244,6 +250,8 @@ function init (client, $) { , carbs: $('#carbsGiven').val() , protein: $('#proteinGiven').val() , fat: $('#fatGiven').val() + , sensorCode: $('#sensorCode').val() + , transmitterId: $('#transmitterId').val() , insulin: $('#insulinGiven').val() , duration: times.msecs(parse_duration($('#duration').val())).mins < 1 ? $('#duration').val() : times.msecs(parse_duration($('#duration').val())).mins , percent: $('#percent').val() @@ -415,6 +423,8 @@ function init (client, $) { pushIf(data.carbs, translate('Carbs Given') + ': ' + data.carbs); pushIf(data.protein, translate('Protein Given') + ': ' + data.protein); pushIf(data.fat, translate('Fat Given') + ': ' + data.fat); + pushIf(data.sensorCode, translate('Sensor Code') + ': ' + data.sensorCode); + pushIf(data.transmitterId, translate('Transmitter ID') + ': ' + data.transmitterId); pushIf(data.insulin, translate('Insulin Given') + ': ' + data.insulin); pushIf(data.eventType === 'Combo Bolus', translate('Combo Bolus') + ': ' + data.splitNow + '% : ' + data.splitExt + '%'); pushIf(data.duration, translate('Duration') + ': ' + data.duration + ' ' + translate('mins')); diff --git a/lib/client/renderer.js b/lib/client/renderer.js index a3841695060..5e9f9c10459 100644 --- a/lib/client/renderer.js +++ b/lib/client/renderer.js @@ -255,6 +255,8 @@ function init (client, d3) { (durationText ? '' + translate('Duration') + ': ' + durationText + '
' : '') + (d.insulinNeedsScaleFactor ? '' + translate('Insulin Scale Factor') + ': ' + d.insulinNeedsScaleFactor * 100 + '%
' : '') + (correctionRangeText ? '' + translate('Correction Range') + ': ' + correctionRangeText + '
' : '') + + (d.transmitterId ? '' + translate('Transmitter ID') + ': ' + d.transmitterId + '
' : '') + + (d.sensorCode ? '' + translate('Sensor Code') + ': ' + d.sensorCode + '
' : '') + (d.notes ? '' + translate('Notes') + ': ' + d.notes : ''); } diff --git a/lib/plugins/careportal.js b/lib/plugins/careportal.js index 90f9bbd992a..2dc992341c6 100644 --- a/lib/plugins/careportal.js +++ b/lib/plugins/careportal.js @@ -15,87 +15,87 @@ function init() { return [ { val: '' , name: '' - , bg: true, insulin: true, carbs: true, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: true, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'BG Check' , name: 'BG Check' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Snack Bolus' , name: 'Snack Bolus' - , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Meal Bolus' , name: 'Meal Bolus' - , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Correction Bolus' , name: 'Correction Bolus' - , bg: true, insulin: true, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Carb Correction' , name: 'Carb Correction' - , bg: true, insulin: false, carbs: true, protein: true, fat: true, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: true, protein: true, fat: true, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Combo Bolus' , name: 'Combo Bolus' - , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: true, percent: false, absolute: false, profile: false, split: true + , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: true, percent: false, absolute: false, profile: false, split: true, sensor: false } , { val: 'Announcement' , name: 'Announcement' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Note' , name: 'Note' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Question' , name: 'Question' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Exercise' , name: 'Exercise' - , bg: false, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false + , bg: false, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Site Change' , name: 'Pump Site Change' - , bg: true, insulin: true, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Sensor Start' , name: 'CGM Sensor Start' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: true } , { val: 'Sensor Change' , name: 'CGM Sensor Insert' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: true } , { val: 'Sensor Stop' , name: 'CGM Sensor Stop' - , bg: true, insulin: false, carbs: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Pump Battery Change' , name: 'Pump Battery Change' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Insulin Change' , name: 'Insulin Cartridge Change' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Temp Basal Start' , name: 'Temp Basal Start' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: true, absolute: true, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: true, absolute: true, profile: false, split: false, sensor: false } , { val: 'Temp Basal End' , name: 'Temp Basal End' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Profile Switch' , name: 'Profile Switch' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: true, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: true, split: false, sensor: false } , { val: 'D.A.D. Alert' , name: 'D.A.D. Alert' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } ]; diff --git a/lib/plugins/sensorage.js b/lib/plugins/sensorage.js index 9f25e59de5a..a28db2109df 100644 --- a/lib/plugins/sensorage.js +++ b/lib/plugins/sensorage.js @@ -184,6 +184,12 @@ function init(ctx) { if (!_.isEmpty(latest[event].notes)) { info.push({label: translate('Notes'), value: latest[event].notes}); } + if (!_.isEmpty(latest[event].transmitterId)) { + info.push({label: translate('Transmitter ID'), value: latest[event].transmitterId}); + } + if (!_.isEmpty(latest[event].sensorCode)) { + info.push({label: translate('Sensor Code'), value: latest[event].sensorCode}); + } } }); diff --git a/swagger.json b/swagger.json index 8e2c30da288..104f402cf2a 100755 --- a/swagger.json +++ b/swagger.json @@ -1192,6 +1192,14 @@ "type": "string", "description": "The units for the glucose value, mg/dl or mmol." }, + "transmitterId": { + "type": "string", + "description": "The transmitter ID of the transmitter being started." + }, + "sensorCode": { + "type": "string", + "description": "The code used to start a Dexcom G6 sensor." + }, "notes": { "type": "string", "description": "Description/notes of treatment." diff --git a/swagger.yaml b/swagger.yaml index 8cc72542c5c..c47f1dd1753 100755 --- a/swagger.yaml +++ b/swagger.yaml @@ -891,6 +891,12 @@ components: units: type: string description: 'The units for the glucose value, mg/dl or mmol.' + transmitterId: + type: string + description: 'The transmitter ID of the transmitter being started.' + sensorCode: + type: string + description: 'The code used to start a Dexcom G6 sensor.' notes: type: string description: Description/notes of treatment. diff --git a/translations/en/en.json b/translations/en/en.json index 6c0ff498456..ff7e4eca107 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -211,6 +211,8 @@ ,"CGM Sensor Start":"CGM Sensor Start" ,"CGM Sensor Stop":"CGM Sensor Stop" ,"CGM Sensor Insert":"CGM Sensor Insert" + ,"Sensor Code":"Sensor Code" + ,"Transmitter ID":"Transmitter ID" ,"Dexcom Sensor Start":"Dexcom Sensor Start" ,"Dexcom Sensor Change":"Dexcom Sensor Change" ,"Insulin Cartridge Change":"Insulin Cartridge Change" diff --git a/views/index.html b/views/index.html index b9a0a564585..27eec00e52d 100644 --- a/views/index.html +++ b/views/index.html @@ -375,6 +375,18 @@ +
+ Sensor + + +
+ ' + - '