Commit d90db3adad9d6ce3d88314bfdedebdfc643e23a8

Authored by Igor Kulikov
Committed by GitHub
2 parents b80bca25 2ad3279f

Merge pull request #941 from dyosick/simplify-localizations-management

Simplify localizations management

Too many changes to show.

To preserve performance only 4 of 14 files are displayed.

@@ -36,12 +36,12 @@ @@ -36,12 +36,12 @@
36 "angular-socialshare": "^2.3.8", 36 "angular-socialshare": "^2.3.8",
37 "angular-storage": "0.0.15", 37 "angular-storage": "0.0.15",
38 "angular-touch": "1.5.8", 38 "angular-touch": "1.5.8",
39 - "angular-translate": "2.13.1",  
40 - "angular-translate-handler-log": "2.13.1",  
41 - "angular-translate-interpolation-messageformat": "2.13.1",  
42 - "angular-translate-loader-static-files": "2.13.1",  
43 - "angular-translate-storage-cookie": "2.13.1",  
44 - "angular-translate-storage-local": "2.13.1", 39 + "angular-translate": "2.18.1",
  40 + "angular-translate-handler-log": "2.18.1",
  41 + "angular-translate-interpolation-messageformat": "2.18.1",
  42 + "angular-translate-loader-static-files": "2.18.1",
  43 + "angular-translate-storage-cookie": "2.18.1",
  44 + "angular-translate-storage-local": "2.18.1",
45 "angular-ui-ace": "^0.2.3", 45 "angular-ui-ace": "^0.2.3",
46 "angular-ui-router": "^0.3.1", 46 "angular-ui-router": "^0.3.1",
47 "angular-websocket": "^2.0.1", 47 "angular-websocket": "^2.0.1",
@@ -127,7 +127,9 @@ @@ -127,7 +127,9 @@
127 "webpack-dev-middleware": "^1.6.1", 127 "webpack-dev-middleware": "^1.6.1",
128 "webpack-dev-server": "^1.15.1", 128 "webpack-dev-server": "^1.15.1",
129 "webpack-hot-middleware": "^2.12.2", 129 "webpack-hot-middleware": "^2.12.2",
130 - "webpack-material-design-icons": "^0.1.0" 130 + "webpack-material-design-icons": "^0.1.0",
  131 + "directory-tree": "^2.1.0",
  132 + "jsonminify": "^0.4.1"
131 }, 133 },
132 "engine": "node >= 5.9.0", 134 "engine": "node >= 5.9.0",
133 "nyc": { 135 "nyc": {
@@ -15,10 +15,6 @@ @@ -15,10 +15,6 @@
15 */ 15 */
16 import injectTapEventPlugin from 'react-tap-event-plugin'; 16 import injectTapEventPlugin from 'react-tap-event-plugin';
17 import UrlHandler from './url.handler'; 17 import UrlHandler from './url.handler';
18 -import addLocaleKorean from './locale/locale.constant-ko';  
19 -import addLocaleChinese from './locale/locale.constant-zh';  
20 -import addLocaleRussian from './locale/locale.constant-ru';  
21 -import addLocaleSpanish from './locale/locale.constant-es';  
22 18
23 /* eslint-disable import/no-unresolved, import/default */ 19 /* eslint-disable import/no-unresolved, import/default */
24 20
@@ -38,46 +34,24 @@ export default function AppConfig($provide, @@ -38,46 +34,24 @@ export default function AppConfig($provide,
38 $mdThemingProvider, 34 $mdThemingProvider,
39 $httpProvider, 35 $httpProvider,
40 $translateProvider, 36 $translateProvider,
41 - storeProvider,  
42 - locales) { 37 + storeProvider) {
43 38
44 injectTapEventPlugin(); 39 injectTapEventPlugin();
45 $locationProvider.html5Mode(true); 40 $locationProvider.html5Mode(true);
46 $urlRouterProvider.otherwise(UrlHandler); 41 $urlRouterProvider.otherwise(UrlHandler);
47 storeProvider.setCaching(false); 42 storeProvider.setCaching(false);
48 -  
49 - $translateProvider.useSanitizeValueStrategy(null);  
50 - $translateProvider.useMissingTranslationHandler('tbMissingTranslationHandler');  
51 - $translateProvider.addInterpolation('$translateMessageFormatInterpolation');  
52 - $translateProvider.fallbackLanguage('en_US');  
53 -  
54 - addLocaleKorean(locales);  
55 - addLocaleChinese(locales);  
56 - addLocaleRussian(locales);  
57 - addLocaleSpanish(locales);  
58 -  
59 - for (var langKey in locales) {  
60 - var translationTable = locales[langKey];  
61 - $translateProvider.translations(langKey, translationTable);  
62 - }  
63 -  
64 - var lang = $translateProvider.resolveClientLocale();  
65 - if (lang) {  
66 - lang = lang.toLowerCase();  
67 - if (lang.startsWith('ko')) {  
68 - $translateProvider.preferredLanguage('ko_KR');  
69 - } else if (lang.startsWith('zh')) {  
70 - $translateProvider.preferredLanguage('zh_CN');  
71 - } else if (lang.startsWith('es')) {  
72 - $translateProvider.preferredLanguage('es_ES');  
73 - } else if (lang.startsWith('ru')) {  
74 - $translateProvider.preferredLanguage('ru_RU');  
75 - } else {  
76 - $translateProvider.preferredLanguage('en_US');  
77 - }  
78 - } else {  
79 - $translateProvider.preferredLanguage('en_US');  
80 - } 43 +
  44 + $translateProvider.useSanitizeValueStrategy(null)
  45 + .useMissingTranslationHandler('tbMissingTranslationHandler')
  46 + .addInterpolation('$translateMessageFormatInterpolation')
  47 + .useStaticFilesLoader({
  48 + prefix: PUBLIC_PATH + 'locale/locale.constant-', //eslint-disable-line
  49 + suffix: '.json'
  50 + })
  51 + .registerAvailableLanguageKeys(SUPPORTED_LANGS, getLanguageAliases(SUPPORTED_LANGS)) //eslint-disable-line
  52 + .fallbackLanguage('en_US') // must be before determinePreferredLanguage
  53 + .uniformLanguageTag('java') // must be before determinePreferredLanguage
  54 + .determinePreferredLanguage();
81 55
82 $httpProvider.interceptors.push('globalInterceptor'); 56 $httpProvider.interceptors.push('globalInterceptor');
83 57
@@ -168,4 +142,24 @@ export default function AppConfig($provide, @@ -168,4 +142,24 @@ export default function AppConfig($provide,
168 //$mdThemingProvider.alwaysWatchTheme(true); 142 //$mdThemingProvider.alwaysWatchTheme(true);
169 } 143 }
170 144
  145 + function getLanguageAliases(supportedLangs) {
  146 + var aliases = {};
  147 +
  148 + supportedLangs.sort().forEach(function(item, index, array) {
  149 + if (item.length === 2) {
  150 + aliases[item] = item;
  151 + aliases[item + '_*'] = item;
  152 + } else {
  153 + var key = item.slice(0, 2);
  154 + if (index === 0 || key !== array[index - 1].slice(0, 2)) {
  155 + aliases[key] = item;
  156 + aliases[key + '_*'] = item;
  157 + } else {
  158 + aliases[item] = item;
  159 + }
  160 + }
  161 + });
  162 +
  163 + return aliases;
  164 + }
171 } 165 }
@@ -51,7 +51,7 @@ import react from 'ngreact'; @@ -51,7 +51,7 @@ import react from 'ngreact';
51 import '@flowjs/ng-flow/dist/ng-flow-standalone.min'; 51 import '@flowjs/ng-flow/dist/ng-flow-standalone.min';
52 import 'ngFlowchart/dist/ngFlowchart'; 52 import 'ngFlowchart/dist/ngFlowchart';
53 53
54 -import thingsboardLocales from './locale/locale.constant'; 54 +import thingsboardTranslateHandler from './locale/translate-handler';
55 import thingsboardLogin from './login'; 55 import thingsboardLogin from './login';
56 import thingsboardDialogs from './components/datakey-config-dialog.controller'; 56 import thingsboardDialogs from './components/datakey-config-dialog.controller';
57 import thingsboardMenu from './services/menu.service'; 57 import thingsboardMenu from './services/menu.service';
@@ -117,7 +117,7 @@ angular.module('thingsboard', [ @@ -117,7 +117,7 @@ angular.module('thingsboard', [
117 react.name, 117 react.name,
118 'flow', 118 'flow',
119 'flowchart', 119 'flowchart',
120 - thingsboardLocales, 120 + thingsboardTranslateHandler,
121 thingsboardLogin, 121 thingsboardLogin,
122 thingsboardDialogs, 122 thingsboardDialogs,
123 thingsboardMenu, 123 thingsboardMenu,
ui/src/app/locale/locale.constant-en_US.json renamed from ui/src/app/locale/locale.constant.js
1 -/*  
2 - * Copyright © 2016-2018 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -import ThingsboardMissingTranslateHandler from './translate-handler'; 1 +{
  2 + "access": {
  3 + "unauthorized": "Unauthorized",
  4 + "unauthorized-access": "Unauthorized Access",
  5 + "unauthorized-access-text": "You should sign in to have access to this resource!",
  6 + "access-forbidden": "Access Forbidden",
  7 + "access-forbidden-text": "You haven't access rights to this location!<br/>Try to sign in with different user if you still wish to gain access to this location.",
  8 + "refresh-token-expired": "Session has expired",
  9 + "refresh-token-failed": "Unable to refresh session"
  10 + },
  11 + "action": {
  12 + "activate": "Activate",
  13 + "suspend": "Suspend",
  14 + "save": "Save",
  15 + "saveAs": "Save as",
  16 + "cancel": "Cancel",
  17 + "ok": "OK",
  18 + "delete": "Delete",
  19 + "add": "Add",
  20 + "yes": "Yes",
  21 + "no": "No",
  22 + "update": "Update",
  23 + "remove": "Remove",
  24 + "search": "Search",
  25 + "clear-search": "Clear search",
  26 + "assign": "Assign",
  27 + "unassign": "Unassign",
  28 + "share": "Share",
  29 + "make-private": "Make private",
  30 + "apply": "Apply",
  31 + "apply-changes": "Apply changes",
  32 + "edit-mode": "Edit mode",
  33 + "enter-edit-mode": "Enter edit mode",
  34 + "decline-changes": "Decline changes",
  35 + "close": "Close",
  36 + "back": "Back",
  37 + "run": "Run",
  38 + "sign-in": "Sign in!",
  39 + "edit": "Edit",
  40 + "view": "View",
  41 + "create": "Create",
  42 + "drag": "Drag",
  43 + "refresh": "Refresh",
  44 + "undo": "Undo",
  45 + "copy": "Copy",
  46 + "paste": "Paste",
  47 + "copy-reference": "Copy reference",
  48 + "paste-reference": "Paste reference",
  49 + "import": "Import",
  50 + "export": "Export",
  51 + "share-via": "Share via {{provider}}"
  52 + },
  53 + "aggregation": {
  54 + "aggregation": "Aggregation",
  55 + "function": "Data aggregation function",
  56 + "limit": "Max values",
  57 + "group-interval": "Grouping interval",
  58 + "min": "Min",
  59 + "max": "Max",
  60 + "avg": "Average",
  61 + "sum": "Sum",
  62 + "count": "Count",
  63 + "none": "None"
  64 + },
  65 + "admin": {
  66 + "general": "General",
  67 + "general-settings": "General Settings",
  68 + "outgoing-mail": "Outgoing Mail",
  69 + "outgoing-mail-settings": "Outgoing Mail Settings",
  70 + "system-settings": "System Settings",
  71 + "test-mail-sent": "Test mail was successfully sent!",
  72 + "base-url": "Base URL",
  73 + "base-url-required": "Base URL is required.",
  74 + "mail-from": "Mail From",
  75 + "mail-from-required": "Mail From is required.",
  76 + "smtp-protocol": "SMTP protocol",
  77 + "smtp-host": "SMTP host",
  78 + "smtp-host-required": "SMTP host is required.",
  79 + "smtp-port": "SMTP port",
  80 + "smtp-port-required": "You must supply a smtp port.",
  81 + "smtp-port-invalid": "That doesn't look like a valid smtp port.",
  82 + "timeout-msec": "Timeout (msec)",
  83 + "timeout-required": "Timeout is required.",
  84 + "timeout-invalid": "That doesn't look like a valid timeout.",
  85 + "enable-tls": "Enable TLS",
  86 + "send-test-mail": "Send test mail"
  87 + },
  88 + "alarm": {
  89 + "alarm": "Alarm",
  90 + "alarms": "Alarms",
  91 + "select-alarm": "Select alarm",
  92 + "no-alarms-matching": "No alarms matching '{{entity}}' were found.",
  93 + "alarm-required": "Alarm is required",
  94 + "alarm-status": "Alarm status",
  95 + "search-status": {
  96 + "ANY": "Any",
  97 + "ACTIVE": "Active",
  98 + "CLEARED": "Cleared",
  99 + "ACK": "Acknowledged",
  100 + "UNACK": "Unacknowledged"
  101 + },
  102 + "display-status": {
  103 + "ACTIVE_UNACK": "Active Unacknowledged",
  104 + "ACTIVE_ACK": "Active Acknowledged",
  105 + "CLEARED_UNACK": "Cleared Unacknowledged",
  106 + "CLEARED_ACK": "Cleared Acknowledged"
  107 + },
  108 + "no-alarms-prompt": "No alarms found",
  109 + "created-time": "Created time",
  110 + "type": "Type",
  111 + "severity": "Severity",
  112 + "originator": "Originator",
  113 + "originator-type": "Originator type",
  114 + "details": "Details",
  115 + "status": "Status",
  116 + "alarm-details": "Alarm details",
  117 + "start-time": "Start time",
  118 + "end-time": "End time",
  119 + "ack-time": "Acknowledged time",
  120 + "clear-time": "Cleared time",
  121 + "severity-critical": "Critical",
  122 + "severity-major": "Major",
  123 + "severity-minor": "Minor",
  124 + "severity-warning": "Warning",
  125 + "severity-indeterminate": "Indeterminate",
  126 + "acknowledge": "Acknowledge",
  127 + "clear": "Clear",
  128 + "search": "Search alarms",
  129 + "selected-alarms": "{ count, select, 1 {1 alarm} other {# alarms} } selected",
  130 + "no-data": "No data to display",
  131 + "polling-interval": "Alarms polling interval (sec)",
  132 + "polling-interval-required": "Alarms polling interval is required.",
  133 + "min-polling-interval-message": "At least 1 sec polling interval is allowed.",
  134 + "aknowledge-alarms-title": "Acknowledge { count, select, 1 {1 alarm} other {# alarms} }",
  135 + "aknowledge-alarms-text": "Are you sure you want to acknowledge { count, select, 1 {1 alarm} other {# alarms} }?",
  136 + "clear-alarms-title": "Clear { count, select, 1 {1 alarm} other {# alarms} }",
  137 + "clear-alarms-text": "Are you sure you want to clear { count, select, 1 {1 alarm} other {# alarms} }?"
  138 + },
  139 + "alias": {
  140 + "add": "Add alias",
  141 + "edit": "Edit alias",
  142 + "name": "Alias name",
  143 + "name-required": "Alias name is required",
  144 + "duplicate-alias": "Alias with same name is already exists.",
  145 + "filter-type-single-entity": "Single entity",
  146 + "filter-type-entity-list": "Entity list",
  147 + "filter-type-entity-name": "Entity name",
  148 + "filter-type-state-entity": "Entity from dashboard state",
  149 + "filter-type-state-entity-description": "Entity taken from dashboard state parameters",
  150 + "filter-type-asset-type": "Asset type",
  151 + "filter-type-asset-type-description": "Assets of type '{{assetType}}'",
  152 + "filter-type-asset-type-and-name-description": "Assets of type '{{assetType}}' and with name starting with '{{prefix}}'",
  153 + "filter-type-device-type": "Device type",
  154 + "filter-type-device-type-description": "Devices of type '{{deviceType}}'",
  155 + "filter-type-device-type-and-name-description": "Devices of type '{{deviceType}}' and with name starting with '{{prefix}}'",
  156 + "filter-type-relations-query": "Relations query",
  157 + "filter-type-relations-query-description": "{{entities}} that have {{relationType}} relation {{direction}} {{rootEntity}}",
  158 + "filter-type-asset-search-query": "Asset search query",
  159 + "filter-type-asset-search-query-description": "Assets with types {{assetTypes}} that have {{relationType}} relation {{direction}} {{rootEntity}}",
  160 + "filter-type-device-search-query": "Device search query",
  161 + "filter-type-device-search-query-description": "Devices with types {{deviceTypes}} that have {{relationType}} relation {{direction}} {{rootEntity}}",
  162 + "entity-filter": "Entity filter",
  163 + "resolve-multiple": "Resolve as multiple entities",
  164 + "filter-type": "Filter type",
  165 + "filter-type-required": "Filter type is required.",
  166 + "entity-filter-no-entity-matched": "No entities matching specified filter were found.",
  167 + "no-entity-filter-specified": "No entity filter specified",
  168 + "root-state-entity": "Use dashboard state entity as root",
  169 + "root-entity": "Root entity",
  170 + "state-entity-parameter-name": "State entity parameter name",
  171 + "default-state-entity": "Default state entity",
  172 + "default-entity-parameter-name": "By default",
  173 + "max-relation-level": "Max relation level",
  174 + "unlimited-level": "Unlimited level",
  175 + "state-entity": "Dashboard state entity",
  176 + "all-entities": "All entities",
  177 + "any-relation": "any"
  178 + },
  179 + "asset": {
  180 + "asset": "Asset",
  181 + "assets": "Assets",
  182 + "management": "Asset management",
  183 + "view-assets": "View Assets",
  184 + "add": "Add Asset",
  185 + "assign-to-customer": "Assign to customer",
  186 + "assign-asset-to-customer": "Assign Asset(s) To Customer",
  187 + "assign-asset-to-customer-text": "Please select the assets to assign to the customer",
  188 + "no-assets-text": "No assets found",
  189 + "assign-to-customer-text": "Please select the customer to assign the asset(s)",
  190 + "public": "Public",
  191 + "assignedToCustomer": "Assigned to customer",
  192 + "make-public": "Make asset public",
  193 + "make-private": "Make asset private",
  194 + "unassign-from-customer": "Unassign from customer",
  195 + "delete": "Delete asset",
  196 + "asset-public": "Asset is public",
  197 + "asset-type": "Asset type",
  198 + "asset-type-required": "Asset type is required.",
  199 + "select-asset-type": "Select asset type",
  200 + "enter-asset-type": "Enter asset type",
  201 + "any-asset": "Any asset",
  202 + "no-asset-types-matching": "No asset types matching '{{entitySubtype}}' were found.",
  203 + "asset-type-list-empty": "No asset types selected.",
  204 + "asset-types": "Asset types",
  205 + "name": "Name",
  206 + "name-required": "Name is required.",
  207 + "description": "Description",
  208 + "type": "Type",
  209 + "type-required": "Type is required.",
  210 + "details": "Details",
  211 + "events": "Events",
  212 + "add-asset-text": "Add new asset",
  213 + "asset-details": "Asset details",
  214 + "assign-assets": "Assign assets",
  215 + "assign-assets-text": "Assign { count, select, 1 {1 asset} other {# assets} } to customer",
  216 + "delete-assets": "Delete assets",
  217 + "unassign-assets": "Unassign assets",
  218 + "unassign-assets-action-title": "Unassign { count, select, 1 {1 asset} other {# assets} } from customer",
  219 + "assign-new-asset": "Assign new asset",
  220 + "delete-asset-title": "Are you sure you want to delete the asset '{{assetName}}'?",
  221 + "delete-asset-text": "Be careful, after the confirmation the asset and all related data will become unrecoverable.",
  222 + "delete-assets-title": "Are you sure you want to delete { count, select, 1 {1 asset} other {# assets} }?",
  223 + "delete-assets-action-title": "Delete { count, select, 1 {1 asset} other {# assets} }",
  224 + "delete-assets-text": "Be careful, after the confirmation all selected assets will be removed and all related data will become unrecoverable.",
  225 + "make-public-asset-title": "Are you sure you want to make the asset '{{assetName}}' public?",
  226 + "make-public-asset-text": "After the confirmation the asset and all its data will be made public and accessible by others.",
  227 + "make-private-asset-title": "Are you sure you want to make the asset '{{assetName}}' private?",
  228 + "make-private-asset-text": "After the confirmation the asset and all its data will be made private and won't be accessible by others.",
  229 + "unassign-asset-title": "Are you sure you want to unassign the asset '{{assetName}}'?",
  230 + "unassign-asset-text": "After the confirmation the asset will be unassigned and won't be accessible by the customer.",
  231 + "unassign-asset": "Unassign asset",
  232 + "unassign-assets-title": "Are you sure you want to unassign { count, select, 1 {1 asset} other {# assets} }?",
  233 + "unassign-assets-text": "After the confirmation all selected assets will be unassigned and won't be accessible by the customer.",
  234 + "copyId": "Copy asset Id",
  235 + "idCopiedMessage": "Asset Id has been copied to clipboard",
  236 + "select-asset": "Select asset",
  237 + "no-assets-matching": "No assets matching '{{entity}}' were found.",
  238 + "asset-required": "Asset is required",
  239 + "name-starts-with": "Asset name starts with"
  240 + },
  241 + "attribute": {
  242 + "attributes": "Attributes",
  243 + "latest-telemetry": "Latest telemetry",
  244 + "attributes-scope": "Entity attributes scope",
  245 + "scope-latest-telemetry": "Latest telemetry",
  246 + "scope-client": "Client attributes",
  247 + "scope-server": "Server attributes",
  248 + "scope-shared": "Shared attributes",
  249 + "add": "Add attribute",
  250 + "key": "Key",
  251 + "last-update-time": "Last update time",
  252 + "key-required": "Attribute key is required.",
  253 + "value": "Value",
  254 + "value-required": "Attribute value is required.",
  255 + "delete-attributes-title": "Are you sure you want to delete { count, select, 1 {1 attribute} other {# attributes} }?",
  256 + "delete-attributes-text": "Be careful, after the confirmation all selected attributes will be removed.",
  257 + "delete-attributes": "Delete attributes",
  258 + "enter-attribute-value": "Enter attribute value",
  259 + "show-on-widget": "Show on widget",
  260 + "widget-mode": "Widget mode",
  261 + "next-widget": "Next widget",
  262 + "prev-widget": "Previous widget",
  263 + "add-to-dashboard": "Add to dashboard",
  264 + "add-widget-to-dashboard": "Add widget to dashboard",
  265 + "selected-attributes": "{ count, select, 1 {1 attribute} other {# attributes} } selected",
  266 + "selected-telemetry": "{ count, select, 1 {1 telemetry unit} other {# telemetry units} } selected"
  267 + },
  268 + "audit-log": {
  269 + "audit": "Audit",
  270 + "audit-logs": "Audit Logs",
  271 + "timestamp": "Timestamp",
  272 + "entity-type": "Entity Type",
  273 + "entity-name": "Entity Name",
  274 + "user": "User",
  275 + "type": "Type",
  276 + "status": "Status",
  277 + "details": "Details",
  278 + "type-added": "Added",
  279 + "type-deleted": "Deleted",
  280 + "type-updated": "Updated",
  281 + "type-attributes-updated": "Attributes updated",
  282 + "type-attributes-deleted": "Attributes deleted",
  283 + "type-rpc-call": "RPC call",
  284 + "type-credentials-updated": "Credentials updated",
  285 + "type-assigned-to-customer": "Assigned to Customer",
  286 + "type-unassigned-from-customer": "Unassigned from Customer",
  287 + "type-activated": "Activated",
  288 + "type-suspended": "Suspended",
  289 + "type-credentials-read": "Credentials read",
  290 + "type-attributes-read": "Attributes read",
  291 + "status-success": "Success",
  292 + "status-failure": "Failure",
  293 + "audit-log-details": "Audit log details",
  294 + "no-audit-logs-prompt": "No logs found",
  295 + "action-data": "Action data",
  296 + "failure-details": "Failure details",
  297 + "search": "Search audit logs",
  298 + "clear-search": "Clear search"
  299 + },
  300 + "confirm-on-exit": {
  301 + "message": "You have unsaved changes. Are you sure you want to leave this page?",
  302 + "html-message": "You have unsaved changes.<br/>Are you sure you want to leave this page?",
  303 + "title": "Unsaved changes"
  304 + },
  305 + "contact": {
  306 + "country": "Country",
  307 + "city": "City",
  308 + "state": "State / Province",
  309 + "postal-code": "Zip / Postal Code",
  310 + "postal-code-invalid": "Invalid Zip / Postal Code format.",
  311 + "address": "Address",
  312 + "address2": "Address 2",
  313 + "phone": "Phone",
  314 + "email": "Email",
  315 + "no-address": "No address"
  316 + },
  317 + "common": {
  318 + "username": "Username",
  319 + "password": "Password",
  320 + "enter-username": "Enter username",
  321 + "enter-password": "Enter password",
  322 + "enter-search": "Enter search"
  323 + },
  324 + "content-type": {
  325 + "json": "Json",
  326 + "text": "Text",
  327 + "binary": "Binary (Base64)"
  328 + },
  329 + "customer": {
  330 + "customer": "Customer",
  331 + "customers": "Customers",
  332 + "management": "Customer management",
  333 + "dashboard": "Customer Dashboard",
  334 + "dashboards": "Customer Dashboards",
  335 + "devices": "Customer Devices",
  336 + "assets": "Customer Assets",
  337 + "public-dashboards": "Public Dashboards",
  338 + "public-devices": "Public Devices",
  339 + "public-assets": "Public Assets",
  340 + "add": "Add Customer",
  341 + "delete": "Delete customer",
  342 + "manage-customer-users": "Manage customer users",
  343 + "manage-customer-devices": "Manage customer devices",
  344 + "manage-customer-dashboards": "Manage customer dashboards",
  345 + "manage-public-devices": "Manage public devices",
  346 + "manage-public-dashboards": "Manage public dashboards",
  347 + "manage-customer-assets": "Manage customer assets",
  348 + "manage-public-assets": "Manage public assets",
  349 + "add-customer-text": "Add new customer",
  350 + "no-customers-text": "No customers found",
  351 + "customer-details": "Customer details",
  352 + "delete-customer-title": "Are you sure you want to delete the customer '{{customerTitle}}'?",
  353 + "delete-customer-text": "Be careful, after the confirmation the customer and all related data will become unrecoverable.",
  354 + "delete-customers-title": "Are you sure you want to delete { count, select, 1 {1 customer} other {# customers} }?",
  355 + "delete-customers-action-title": "Delete { count, select, 1 {1 customer} other {# customers} }",
  356 + "delete-customers-text": "Be careful, after the confirmation all selected customers will be removed and all related data will become unrecoverable.",
  357 + "manage-users": "Manage users",
  358 + "manage-assets": "Manage assets",
  359 + "manage-devices": "Manage devices",
  360 + "manage-dashboards": "Manage dashboards",
  361 + "title": "Title",
  362 + "title-required": "Title is required.",
  363 + "description": "Description",
  364 + "details": "Details",
  365 + "events": "Events",
  366 + "copyId": "Copy customer Id",
  367 + "idCopiedMessage": "Customer Id has been copied to clipboard",
  368 + "select-customer": "Select customer",
  369 + "no-customers-matching": "No customers matching '{{entity}}' were found.",
  370 + "customer-required": "Customer is required",
  371 + "select-default-customer": "Select default customer",
  372 + "default-customer": "Default customer",
  373 + "default-customer-required": "Default customer is required in order to debug dashboard on Tenant level"
  374 + },
  375 + "datetime": {
  376 + "date-from": "Date from",
  377 + "time-from": "Time from",
  378 + "date-to": "Date to",
  379 + "time-to": "Time to"
  380 + },
  381 + "dashboard": {
  382 + "dashboard": "Dashboard",
  383 + "dashboards": "Dashboards",
  384 + "management": "Dashboard management",
  385 + "view-dashboards": "View Dashboards",
  386 + "add": "Add Dashboard",
  387 + "assign-dashboard-to-customer": "Assign Dashboard(s) To Customer",
  388 + "assign-dashboard-to-customer-text": "Please select the dashboards to assign to the customer",
  389 + "assign-to-customer-text": "Please select the customer to assign the dashboard(s)",
  390 + "assign-to-customer": "Assign to customer",
  391 + "unassign-from-customer": "Unassign from customer",
  392 + "make-public": "Make dashboard public",
  393 + "make-private": "Make dashboard private",
  394 + "manage-assigned-customers": "Manage assigned customers",
  395 + "assigned-customers": "Assigned customers",
  396 + "assign-to-customers": "Assign Dashboard(s) To Customers",
  397 + "assign-to-customers-text": "Please select the customers to assign the dashboard(s)",
  398 + "unassign-from-customers": "Unassign Dashboard(s) From Customers",
  399 + "unassign-from-customers-text": "Please select the customers to unassign from the dashboard(s)",
  400 + "no-dashboards-text": "No dashboards found",
  401 + "no-widgets": "No widgets configured",
  402 + "add-widget": "Add new widget",
  403 + "title": "Title",
  404 + "select-widget-title": "Select widget",
  405 + "select-widget-subtitle": "List of available widget types",
  406 + "delete": "Delete dashboard",
  407 + "title-required": "Title is required.",
  408 + "description": "Description",
  409 + "details": "Details",
  410 + "dashboard-details": "Dashboard details",
  411 + "add-dashboard-text": "Add new dashboard",
  412 + "assign-dashboards": "Assign dashboards",
  413 + "assign-new-dashboard": "Assign new dashboard",
  414 + "assign-dashboards-text": "Assign { count, select, 1 {1 dashboard} other {# dashboards} } to customers",
  415 + "unassign-dashboards-action-text": "Unassign { count, select, 1 {1 dashboard} other {# dashboards} } from customers",
  416 + "delete-dashboards": "Delete dashboards",
  417 + "unassign-dashboards": "Unassign dashboards",
  418 + "unassign-dashboards-action-title": "Unassign { count, select, 1 {1 dashboard} other {# dashboards} } from customer",
  419 + "delete-dashboard-title": "Are you sure you want to delete the dashboard '{{dashboardTitle}}'?",
  420 + "delete-dashboard-text": "Be careful, after the confirmation the dashboard and all related data will become unrecoverable.",
  421 + "delete-dashboards-title": "Are you sure you want to delete { count, select, 1 {1 dashboard} other {# dashboards} }?",
  422 + "delete-dashboards-action-title": "Delete { count, select, 1 {1 dashboard} other {# dashboards} }",
  423 + "delete-dashboards-text": "Be careful, after the confirmation all selected dashboards will be removed and all related data will become unrecoverable.",
  424 + "unassign-dashboard-title": "Are you sure you want to unassign the dashboard '{{dashboardTitle}}'?",
  425 + "unassign-dashboard-text": "After the confirmation the dashboard will be unassigned and won't be accessible by the customer.",
  426 + "unassign-dashboard": "Unassign dashboard",
  427 + "unassign-dashboards-title": "Are you sure you want to unassign { count, select, 1 {1 dashboard} other {# dashboards} }?",
  428 + "unassign-dashboards-text": "After the confirmation all selected dashboards will be unassigned and won't be accessible by the customer.",
  429 + "public-dashboard-title": "Dashboard is now public",
  430 + "public-dashboard-text": "Your dashboard <b>{{dashboardTitle}}</b> is now public and accessible via next public <a href='{{publicLink}}' target='_blank'>link</a>:",
  431 + "public-dashboard-notice": "<b>Note:</b> Do not forget to make related devices public in order to access their data.",
  432 + "make-private-dashboard-title": "Are you sure you want to make the dashboard '{{dashboardTitle}}' private?",
  433 + "make-private-dashboard-text": "After the confirmation the dashboard will be made private and won't be accessible by others.",
  434 + "make-private-dashboard": "Make dashboard private",
  435 + "socialshare-text": "'{{dashboardTitle}}' powered by ThingsBoard",
  436 + "socialshare-title": "'{{dashboardTitle}}' powered by ThingsBoard",
  437 + "select-dashboard": "Select dashboard",
  438 + "no-dashboards-matching": "No dashboards matching '{{entity}}' were found.",
  439 + "dashboard-required": "Dashboard is required.",
  440 + "select-existing": "Select existing dashboard",
  441 + "create-new": "Create new dashboard",
  442 + "new-dashboard-title": "New dashboard title",
  443 + "open-dashboard": "Open dashboard",
  444 + "set-background": "Set background",
  445 + "background-color": "Background color",
  446 + "background-image": "Background image",
  447 + "background-size-mode": "Background size mode",
  448 + "no-image": "No image selected",
  449 + "drop-image": "Drop an image or click to select a file to upload.",
  450 + "settings": "Settings",
  451 + "columns-count": "Columns count",
  452 + "columns-count-required": "Columns count is required.",
  453 + "min-columns-count-message": "Only 10 minimum column count is allowed.",
  454 + "max-columns-count-message": "Only 1000 maximum column count is allowed.",
  455 + "widgets-margins": "Margin between widgets",
  456 + "horizontal-margin": "Horizontal margin",
  457 + "horizontal-margin-required": "Horizontal margin value is required.",
  458 + "min-horizontal-margin-message": "Only 0 is allowed as minimum horizontal margin value.",
  459 + "max-horizontal-margin-message": "Only 50 is allowed as maximum horizontal margin value.",
  460 + "vertical-margin": "Vertical margin",
  461 + "vertical-margin-required": "Vertical margin value is required.",
  462 + "min-vertical-margin-message": "Only 0 is allowed as minimum vertical margin value.",
  463 + "max-vertical-margin-message": "Only 50 is allowed as maximum vertical margin value.",
  464 + "autofill-height": "Auto fill layout height",
  465 + "mobile-layout": "Mobile layout settings",
  466 + "mobile-row-height": "Mobile row height, px",
  467 + "mobile-row-height-required": "Mobile row height value is required.",
  468 + "min-mobile-row-height-message": "Only 5 pixels is allowed as minimum mobile row height value.",
  469 + "max-mobile-row-height-message": "Only 200 pixels is allowed as maximum mobile row height value.",
  470 + "display-title": "Display dashboard title",
  471 + "toolbar-always-open": "Keep toolbar opened",
  472 + "title-color": "Title color",
  473 + "display-dashboards-selection": "Display dashboards selection",
  474 + "display-entities-selection": "Display entities selection",
  475 + "display-dashboard-timewindow": "Display timewindow",
  476 + "display-dashboard-export": "Display export",
  477 + "import": "Import dashboard",
  478 + "export": "Export dashboard",
  479 + "export-failed-error": "Unable to export dashboard: {{error}}",
  480 + "create-new-dashboard": "Create new dashboard",
  481 + "dashboard-file": "Dashboard file",
  482 + "invalid-dashboard-file-error": "Unable to import dashboard: Invalid dashboard data structure.",
  483 + "dashboard-import-missing-aliases-title": "Configure aliases used by imported dashboard",
  484 + "create-new-widget": "Create new widget",
  485 + "import-widget": "Import widget",
  486 + "widget-file": "Widget file",
  487 + "invalid-widget-file-error": "Unable to import widget: Invalid widget data structure.",
  488 + "widget-import-missing-aliases-title": "Configure aliases used by imported widget",
  489 + "open-toolbar": "Open dashboard toolbar",
  490 + "close-toolbar": "Close toolbar",
  491 + "configuration-error": "Configuration error",
  492 + "alias-resolution-error-title": "Dashboard aliases configuration error",
  493 + "invalid-aliases-config": "Unable to find any devices matching to some of the aliases filter.<br/>Please contact your administrator in order to resolve this issue.",
  494 + "select-devices": "Select devices",
  495 + "assignedToCustomer": "Assigned to customer",
  496 + "assignedToCustomers": "Assigned to customers",
  497 + "public": "Public",
  498 + "public-link": "Public link",
  499 + "copy-public-link": "Copy public link",
  500 + "public-link-copied-message": "Dashboard public link has been copied to clipboard",
  501 + "manage-states": "Manage dashboard states",
  502 + "states": "Dashboard states",
  503 + "search-states": "Search dashboard states",
  504 + "selected-states": "{ count, select, 1 {1 dashboard state} other {# dashboard states} } selected",
  505 + "edit-state": "Edit dashboard state",
  506 + "delete-state": "Delete dashboard state",
  507 + "add-state": "Add dashboard state",
  508 + "state": "Dashboard state",
  509 + "state-name": "Name",
  510 + "state-name-required": "Dashboard state name is required.",
  511 + "state-id": "State Id",
  512 + "state-id-required": "Dashboard state id is required.",
  513 + "state-id-exists": "Dashboard state with the same id is already exists.",
  514 + "is-root-state": "Root state",
  515 + "delete-state-title": "Delete dashboard state",
  516 + "delete-state-text": "Are you sure you want delete dashboard state with name '{{stateName}}'?",
  517 + "show-details": "Show details",
  518 + "hide-details": "Hide details",
  519 + "select-state": "Select target state",
  520 + "state-controller": "State controller"
  521 + },
  522 + "datakey": {
  523 + "settings": "Settings",
  524 + "advanced": "Advanced",
  525 + "label": "Label",
  526 + "color": "Color",
  527 + "units": "Special symbol to show next to value",
  528 + "decimals": "Number of digits after floating point",
  529 + "data-generation-func": "Data generation function",
  530 + "use-data-post-processing-func": "Use data post-processing function",
  531 + "configuration": "Data key configuration",
  532 + "timeseries": "Timeseries",
  533 + "attributes": "Attributes",
  534 + "alarm": "Alarm fields",
  535 + "timeseries-required": "Entity timeseries are required.",
  536 + "timeseries-or-attributes-required": "Entity timeseries/attributes are required.",
  537 + "maximum-timeseries-or-attributes": "Maximum { count, select, 1 {1 timeseries/attribute is allowed.} other {# timeseries/attributes are allowed} }",
  538 + "alarm-fields-required": "Alarm fields are required.",
  539 + "function-types": "Function types",
  540 + "function-types-required": "Function types are required.",
  541 + "maximum-function-types": "Maximum { count, select, 1 {1 function type is allowed.} other {# function types are allowed} }"
  542 + },
  543 + "datasource": {
  544 + "type": "Datasource type",
  545 + "name": "Name",
  546 + "add-datasource-prompt": "Please add datasource"
  547 + },
  548 + "details": {
  549 + "edit-mode": "Edit mode",
  550 + "toggle-edit-mode": "Toggle edit mode"
  551 + },
  552 + "device": {
  553 + "device": "Device",
  554 + "device-required": "Device is required.",
  555 + "devices": "Devices",
  556 + "management": "Device management",
  557 + "view-devices": "View Devices",
  558 + "device-alias": "Device alias",
  559 + "aliases": "Device aliases",
  560 + "no-alias-matching": "'{{alias}}' not found.",
  561 + "no-aliases-found": "No aliases found.",
  562 + "no-key-matching": "'{{key}}' not found.",
  563 + "no-keys-found": "No keys found.",
  564 + "create-new-alias": "Create a new one!",
  565 + "create-new-key": "Create a new one!",
  566 + "duplicate-alias-error": "Duplicate alias found '{{alias}}'.<br>Device aliases must be unique whithin the dashboard.",
  567 + "configure-alias": "Configure '{{alias}}' alias",
  568 + "no-devices-matching": "No devices matching '{{entity}}' were found.",
  569 + "alias": "Alias",
  570 + "alias-required": "Device alias is required.",
  571 + "remove-alias": "Remove device alias",
  572 + "add-alias": "Add device alias",
  573 + "name-starts-with": "Device name starts with",
  574 + "device-list": "Device list",
  575 + "use-device-name-filter": "Use filter",
  576 + "device-list-empty": "No devices selected.",
  577 + "device-name-filter-required": "Device name filter is required.",
  578 + "device-name-filter-no-device-matched": "No devices starting with '{{device}}' were found.",
  579 + "add": "Add Device",
  580 + "assign-to-customer": "Assign to customer",
  581 + "assign-device-to-customer": "Assign Device(s) To Customer",
  582 + "assign-device-to-customer-text": "Please select the devices to assign to the customer",
  583 + "make-public": "Make device public",
  584 + "make-private": "Make device private",
  585 + "no-devices-text": "No devices found",
  586 + "assign-to-customer-text": "Please select the customer to assign the device(s)",
  587 + "device-details": "Device details",
  588 + "add-device-text": "Add new device",
  589 + "credentials": "Credentials",
  590 + "manage-credentials": "Manage credentials",
  591 + "delete": "Delete device",
  592 + "assign-devices": "Assign devices",
  593 + "assign-devices-text": "Assign { count, select, 1 {1 device} other {# devices} } to customer",
  594 + "delete-devices": "Delete devices",
  595 + "unassign-from-customer": "Unassign from customer",
  596 + "unassign-devices": "Unassign devices",
  597 + "unassign-devices-action-title": "Unassign { count, select, 1 {1 device} other {# devices} } from customer",
  598 + "assign-new-device": "Assign new device",
  599 + "make-public-device-title": "Are you sure you want to make the device '{{deviceName}}' public?",
  600 + "make-public-device-text": "After the confirmation the device and all its data will be made public and accessible by others.",
  601 + "make-private-device-title": "Are you sure you want to make the device '{{deviceName}}' private?",
  602 + "make-private-device-text": "After the confirmation the device and all its data will be made private and won't be accessible by others.",
  603 + "view-credentials": "View credentials",
  604 + "delete-device-title": "Are you sure you want to delete the device '{{deviceName}}'?",
  605 + "delete-device-text": "Be careful, after the confirmation the device and all related data will become unrecoverable.",
  606 + "delete-devices-title": "Are you sure you want to delete { count, select, 1 {1 device} other {# devices} }?",
  607 + "delete-devices-action-title": "Delete { count, select, 1 {1 device} other {# devices} }",
  608 + "delete-devices-text": "Be careful, after the confirmation all selected devices will be removed and all related data will become unrecoverable.",
  609 + "unassign-device-title": "Are you sure you want to unassign the device '{{deviceName}}'?",
  610 + "unassign-device-text": "After the confirmation the device will be unassigned and won't be accessible by the customer.",
  611 + "unassign-device": "Unassign device",
  612 + "unassign-devices-title": "Are you sure you want to unassign { count, select, 1 {1 device} other {# devices} }?",
  613 + "unassign-devices-text": "After the confirmation all selected devices will be unassigned and won't be accessible by the customer.",
  614 + "device-credentials": "Device Credentials",
  615 + "credentials-type": "Credentials type",
  616 + "access-token": "Access token",
  617 + "access-token-required": "Access token is required.",
  618 + "access-token-invalid": "Access token length must be from 1 to 20 characters.",
  619 + "rsa-key": "RSA public key",
  620 + "rsa-key-required": "RSA public key is required.",
  621 + "secret": "Secret",
  622 + "secret-required": "Secret is required.",
  623 + "device-type": "Device type",
  624 + "device-type-required": "Device type is required.",
  625 + "select-device-type": "Select device type",
  626 + "enter-device-type": "Enter device type",
  627 + "any-device": "Any device",
  628 + "no-device-types-matching": "No device types matching '{{entitySubtype}}' were found.",
  629 + "device-type-list-empty": "No device types selected.",
  630 + "device-types": "Device types",
  631 + "name": "Name",
  632 + "name-required": "Name is required.",
  633 + "description": "Description",
  634 + "events": "Events",
  635 + "details": "Details",
  636 + "copyId": "Copy device Id",
  637 + "copyAccessToken": "Copy access token",
  638 + "idCopiedMessage": "Device Id has been copied to clipboard",
  639 + "accessTokenCopiedMessage": "Device access token has been copied to clipboard",
  640 + "assignedToCustomer": "Assigned to customer",
  641 + "unable-delete-device-alias-title": "Unable to delete device alias",
  642 + "unable-delete-device-alias-text": "Device alias '{{deviceAlias}}' can't be deleted as it used by the following widget(s):<br/>{{widgetsList}}",
  643 + "is-gateway": "Is gateway",
  644 + "public": "Public",
  645 + "device-public": "Device is public",
  646 + "select-device": "Select device"
  647 + },
  648 + "dialog": {
  649 + "close": "Close dialog"
  650 + },
  651 + "error": {
  652 + "unable-to-connect": "Unable to connect to the server! Please check your internet connection.",
  653 + "unhandled-error-code": "Unhandled error code: {{errorCode}}",
  654 + "unknown-error": "Unknown error"
  655 + },
  656 + "entity": {
  657 + "entity": "Entity",
  658 + "entities": "Entities",
  659 + "aliases": "Entity aliases",
  660 + "entity-alias": "Entity alias",
  661 + "unable-delete-entity-alias-title": "Unable to delete entity alias",
  662 + "unable-delete-entity-alias-text": "Entity alias '{{entityAlias}}' can't be deleted as it used by the following widget(s):<br/>{{widgetsList}}",
  663 + "duplicate-alias-error": "Duplicate alias found '{{alias}}'.<br>Entity aliases must be unique whithin the dashboard.",
  664 + "missing-entity-filter-error": "Filter is missing for alias '{{alias}}'.",
  665 + "configure-alias": "Configure '{{alias}}' alias",
  666 + "alias": "Alias",
  667 + "alias-required": "Entity alias is required.",
  668 + "remove-alias": "Remove entity alias",
  669 + "add-alias": "Add entity alias",
  670 + "entity-list": "Entity list",
  671 + "entity-type": "Entity type",
  672 + "entity-types": "Entity types",
  673 + "entity-type-list": "Entity type list",
  674 + "any-entity": "Any entity",
  675 + "enter-entity-type": "Enter entity type",
  676 + "no-entities-matching": "No entities matching '{{entity}}' were found.",
  677 + "no-entity-types-matching": "No entity types matching '{{entityType}}' were found.",
  678 + "name-starts-with": "Name starts with",
  679 + "use-entity-name-filter": "Use filter",
  680 + "entity-list-empty": "No entities selected.",
  681 + "entity-type-list-empty": "No entity types selected.",
  682 + "entity-name-filter-required": "Entity name filter is required.",
  683 + "entity-name-filter-no-entity-matched": "No entities starting with '{{entity}}' were found.",
  684 + "all-subtypes": "All",
  685 + "select-entities": "Select entities",
  686 + "no-aliases-found": "No aliases found.",
  687 + "no-alias-matching": "'{{alias}}' not found.",
  688 + "create-new-alias": "Create a new one!",
  689 + "key": "Key",
  690 + "key-name": "Key name",
  691 + "no-keys-found": "No keys found.",
  692 + "no-key-matching": "'{{key}}' not found.",
  693 + "create-new-key": "Create a new one!",
  694 + "type": "Type",
  695 + "type-required": "Entity type is required.",
  696 + "type-device": "Device",
  697 + "type-devices": "Devices",
  698 + "list-of-devices": "{ count, select, 1 {One device} other {List of # devices} }",
  699 + "device-name-starts-with": "Devices whose names start with '{{prefix}}'",
  700 + "type-asset": "Asset",
  701 + "type-assets": "Assets",
  702 + "list-of-assets": "{ count, select, 1 {One asset} other {List of # assets} }",
  703 + "asset-name-starts-with": "Assets whose names start with '{{prefix}}'",
  704 + "type-rule": "Rule",
  705 + "type-rules": "Rules",
  706 + "list-of-rules": "{ count, select, 1 {One rule} other {List of # rules} }",
  707 + "rule-name-starts-with": "Rules whose names start with '{{prefix}}'",
  708 + "type-plugin": "Plugin",
  709 + "type-plugins": "Plugins",
  710 + "list-of-plugins": "{ count, select, 1 {One plugin} other {List of # plugins} }",
  711 + "plugin-name-starts-with": "Plugins whose names start with '{{prefix}}'",
  712 + "type-tenant": "Tenant",
  713 + "type-tenants": "Tenants",
  714 + "list-of-tenants": "{ count, select, 1 {One tenant} other {List of # tenants} }",
  715 + "tenant-name-starts-with": "Tenants whose names start with '{{prefix}}'",
  716 + "type-customer": "Customer",
  717 + "type-customers": "Customers",
  718 + "list-of-customers": "{ count, select, 1 {One customer} other {List of # customers} }",
  719 + "customer-name-starts-with": "Customers whose names start with '{{prefix}}'",
  720 + "type-user": "User",
  721 + "type-users": "Users",
  722 + "list-of-users": "{ count, select, 1 {One user} other {List of # users} }",
  723 + "user-name-starts-with": "Users whose names start with '{{prefix}}'",
  724 + "type-dashboard": "Dashboard",
  725 + "type-dashboards": "Dashboards",
  726 + "list-of-dashboards": "{ count, select, 1 {One dashboard} other {List of # dashboards} }",
  727 + "dashboard-name-starts-with": "Dashboards whose names start with '{{prefix}}'",
  728 + "type-alarm": "Alarm",
  729 + "type-alarms": "Alarms",
  730 + "list-of-alarms": "{ count, select, 1 {One alarms} other {List of # alarms} }",
  731 + "alarm-name-starts-with": "Alarms whose names start with '{{prefix}}'",
  732 + "type-rulechain": "Rule chain",
  733 + "type-rulechains": "Rule chains",
  734 + "list-of-rulechains": "{ count, select, 1 {One rule chain} other {List of # rule chains} }",
  735 + "rulechain-name-starts-with": "Rule chains whose names start with '{{prefix}}'",
  736 + "type-rulenode": "Rule node",
  737 + "type-rulenodes": "Rule nodes",
  738 + "list-of-rulenodes": "{ count, select, 1 {One rule node} other {List of # rule nodes} }",
  739 + "rulenode-name-starts-with": "Rule nodes whose names start with '{{prefix}}'",
  740 + "type-current-customer": "Current Customer",
  741 + "search": "Search entities",
  742 + "selected-entities": "{ count, select, 1 {1 entity} other {# entities} } selected",
  743 + "entity-name": "Entity name",
  744 + "details": "Entity details",
  745 + "no-entities-prompt": "No entities found",
  746 + "no-data": "No data to display"
  747 + },
  748 + "event": {
  749 + "event-type": "Event type",
  750 + "type-error": "Error",
  751 + "type-lc-event": "Lifecycle event",
  752 + "type-stats": "Statistics",
  753 + "type-debug-rule-node": "Debug",
  754 + "type-debug-rule-chain": "Debug",
  755 + "no-events-prompt": "No events found",
  756 + "error": "Error",
  757 + "alarm": "Alarm",
  758 + "event-time": "Event time",
  759 + "server": "Server",
  760 + "body": "Body",
  761 + "method": "Method",
  762 + "type": "Type",
  763 + "entity": "Entity",
  764 + "message-id": "Message Id",
  765 + "message-type": "Message Type",
  766 + "data-type": "Data Type",
  767 + "relation-type": "Relation Type",
  768 + "metadata": "Metadata",
  769 + "data": "Data",
  770 + "event": "Event",
  771 + "status": "Status",
  772 + "success": "Success",
  773 + "failed": "Failed",
  774 + "messages-processed": "Messages processed",
  775 + "errors-occurred": "Errors occurred"
  776 + },
  777 + "extension": {
  778 + "extensions": "Extensions",
  779 + "selected-extensions": "{ count, select, 1 {1 extension} other {# extensions} } selected",
  780 + "type": "Type",
  781 + "key": "Key",
  782 + "value": "Value",
  783 + "id": "Id",
  784 + "extension-id": "Extension id",
  785 + "extension-type": "Extension type",
  786 + "transformer-json": "JSON *",
  787 + "unique-id-required": "Current extension id already exists.",
  788 + "delete": "Delete extension",
  789 + "add": "Add extension",
  790 + "edit": "Edit extension",
  791 + "delete-extension-title": "Are you sure you want to delete the extension '{{extensionId}}'?",
  792 + "delete-extension-text": "Be careful, after the confirmation the extension and all related data will become unrecoverable.",
  793 + "delete-extensions-title": "Are you sure you want to delete { count, select, 1 {1 extension} other {# extensions} }?",
  794 + "delete-extensions-text": "Be careful, after the confirmation all selected extensions will be removed.",
  795 + "converters": "Converters",
  796 + "converter-id": "Converter id",
  797 + "configuration": "Configuration",
  798 + "converter-configurations": "Converter configurations",
  799 + "token": "Security token",
  800 + "add-converter": "Add converter",
  801 + "add-config": "Add converter configuration",
  802 + "device-name-expression": "Device name expression",
  803 + "device-type-expression": "Device type expression",
  804 + "custom": "Custom",
  805 + "to-double": "To Double",
  806 + "transformer": "Transformer",
  807 + "json-required": "Transformer json is required.",
  808 + "json-parse": "Unable to parse transformer json.",
  809 + "attributes": "Attributes",
  810 + "add-attribute": "Add attribute",
  811 + "add-map": "Add mapping element",
  812 + "timeseries": "Timeseries",
  813 + "add-timeseries": "Add timeseries",
  814 + "field-required": "Field is required",
  815 + "brokers": "Brokers",
  816 + "add-broker": "Add broker",
  817 + "host": "Host",
  818 + "port": "Port",
  819 + "port-range": "Port should be in a range from 1 to 65535.",
  820 + "ssl": "Ssl",
  821 + "credentials": "Credentials",
  822 + "username": "Username",
  823 + "password": "Password",
  824 + "retry-interval": "Retry interval in milliseconds",
  825 + "anonymous": "Anonymous",
  826 + "basic": "Basic",
  827 + "pem": "PEM",
  828 + "ca-cert": "CA certificate file *",
  829 + "private-key": "Private key file *",
  830 + "cert": "Certificate file *",
  831 + "no-file": "No file selected.",
  832 + "drop-file": "Drop a file or click to select a file to upload.",
  833 + "mapping": "Mapping",
  834 + "topic-filter": "Topic filter",
  835 + "converter-type": "Converter type",
  836 + "converter-json": "Json",
  837 + "json-name-expression": "Device name json expression",
  838 + "topic-name-expression": "Device name topic expression",
  839 + "json-type-expression": "Device type json expression",
  840 + "topic-type-expression": "Device type topic expression",
  841 + "attribute-key-expression": "Attribute key expression",
  842 + "attr-json-key-expression": "Attribute key json expression",
  843 + "attr-topic-key-expression": "Attribute key topic expression",
  844 + "request-id-expression": "Request id expression",
  845 + "request-id-json-expression": "Request id json expression",
  846 + "request-id-topic-expression": "Request id topic expression",
  847 + "response-topic-expression": "Response topic expression",
  848 + "value-expression": "Value expression",
  849 + "topic": "Topic",
  850 + "timeout": "Timeout in milliseconds",
  851 + "converter-json-required": "Converter json is required.",
  852 + "converter-json-parse": "Unable to parse converter json.",
  853 + "filter-expression": "Filter expression",
  854 + "connect-requests": "Connect requests",
  855 + "add-connect-request": "Add connect request",
  856 + "disconnect-requests": "Disconnect requests",
  857 + "add-disconnect-request": "Add disconnect request",
  858 + "attribute-requests": "Attribute requests",
  859 + "add-attribute-request": "Add attribute request",
  860 + "attribute-updates": "Attribute updates",
  861 + "add-attribute-update": "Add attribute update",
  862 + "server-side-rpc": "Server side RPC",
  863 + "add-server-side-rpc-request": "Add server-side RPC request",
  864 + "device-name-filter": "Device name filter",
  865 + "attribute-filter": "Attribute filter",
  866 + "method-filter": "Method filter",
  867 + "request-topic-expression": "Request topic expression",
  868 + "response-timeout": "Response timeout in milliseconds",
  869 + "topic-expression": "Topic expression",
  870 + "client-scope": "Client scope",
  871 + "add-device": "Add device",
  872 + "opc-server": "Servers",
  873 + "opc-add-server": "Add server",
  874 + "opc-add-server-prompt": "Please add server",
  875 + "opc-application-name": "Application name",
  876 + "opc-application-uri": "Application uri",
  877 + "opc-scan-period-in-seconds": "Scan period in seconds",
  878 + "opc-security": "Security",
  879 + "opc-identity": "Identity",
  880 + "opc-keystore": "Keystore",
  881 + "opc-type": "Type",
  882 + "opc-keystore-type": "Type",
  883 + "opc-keystore-location": "Location *",
  884 + "opc-keystore-password": "Password",
  885 + "opc-keystore-alias": "Alias",
  886 + "opc-keystore-key-password": "Key password",
  887 + "opc-device-node-pattern": "Device node pattern",
  888 + "opc-device-name-pattern": "Device name pattern",
  889 + "modbus-server": "Servers/slaves",
  890 + "modbus-add-server": "Add server/slave",
  891 + "modbus-add-server-prompt": "Please add server/slave",
  892 + "modbus-transport": "Transport",
  893 + "modbus-port-name": "Serial port name",
  894 + "modbus-encoding": "Encoding",
  895 + "modbus-parity": "Parity",
  896 + "modbus-baudrate": "Baud rate",
  897 + "modbus-databits": "Data bits",
  898 + "modbus-stopbits": "Stop bits",
  899 + "modbus-databits-range": "Data bits should be in a range from 7 to 8.",
  900 + "modbus-stopbits-range": "Stop bits should be in a range from 1 to 2.",
  901 + "modbus-unit-id": "Unit ID",
  902 + "modbus-unit-id-range": "Unit ID should be in a range from 1 to 247.",
  903 + "modbus-device-name": "Device name",
  904 + "modbus-poll-period": "Poll period (ms)",
  905 + "modbus-attributes-poll-period": "Attributes poll period (ms)",
  906 + "modbus-timeseries-poll-period": "Timeseries poll period (ms)",
  907 + "modbus-poll-period-range": "Poll period should be positive value.",
  908 + "modbus-tag": "Tag",
  909 + "modbus-function": "Function",
  910 + "modbus-register-address": "Register address",
  911 + "modbus-register-address-range": "Register address should be in a range from 0 to 65535.",
  912 + "modbus-register-bit-index": "Bit index",
  913 + "modbus-register-bit-index-range": "Bit index should be in a range from 0 to 15.",
  914 + "modbus-register-count": "Register count",
  915 + "modbus-register-count-range": "Register count should be a positive value.",
  916 + "modbus-byte-order": "Byte order",
17 917
18 -export default angular.module('thingsboard.locale', [])  
19 - .factory('tbMissingTranslationHandler', ThingsboardMissingTranslateHandler)  
20 - .constant('locales',  
21 - {  
22 - 'en_US': {  
23 - "access": {  
24 - "unauthorized": "Unauthorized",  
25 - "unauthorized-access": "Unauthorized Access",  
26 - "unauthorized-access-text": "You should sign in to have access to this resource!",  
27 - "access-forbidden": "Access Forbidden",  
28 - "access-forbidden-text": "You haven't access rights to this location!<br/>Try to sign in with different user if you still wish to gain access to this location.",  
29 - "refresh-token-expired": "Session has expired",  
30 - "refresh-token-failed": "Unable to refresh session"  
31 - },  
32 - "action": {  
33 - "activate": "Activate",  
34 - "suspend": "Suspend",  
35 - "save": "Save",  
36 - "saveAs": "Save as",  
37 - "cancel": "Cancel",  
38 - "ok": "OK",  
39 - "delete": "Delete",  
40 - "add": "Add",  
41 - "yes": "Yes",  
42 - "no": "No",  
43 - "update": "Update",  
44 - "remove": "Remove",  
45 - "search": "Search",  
46 - "clear-search": "Clear search",  
47 - "assign": "Assign",  
48 - "unassign": "Unassign",  
49 - "share": "Share",  
50 - "make-private": "Make private",  
51 - "apply": "Apply",  
52 - "apply-changes": "Apply changes",  
53 - "edit-mode": "Edit mode",  
54 - "enter-edit-mode": "Enter edit mode",  
55 - "decline-changes": "Decline changes",  
56 - "close": "Close",  
57 - "back": "Back",  
58 - "run": "Run",  
59 - "sign-in": "Sign in!",  
60 - "edit": "Edit",  
61 - "view": "View",  
62 - "create": "Create",  
63 - "drag": "Drag",  
64 - "refresh": "Refresh",  
65 - "undo": "Undo",  
66 - "copy": "Copy",  
67 - "paste": "Paste",  
68 - "copy-reference": "Copy reference",  
69 - "paste-reference": "Paste reference",  
70 - "import": "Import",  
71 - "export": "Export",  
72 - "share-via": "Share via {{provider}}"  
73 - },  
74 - "aggregation": {  
75 - "aggregation": "Aggregation",  
76 - "function": "Data aggregation function",  
77 - "limit": "Max values",  
78 - "group-interval": "Grouping interval",  
79 - "min": "Min",  
80 - "max": "Max",  
81 - "avg": "Average",  
82 - "sum": "Sum",  
83 - "count": "Count",  
84 - "none": "None"  
85 - },  
86 - "admin": {  
87 - "general": "General",  
88 - "general-settings": "General Settings",  
89 - "outgoing-mail": "Outgoing Mail",  
90 - "outgoing-mail-settings": "Outgoing Mail Settings",  
91 - "system-settings": "System Settings",  
92 - "test-mail-sent": "Test mail was successfully sent!",  
93 - "base-url": "Base URL",  
94 - "base-url-required": "Base URL is required.",  
95 - "mail-from": "Mail From",  
96 - "mail-from-required": "Mail From is required.",  
97 - "smtp-protocol": "SMTP protocol",  
98 - "smtp-host": "SMTP host",  
99 - "smtp-host-required": "SMTP host is required.",  
100 - "smtp-port": "SMTP port",  
101 - "smtp-port-required": "You must supply a smtp port.",  
102 - "smtp-port-invalid": "That doesn't look like a valid smtp port.",  
103 - "timeout-msec": "Timeout (msec)",  
104 - "timeout-required": "Timeout is required.",  
105 - "timeout-invalid": "That doesn't look like a valid timeout.",  
106 - "enable-tls": "Enable TLS",  
107 - "send-test-mail": "Send test mail"  
108 - },  
109 - "alarm": {  
110 - "alarm": "Alarm",  
111 - "alarms": "Alarms",  
112 - "select-alarm": "Select alarm",  
113 - "no-alarms-matching": "No alarms matching '{{entity}}' were found.",  
114 - "alarm-required": "Alarm is required",  
115 - "alarm-status": "Alarm status",  
116 - "search-status": {  
117 - "ANY": "Any",  
118 - "ACTIVE": "Active",  
119 - "CLEARED": "Cleared",  
120 - "ACK": "Acknowledged",  
121 - "UNACK": "Unacknowledged"  
122 - },  
123 - "display-status": {  
124 - "ACTIVE_UNACK": "Active Unacknowledged",  
125 - "ACTIVE_ACK": "Active Acknowledged",  
126 - "CLEARED_UNACK": "Cleared Unacknowledged",  
127 - "CLEARED_ACK": "Cleared Acknowledged"  
128 - },  
129 - "no-alarms-prompt": "No alarms found",  
130 - "created-time": "Created time",  
131 - "type": "Type",  
132 - "severity": "Severity",  
133 - "originator": "Originator",  
134 - "originator-type": "Originator type",  
135 - "details": "Details",  
136 - "status": "Status",  
137 - "alarm-details": "Alarm details",  
138 - "start-time": "Start time",  
139 - "end-time": "End time",  
140 - "ack-time": "Acknowledged time",  
141 - "clear-time": "Cleared time",  
142 - "severity-critical": "Critical",  
143 - "severity-major": "Major",  
144 - "severity-minor": "Minor",  
145 - "severity-warning": "Warning",  
146 - "severity-indeterminate": "Indeterminate",  
147 - "acknowledge": "Acknowledge",  
148 - "clear": "Clear",  
149 - "search": "Search alarms",  
150 - "selected-alarms": "{ count, select, 1 {1 alarm} other {# alarms} } selected",  
151 - "no-data": "No data to display",  
152 - "polling-interval": "Alarms polling interval (sec)",  
153 - "polling-interval-required": "Alarms polling interval is required.",  
154 - "min-polling-interval-message": "At least 1 sec polling interval is allowed.",  
155 - "aknowledge-alarms-title": "Acknowledge { count, select, 1 {1 alarm} other {# alarms} }",  
156 - "aknowledge-alarms-text": "Are you sure you want to acknowledge { count, select, 1 {1 alarm} other {# alarms} }?",  
157 - "clear-alarms-title": "Clear { count, select, 1 {1 alarm} other {# alarms} }",  
158 - "clear-alarms-text": "Are you sure you want to clear { count, select, 1 {1 alarm} other {# alarms} }?"  
159 - },  
160 - "alias": {  
161 - "add": "Add alias",  
162 - "edit": "Edit alias",  
163 - "name": "Alias name",  
164 - "name-required": "Alias name is required",  
165 - "duplicate-alias": "Alias with same name is already exists.",  
166 - "filter-type-single-entity": "Single entity",  
167 - "filter-type-entity-list": "Entity list",  
168 - "filter-type-entity-name": "Entity name",  
169 - "filter-type-state-entity": "Entity from dashboard state",  
170 - "filter-type-state-entity-description": "Entity taken from dashboard state parameters",  
171 - "filter-type-asset-type": "Asset type",  
172 - "filter-type-asset-type-description": "Assets of type '{{assetType}}'",  
173 - "filter-type-asset-type-and-name-description": "Assets of type '{{assetType}}' and with name starting with '{{prefix}}'",  
174 - "filter-type-device-type": "Device type",  
175 - "filter-type-device-type-description": "Devices of type '{{deviceType}}'",  
176 - "filter-type-device-type-and-name-description": "Devices of type '{{deviceType}}' and with name starting with '{{prefix}}'",  
177 - "filter-type-relations-query": "Relations query",  
178 - "filter-type-relations-query-description": "{{entities}} that have {{relationType}} relation {{direction}} {{rootEntity}}",  
179 - "filter-type-asset-search-query": "Asset search query",  
180 - "filter-type-asset-search-query-description": "Assets with types {{assetTypes}} that have {{relationType}} relation {{direction}} {{rootEntity}}",  
181 - "filter-type-device-search-query": "Device search query",  
182 - "filter-type-device-search-query-description": "Devices with types {{deviceTypes}} that have {{relationType}} relation {{direction}} {{rootEntity}}",  
183 - "entity-filter": "Entity filter",  
184 - "resolve-multiple": "Resolve as multiple entities",  
185 - "filter-type": "Filter type",  
186 - "filter-type-required": "Filter type is required.",  
187 - "entity-filter-no-entity-matched": "No entities matching specified filter were found.",  
188 - "no-entity-filter-specified": "No entity filter specified",  
189 - "root-state-entity": "Use dashboard state entity as root",  
190 - "root-entity": "Root entity",  
191 - "state-entity-parameter-name": "State entity parameter name",  
192 - "default-state-entity": "Default state entity",  
193 - "default-entity-parameter-name": "By default",  
194 - "max-relation-level": "Max relation level",  
195 - "unlimited-level": "Unlimited level",  
196 - "state-entity": "Dashboard state entity",  
197 - "all-entities": "All entities",  
198 - "any-relation": "any"  
199 - },  
200 - "asset": {  
201 - "asset": "Asset",  
202 - "assets": "Assets",  
203 - "management": "Asset management",  
204 - "view-assets": "View Assets",  
205 - "add": "Add Asset",  
206 - "assign-to-customer": "Assign to customer",  
207 - "assign-asset-to-customer": "Assign Asset(s) To Customer",  
208 - "assign-asset-to-customer-text": "Please select the assets to assign to the customer",  
209 - "no-assets-text": "No assets found",  
210 - "assign-to-customer-text": "Please select the customer to assign the asset(s)",  
211 - "public": "Public",  
212 - "assignedToCustomer": "Assigned to customer",  
213 - "make-public": "Make asset public",  
214 - "make-private": "Make asset private",  
215 - "unassign-from-customer": "Unassign from customer",  
216 - "delete": "Delete asset",  
217 - "asset-public": "Asset is public",  
218 - "asset-type": "Asset type",  
219 - "asset-type-required": "Asset type is required.",  
220 - "select-asset-type": "Select asset type",  
221 - "enter-asset-type": "Enter asset type",  
222 - "any-asset": "Any asset",  
223 - "no-asset-types-matching": "No asset types matching '{{entitySubtype}}' were found.",  
224 - "asset-type-list-empty": "No asset types selected.",  
225 - "asset-types": "Asset types",  
226 - "name": "Name",  
227 - "name-required": "Name is required.",  
228 - "description": "Description",  
229 - "type": "Type",  
230 - "type-required": "Type is required.",  
231 - "details": "Details",  
232 - "events": "Events",  
233 - "add-asset-text": "Add new asset",  
234 - "asset-details": "Asset details",  
235 - "assign-assets": "Assign assets",  
236 - "assign-assets-text": "Assign { count, select, 1 {1 asset} other {# assets} } to customer",  
237 - "delete-assets": "Delete assets",  
238 - "unassign-assets": "Unassign assets",  
239 - "unassign-assets-action-title": "Unassign { count, select, 1 {1 asset} other {# assets} } from customer",  
240 - "assign-new-asset": "Assign new asset",  
241 - "delete-asset-title": "Are you sure you want to delete the asset '{{assetName}}'?",  
242 - "delete-asset-text": "Be careful, after the confirmation the asset and all related data will become unrecoverable.",  
243 - "delete-assets-title": "Are you sure you want to delete { count, select, 1 {1 asset} other {# assets} }?",  
244 - "delete-assets-action-title": "Delete { count, select, 1 {1 asset} other {# assets} }",  
245 - "delete-assets-text": "Be careful, after the confirmation all selected assets will be removed and all related data will become unrecoverable.",  
246 - "make-public-asset-title": "Are you sure you want to make the asset '{{assetName}}' public?",  
247 - "make-public-asset-text": "After the confirmation the asset and all its data will be made public and accessible by others.",  
248 - "make-private-asset-title": "Are you sure you want to make the asset '{{assetName}}' private?",  
249 - "make-private-asset-text": "After the confirmation the asset and all its data will be made private and won't be accessible by others.",  
250 - "unassign-asset-title": "Are you sure you want to unassign the asset '{{assetName}}'?",  
251 - "unassign-asset-text": "After the confirmation the asset will be unassigned and won't be accessible by the customer.",  
252 - "unassign-asset": "Unassign asset",  
253 - "unassign-assets-title": "Are you sure you want to unassign { count, select, 1 {1 asset} other {# assets} }?",  
254 - "unassign-assets-text": "After the confirmation all selected assets will be unassigned and won't be accessible by the customer.",  
255 - "copyId": "Copy asset Id",  
256 - "idCopiedMessage": "Asset Id has been copied to clipboard",  
257 - "select-asset": "Select asset",  
258 - "no-assets-matching": "No assets matching '{{entity}}' were found.",  
259 - "asset-required": "Asset is required",  
260 - "name-starts-with": "Asset name starts with"  
261 - },  
262 - "attribute": {  
263 - "attributes": "Attributes",  
264 - "latest-telemetry": "Latest telemetry",  
265 - "attributes-scope": "Entity attributes scope",  
266 - "scope-latest-telemetry": "Latest telemetry",  
267 - "scope-client": "Client attributes",  
268 - "scope-server": "Server attributes",  
269 - "scope-shared": "Shared attributes",  
270 - "add": "Add attribute",  
271 - "key": "Key",  
272 - "last-update-time": "Last update time",  
273 - "key-required": "Attribute key is required.",  
274 - "value": "Value",  
275 - "value-required": "Attribute value is required.",  
276 - "delete-attributes-title": "Are you sure you want to delete { count, select, 1 {1 attribute} other {# attributes} }?",  
277 - "delete-attributes-text": "Be careful, after the confirmation all selected attributes will be removed.",  
278 - "delete-attributes": "Delete attributes",  
279 - "enter-attribute-value": "Enter attribute value",  
280 - "show-on-widget": "Show on widget",  
281 - "widget-mode": "Widget mode",  
282 - "next-widget": "Next widget",  
283 - "prev-widget": "Previous widget",  
284 - "add-to-dashboard": "Add to dashboard",  
285 - "add-widget-to-dashboard": "Add widget to dashboard",  
286 - "selected-attributes": "{ count, select, 1 {1 attribute} other {# attributes} } selected",  
287 - "selected-telemetry": "{ count, select, 1 {1 telemetry unit} other {# telemetry units} } selected"  
288 - },  
289 - "audit-log": {  
290 - "audit": "Audit",  
291 - "audit-logs": "Audit Logs",  
292 - "timestamp": "Timestamp",  
293 - "entity-type": "Entity Type",  
294 - "entity-name": "Entity Name",  
295 - "user": "User",  
296 - "type": "Type",  
297 - "status": "Status",  
298 - "details": "Details",  
299 - "type-added": "Added",  
300 - "type-deleted": "Deleted",  
301 - "type-updated": "Updated",  
302 - "type-attributes-updated": "Attributes updated",  
303 - "type-attributes-deleted": "Attributes deleted",  
304 - "type-rpc-call": "RPC call",  
305 - "type-credentials-updated": "Credentials updated",  
306 - "type-assigned-to-customer": "Assigned to Customer",  
307 - "type-unassigned-from-customer": "Unassigned from Customer",  
308 - "type-activated": "Activated",  
309 - "type-suspended": "Suspended",  
310 - "type-credentials-read": "Credentials read",  
311 - "type-attributes-read": "Attributes read",  
312 - "status-success": "Success",  
313 - "status-failure": "Failure",  
314 - "audit-log-details": "Audit log details",  
315 - "no-audit-logs-prompt": "No logs found",  
316 - "action-data": "Action data",  
317 - "failure-details": "Failure details",  
318 - "search": "Search audit logs",  
319 - "clear-search": "Clear search"  
320 - },  
321 - "confirm-on-exit": {  
322 - "message": "You have unsaved changes. Are you sure you want to leave this page?",  
323 - "html-message": "You have unsaved changes.<br/>Are you sure you want to leave this page?",  
324 - "title": "Unsaved changes"  
325 - },  
326 - "contact": {  
327 - "country": "Country",  
328 - "city": "City",  
329 - "state": "State / Province",  
330 - "postal-code": "Zip / Postal Code",  
331 - "postal-code-invalid": "Invalid Zip / Postal Code format.",  
332 - "address": "Address",  
333 - "address2": "Address 2",  
334 - "phone": "Phone",  
335 - "email": "Email",  
336 - "no-address": "No address"  
337 - },  
338 - "common": {  
339 - "username": "Username",  
340 - "password": "Password",  
341 - "enter-username": "Enter username",  
342 - "enter-password": "Enter password",  
343 - "enter-search": "Enter search"  
344 - },  
345 - "content-type": {  
346 - "json": "Json",  
347 - "text": "Text",  
348 - "binary": "Binary (Base64)"  
349 - },  
350 - "customer": {  
351 - "customer": "Customer",  
352 - "customers": "Customers",  
353 - "management": "Customer management",  
354 - "dashboard": "Customer Dashboard",  
355 - "dashboards": "Customer Dashboards",  
356 - "devices": "Customer Devices",  
357 - "assets": "Customer Assets",  
358 - "public-dashboards": "Public Dashboards",  
359 - "public-devices": "Public Devices",  
360 - "public-assets": "Public Assets",  
361 - "add": "Add Customer",  
362 - "delete": "Delete customer",  
363 - "manage-customer-users": "Manage customer users",  
364 - "manage-customer-devices": "Manage customer devices",  
365 - "manage-customer-dashboards": "Manage customer dashboards",  
366 - "manage-public-devices": "Manage public devices",  
367 - "manage-public-dashboards": "Manage public dashboards",  
368 - "manage-customer-assets": "Manage customer assets",  
369 - "manage-public-assets": "Manage public assets",  
370 - "add-customer-text": "Add new customer",  
371 - "no-customers-text": "No customers found",  
372 - "customer-details": "Customer details",  
373 - "delete-customer-title": "Are you sure you want to delete the customer '{{customerTitle}}'?",  
374 - "delete-customer-text": "Be careful, after the confirmation the customer and all related data will become unrecoverable.",  
375 - "delete-customers-title": "Are you sure you want to delete { count, select, 1 {1 customer} other {# customers} }?",  
376 - "delete-customers-action-title": "Delete { count, select, 1 {1 customer} other {# customers} }",  
377 - "delete-customers-text": "Be careful, after the confirmation all selected customers will be removed and all related data will become unrecoverable.",  
378 - "manage-users": "Manage users",  
379 - "manage-assets": "Manage assets",  
380 - "manage-devices": "Manage devices",  
381 - "manage-dashboards": "Manage dashboards",  
382 - "title": "Title",  
383 - "title-required": "Title is required.",  
384 - "description": "Description",  
385 - "details": "Details",  
386 - "events": "Events",  
387 - "copyId": "Copy customer Id",  
388 - "idCopiedMessage": "Customer Id has been copied to clipboard",  
389 - "select-customer": "Select customer",  
390 - "no-customers-matching": "No customers matching '{{entity}}' were found.",  
391 - "customer-required": "Customer is required",  
392 - "select-default-customer": "Select default customer",  
393 - "default-customer": "Default customer",  
394 - "default-customer-required": "Default customer is required in order to debug dashboard on Tenant level"  
395 - },  
396 - "datetime": {  
397 - "date-from": "Date from",  
398 - "time-from": "Time from",  
399 - "date-to": "Date to",  
400 - "time-to": "Time to"  
401 - },  
402 - "dashboard": {  
403 - "dashboard": "Dashboard",  
404 - "dashboards": "Dashboards",  
405 - "management": "Dashboard management",  
406 - "view-dashboards": "View Dashboards",  
407 - "add": "Add Dashboard",  
408 - "assign-dashboard-to-customer": "Assign Dashboard(s) To Customer",  
409 - "assign-dashboard-to-customer-text": "Please select the dashboards to assign to the customer",  
410 - "assign-to-customer-text": "Please select the customer to assign the dashboard(s)",  
411 - "assign-to-customer": "Assign to customer",  
412 - "unassign-from-customer": "Unassign from customer",  
413 - "make-public": "Make dashboard public",  
414 - "make-private": "Make dashboard private",  
415 - "manage-assigned-customers": "Manage assigned customers",  
416 - "assigned-customers": "Assigned customers",  
417 - "assign-to-customers": "Assign Dashboard(s) To Customers",  
418 - "assign-to-customers-text": "Please select the customers to assign the dashboard(s)",  
419 - "unassign-from-customers": "Unassign Dashboard(s) From Customers",  
420 - "unassign-from-customers-text": "Please select the customers to unassign from the dashboard(s)",  
421 - "no-dashboards-text": "No dashboards found",  
422 - "no-widgets": "No widgets configured",  
423 - "add-widget": "Add new widget",  
424 - "title": "Title",  
425 - "select-widget-title": "Select widget",  
426 - "select-widget-subtitle": "List of available widget types",  
427 - "delete": "Delete dashboard",  
428 - "title-required": "Title is required.",  
429 - "description": "Description",  
430 - "details": "Details",  
431 - "dashboard-details": "Dashboard details",  
432 - "add-dashboard-text": "Add new dashboard",  
433 - "assign-dashboards": "Assign dashboards",  
434 - "assign-new-dashboard": "Assign new dashboard",  
435 - "assign-dashboards-text": "Assign { count, select, 1 {1 dashboard} other {# dashboards} } to customers",  
436 - "unassign-dashboards-action-text": "Unassign { count, select, 1 {1 dashboard} other {# dashboards} } from customers",  
437 - "delete-dashboards": "Delete dashboards",  
438 - "unassign-dashboards": "Unassign dashboards",  
439 - "unassign-dashboards-action-title": "Unassign { count, select, 1 {1 dashboard} other {# dashboards} } from customer",  
440 - "delete-dashboard-title": "Are you sure you want to delete the dashboard '{{dashboardTitle}}'?",  
441 - "delete-dashboard-text": "Be careful, after the confirmation the dashboard and all related data will become unrecoverable.",  
442 - "delete-dashboards-title": "Are you sure you want to delete { count, select, 1 {1 dashboard} other {# dashboards} }?",  
443 - "delete-dashboards-action-title": "Delete { count, select, 1 {1 dashboard} other {# dashboards} }",  
444 - "delete-dashboards-text": "Be careful, after the confirmation all selected dashboards will be removed and all related data will become unrecoverable.",  
445 - "unassign-dashboard-title": "Are you sure you want to unassign the dashboard '{{dashboardTitle}}'?",  
446 - "unassign-dashboard-text": "After the confirmation the dashboard will be unassigned and won't be accessible by the customer.",  
447 - "unassign-dashboard": "Unassign dashboard",  
448 - "unassign-dashboards-title": "Are you sure you want to unassign { count, select, 1 {1 dashboard} other {# dashboards} }?",  
449 - "unassign-dashboards-text": "After the confirmation all selected dashboards will be unassigned and won't be accessible by the customer.",  
450 - "public-dashboard-title": "Dashboard is now public",  
451 - "public-dashboard-text": "Your dashboard <b>{{dashboardTitle}}</b> is now public and accessible via next public <a href='{{publicLink}}' target='_blank'>link</a>:",  
452 - "public-dashboard-notice": "<b>Note:</b> Do not forget to make related devices public in order to access their data.",  
453 - "make-private-dashboard-title": "Are you sure you want to make the dashboard '{{dashboardTitle}}' private?",  
454 - "make-private-dashboard-text": "After the confirmation the dashboard will be made private and won't be accessible by others.",  
455 - "make-private-dashboard": "Make dashboard private",  
456 - "socialshare-text": "'{{dashboardTitle}}' powered by ThingsBoard",  
457 - "socialshare-title": "'{{dashboardTitle}}' powered by ThingsBoard",  
458 - "select-dashboard": "Select dashboard",  
459 - "no-dashboards-matching": "No dashboards matching '{{entity}}' were found.",  
460 - "dashboard-required": "Dashboard is required.",  
461 - "select-existing": "Select existing dashboard",  
462 - "create-new": "Create new dashboard",  
463 - "new-dashboard-title": "New dashboard title",  
464 - "open-dashboard": "Open dashboard",  
465 - "set-background": "Set background",  
466 - "background-color": "Background color",  
467 - "background-image": "Background image",  
468 - "background-size-mode": "Background size mode",  
469 - "no-image": "No image selected",  
470 - "drop-image": "Drop an image or click to select a file to upload.",  
471 - "settings": "Settings",  
472 - "columns-count": "Columns count",  
473 - "columns-count-required": "Columns count is required.",  
474 - "min-columns-count-message": "Only 10 minimum column count is allowed.",  
475 - "max-columns-count-message": "Only 1000 maximum column count is allowed.",  
476 - "widgets-margins": "Margin between widgets",  
477 - "horizontal-margin": "Horizontal margin",  
478 - "horizontal-margin-required": "Horizontal margin value is required.",  
479 - "min-horizontal-margin-message": "Only 0 is allowed as minimum horizontal margin value.",  
480 - "max-horizontal-margin-message": "Only 50 is allowed as maximum horizontal margin value.",  
481 - "vertical-margin": "Vertical margin",  
482 - "vertical-margin-required": "Vertical margin value is required.",  
483 - "min-vertical-margin-message": "Only 0 is allowed as minimum vertical margin value.",  
484 - "max-vertical-margin-message": "Only 50 is allowed as maximum vertical margin value.",  
485 - "autofill-height": "Auto fill layout height",  
486 - "mobile-layout": "Mobile layout settings",  
487 - "mobile-row-height": "Mobile row height, px",  
488 - "mobile-row-height-required": "Mobile row height value is required.",  
489 - "min-mobile-row-height-message": "Only 5 pixels is allowed as minimum mobile row height value.",  
490 - "max-mobile-row-height-message": "Only 200 pixels is allowed as maximum mobile row height value.",  
491 - "display-title": "Display dashboard title",  
492 - "toolbar-always-open": "Keep toolbar opened",  
493 - "title-color": "Title color",  
494 - "display-dashboards-selection": "Display dashboards selection",  
495 - "display-entities-selection": "Display entities selection",  
496 - "display-dashboard-timewindow": "Display timewindow",  
497 - "display-dashboard-export": "Display export",  
498 - "import": "Import dashboard",  
499 - "export": "Export dashboard",  
500 - "export-failed-error": "Unable to export dashboard: {{error}}",  
501 - "create-new-dashboard": "Create new dashboard",  
502 - "dashboard-file": "Dashboard file",  
503 - "invalid-dashboard-file-error": "Unable to import dashboard: Invalid dashboard data structure.",  
504 - "dashboard-import-missing-aliases-title": "Configure aliases used by imported dashboard",  
505 - "create-new-widget": "Create new widget",  
506 - "import-widget": "Import widget",  
507 - "widget-file": "Widget file",  
508 - "invalid-widget-file-error": "Unable to import widget: Invalid widget data structure.",  
509 - "widget-import-missing-aliases-title": "Configure aliases used by imported widget",  
510 - "open-toolbar": "Open dashboard toolbar",  
511 - "close-toolbar": "Close toolbar",  
512 - "configuration-error": "Configuration error",  
513 - "alias-resolution-error-title": "Dashboard aliases configuration error",  
514 - "invalid-aliases-config": "Unable to find any devices matching to some of the aliases filter.<br/>" +  
515 - "Please contact your administrator in order to resolve this issue.",  
516 - "select-devices": "Select devices",  
517 - "assignedToCustomer": "Assigned to customer",  
518 - "assignedToCustomers": "Assigned to customers",  
519 - "public": "Public",  
520 - "public-link": "Public link",  
521 - "copy-public-link": "Copy public link",  
522 - "public-link-copied-message": "Dashboard public link has been copied to clipboard",  
523 - "manage-states": "Manage dashboard states",  
524 - "states": "Dashboard states",  
525 - "search-states": "Search dashboard states",  
526 - "selected-states": "{ count, select, 1 {1 dashboard state} other {# dashboard states} } selected",  
527 - "edit-state": "Edit dashboard state",  
528 - "delete-state": "Delete dashboard state",  
529 - "add-state": "Add dashboard state",  
530 - "state": "Dashboard state",  
531 - "state-name": "Name",  
532 - "state-name-required": "Dashboard state name is required.",  
533 - "state-id": "State Id",  
534 - "state-id-required": "Dashboard state id is required.",  
535 - "state-id-exists": "Dashboard state with the same id is already exists.",  
536 - "is-root-state": "Root state",  
537 - "delete-state-title": "Delete dashboard state",  
538 - "delete-state-text": "Are you sure you want delete dashboard state with name '{{stateName}}'?",  
539 - "show-details": "Show details",  
540 - "hide-details": "Hide details",  
541 - "select-state": "Select target state",  
542 - "state-controller": "State controller"  
543 - },  
544 - "datakey": {  
545 - "settings": "Settings",  
546 - "advanced": "Advanced",  
547 - "label": "Label",  
548 - "color": "Color",  
549 - "units": "Special symbol to show next to value",  
550 - "decimals": "Number of digits after floating point",  
551 - "data-generation-func": "Data generation function",  
552 - "use-data-post-processing-func": "Use data post-processing function",  
553 - "configuration": "Data key configuration",  
554 - "timeseries": "Timeseries",  
555 - "attributes": "Attributes",  
556 - "alarm": "Alarm fields",  
557 - "timeseries-required": "Entity timeseries are required.",  
558 - "timeseries-or-attributes-required": "Entity timeseries/attributes are required.",  
559 - "maximum-timeseries-or-attributes": "Maximum { count, select, 1 {1 timeseries/attribute is allowed.} other {# timeseries/attributes are allowed} }",  
560 - "alarm-fields-required": "Alarm fields are required.",  
561 - "function-types": "Function types",  
562 - "function-types-required": "Function types are required.",  
563 - "maximum-function-types": "Maximum { count, select, 1 {1 function type is allowed.} other {# function types are allowed} }"  
564 - },  
565 - "datasource": {  
566 - "type": "Datasource type",  
567 - "name": "Name",  
568 - "add-datasource-prompt": "Please add datasource"  
569 - },  
570 - "details": {  
571 - "edit-mode": "Edit mode",  
572 - "toggle-edit-mode": "Toggle edit mode"  
573 - },  
574 - "device": {  
575 - "device": "Device",  
576 - "device-required": "Device is required.",  
577 - "devices": "Devices",  
578 - "management": "Device management",  
579 - "view-devices": "View Devices",  
580 - "device-alias": "Device alias",  
581 - "aliases": "Device aliases",  
582 - "no-alias-matching": "'{{alias}}' not found.",  
583 - "no-aliases-found": "No aliases found.",  
584 - "no-key-matching": "'{{key}}' not found.",  
585 - "no-keys-found": "No keys found.",  
586 - "create-new-alias": "Create a new one!",  
587 - "create-new-key": "Create a new one!",  
588 - "duplicate-alias-error": "Duplicate alias found '{{alias}}'.<br>Device aliases must be unique whithin the dashboard.",  
589 - "configure-alias": "Configure '{{alias}}' alias",  
590 - "no-devices-matching": "No devices matching '{{entity}}' were found.",  
591 - "alias": "Alias",  
592 - "alias-required": "Device alias is required.",  
593 - "remove-alias": "Remove device alias",  
594 - "add-alias": "Add device alias",  
595 - "name-starts-with": "Device name starts with",  
596 - "device-list": "Device list",  
597 - "use-device-name-filter": "Use filter",  
598 - "device-list-empty": "No devices selected.",  
599 - "device-name-filter-required": "Device name filter is required.",  
600 - "device-name-filter-no-device-matched": "No devices starting with '{{device}}' were found.",  
601 - "add": "Add Device",  
602 - "assign-to-customer": "Assign to customer",  
603 - "assign-device-to-customer": "Assign Device(s) To Customer",  
604 - "assign-device-to-customer-text": "Please select the devices to assign to the customer",  
605 - "make-public": "Make device public",  
606 - "make-private": "Make device private",  
607 - "no-devices-text": "No devices found",  
608 - "assign-to-customer-text": "Please select the customer to assign the device(s)",  
609 - "device-details": "Device details",  
610 - "add-device-text": "Add new device",  
611 - "credentials": "Credentials",  
612 - "manage-credentials": "Manage credentials",  
613 - "delete": "Delete device",  
614 - "assign-devices": "Assign devices",  
615 - "assign-devices-text": "Assign { count, select, 1 {1 device} other {# devices} } to customer",  
616 - "delete-devices": "Delete devices",  
617 - "unassign-from-customer": "Unassign from customer",  
618 - "unassign-devices": "Unassign devices",  
619 - "unassign-devices-action-title": "Unassign { count, select, 1 {1 device} other {# devices} } from customer",  
620 - "assign-new-device": "Assign new device",  
621 - "make-public-device-title": "Are you sure you want to make the device '{{deviceName}}' public?",  
622 - "make-public-device-text": "After the confirmation the device and all its data will be made public and accessible by others.",  
623 - "make-private-device-title": "Are you sure you want to make the device '{{deviceName}}' private?",  
624 - "make-private-device-text": "After the confirmation the device and all its data will be made private and won't be accessible by others.",  
625 - "view-credentials": "View credentials",  
626 - "delete-device-title": "Are you sure you want to delete the device '{{deviceName}}'?",  
627 - "delete-device-text": "Be careful, after the confirmation the device and all related data will become unrecoverable.",  
628 - "delete-devices-title": "Are you sure you want to delete { count, select, 1 {1 device} other {# devices} }?",  
629 - "delete-devices-action-title": "Delete { count, select, 1 {1 device} other {# devices} }",  
630 - "delete-devices-text": "Be careful, after the confirmation all selected devices will be removed and all related data will become unrecoverable.",  
631 - "unassign-device-title": "Are you sure you want to unassign the device '{{deviceName}}'?",  
632 - "unassign-device-text": "After the confirmation the device will be unassigned and won't be accessible by the customer.",  
633 - "unassign-device": "Unassign device",  
634 - "unassign-devices-title": "Are you sure you want to unassign { count, select, 1 {1 device} other {# devices} }?",  
635 - "unassign-devices-text": "After the confirmation all selected devices will be unassigned and won't be accessible by the customer.",  
636 - "device-credentials": "Device Credentials",  
637 - "credentials-type": "Credentials type",  
638 - "access-token": "Access token",  
639 - "access-token-required": "Access token is required.",  
640 - "access-token-invalid": "Access token length must be from 1 to 20 characters.",  
641 - "rsa-key": "RSA public key",  
642 - "rsa-key-required": "RSA public key is required.",  
643 - "secret": "Secret",  
644 - "secret-required": "Secret is required.",  
645 - "device-type": "Device type",  
646 - "device-type-required": "Device type is required.",  
647 - "select-device-type": "Select device type",  
648 - "enter-device-type": "Enter device type",  
649 - "any-device": "Any device",  
650 - "no-device-types-matching": "No device types matching '{{entitySubtype}}' were found.",  
651 - "device-type-list-empty": "No device types selected.",  
652 - "device-types": "Device types",  
653 - "name": "Name",  
654 - "name-required": "Name is required.",  
655 - "description": "Description",  
656 - "events": "Events",  
657 - "details": "Details",  
658 - "copyId": "Copy device Id",  
659 - "copyAccessToken": "Copy access token",  
660 - "idCopiedMessage": "Device Id has been copied to clipboard",  
661 - "accessTokenCopiedMessage": "Device access token has been copied to clipboard",  
662 - "assignedToCustomer": "Assigned to customer",  
663 - "unable-delete-device-alias-title": "Unable to delete device alias",  
664 - "unable-delete-device-alias-text": "Device alias '{{deviceAlias}}' can't be deleted as it used by the following widget(s):<br/>{{widgetsList}}",  
665 - "is-gateway": "Is gateway",  
666 - "public": "Public",  
667 - "device-public": "Device is public",  
668 - "select-device": "Select device"  
669 - },  
670 - "dialog": {  
671 - "close": "Close dialog"  
672 - },  
673 - "error": {  
674 - "unable-to-connect": "Unable to connect to the server! Please check your internet connection.",  
675 - "unhandled-error-code": "Unhandled error code: {{errorCode}}",  
676 - "unknown-error": "Unknown error"  
677 - },  
678 - "entity": {  
679 - "entity": "Entity",  
680 - "entities": "Entities",  
681 - "aliases": "Entity aliases",  
682 - "entity-alias": "Entity alias",  
683 - "unable-delete-entity-alias-title": "Unable to delete entity alias",  
684 - "unable-delete-entity-alias-text": "Entity alias '{{entityAlias}}' can't be deleted as it used by the following widget(s):<br/>{{widgetsList}}",  
685 - "duplicate-alias-error": "Duplicate alias found '{{alias}}'.<br>Entity aliases must be unique whithin the dashboard.",  
686 - "missing-entity-filter-error": "Filter is missing for alias '{{alias}}'.",  
687 - "configure-alias": "Configure '{{alias}}' alias",  
688 - "alias": "Alias",  
689 - "alias-required": "Entity alias is required.",  
690 - "remove-alias": "Remove entity alias",  
691 - "add-alias": "Add entity alias",  
692 - "entity-list": "Entity list",  
693 - "entity-type": "Entity type",  
694 - "entity-types": "Entity types",  
695 - "entity-type-list": "Entity type list",  
696 - "any-entity": "Any entity",  
697 - "enter-entity-type": "Enter entity type",  
698 - "no-entities-matching": "No entities matching '{{entity}}' were found.",  
699 - "no-entity-types-matching": "No entity types matching '{{entityType}}' were found.",  
700 - "name-starts-with": "Name starts with",  
701 - "use-entity-name-filter": "Use filter",  
702 - "entity-list-empty": "No entities selected.",  
703 - "entity-type-list-empty": "No entity types selected.",  
704 - "entity-name-filter-required": "Entity name filter is required.",  
705 - "entity-name-filter-no-entity-matched": "No entities starting with '{{entity}}' were found.",  
706 - "all-subtypes": "All",  
707 - "select-entities": "Select entities",  
708 - "no-aliases-found": "No aliases found.",  
709 - "no-alias-matching": "'{{alias}}' not found.",  
710 - "create-new-alias": "Create a new one!",  
711 - "key": "Key",  
712 - "key-name": "Key name",  
713 - "no-keys-found": "No keys found.",  
714 - "no-key-matching": "'{{key}}' not found.",  
715 - "create-new-key": "Create a new one!",  
716 - "type": "Type",  
717 - "type-required": "Entity type is required.",  
718 - "type-device": "Device",  
719 - "type-devices": "Devices",  
720 - "list-of-devices": "{ count, select, 1 {One device} other {List of # devices} }",  
721 - "device-name-starts-with": "Devices whose names start with '{{prefix}}'",  
722 - "type-asset": "Asset",  
723 - "type-assets": "Assets",  
724 - "list-of-assets": "{ count, select, 1 {One asset} other {List of # assets} }",  
725 - "asset-name-starts-with": "Assets whose names start with '{{prefix}}'",  
726 - "type-rule": "Rule",  
727 - "type-rules": "Rules",  
728 - "list-of-rules": "{ count, select, 1 {One rule} other {List of # rules} }",  
729 - "rule-name-starts-with": "Rules whose names start with '{{prefix}}'",  
730 - "type-plugin": "Plugin",  
731 - "type-plugins": "Plugins",  
732 - "list-of-plugins": "{ count, select, 1 {One plugin} other {List of # plugins} }",  
733 - "plugin-name-starts-with": "Plugins whose names start with '{{prefix}}'",  
734 - "type-tenant": "Tenant",  
735 - "type-tenants": "Tenants",  
736 - "list-of-tenants": "{ count, select, 1 {One tenant} other {List of # tenants} }",  
737 - "tenant-name-starts-with": "Tenants whose names start with '{{prefix}}'",  
738 - "type-customer": "Customer",  
739 - "type-customers": "Customers",  
740 - "list-of-customers": "{ count, select, 1 {One customer} other {List of # customers} }",  
741 - "customer-name-starts-with": "Customers whose names start with '{{prefix}}'",  
742 - "type-user": "User",  
743 - "type-users": "Users",  
744 - "list-of-users": "{ count, select, 1 {One user} other {List of # users} }",  
745 - "user-name-starts-with": "Users whose names start with '{{prefix}}'",  
746 - "type-dashboard": "Dashboard",  
747 - "type-dashboards": "Dashboards",  
748 - "list-of-dashboards": "{ count, select, 1 {One dashboard} other {List of # dashboards} }",  
749 - "dashboard-name-starts-with": "Dashboards whose names start with '{{prefix}}'",  
750 - "type-alarm": "Alarm",  
751 - "type-alarms": "Alarms",  
752 - "list-of-alarms": "{ count, select, 1 {One alarms} other {List of # alarms} }",  
753 - "alarm-name-starts-with": "Alarms whose names start with '{{prefix}}'",  
754 - "type-rulechain": "Rule chain",  
755 - "type-rulechains": "Rule chains",  
756 - "list-of-rulechains": "{ count, select, 1 {One rule chain} other {List of # rule chains} }",  
757 - "rulechain-name-starts-with": "Rule chains whose names start with '{{prefix}}'",  
758 - "type-rulenode": "Rule node",  
759 - "type-rulenodes": "Rule nodes",  
760 - "list-of-rulenodes": "{ count, select, 1 {One rule node} other {List of # rule nodes} }",  
761 - "rulenode-name-starts-with": "Rule nodes whose names start with '{{prefix}}'",  
762 - "type-current-customer": "Current Customer",  
763 - "search": "Search entities",  
764 - "selected-entities": "{ count, select, 1 {1 entity} other {# entities} } selected",  
765 - "entity-name": "Entity name",  
766 - "details": "Entity details",  
767 - "no-entities-prompt": "No entities found",  
768 - "no-data": "No data to display"  
769 - },  
770 - "event": {  
771 - "event-type": "Event type",  
772 - "type-error": "Error",  
773 - "type-lc-event": "Lifecycle event",  
774 - "type-stats": "Statistics",  
775 - "type-debug-rule-node": "Debug",  
776 - "type-debug-rule-chain": "Debug",  
777 - "no-events-prompt": "No events found",  
778 - "error": "Error",  
779 - "alarm": "Alarm",  
780 - "event-time": "Event time",  
781 - "server": "Server",  
782 - "body": "Body",  
783 - "method": "Method",  
784 - "type": "Type",  
785 - "entity": "Entity",  
786 - "message-id": "Message Id",  
787 - "message-type": "Message Type",  
788 - "data-type": "Data Type",  
789 - "relation-type": "Relation Type",  
790 - "metadata": "Metadata",  
791 - "data": "Data",  
792 - "event": "Event",  
793 - "status": "Status",  
794 - "success": "Success",  
795 - "failed": "Failed",  
796 - "messages-processed": "Messages processed",  
797 - "errors-occurred": "Errors occurred"  
798 - },  
799 - "extension": {  
800 - "extensions": "Extensions",  
801 - "selected-extensions": "{ count, select, 1 {1 extension} other {# extensions} } selected",  
802 - "type": "Type",  
803 - "key": "Key",  
804 - "value": "Value",  
805 - "id": "Id",  
806 - "extension-id": "Extension id",  
807 - "extension-type": "Extension type",  
808 - "transformer-json": "JSON *",  
809 - "unique-id-required": "Current extension id already exists.",  
810 - "delete": "Delete extension",  
811 - "add": "Add extension",  
812 - "edit": "Edit extension",  
813 - "delete-extension-title": "Are you sure you want to delete the extension '{{extensionId}}'?",  
814 - "delete-extension-text": "Be careful, after the confirmation the extension and all related data will become unrecoverable.",  
815 - "delete-extensions-title": "Are you sure you want to delete { count, select, 1 {1 extension} other {# extensions} }?",  
816 - "delete-extensions-text": "Be careful, after the confirmation all selected extensions will be removed.",  
817 - "converters": "Converters",  
818 - "converter-id": "Converter id",  
819 - "configuration": "Configuration",  
820 - "converter-configurations": "Converter configurations",  
821 - "token": "Security token",  
822 - "add-converter": "Add converter",  
823 - "add-config": "Add converter configuration",  
824 - "device-name-expression": "Device name expression",  
825 - "device-type-expression": "Device type expression",  
826 - "custom": "Custom",  
827 - "to-double": "To Double",  
828 - "transformer": "Transformer",  
829 - "json-required": "Transformer json is required.",  
830 - "json-parse": "Unable to parse transformer json.",  
831 - "attributes": "Attributes",  
832 - "add-attribute": "Add attribute",  
833 - "add-map": "Add mapping element",  
834 - "timeseries": "Timeseries",  
835 - "add-timeseries": "Add timeseries",  
836 - "field-required": "Field is required",  
837 - "brokers": "Brokers",  
838 - "add-broker": "Add broker",  
839 - "host": "Host",  
840 - "port": "Port",  
841 - "port-range": "Port should be in a range from 1 to 65535.",  
842 - "ssl": "Ssl",  
843 - "credentials": "Credentials",  
844 - "username": "Username",  
845 - "password": "Password",  
846 - "retry-interval": "Retry interval in milliseconds",  
847 - "anonymous": "Anonymous",  
848 - "basic": "Basic",  
849 - "pem": "PEM",  
850 - "ca-cert": "CA certificate file *",  
851 - "private-key": "Private key file *",  
852 - "cert": "Certificate file *",  
853 - "no-file": "No file selected.",  
854 - "drop-file": "Drop a file or click to select a file to upload.",  
855 - "mapping": "Mapping",  
856 - "topic-filter": "Topic filter",  
857 - "converter-type": "Converter type",  
858 - "converter-json": "Json",  
859 - "json-name-expression": "Device name json expression",  
860 - "topic-name-expression": "Device name topic expression",  
861 - "json-type-expression": "Device type json expression",  
862 - "topic-type-expression": "Device type topic expression",  
863 - "attribute-key-expression": "Attribute key expression",  
864 - "attr-json-key-expression": "Attribute key json expression",  
865 - "attr-topic-key-expression": "Attribute key topic expression",  
866 - "request-id-expression": "Request id expression",  
867 - "request-id-json-expression": "Request id json expression",  
868 - "request-id-topic-expression": "Request id topic expression",  
869 - "response-topic-expression": "Response topic expression",  
870 - "value-expression": "Value expression",  
871 - "topic": "Topic",  
872 - "timeout": "Timeout in milliseconds",  
873 - "converter-json-required": "Converter json is required.",  
874 - "converter-json-parse": "Unable to parse converter json.",  
875 - "filter-expression": "Filter expression",  
876 - "connect-requests": "Connect requests",  
877 - "add-connect-request": "Add connect request",  
878 - "disconnect-requests": "Disconnect requests",  
879 - "add-disconnect-request": "Add disconnect request",  
880 - "attribute-requests": "Attribute requests",  
881 - "add-attribute-request": "Add attribute request",  
882 - "attribute-updates": "Attribute updates",  
883 - "add-attribute-update": "Add attribute update",  
884 - "server-side-rpc": "Server side RPC",  
885 - "add-server-side-rpc-request": "Add server-side RPC request",  
886 - "device-name-filter": "Device name filter",  
887 - "attribute-filter": "Attribute filter",  
888 - "method-filter": "Method filter",  
889 - "request-topic-expression": "Request topic expression",  
890 - "response-timeout": "Response timeout in milliseconds",  
891 - "topic-expression": "Topic expression",  
892 - "client-scope": "Client scope",  
893 - "add-device": "Add device",  
894 - "opc-server": "Servers",  
895 - "opc-add-server": "Add server",  
896 - "opc-add-server-prompt": "Please add server",  
897 - "opc-application-name": "Application name",  
898 - "opc-application-uri": "Application uri",  
899 - "opc-scan-period-in-seconds": "Scan period in seconds",  
900 - "opc-security": "Security",  
901 - "opc-identity": "Identity",  
902 - "opc-keystore": "Keystore",  
903 - "opc-type": "Type",  
904 - "opc-keystore-type": "Type",  
905 - "opc-keystore-location": "Location *",  
906 - "opc-keystore-password": "Password",  
907 - "opc-keystore-alias": "Alias",  
908 - "opc-keystore-key-password": "Key password",  
909 - "opc-device-node-pattern": "Device node pattern",  
910 - "opc-device-name-pattern": "Device name pattern",  
911 - "modbus-server": "Servers/slaves",  
912 - "modbus-add-server": "Add server/slave",  
913 - "modbus-add-server-prompt": "Please add server/slave",  
914 - "modbus-transport": "Transport",  
915 - "modbus-port-name": "Serial port name",  
916 - "modbus-encoding": "Encoding",  
917 - "modbus-parity": "Parity",  
918 - "modbus-baudrate": "Baud rate",  
919 - "modbus-databits": "Data bits",  
920 - "modbus-stopbits": "Stop bits",  
921 - "modbus-databits-range": "Data bits should be in a range from 7 to 8.",  
922 - "modbus-stopbits-range": "Stop bits should be in a range from 1 to 2.",  
923 - "modbus-unit-id": "Unit ID",  
924 - "modbus-unit-id-range": "Unit ID should be in a range from 1 to 247.",  
925 - "modbus-device-name": "Device name",  
926 - "modbus-poll-period": "Poll period (ms)",  
927 - "modbus-attributes-poll-period": "Attributes poll period (ms)",  
928 - "modbus-timeseries-poll-period": "Timeseries poll period (ms)",  
929 - "modbus-poll-period-range": "Poll period should be positive value.",  
930 - "modbus-tag": "Tag",  
931 - "modbus-function": "Function",  
932 - "modbus-register-address": "Register address",  
933 - "modbus-register-address-range": "Register address should be in a range from 0 to 65535.",  
934 - "modbus-register-bit-index": "Bit index",  
935 - "modbus-register-bit-index-range": "Bit index should be in a range from 0 to 15.",  
936 - "modbus-register-count": "Register count",  
937 - "modbus-register-count-range": "Register count should be a positive value.",  
938 - "modbus-byte-order": "Byte order", 918 + "sync": {
  919 + "status": "Status",
  920 + "sync": "Sync",
  921 + "not-sync": "Not sync",
  922 + "last-sync-time": "Last sync time",
  923 + "not-available": "Not available"
  924 + },
939 925
940 - "sync": {  
941 - "status": "Status",  
942 - "sync": "Sync",  
943 - "not-sync": "Not sync",  
944 - "last-sync-time": "Last sync time",  
945 - "not-available": "Not available"  
946 - },  
947 -  
948 - "export-extensions-configuration": "Export extensions configuration",  
949 - "import-extensions-configuration": "Import extensions configuration",  
950 - "import-extensions": "Import extensions",  
951 - "import-extension": "Import extension",  
952 - "export-extension": "Export extension",  
953 - "file": "Extensions file",  
954 - "invalid-file-error": "Invalid extension file"  
955 - },  
956 - "fullscreen": {  
957 - "expand": "Expand to fullscreen",  
958 - "exit": "Exit fullscreen",  
959 - "toggle": "Toggle fullscreen mode",  
960 - "fullscreen": "Fullscreen"  
961 - },  
962 - "function": {  
963 - "function": "Function"  
964 - },  
965 - "grid": {  
966 - "delete-item-title": "Are you sure you want to delete this item?",  
967 - "delete-item-text": "Be careful, after the confirmation this item and all related data will become unrecoverable.",  
968 - "delete-items-title": "Are you sure you want to delete { count, select, 1 {1 item} other {# items} }?",  
969 - "delete-items-action-title": "Delete { count, select, 1 {1 item} other {# items} }",  
970 - "delete-items-text": "Be careful, after the confirmation all selected items will be removed and all related data will become unrecoverable.",  
971 - "add-item-text": "Add new item",  
972 - "no-items-text": "No items found",  
973 - "item-details": "Item details",  
974 - "delete-item": "Delete Item",  
975 - "delete-items": "Delete Items",  
976 - "scroll-to-top": "Scroll to top"  
977 - },  
978 - "help": {  
979 - "goto-help-page": "Go to help page"  
980 - },  
981 - "home": {  
982 - "home": "Home",  
983 - "profile": "Profile",  
984 - "logout": "Logout",  
985 - "menu": "Menu",  
986 - "avatar": "Avatar",  
987 - "open-user-menu": "Open user menu"  
988 - },  
989 - "import": {  
990 - "no-file": "No file selected",  
991 - "drop-file": "Drop a JSON file or click to select a file to upload."  
992 - },  
993 - "item": {  
994 - "selected": "Selected"  
995 - },  
996 - "js-func": {  
997 - "no-return-error": "Function must return value!",  
998 - "return-type-mismatch": "Function must return value of '{{type}}' type!",  
999 - "tidy": "Tidy"  
1000 - },  
1001 - "key-val": {  
1002 - "key": "Key",  
1003 - "value": "Value",  
1004 - "remove-entry": "Remove entry",  
1005 - "add-entry": "Add entry",  
1006 - "no-data": "No entries"  
1007 - },  
1008 - "layout": {  
1009 - "layout": "Layout",  
1010 - "manage": "Manage layouts",  
1011 - "settings": "Layout settings",  
1012 - "color": "Color",  
1013 - "main": "Main",  
1014 - "right": "Right",  
1015 - "select": "Select target layout"  
1016 - },  
1017 - "legend": {  
1018 - "position": "Legend position",  
1019 - "show-max": "Show max value",  
1020 - "show-min": "Show min value",  
1021 - "show-avg": "Show average value",  
1022 - "show-total": "Show total value",  
1023 - "settings": "Legend settings",  
1024 - "min": "min",  
1025 - "max": "max",  
1026 - "avg": "avg",  
1027 - "total": "total"  
1028 - },  
1029 - "login": {  
1030 - "login": "Login",  
1031 - "request-password-reset": "Request Password Reset",  
1032 - "reset-password": "Reset Password",  
1033 - "create-password": "Create Password",  
1034 - "passwords-mismatch-error": "Entered passwords must be same!",  
1035 - "password-again": "Password again",  
1036 - "sign-in": "Please sign in",  
1037 - "username": "Username (email)",  
1038 - "remember-me": "Remember me",  
1039 - "forgot-password": "Forgot Password?",  
1040 - "password-reset": "Password reset",  
1041 - "new-password": "New password",  
1042 - "new-password-again": "New password again",  
1043 - "password-link-sent-message": "Password reset link was successfully sent!",  
1044 - "email": "Email"  
1045 - },  
1046 - "position": {  
1047 - "top": "Top",  
1048 - "bottom": "Bottom",  
1049 - "left": "Left",  
1050 - "right": "Right"  
1051 - },  
1052 - "profile": {  
1053 - "profile": "Profile",  
1054 - "change-password": "Change Password",  
1055 - "current-password": "Current password"  
1056 - },  
1057 - "relation": {  
1058 - "relations": "Relations",  
1059 - "direction": "Direction",  
1060 - "search-direction": {  
1061 - "FROM": "From",  
1062 - "TO": "To"  
1063 - },  
1064 - "direction-type": {  
1065 - "FROM": "from",  
1066 - "TO": "to"  
1067 - },  
1068 - "from-relations": "Outbound relations",  
1069 - "to-relations": "Inbound relations",  
1070 - "selected-relations": "{ count, select, 1 {1 relation} other {# relations} } selected",  
1071 - "type": "Type",  
1072 - "to-entity-type": "To entity type",  
1073 - "to-entity-name": "To entity name",  
1074 - "from-entity-type": "From entity type",  
1075 - "from-entity-name": "From entity name",  
1076 - "to-entity": "To entity",  
1077 - "from-entity": "From entity",  
1078 - "delete": "Delete relation",  
1079 - "relation-type": "Relation type",  
1080 - "relation-type-required": "Relation type is required.",  
1081 - "any-relation-type": "Any type",  
1082 - "add": "Add relation",  
1083 - "edit": "Edit relation",  
1084 - "delete-to-relation-title": "Are you sure you want to delete relation to the entity '{{entityName}}'?",  
1085 - "delete-to-relation-text": "Be careful, after the confirmation the entity '{{entityName}}' will be unrelated from the current entity.",  
1086 - "delete-to-relations-title": "Are you sure you want to delete { count, select, 1 {1 relation} other {# relations} }?",  
1087 - "delete-to-relations-text": "Be careful, after the confirmation all selected relations will be removed and corresponding entities will be unrelated from the current entity.",  
1088 - "delete-from-relation-title": "Are you sure you want to delete relation from the entity '{{entityName}}'?",  
1089 - "delete-from-relation-text": "Be careful, after the confirmation current entity will be unrelated from the entity '{{entityName}}'.",  
1090 - "delete-from-relations-title": "Are you sure you want to delete { count, select, 1 {1 relation} other {# relations} }?",  
1091 - "delete-from-relations-text": "Be careful, after the confirmation all selected relations will be removed and current entity will be unrelated from the corresponding entities.",  
1092 - "remove-relation-filter": "Remove relation filter",  
1093 - "add-relation-filter": "Add relation filter",  
1094 - "any-relation": "Any relation",  
1095 - "relation-filters": "Relation filters",  
1096 - "additional-info": "Additional info (JSON)",  
1097 - "invalid-additional-info": "Unable to parse additional info json."  
1098 - },  
1099 - "rulechain": {  
1100 - "rulechain": "Rule chain",  
1101 - "rulechains": "Rule chains",  
1102 - "root": "Root",  
1103 - "delete": "Delete rule chain",  
1104 - "name": "Name",  
1105 - "name-required": "Name is required.",  
1106 - "description": "Description",  
1107 - "add": "Add Rule Chain",  
1108 - "set-root": "Make rule chain root",  
1109 - "set-root-rulechain-title": "Are you sure you want to make the rule chain '{{ruleChainName}}' root?",  
1110 - "set-root-rulechain-text": "After the confirmation the rule chain will become root and will handle all incoming transport messages.",  
1111 - "delete-rulechain-title": "Are you sure you want to delete the rule chain '{{ruleChainName}}'?",  
1112 - "delete-rulechain-text": "Be careful, after the confirmation the rule chain and all related data will become unrecoverable.",  
1113 - "delete-rulechains-title": "Are you sure you want to delete { count, select, 1 {1 rule chain} other {# rule chains} }?",  
1114 - "delete-rulechains-action-title": "Delete { count, select, 1 {1 rule chain} other {# rule chains} }",  
1115 - "delete-rulechains-text": "Be careful, after the confirmation all selected rule chains will be removed and all related data will become unrecoverable.",  
1116 - "add-rulechain-text": "Add new rule chain",  
1117 - "no-rulechains-text": "No rule chains found",  
1118 - "rulechain-details": "Rule chain details",  
1119 - "details": "Details",  
1120 - "events": "Events",  
1121 - "system": "System",  
1122 - "import": "Import rule chain",  
1123 - "export": "Export rule chain",  
1124 - "export-failed-error": "Unable to export rule chain: {{error}}",  
1125 - "create-new-rulechain": "Create new rule chain",  
1126 - "rulechain-file": "Rule chain file",  
1127 - "invalid-rulechain-file-error": "Unable to import rule chain: Invalid rule chain data structure.",  
1128 - "copyId": "Copy rule chain Id",  
1129 - "idCopiedMessage": "Rule chain Id has been copied to clipboard",  
1130 - "select-rulechain": "Select rule chain",  
1131 - "no-rulechains-matching": "No rule chains matching '{{entity}}' were found.",  
1132 - "rulechain-required": "Rule chain is required",  
1133 - "management": "Rules management",  
1134 - "debug-mode": "Debug mode"  
1135 - },  
1136 - "rulenode": {  
1137 - "details": "Details",  
1138 - "events": "Events",  
1139 - "search": "Search nodes",  
1140 - "open-node-library": "Open node library",  
1141 - "add": "Add rule node",  
1142 - "name": "Name",  
1143 - "name-required": "Name is required.",  
1144 - "type": "Type",  
1145 - "description": "Description",  
1146 - "delete": "Delete rule node",  
1147 - "select-all-objects": "Select all nodes and connections",  
1148 - "deselect-all-objects": "Deselect all nodes and connections",  
1149 - "delete-selected-objects": "Delete selected nodes and connections",  
1150 - "delete-selected": "Delete selected",  
1151 - "select-all": "Select all",  
1152 - "copy-selected": "Copy selected",  
1153 - "deselect-all": "Deselect all",  
1154 - "rulenode-details": "Rule node details",  
1155 - "debug-mode": "Debug mode",  
1156 - "configuration": "Configuration",  
1157 - "link": "Link",  
1158 - "link-details": "Rule node link details",  
1159 - "add-link": "Add link",  
1160 - "link-label": "Link label",  
1161 - "link-label-required": "Link label is required.",  
1162 - "custom-link-label": "Custom link label",  
1163 - "custom-link-label-required": "Custom link label is required.",  
1164 - "link-labels": "Link labels",  
1165 - "link-labels-required": "Link labels is required.",  
1166 - "no-link-labels-found": "No link labels found",  
1167 - "no-link-label-matching": "'{{label}}' not found.",  
1168 - "create-new-link-label": "Create a new one!",  
1169 - "type-filter": "Filter",  
1170 - "type-filter-details": "Filter incoming messages with configured conditions",  
1171 - "type-enrichment": "Enrichment",  
1172 - "type-enrichment-details": "Add additional information into Message Metadata",  
1173 - "type-transformation": "Transformation",  
1174 - "type-transformation-details": "Change Message payload and Metadata",  
1175 - "type-action": "Action",  
1176 - "type-action-details": "Perform special action",  
1177 - "type-external": "External",  
1178 - "type-external-details": "Interacts with external system",  
1179 - "type-rule-chain": "Rule Chain",  
1180 - "type-rule-chain-details": "Forwards incoming messages to specified Rule Chain",  
1181 - "type-input": "Input",  
1182 - "type-input-details": "Logical input of Rule Chain, forwards incoming messages to next related Rule Node",  
1183 - "type-unknown": "Unknown",  
1184 - "type-unknown-details": "Unresolved Rule Node",  
1185 - "directive-is-not-loaded": "Defined configuration directive '{{directiveName}}' is not available.",  
1186 - "ui-resources-load-error": "Failed to load configuration ui resources.",  
1187 - "invalid-target-rulechain": "Unable to resolve target rule chain!",  
1188 - "test-script-function": "Test script function",  
1189 - "message": "Message",  
1190 - "message-type": "Message type",  
1191 - "select-message-type": "Select message type",  
1192 - "message-type-required": "Message type is required",  
1193 - "metadata": "Metadata",  
1194 - "metadata-required": "Metadata entries can't be empty.",  
1195 - "output": "Output",  
1196 - "test": "Test",  
1197 - "help": "Help"  
1198 - },  
1199 - "tenant": {  
1200 - "tenant": "Tenant",  
1201 - "tenants": "Tenants",  
1202 - "management": "Tenant management",  
1203 - "add": "Add Tenant",  
1204 - "admins": "Admins",  
1205 - "manage-tenant-admins": "Manage tenant admins",  
1206 - "delete": "Delete tenant",  
1207 - "add-tenant-text": "Add new tenant",  
1208 - "no-tenants-text": "No tenants found",  
1209 - "tenant-details": "Tenant details",  
1210 - "delete-tenant-title": "Are you sure you want to delete the tenant '{{tenantTitle}}'?",  
1211 - "delete-tenant-text": "Be careful, after the confirmation the tenant and all related data will become unrecoverable.",  
1212 - "delete-tenants-title": "Are you sure you want to delete { count, select, 1 {1 tenant} other {# tenants} }?",  
1213 - "delete-tenants-action-title": "Delete { count, select, 1 {1 tenant} other {# tenants} }",  
1214 - "delete-tenants-text": "Be careful, after the confirmation all selected tenants will be removed and all related data will become unrecoverable.",  
1215 - "title": "Title",  
1216 - "title-required": "Title is required.",  
1217 - "description": "Description",  
1218 - "details": "Details",  
1219 - "events": "Events",  
1220 - "copyId": "Copy tenant Id",  
1221 - "idCopiedMessage": "Tenant Id has been copied to clipboard",  
1222 - "select-tenant": "Select tenant",  
1223 - "no-tenants-matching": "No tenants matching '{{entity}}' were found.",  
1224 - "tenant-required": "Tenant is required"  
1225 - },  
1226 - "timeinterval": {  
1227 - "seconds-interval": "{ seconds, select, 1 {1 second} other {# seconds} }",  
1228 - "minutes-interval": "{ minutes, select, 1 {1 minute} other {# minutes} }",  
1229 - "hours-interval": "{ hours, select, 1 {1 hour} other {# hours} }",  
1230 - "days-interval": "{ days, select, 1 {1 day} other {# days} }",  
1231 - "days": "Days",  
1232 - "hours": "Hours",  
1233 - "minutes": "Minutes",  
1234 - "seconds": "Seconds",  
1235 - "advanced": "Advanced"  
1236 - },  
1237 - "timewindow": {  
1238 - "days": "{ days, select, 1 { day } other {# days } }",  
1239 - "hours": "{ hours, select, 0 { hour } 1 {1 hour } other {# hours } }",  
1240 - "minutes": "{ minutes, select, 0 { minute } 1 {1 minute } other {# minutes } }",  
1241 - "seconds": "{ seconds, select, 0 { second } 1 {1 second } other {# seconds } }",  
1242 - "realtime": "Realtime",  
1243 - "history": "History",  
1244 - "last-prefix": "last",  
1245 - "period": "from {{ startTime }} to {{ endTime }}",  
1246 - "edit": "Edit timewindow",  
1247 - "date-range": "Date range",  
1248 - "last": "Last",  
1249 - "time-period": "Time period"  
1250 - },  
1251 - "user": {  
1252 - "user": "User",  
1253 - "users": "Users",  
1254 - "customer-users": "Customer Users",  
1255 - "tenant-admins": "Tenant Admins",  
1256 - "sys-admin": "System administrator",  
1257 - "tenant-admin": "Tenant administrator",  
1258 - "customer": "Customer",  
1259 - "anonymous": "Anonymous",  
1260 - "add": "Add User",  
1261 - "delete": "Delete user",  
1262 - "add-user-text": "Add new user",  
1263 - "no-users-text": "No users found",  
1264 - "user-details": "User details",  
1265 - "delete-user-title": "Are you sure you want to delete the user '{{userEmail}}'?",  
1266 - "delete-user-text": "Be careful, after the confirmation the user and all related data will become unrecoverable.",  
1267 - "delete-users-title": "Are you sure you want to delete { count, select, 1 {1 user} other {# users} }?",  
1268 - "delete-users-action-title": "Delete { count, select, 1 {1 user} other {# users} }",  
1269 - "delete-users-text": "Be careful, after the confirmation all selected users will be removed and all related data will become unrecoverable.",  
1270 - "activation-email-sent-message": "Activation email was successfully sent!",  
1271 - "resend-activation": "Resend activation",  
1272 - "email": "Email",  
1273 - "email-required": "Email is required.",  
1274 - "invalid-email-format": "Invalid email format.",  
1275 - "first-name": "First Name",  
1276 - "last-name": "Last Name",  
1277 - "description": "Description",  
1278 - "default-dashboard": "Default dashboard",  
1279 - "always-fullscreen": "Always fullscreen",  
1280 - "select-user": "Select user",  
1281 - "no-users-matching": "No users matching '{{entity}}' were found.",  
1282 - "user-required": "User is required",  
1283 - "activation-method": "Activation method",  
1284 - "display-activation-link": "Display activation link",  
1285 - "send-activation-mail": "Send activation mail",  
1286 - "activation-link": "User activation link",  
1287 - "activation-link-text": "In order to activate user use the following <a href='{{activationLink}}' target='_blank'>activation link</a> :",  
1288 - "copy-activation-link": "Copy activation link",  
1289 - "activation-link-copied-message": "User activation link has been copied to clipboard",  
1290 - "details": "Details"  
1291 - },  
1292 - "value": {  
1293 - "type": "Value type",  
1294 - "string": "String",  
1295 - "string-value": "String value",  
1296 - "integer": "Integer",  
1297 - "integer-value": "Integer value",  
1298 - "invalid-integer-value": "Invalid integer value",  
1299 - "double": "Double",  
1300 - "double-value": "Double value",  
1301 - "boolean": "Boolean",  
1302 - "boolean-value": "Boolean value",  
1303 - "false": "False",  
1304 - "true": "True",  
1305 - "long": "Long"  
1306 - },  
1307 - "widget": {  
1308 - "widget-library": "Widgets Library",  
1309 - "widget-bundle": "Widgets Bundle",  
1310 - "select-widgets-bundle": "Select widgets bundle",  
1311 - "management": "Widget management",  
1312 - "editor": "Widget Editor",  
1313 - "widget-type-not-found": "Problem loading widget configuration.<br>Probably associated\n widget type was removed.",  
1314 - "widget-type-load-error": "Widget wasn't loaded due to the following errors:",  
1315 - "remove": "Remove widget",  
1316 - "edit": "Edit widget",  
1317 - "remove-widget-title": "Are you sure you want to remove the widget '{{widgetTitle}}'?",  
1318 - "remove-widget-text": "After the confirmation the widget and all related data will become unrecoverable.",  
1319 - "timeseries": "Time series",  
1320 - "search-data": "Search data",  
1321 - "no-data-found": "No data found",  
1322 - "latest-values": "Latest values",  
1323 - "rpc": "Control widget",  
1324 - "alarm": "Alarm widget",  
1325 - "static": "Static widget",  
1326 - "select-widget-type": "Select widget type",  
1327 - "missing-widget-title-error": "Widget title must be specified!",  
1328 - "widget-saved": "Widget saved",  
1329 - "unable-to-save-widget-error": "Unable to save widget! Widget has errors!",  
1330 - "save": "Save widget",  
1331 - "saveAs": "Save widget as",  
1332 - "save-widget-type-as": "Save widget type as",  
1333 - "save-widget-type-as-text": "Please enter new widget title and/or select target widgets bundle",  
1334 - "toggle-fullscreen": "Toggle fullscreen",  
1335 - "run": "Run widget",  
1336 - "title": "Widget title",  
1337 - "title-required": "Widget title is required.",  
1338 - "type": "Widget type",  
1339 - "resources": "Resources",  
1340 - "resource-url": "JavaScript/CSS URL",  
1341 - "remove-resource": "Remove resource",  
1342 - "add-resource": "Add resource",  
1343 - "html": "HTML",  
1344 - "tidy": "Tidy",  
1345 - "css": "CSS",  
1346 - "settings-schema": "Settings schema",  
1347 - "datakey-settings-schema": "Data key settings schema",  
1348 - "javascript": "Javascript",  
1349 - "remove-widget-type-title": "Are you sure you want to remove the widget type '{{widgetName}}'?",  
1350 - "remove-widget-type-text": "After the confirmation the widget type and all related data will become unrecoverable.",  
1351 - "remove-widget-type": "Remove widget type",  
1352 - "add-widget-type": "Add new widget type",  
1353 - "widget-type-load-failed-error": "Failed to load widget type!",  
1354 - "widget-template-load-failed-error": "Failed to load widget template!",  
1355 - "add": "Add Widget",  
1356 - "undo": "Undo widget changes",  
1357 - "export": "Export widget"  
1358 - },  
1359 - "widget-action": {  
1360 - "header-button": "Widget header button",  
1361 - "open-dashboard-state": "Navigate to new dashboard state",  
1362 - "update-dashboard-state": "Update current dashboard state",  
1363 - "open-dashboard": "Navigate to other dashboard",  
1364 - "custom": "Custom action",  
1365 - "target-dashboard-state": "Target dashboard state",  
1366 - "target-dashboard-state-required": "Target dashboard state is required",  
1367 - "set-entity-from-widget": "Set entity from widget",  
1368 - "target-dashboard": "Target dashboard",  
1369 - "open-right-layout": "Open right dashboard layout (mobile view)"  
1370 - },  
1371 - "widgets-bundle": {  
1372 - "current": "Current bundle",  
1373 - "widgets-bundles": "Widgets Bundles",  
1374 - "add": "Add Widgets Bundle",  
1375 - "delete": "Delete widgets bundle",  
1376 - "title": "Title",  
1377 - "title-required": "Title is required.",  
1378 - "add-widgets-bundle-text": "Add new widgets bundle",  
1379 - "no-widgets-bundles-text": "No widgets bundles found",  
1380 - "empty": "Widgets bundle is empty",  
1381 - "details": "Details",  
1382 - "widgets-bundle-details": "Widgets bundle details",  
1383 - "delete-widgets-bundle-title": "Are you sure you want to delete the widgets bundle '{{widgetsBundleTitle}}'?",  
1384 - "delete-widgets-bundle-text": "Be careful, after the confirmation the widgets bundle and all related data will become unrecoverable.",  
1385 - "delete-widgets-bundles-title": "Are you sure you want to delete { count, select, 1 {1 widgets bundle} other {# widgets bundles} }?",  
1386 - "delete-widgets-bundles-action-title": "Delete { count, select, 1 {1 widgets bundle} other {# widgets bundles} }",  
1387 - "delete-widgets-bundles-text": "Be careful, after the confirmation all selected widgets bundles will be removed and all related data will become unrecoverable.",  
1388 - "no-widgets-bundles-matching": "No widgets bundles matching '{{widgetsBundle}}' were found.",  
1389 - "widgets-bundle-required": "Widgets bundle is required.",  
1390 - "system": "System",  
1391 - "import": "Import widgets bundle",  
1392 - "export": "Export widgets bundle",  
1393 - "export-failed-error": "Unable to export widgets bundle: {{error}}",  
1394 - "create-new-widgets-bundle": "Create new widgets bundle",  
1395 - "widgets-bundle-file": "Widgets bundle file",  
1396 - "invalid-widgets-bundle-file-error": "Unable to import widgets bundle: Invalid widgets bundle data structure."  
1397 - },  
1398 - "widget-config": {  
1399 - "data": "Data",  
1400 - "settings": "Settings",  
1401 - "advanced": "Advanced",  
1402 - "title": "Title",  
1403 - "general-settings": "General settings",  
1404 - "display-title": "Display title",  
1405 - "drop-shadow": "Drop shadow",  
1406 - "enable-fullscreen": "Enable fullscreen",  
1407 - "background-color": "Background color",  
1408 - "text-color": "Text color",  
1409 - "padding": "Padding",  
1410 - "margin": "Margin",  
1411 - "widget-style": "Widget style",  
1412 - "title-style": "Title style",  
1413 - "mobile-mode-settings": "Mobile mode settings",  
1414 - "order": "Order",  
1415 - "height": "Height",  
1416 - "units": "Special symbol to show next to value",  
1417 - "decimals": "Number of digits after floating point",  
1418 - "timewindow": "Timewindow",  
1419 - "use-dashboard-timewindow": "Use dashboard timewindow",  
1420 - "display-legend": "Display legend",  
1421 - "datasources": "Datasources",  
1422 - "maximum-datasources": "Maximum { count, select, 1 {1 datasource is allowed.} other {# datasources are allowed} }",  
1423 - "datasource-type": "Type",  
1424 - "datasource-parameters": "Parameters",  
1425 - "remove-datasource": "Remove datasource",  
1426 - "add-datasource": "Add datasource",  
1427 - "target-device": "Target device",  
1428 - "alarm-source": "Alarm source",  
1429 - "actions": "Actions",  
1430 - "action": "Action",  
1431 - "add-action": "Add action",  
1432 - "search-actions": "Search actions",  
1433 - "action-source": "Action source",  
1434 - "action-source-required": "Action source is required.",  
1435 - "action-name": "Name",  
1436 - "action-name-required": "Action name is required.",  
1437 - "action-name-not-unique": "Another action with the same name already exists.<br/>Action name should be unique within the same action source.",  
1438 - "action-icon": "Icon",  
1439 - "action-type": "Type",  
1440 - "action-type-required": "Action type is required.",  
1441 - "edit-action": "Edit action",  
1442 - "delete-action": "Delete action",  
1443 - "delete-action-title": "Delete widget action",  
1444 - "delete-action-text": "Are you sure you want delete widget action with name '{{actionName}}'?"  
1445 - },  
1446 - "widget-type": {  
1447 - "import": "Import widget type",  
1448 - "export": "Export widget type",  
1449 - "export-failed-error": "Unable to export widget type: {{error}}",  
1450 - "create-new-widget-type": "Create new widget type",  
1451 - "widget-type-file": "Widget type file",  
1452 - "invalid-widget-type-file-error": "Unable to import widget type: Invalid widget type data structure."  
1453 - },  
1454 - "icon": {  
1455 - "icon": "Icon",  
1456 - "select-icon": "Select icon",  
1457 - "material-icons": "Material icons",  
1458 - "show-all": "Show all icons"  
1459 - },  
1460 - "custom": {  
1461 - "widget-action": {  
1462 - "action-cell-button": "Action cell button",  
1463 - "row-click": "On row click",  
1464 - "marker-click": "On marker click",  
1465 - "tooltip-tag-action": "Tooltip tag action"  
1466 - }  
1467 - },  
1468 - "language": {  
1469 - "language": "Language",  
1470 - "en_US": "English",  
1471 - "ko_KR": "Korean",  
1472 - "zh_CN": "Chinese",  
1473 - "ru_RU": "Russian",  
1474 - "es_ES": "Spanish"  
1475 - }  
1476 - } 926 + "export-extensions-configuration": "Export extensions configuration",
  927 + "import-extensions-configuration": "Import extensions configuration",
  928 + "import-extensions": "Import extensions",
  929 + "import-extension": "Import extension",
  930 + "export-extension": "Export extension",
  931 + "file": "Extensions file",
  932 + "invalid-file-error": "Invalid extension file"
  933 + },
  934 + "fullscreen": {
  935 + "expand": "Expand to fullscreen",
  936 + "exit": "Exit fullscreen",
  937 + "toggle": "Toggle fullscreen mode",
  938 + "fullscreen": "Fullscreen"
  939 + },
  940 + "function": {
  941 + "function": "Function"
  942 + },
  943 + "grid": {
  944 + "delete-item-title": "Are you sure you want to delete this item?",
  945 + "delete-item-text": "Be careful, after the confirmation this item and all related data will become unrecoverable.",
  946 + "delete-items-title": "Are you sure you want to delete { count, select, 1 {1 item} other {# items} }?",
  947 + "delete-items-action-title": "Delete { count, select, 1 {1 item} other {# items} }",
  948 + "delete-items-text": "Be careful, after the confirmation all selected items will be removed and all related data will become unrecoverable.",
  949 + "add-item-text": "Add new item",
  950 + "no-items-text": "No items found",
  951 + "item-details": "Item details",
  952 + "delete-item": "Delete Item",
  953 + "delete-items": "Delete Items",
  954 + "scroll-to-top": "Scroll to top"
  955 + },
  956 + "help": {
  957 + "goto-help-page": "Go to help page"
  958 + },
  959 + "home": {
  960 + "home": "Home",
  961 + "profile": "Profile",
  962 + "logout": "Logout",
  963 + "menu": "Menu",
  964 + "avatar": "Avatar",
  965 + "open-user-menu": "Open user menu"
  966 + },
  967 + "import": {
  968 + "no-file": "No file selected",
  969 + "drop-file": "Drop a JSON file or click to select a file to upload."
  970 + },
  971 + "item": {
  972 + "selected": "Selected"
  973 + },
  974 + "js-func": {
  975 + "no-return-error": "Function must return value!",
  976 + "return-type-mismatch": "Function must return value of '{{type}}' type!",
  977 + "tidy": "Tidy"
  978 + },
  979 + "key-val": {
  980 + "key": "Key",
  981 + "value": "Value",
  982 + "remove-entry": "Remove entry",
  983 + "add-entry": "Add entry",
  984 + "no-data": "No entries"
  985 + },
  986 + "layout": {
  987 + "layout": "Layout",
  988 + "manage": "Manage layouts",
  989 + "settings": "Layout settings",
  990 + "color": "Color",
  991 + "main": "Main",
  992 + "right": "Right",
  993 + "select": "Select target layout"
  994 + },
  995 + "legend": {
  996 + "position": "Legend position",
  997 + "show-max": "Show max value",
  998 + "show-min": "Show min value",
  999 + "show-avg": "Show average value",
  1000 + "show-total": "Show total value",
  1001 + "settings": "Legend settings",
  1002 + "min": "min",
  1003 + "max": "max",
  1004 + "avg": "avg",
  1005 + "total": "total"
  1006 + },
  1007 + "login": {
  1008 + "login": "Login",
  1009 + "request-password-reset": "Request Password Reset",
  1010 + "reset-password": "Reset Password",
  1011 + "create-password": "Create Password",
  1012 + "passwords-mismatch-error": "Entered passwords must be same!",
  1013 + "password-again": "Password again",
  1014 + "sign-in": "Please sign in",
  1015 + "username": "Username (email)",
  1016 + "remember-me": "Remember me",
  1017 + "forgot-password": "Forgot Password?",
  1018 + "password-reset": "Password reset",
  1019 + "new-password": "New password",
  1020 + "new-password-again": "New password again",
  1021 + "password-link-sent-message": "Password reset link was successfully sent!",
  1022 + "email": "Email"
  1023 + },
  1024 + "position": {
  1025 + "top": "Top",
  1026 + "bottom": "Bottom",
  1027 + "left": "Left",
  1028 + "right": "Right"
  1029 + },
  1030 + "profile": {
  1031 + "profile": "Profile",
  1032 + "change-password": "Change Password",
  1033 + "current-password": "Current password"
  1034 + },
  1035 + "relation": {
  1036 + "relations": "Relations",
  1037 + "direction": "Direction",
  1038 + "search-direction": {
  1039 + "FROM": "From",
  1040 + "TO": "To"
  1041 + },
  1042 + "direction-type": {
  1043 + "FROM": "from",
  1044 + "TO": "to"
  1045 + },
  1046 + "from-relations": "Outbound relations",
  1047 + "to-relations": "Inbound relations",
  1048 + "selected-relations": "{ count, select, 1 {1 relation} other {# relations} } selected",
  1049 + "type": "Type",
  1050 + "to-entity-type": "To entity type",
  1051 + "to-entity-name": "To entity name",
  1052 + "from-entity-type": "From entity type",
  1053 + "from-entity-name": "From entity name",
  1054 + "to-entity": "To entity",
  1055 + "from-entity": "From entity",
  1056 + "delete": "Delete relation",
  1057 + "relation-type": "Relation type",
  1058 + "relation-type-required": "Relation type is required.",
  1059 + "any-relation-type": "Any type",
  1060 + "add": "Add relation",
  1061 + "edit": "Edit relation",
  1062 + "delete-to-relation-title": "Are you sure you want to delete relation to the entity '{{entityName}}'?",
  1063 + "delete-to-relation-text": "Be careful, after the confirmation the entity '{{entityName}}' will be unrelated from the current entity.",
  1064 + "delete-to-relations-title": "Are you sure you want to delete { count, select, 1 {1 relation} other {# relations} }?",
  1065 + "delete-to-relations-text": "Be careful, after the confirmation all selected relations will be removed and corresponding entities will be unrelated from the current entity.",
  1066 + "delete-from-relation-title": "Are you sure you want to delete relation from the entity '{{entityName}}'?",
  1067 + "delete-from-relation-text": "Be careful, after the confirmation current entity will be unrelated from the entity '{{entityName}}'.",
  1068 + "delete-from-relations-title": "Are you sure you want to delete { count, select, 1 {1 relation} other {# relations} }?",
  1069 + "delete-from-relations-text": "Be careful, after the confirmation all selected relations will be removed and current entity will be unrelated from the corresponding entities.",
  1070 + "remove-relation-filter": "Remove relation filter",
  1071 + "add-relation-filter": "Add relation filter",
  1072 + "any-relation": "Any relation",
  1073 + "relation-filters": "Relation filters",
  1074 + "additional-info": "Additional info (JSON)",
  1075 + "invalid-additional-info": "Unable to parse additional info json."
  1076 + },
  1077 + "rulechain": {
  1078 + "rulechain": "Rule chain",
  1079 + "rulechains": "Rule chains",
  1080 + "root": "Root",
  1081 + "delete": "Delete rule chain",
  1082 + "name": "Name",
  1083 + "name-required": "Name is required.",
  1084 + "description": "Description",
  1085 + "add": "Add Rule Chain",
  1086 + "set-root": "Make rule chain root",
  1087 + "set-root-rulechain-title": "Are you sure you want to make the rule chain '{{ruleChainName}}' root?",
  1088 + "set-root-rulechain-text": "After the confirmation the rule chain will become root and will handle all incoming transport messages.",
  1089 + "delete-rulechain-title": "Are you sure you want to delete the rule chain '{{ruleChainName}}'?",
  1090 + "delete-rulechain-text": "Be careful, after the confirmation the rule chain and all related data will become unrecoverable.",
  1091 + "delete-rulechains-title": "Are you sure you want to delete { count, select, 1 {1 rule chain} other {# rule chains} }?",
  1092 + "delete-rulechains-action-title": "Delete { count, select, 1 {1 rule chain} other {# rule chains} }",
  1093 + "delete-rulechains-text": "Be careful, after the confirmation all selected rule chains will be removed and all related data will become unrecoverable.",
  1094 + "add-rulechain-text": "Add new rule chain",
  1095 + "no-rulechains-text": "No rule chains found",
  1096 + "rulechain-details": "Rule chain details",
  1097 + "details": "Details",
  1098 + "events": "Events",
  1099 + "system": "System",
  1100 + "import": "Import rule chain",
  1101 + "export": "Export rule chain",
  1102 + "export-failed-error": "Unable to export rule chain: {{error}}",
  1103 + "create-new-rulechain": "Create new rule chain",
  1104 + "rulechain-file": "Rule chain file",
  1105 + "invalid-rulechain-file-error": "Unable to import rule chain: Invalid rule chain data structure.",
  1106 + "copyId": "Copy rule chain Id",
  1107 + "idCopiedMessage": "Rule chain Id has been copied to clipboard",
  1108 + "select-rulechain": "Select rule chain",
  1109 + "no-rulechains-matching": "No rule chains matching '{{entity}}' were found.",
  1110 + "rulechain-required": "Rule chain is required",
  1111 + "management": "Rules management",
  1112 + "debug-mode": "Debug mode"
  1113 + },
  1114 + "rulenode": {
  1115 + "details": "Details",
  1116 + "events": "Events",
  1117 + "search": "Search nodes",
  1118 + "open-node-library": "Open node library",
  1119 + "add": "Add rule node",
  1120 + "name": "Name",
  1121 + "name-required": "Name is required.",
  1122 + "type": "Type",
  1123 + "description": "Description",
  1124 + "delete": "Delete rule node",
  1125 + "select-all-objects": "Select all nodes and connections",
  1126 + "deselect-all-objects": "Deselect all nodes and connections",
  1127 + "delete-selected-objects": "Delete selected nodes and connections",
  1128 + "delete-selected": "Delete selected",
  1129 + "select-all": "Select all",
  1130 + "copy-selected": "Copy selected",
  1131 + "deselect-all": "Deselect all",
  1132 + "rulenode-details": "Rule node details",
  1133 + "debug-mode": "Debug mode",
  1134 + "configuration": "Configuration",
  1135 + "link": "Link",
  1136 + "link-details": "Rule node link details",
  1137 + "add-link": "Add link",
  1138 + "link-label": "Link label",
  1139 + "link-label-required": "Link label is required.",
  1140 + "custom-link-label": "Custom link label",
  1141 + "custom-link-label-required": "Custom link label is required.",
  1142 + "link-labels": "Link labels",
  1143 + "link-labels-required": "Link labels is required.",
  1144 + "no-link-labels-found": "No link labels found",
  1145 + "no-link-label-matching": "'{{label}}' not found.",
  1146 + "create-new-link-label": "Create a new one!",
  1147 + "type-filter": "Filter",
  1148 + "type-filter-details": "Filter incoming messages with configured conditions",
  1149 + "type-enrichment": "Enrichment",
  1150 + "type-enrichment-details": "Add additional information into Message Metadata",
  1151 + "type-transformation": "Transformation",
  1152 + "type-transformation-details": "Change Message payload and Metadata",
  1153 + "type-action": "Action",
  1154 + "type-action-details": "Perform special action",
  1155 + "type-external": "External",
  1156 + "type-external-details": "Interacts with external system",
  1157 + "type-rule-chain": "Rule Chain",
  1158 + "type-rule-chain-details": "Forwards incoming messages to specified Rule Chain",
  1159 + "type-input": "Input",
  1160 + "type-input-details": "Logical input of Rule Chain, forwards incoming messages to next related Rule Node",
  1161 + "type-unknown": "Unknown",
  1162 + "type-unknown-details": "Unresolved Rule Node",
  1163 + "directive-is-not-loaded": "Defined configuration directive '{{directiveName}}' is not available.",
  1164 + "ui-resources-load-error": "Failed to load configuration ui resources.",
  1165 + "invalid-target-rulechain": "Unable to resolve target rule chain!",
  1166 + "test-script-function": "Test script function",
  1167 + "message": "Message",
  1168 + "message-type": "Message type",
  1169 + "select-message-type": "Select message type",
  1170 + "message-type-required": "Message type is required",
  1171 + "metadata": "Metadata",
  1172 + "metadata-required": "Metadata entries can't be empty.",
  1173 + "output": "Output",
  1174 + "test": "Test",
  1175 + "help": "Help"
  1176 + },
  1177 + "tenant": {
  1178 + "tenant": "Tenant",
  1179 + "tenants": "Tenants",
  1180 + "management": "Tenant management",
  1181 + "add": "Add Tenant",
  1182 + "admins": "Admins",
  1183 + "manage-tenant-admins": "Manage tenant admins",
  1184 + "delete": "Delete tenant",
  1185 + "add-tenant-text": "Add new tenant",
  1186 + "no-tenants-text": "No tenants found",
  1187 + "tenant-details": "Tenant details",
  1188 + "delete-tenant-title": "Are you sure you want to delete the tenant '{{tenantTitle}}'?",
  1189 + "delete-tenant-text": "Be careful, after the confirmation the tenant and all related data will become unrecoverable.",
  1190 + "delete-tenants-title": "Are you sure you want to delete { count, select, 1 {1 tenant} other {# tenants} }?",
  1191 + "delete-tenants-action-title": "Delete { count, select, 1 {1 tenant} other {# tenants} }",
  1192 + "delete-tenants-text": "Be careful, after the confirmation all selected tenants will be removed and all related data will become unrecoverable.",
  1193 + "title": "Title",
  1194 + "title-required": "Title is required.",
  1195 + "description": "Description",
  1196 + "details": "Details",
  1197 + "events": "Events",
  1198 + "copyId": "Copy tenant Id",
  1199 + "idCopiedMessage": "Tenant Id has been copied to clipboard",
  1200 + "select-tenant": "Select tenant",
  1201 + "no-tenants-matching": "No tenants matching '{{entity}}' were found.",
  1202 + "tenant-required": "Tenant is required"
  1203 + },
  1204 + "timeinterval": {
  1205 + "seconds-interval": "{ seconds, select, 1 {1 second} other {# seconds} }",
  1206 + "minutes-interval": "{ minutes, select, 1 {1 minute} other {# minutes} }",
  1207 + "hours-interval": "{ hours, select, 1 {1 hour} other {# hours} }",
  1208 + "days-interval": "{ days, select, 1 {1 day} other {# days} }",
  1209 + "days": "Days",
  1210 + "hours": "Hours",
  1211 + "minutes": "Minutes",
  1212 + "seconds": "Seconds",
  1213 + "advanced": "Advanced"
  1214 + },
  1215 + "timewindow": {
  1216 + "days": "{ days, select, 1 { day } other {# days } }",
  1217 + "hours": "{ hours, select, 0 { hour } 1 {1 hour } other {# hours } }",
  1218 + "minutes": "{ minutes, select, 0 { minute } 1 {1 minute } other {# minutes } }",
  1219 + "seconds": "{ seconds, select, 0 { second } 1 {1 second } other {# seconds } }",
  1220 + "realtime": "Realtime",
  1221 + "history": "History",
  1222 + "last-prefix": "last",
  1223 + "period": "from {{ startTime }} to {{ endTime }}",
  1224 + "edit": "Edit timewindow",
  1225 + "date-range": "Date range",
  1226 + "last": "Last",
  1227 + "time-period": "Time period"
  1228 + },
  1229 + "user": {
  1230 + "user": "User",
  1231 + "users": "Users",
  1232 + "customer-users": "Customer Users",
  1233 + "tenant-admins": "Tenant Admins",
  1234 + "sys-admin": "System administrator",
  1235 + "tenant-admin": "Tenant administrator",
  1236 + "customer": "Customer",
  1237 + "anonymous": "Anonymous",
  1238 + "add": "Add User",
  1239 + "delete": "Delete user",
  1240 + "add-user-text": "Add new user",
  1241 + "no-users-text": "No users found",
  1242 + "user-details": "User details",
  1243 + "delete-user-title": "Are you sure you want to delete the user '{{userEmail}}'?",
  1244 + "delete-user-text": "Be careful, after the confirmation the user and all related data will become unrecoverable.",
  1245 + "delete-users-title": "Are you sure you want to delete { count, select, 1 {1 user} other {# users} }?",
  1246 + "delete-users-action-title": "Delete { count, select, 1 {1 user} other {# users} }",
  1247 + "delete-users-text": "Be careful, after the confirmation all selected users will be removed and all related data will become unrecoverable.",
  1248 + "activation-email-sent-message": "Activation email was successfully sent!",
  1249 + "resend-activation": "Resend activation",
  1250 + "email": "Email",
  1251 + "email-required": "Email is required.",
  1252 + "invalid-email-format": "Invalid email format.",
  1253 + "first-name": "First Name",
  1254 + "last-name": "Last Name",
  1255 + "description": "Description",
  1256 + "default-dashboard": "Default dashboard",
  1257 + "always-fullscreen": "Always fullscreen",
  1258 + "select-user": "Select user",
  1259 + "no-users-matching": "No users matching '{{entity}}' were found.",
  1260 + "user-required": "User is required",
  1261 + "activation-method": "Activation method",
  1262 + "display-activation-link": "Display activation link",
  1263 + "send-activation-mail": "Send activation mail",
  1264 + "activation-link": "User activation link",
  1265 + "activation-link-text": "In order to activate user use the following <a href='{{activationLink}}' target='_blank'>activation link</a> :",
  1266 + "copy-activation-link": "Copy activation link",
  1267 + "activation-link-copied-message": "User activation link has been copied to clipboard",
  1268 + "details": "Details"
  1269 + },
  1270 + "value": {
  1271 + "type": "Value type",
  1272 + "string": "String",
  1273 + "string-value": "String value",
  1274 + "integer": "Integer",
  1275 + "integer-value": "Integer value",
  1276 + "invalid-integer-value": "Invalid integer value",
  1277 + "double": "Double",
  1278 + "double-value": "Double value",
  1279 + "boolean": "Boolean",
  1280 + "boolean-value": "Boolean value",
  1281 + "false": "False",
  1282 + "true": "True",
  1283 + "long": "Long"
  1284 + },
  1285 + "widget": {
  1286 + "widget-library": "Widgets Library",
  1287 + "widget-bundle": "Widgets Bundle",
  1288 + "select-widgets-bundle": "Select widgets bundle",
  1289 + "management": "Widget management",
  1290 + "editor": "Widget Editor",
  1291 + "widget-type-not-found": "Problem loading widget configuration.<br>Probably associated\n widget type was removed.",
  1292 + "widget-type-load-error": "Widget wasn't loaded due to the following errors:",
  1293 + "remove": "Remove widget",
  1294 + "edit": "Edit widget",
  1295 + "remove-widget-title": "Are you sure you want to remove the widget '{{widgetTitle}}'?",
  1296 + "remove-widget-text": "After the confirmation the widget and all related data will become unrecoverable.",
  1297 + "timeseries": "Time series",
  1298 + "search-data": "Search data",
  1299 + "no-data-found": "No data found",
  1300 + "latest-values": "Latest values",
  1301 + "rpc": "Control widget",
  1302 + "alarm": "Alarm widget",
  1303 + "static": "Static widget",
  1304 + "select-widget-type": "Select widget type",
  1305 + "missing-widget-title-error": "Widget title must be specified!",
  1306 + "widget-saved": "Widget saved",
  1307 + "unable-to-save-widget-error": "Unable to save widget! Widget has errors!",
  1308 + "save": "Save widget",
  1309 + "saveAs": "Save widget as",
  1310 + "save-widget-type-as": "Save widget type as",
  1311 + "save-widget-type-as-text": "Please enter new widget title and/or select target widgets bundle",
  1312 + "toggle-fullscreen": "Toggle fullscreen",
  1313 + "run": "Run widget",
  1314 + "title": "Widget title",
  1315 + "title-required": "Widget title is required.",
  1316 + "type": "Widget type",
  1317 + "resources": "Resources",
  1318 + "resource-url": "JavaScript/CSS URL",
  1319 + "remove-resource": "Remove resource",
  1320 + "add-resource": "Add resource",
  1321 + "html": "HTML",
  1322 + "tidy": "Tidy",
  1323 + "css": "CSS",
  1324 + "settings-schema": "Settings schema",
  1325 + "datakey-settings-schema": "Data key settings schema",
  1326 + "javascript": "Javascript",
  1327 + "remove-widget-type-title": "Are you sure you want to remove the widget type '{{widgetName}}'?",
  1328 + "remove-widget-type-text": "After the confirmation the widget type and all related data will become unrecoverable.",
  1329 + "remove-widget-type": "Remove widget type",
  1330 + "add-widget-type": "Add new widget type",
  1331 + "widget-type-load-failed-error": "Failed to load widget type!",
  1332 + "widget-template-load-failed-error": "Failed to load widget template!",
  1333 + "add": "Add Widget",
  1334 + "undo": "Undo widget changes",
  1335 + "export": "Export widget"
  1336 + },
  1337 + "widget-action": {
  1338 + "header-button": "Widget header button",
  1339 + "open-dashboard-state": "Navigate to new dashboard state",
  1340 + "update-dashboard-state": "Update current dashboard state",
  1341 + "open-dashboard": "Navigate to other dashboard",
  1342 + "custom": "Custom action",
  1343 + "target-dashboard-state": "Target dashboard state",
  1344 + "target-dashboard-state-required": "Target dashboard state is required",
  1345 + "set-entity-from-widget": "Set entity from widget",
  1346 + "target-dashboard": "Target dashboard",
  1347 + "open-right-layout": "Open right dashboard layout (mobile view)"
  1348 + },
  1349 + "widgets-bundle": {
  1350 + "current": "Current bundle",
  1351 + "widgets-bundles": "Widgets Bundles",
  1352 + "add": "Add Widgets Bundle",
  1353 + "delete": "Delete widgets bundle",
  1354 + "title": "Title",
  1355 + "title-required": "Title is required.",
  1356 + "add-widgets-bundle-text": "Add new widgets bundle",
  1357 + "no-widgets-bundles-text": "No widgets bundles found",
  1358 + "empty": "Widgets bundle is empty",
  1359 + "details": "Details",
  1360 + "widgets-bundle-details": "Widgets bundle details",
  1361 + "delete-widgets-bundle-title": "Are you sure you want to delete the widgets bundle '{{widgetsBundleTitle}}'?",
  1362 + "delete-widgets-bundle-text": "Be careful, after the confirmation the widgets bundle and all related data will become unrecoverable.",
  1363 + "delete-widgets-bundles-title": "Are you sure you want to delete { count, select, 1 {1 widgets bundle} other {# widgets bundles} }?",
  1364 + "delete-widgets-bundles-action-title": "Delete { count, select, 1 {1 widgets bundle} other {# widgets bundles} }",
  1365 + "delete-widgets-bundles-text": "Be careful, after the confirmation all selected widgets bundles will be removed and all related data will become unrecoverable.",
  1366 + "no-widgets-bundles-matching": "No widgets bundles matching '{{widgetsBundle}}' were found.",
  1367 + "widgets-bundle-required": "Widgets bundle is required.",
  1368 + "system": "System",
  1369 + "import": "Import widgets bundle",
  1370 + "export": "Export widgets bundle",
  1371 + "export-failed-error": "Unable to export widgets bundle: {{error}}",
  1372 + "create-new-widgets-bundle": "Create new widgets bundle",
  1373 + "widgets-bundle-file": "Widgets bundle file",
  1374 + "invalid-widgets-bundle-file-error": "Unable to import widgets bundle: Invalid widgets bundle data structure."
  1375 + },
  1376 + "widget-config": {
  1377 + "data": "Data",
  1378 + "settings": "Settings",
  1379 + "advanced": "Advanced",
  1380 + "title": "Title",
  1381 + "general-settings": "General settings",
  1382 + "display-title": "Display title",
  1383 + "drop-shadow": "Drop shadow",
  1384 + "enable-fullscreen": "Enable fullscreen",
  1385 + "background-color": "Background color",
  1386 + "text-color": "Text color",
  1387 + "padding": "Padding",
  1388 + "margin": "Margin",
  1389 + "widget-style": "Widget style",
  1390 + "title-style": "Title style",
  1391 + "mobile-mode-settings": "Mobile mode settings",
  1392 + "order": "Order",
  1393 + "height": "Height",
  1394 + "units": "Special symbol to show next to value",
  1395 + "decimals": "Number of digits after floating point",
  1396 + "timewindow": "Timewindow",
  1397 + "use-dashboard-timewindow": "Use dashboard timewindow",
  1398 + "display-legend": "Display legend",
  1399 + "datasources": "Datasources",
  1400 + "maximum-datasources": "Maximum { count, select, 1 {1 datasource is allowed.} other {# datasources are allowed} }",
  1401 + "datasource-type": "Type",
  1402 + "datasource-parameters": "Parameters",
  1403 + "remove-datasource": "Remove datasource",
  1404 + "add-datasource": "Add datasource",
  1405 + "target-device": "Target device",
  1406 + "alarm-source": "Alarm source",
  1407 + "actions": "Actions",
  1408 + "action": "Action",
  1409 + "add-action": "Add action",
  1410 + "search-actions": "Search actions",
  1411 + "action-source": "Action source",
  1412 + "action-source-required": "Action source is required.",
  1413 + "action-name": "Name",
  1414 + "action-name-required": "Action name is required.",
  1415 + "action-name-not-unique": "Another action with the same name already exists.<br/>Action name should be unique within the same action source.",
  1416 + "action-icon": "Icon",
  1417 + "action-type": "Type",
  1418 + "action-type-required": "Action type is required.",
  1419 + "edit-action": "Edit action",
  1420 + "delete-action": "Delete action",
  1421 + "delete-action-title": "Delete widget action",
  1422 + "delete-action-text": "Are you sure you want delete widget action with name '{{actionName}}'?"
  1423 + },
  1424 + "widget-type": {
  1425 + "import": "Import widget type",
  1426 + "export": "Export widget type",
  1427 + "export-failed-error": "Unable to export widget type: {{error}}",
  1428 + "create-new-widget-type": "Create new widget type",
  1429 + "widget-type-file": "Widget type file",
  1430 + "invalid-widget-type-file-error": "Unable to import widget type: Invalid widget type data structure."
  1431 + },
  1432 + "icon": {
  1433 + "icon": "Icon",
  1434 + "select-icon": "Select icon",
  1435 + "material-icons": "Material icons",
  1436 + "show-all": "Show all icons"
  1437 + },
  1438 + "custom": {
  1439 + "widget-action": {
  1440 + "action-cell-button": "Action cell button",
  1441 + "row-click": "On row click",
  1442 + "marker-click": "On marker click",
  1443 + "tooltip-tag-action": "Tooltip tag action"
  1444 + }
  1445 + },
  1446 + "language": {
  1447 + "language": "Language",
  1448 + "locales": {
  1449 + "zh_CN": "Chinese",
  1450 + "en_US": "English",
  1451 + "it_IT": "Italian",
  1452 + "ko_KR": "Korean",
  1453 + "ru_RU": "Russian",
  1454 + "es_ES": "Spanish"
1477 } 1455 }
1478 - ).name; 1456 + }
  1457 +}