Showing
9 changed files
with
1663 additions
and
6 deletions
@@ -266,6 +266,10 @@ function DatasourceSubscription(datasourceSubscription, telemetryWebsocketServic | @@ -266,6 +266,10 @@ function DatasourceSubscription(datasourceSubscription, telemetryWebsocketServic | ||
266 | type: types.dataKeyType.timeseries, | 266 | type: types.dataKeyType.timeseries, |
267 | onData: function (data) { | 267 | onData: function (data) { |
268 | if (data.data) { | 268 | if (data.data) { |
269 | + for (var key in data.data) { | ||
270 | + var keyData = data.data[key]; | ||
271 | + data.data[key] = $filter('orderBy')(keyData, '+this[0]'); | ||
272 | + } | ||
269 | onData(data.data, types.dataKeyType.timeseries, true); | 273 | onData(data.data, types.dataKeyType.timeseries, true); |
270 | } | 274 | } |
271 | }, | 275 | }, |
@@ -17,6 +17,8 @@ import injectTapEventPlugin from 'react-tap-event-plugin'; | @@ -17,6 +17,8 @@ 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'; | 18 | import addLocaleKorean from './locale/locale.constant-ko'; |
19 | import addLocaleChinese from './locale/locale.constant-zh'; | 19 | import addLocaleChinese from './locale/locale.constant-zh'; |
20 | +import addLocaleRussian from './locale/locale.constant-ru'; | ||
21 | +import addLocaleSpanish from './locale/locale.constant-es'; | ||
20 | 22 | ||
21 | /* eslint-disable import/no-unresolved, import/default */ | 23 | /* eslint-disable import/no-unresolved, import/default */ |
22 | 24 | ||
@@ -52,6 +54,9 @@ export default function AppConfig($provide, | @@ -52,6 +54,9 @@ export default function AppConfig($provide, | ||
52 | 54 | ||
53 | addLocaleKorean(locales); | 55 | addLocaleKorean(locales); |
54 | addLocaleChinese(locales); | 56 | addLocaleChinese(locales); |
57 | + addLocaleRussian(locales); | ||
58 | + addLocaleSpanish(locales); | ||
59 | + | ||
55 | var $window = angular.injector(['ng']).get('$window'); | 60 | var $window = angular.injector(['ng']).get('$window'); |
56 | var lang = $window.navigator.language || $window.navigator.userLanguage; | 61 | var lang = $window.navigator.language || $window.navigator.userLanguage; |
57 | if (lang === 'ko') { | 62 | if (lang === 'ko') { |
@@ -60,6 +65,9 @@ export default function AppConfig($provide, | @@ -60,6 +65,9 @@ export default function AppConfig($provide, | ||
60 | } else if (lang === 'zh') { | 65 | } else if (lang === 'zh') { |
61 | $translateProvider.useSanitizeValueStrategy(null); | 66 | $translateProvider.useSanitizeValueStrategy(null); |
62 | $translateProvider.preferredLanguage('zh_CN'); | 67 | $translateProvider.preferredLanguage('zh_CN'); |
68 | + } else if (lang === 'es') { | ||
69 | + $translateProvider.useSanitizeValueStrategy(null); | ||
70 | + $translateProvider.preferredLanguage('es_ES'); | ||
63 | } | 71 | } |
64 | 72 | ||
65 | for (var langKey in locales) { | 73 | for (var langKey in locales) { |
@@ -36,7 +36,7 @@ export default function AppRun($rootScope, $window, $injector, $location, $log, | @@ -36,7 +36,7 @@ export default function AppRun($rootScope, $window, $injector, $location, $log, | ||
36 | } | 36 | } |
37 | 37 | ||
38 | initWatchers(); | 38 | initWatchers(); |
39 | - | 39 | + |
40 | function initWatchers() { | 40 | function initWatchers() { |
41 | $rootScope.unauthenticatedHandle = $rootScope.$on('unauthenticated', function (event, doLogout) { | 41 | $rootScope.unauthenticatedHandle = $rootScope.$on('unauthenticated', function (event, doLogout) { |
42 | if (doLogout) { | 42 | if (doLogout) { |
ui/src/app/locale/locale.constant-es.js
0 → 100644
1 | +/* | ||
2 | + * Copyright © 2016-2017 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 | + | ||
17 | + export default function addLocaleSpanish(locales) { | ||
18 | + var es_ES = { | ||
19 | + "access": { | ||
20 | + "unauthorized": "No autorizado", | ||
21 | + "unauthorized-access": "Acceso no autorizado", | ||
22 | + "unauthorized-access-text": "Debes iniciar sesión para tener acceso a este recurso!", | ||
23 | + "access-forbidden": "Acceso Prohibido", | ||
24 | + "access-forbidden-text": "No tienes derechos para acceder a esta ubicación!<br/>Intenta iniciar sesión con otro usuario si todavía quieres acceder a esta ubicación.", | ||
25 | + "refresh-token-expired": "La sesión ha expirado", | ||
26 | + "refresh-token-failed": "No se puede actualizar la sesión" | ||
27 | + }, | ||
28 | + "action": { | ||
29 | + "activate": "Activar", | ||
30 | + "suspend": "Suspender", | ||
31 | + "save": "Guardar", | ||
32 | + "saveAs": "Guardar como", | ||
33 | + "cancel": "Cancelar", | ||
34 | + "ok": "OK", | ||
35 | + "delete": "Borrar", | ||
36 | + "add": "Agregar", | ||
37 | + "yes": "Si", | ||
38 | + "no": "No", | ||
39 | + "update": "Actualizar", | ||
40 | + "remove": "Eliminar", | ||
41 | + "search": "Buscar", | ||
42 | + "assign": "Asignar", | ||
43 | + "unassign": "Cancelar asignación", | ||
44 | + "share": "Compartir", | ||
45 | + "make-private": "Hacer privado", | ||
46 | + "apply": "Aplicar", | ||
47 | + "apply-changes": "Aplicar cambios", | ||
48 | + "edit-mode": "Modo Edición", | ||
49 | + "enter-edit-mode": "Modo Edición", | ||
50 | + "decline-changes": "Descartar cambios", | ||
51 | + "close": "Cerrar", | ||
52 | + "back": "Atrás", | ||
53 | + "run": "Correr", | ||
54 | + "sign-in": "Regístrate!", | ||
55 | + "edit": "Editar", | ||
56 | + "view": "Ver", | ||
57 | + "create": "Crear", | ||
58 | + "drag": "Arrastrar", | ||
59 | + "refresh": "Refrescar", | ||
60 | + "undo": "Deshacer", | ||
61 | + "copy": "Copiar", | ||
62 | + "paste": "Pegar", | ||
63 | + "import": "Importar", | ||
64 | + "export": "Exportar", | ||
65 | + "share-via": "Compartir vía {{provider}}" | ||
66 | + }, | ||
67 | + "aggregation": { | ||
68 | + "aggregation": "Agregación", | ||
69 | + "function": "Función de Agregación", | ||
70 | + "limit": "Valores Max", | ||
71 | + "group-interval": "Intervalo de agrupación", | ||
72 | + "min": "Min", | ||
73 | + "max": "Max", | ||
74 | + "avg": "Promedio", | ||
75 | + "sum": "Suma", | ||
76 | + "count": "Cuenta", | ||
77 | + "none": "Ninguno" | ||
78 | + }, | ||
79 | + "admin": { | ||
80 | + "general": "General", | ||
81 | + "general-settings": "Ajustes General", | ||
82 | + "outgoing-mail": "Mail de Salida", | ||
83 | + "outgoing-mail-settings": "Ajustes del Mail de Salida", | ||
84 | + "system-settings": "Sistema", | ||
85 | + "test-mail-sent": "Mail de prueba enviado correctamente!", | ||
86 | + "base-url": "URL Base", | ||
87 | + "base-url-required": "URL Base requerida.", | ||
88 | + "mail-from": "Mail Desde", | ||
89 | + "mail-from-required": "Mail Desde requerido.", | ||
90 | + "smtp-protocol": "Protocolo SMTP", | ||
91 | + "smtp-host": "Host SMTP", | ||
92 | + "smtp-host-required": "Host SMTP requerido.", | ||
93 | + "smtp-port": "Puerto SMTP", | ||
94 | + "smtp-port-required": "Debe ingresar un Puerto SMTP.", | ||
95 | + "smtp-port-invalid": "No parece un Puerto SMTP valido.", | ||
96 | + "timeout-msec": "Timeout (ms)", | ||
97 | + "timeout-required": "Timeout requerido.", | ||
98 | + "timeout-invalid": "No parece un Timeout valido.", | ||
99 | + "enable-tls": "Habilitar TLS", | ||
100 | + "send-test-mail": "Enviar mail de prueba" | ||
101 | + }, | ||
102 | + "attribute": { | ||
103 | + "attributes": "Atributos", | ||
104 | + "latest-telemetry": "Última telemetría", | ||
105 | + "attributes-scope": "Alcance de los atributos del dispositivo", | ||
106 | + "scope-latest-telemetry": "Última telemetría", | ||
107 | + "scope-client": "Atributos del Cliente", | ||
108 | + "scope-server": "Atributos del Servidor", | ||
109 | + "scope-shared": "Atributos Compartidos", | ||
110 | + "add": "Agregar atributo", | ||
111 | + "key": "Clave", | ||
112 | + "key-required": "Clave del atributo requerida.", | ||
113 | + "value": "Valor", | ||
114 | + "value-required": "Valor del atributo requerido.", | ||
115 | + "delete-attributes-title": "¿Estás seguro que quieres eliminar { count, select, 1 {1 atributo} other {# atributos} }?", | ||
116 | + "delete-attributes-text": "Ten cuidado, luego de confirmar el atributo será eliminado, y la información relacionada será irrecuperable.", | ||
117 | + "delete-attributes": "Borrar atributo", | ||
118 | + "enter-attribute-value": "Ingresar valor del atributo", | ||
119 | + "show-on-widget": "Mostrar en Widget", | ||
120 | + "widget-mode": "Widget", | ||
121 | + "next-widget": "Widget siguiente", | ||
122 | + "prev-widget": "Widget anterior", | ||
123 | + "add-to-dashboard": "Agregar al Panel", | ||
124 | + "add-widget-to-dashboard": "Agregar widget al Panel", | ||
125 | + "selected-attributes": "{ count, select, 1 {1 atributo} other {# atributos} } seleccionados", | ||
126 | + "selected-telemetry": "{ count, select, 1 {1 unidad de telemetría } other {# unidades de telemetría} } seleccionadas." | ||
127 | + }, | ||
128 | + "confirm-on-exit": { | ||
129 | + "message": "Tienes cambios sin guardar. ¿Estás seguro que quieres abandonar la página?", | ||
130 | + "html-message": "Tienes cambios sin guardar.<br/>¿Estás seguro que quieres abandonar la página?", | ||
131 | + "title": "Cambios sin guardar" | ||
132 | + }, | ||
133 | + "contact": { | ||
134 | + "country": "País", | ||
135 | + "city": "Ciudad", | ||
136 | + "state": "Estado/Provincia", | ||
137 | + "postal-code": "Código Postal", | ||
138 | + "postal-code-invalid": "Solo se permiten dígitos.", | ||
139 | + "address": "Dirección", | ||
140 | + "address2": "Dirección 2", | ||
141 | + "phone": "Teléfono", | ||
142 | + "email": "Email", | ||
143 | + "no-address": "Sin Dirección" | ||
144 | + }, | ||
145 | + "common": { | ||
146 | + "username": "Usuario", | ||
147 | + "password": "Contraseña", | ||
148 | + "enter-username": "Ingresa el nombre de usuario.", | ||
149 | + "enter-password": "Ingresa la contraseña", | ||
150 | + "enter-search": "Ingresa búsqueda" | ||
151 | + }, | ||
152 | + "customer": { | ||
153 | + "customers": "Clientes", | ||
154 | + "management": "Gestión de Clientes", | ||
155 | + "dashboard": "Panel del Cliente", | ||
156 | + "dashboards": "Paneles del Cliente", | ||
157 | + "devices": "Panel del Cliente", | ||
158 | + "public-dashboards": "Paneles Públicos", | ||
159 | + "public-devices": "Dispositivos Públicos", | ||
160 | + "add": "Agregar cliente", | ||
161 | + "delete": "Borrar cliente", | ||
162 | + "manage-customer-users": "Gestionar usuarios del cliente", | ||
163 | + "manage-customer-devices": "Gestionar dispositivos del cliente", | ||
164 | + "manage-customer-dashboards": "Gestionar paneles del cliente", | ||
165 | + "manage-public-devices": "Gestionar dispositivos públicos", | ||
166 | + "manage-public-dashboards": "Gestionar paneles públicos", | ||
167 | + "add-customer-text": "Agregar nuevo cliente", | ||
168 | + "no-customers-text": "No se encontrar clientes", | ||
169 | + "customer-details": "Detalles del cliente", | ||
170 | + "delete-customer-title": "¿Estás seguro que quieres eliminar el cliente '{{customerTitle}}'?", | ||
171 | + "delete-customer-text": "Ten cuidado, luego de confirmar el cliente será eliminado y toda la información relacionada será irrecuperable.", | ||
172 | + "delete-customers-title": "¿Estás seguro que quieres eliminar { count, select, 1 {1 cliente} other {# clientes} }?", | ||
173 | + "delete-customers-action-title": "Borrar { count, select, 1 {1 cliente} other {# clientes} }", | ||
174 | + "delete-customers-text": "Ten cuidado, luego de confirmar todos los clientes seleccionados serán eliminados y su información relacionada será irrecuperable.", | ||
175 | + "manage-users": "Gestionar usuarios", | ||
176 | + "manage-devices": "Gestionar dispositivos", | ||
177 | + "manage-dashboards": "Gestionar paneles", | ||
178 | + "title": "Título", | ||
179 | + "title-required": "Título requerido.", | ||
180 | + "description": "Descripción" | ||
181 | + }, | ||
182 | + "datetime": { | ||
183 | + "date-from": "Fecha desde", | ||
184 | + "time-from": "Tiempo desde", | ||
185 | + "date-to": "Fecha hasta", | ||
186 | + "time-to": "Tiempo hasta" | ||
187 | + }, | ||
188 | + "dashboard": { | ||
189 | + "dashboard": "Panel", | ||
190 | + "dashboards": "Paneles", | ||
191 | + "management": "Gestión de Paneles", | ||
192 | + "view-dashboards": "Ver paneles", | ||
193 | + "add": "Agregar Panel", | ||
194 | + "assign-dashboard-to-customer": "Asignar panel(es) a cliente", | ||
195 | + "assign-dashboard-to-customer-text": "Por favor, seleccione algún panel para asignar al Cliente.", | ||
196 | + "assign-to-customer-text": "Por favor, seleccione algún cliente para asignar al(los) panel(es).", | ||
197 | + "assign-to-customer": "Asignar a cliente", | ||
198 | + "unassign-from-customer": "Desasignar del cliente", | ||
199 | + "make-public": "Hacer panel público", | ||
200 | + "make-private": "Hacer panel privado", | ||
201 | + "no-dashboards-text": "Ningún panel encontrado", | ||
202 | + "no-widgets": "Ningún widget configurado", | ||
203 | + "add-widget": "Agregar nuevo widget", | ||
204 | + "title": "Titulo", | ||
205 | + "select-widget-title": "Seleccionar widget", | ||
206 | + "select-widget-subtitle": "Lista de tipos de widgets", | ||
207 | + "delete": "Eliminar panel", | ||
208 | + "title-required": "Título requerido.", | ||
209 | + "description": "Descripción", | ||
210 | + "details": "Detalles", | ||
211 | + "dashboard-details": "Detalles del panel", | ||
212 | + "add-dashboard-text": "Agregar nuevo panel", | ||
213 | + "assign-dashboards": "Asignar paneles", | ||
214 | + "assign-new-dashboard": "Asignar nuevo panel", | ||
215 | + "assign-dashboards-text": "Asignar { count, select, 1 {1 panel} other {# paneles} } al cliente", | ||
216 | + "delete-dashboards": "Eliminar paneles", | ||
217 | + "unassign-dashboards": "Desasignar paneles", | ||
218 | + "unassign-dashboards-action-title": "Desasignar { count, select, 1 {1 paneles} other {# paneles} } del cliente", | ||
219 | + "delete-dashboard-title": "¿Estás seguro que quieres eliminar el panel '{{dashboardTitle}}'?", | ||
220 | + "delete-dashboard-text": "Ten cuidado, el panel seleccionado será eliminado y la información relacionada sera irrecuperable.", | ||
221 | + "delete-dashboards-title": "¿Estás seguro que quieres eliminar { count, select, 1 {1 panel} other {# paneles} }?", | ||
222 | + "delete-dashboards-action-title": "Eliminar { count, select, 1 {1 panel} other {# paneles} }", | ||
223 | + "delete-dashboards-text": "Ten cuidado, los paneles seleccionados serán eliminados y la información relacionada será irrecuperable.", | ||
224 | + "unassign-dashboard-title": "¿Estás seguro que quieres desasignar el panel '{{dashboardTitle}}'?", | ||
225 | + "unassign-dashboard-text": "Luego de confirmar, el panel será desasignado y no podrá ser accesible por el cliente.", | ||
226 | + "unassign-dashboard": "Desasignar panel", | ||
227 | + "unassign-dashboards-title": "¿Estás seguro que quieres desasignar { count, select, 1 {1 panel} other {# paneles} }?", | ||
228 | + "unassign-dashboards-text": "Luego de confirmar, los paneles seleccionados serán desasignados y no podrán ser accesibles por el cliente.", | ||
229 | + "public-dashboard-title": "El panel ahora es público", | ||
230 | + "public-dashboard-text": "Tu panel <b>{{dashboardTitle}}</b> es ahora público y podrá ser accedido desde: <a href='{{publicLink}}' target='_blank'>aquí</a>:", | ||
231 | + "public-dashboard-notice": "<b>Nota:</b> No olvides hacer públicos los dispositivos relacionados para acceder a sus datos.", | ||
232 | + "make-private-dashboard-title": "¿Estás seguro que quieres hacer el panel '{{dashboardTitle}}' privado?", | ||
233 | + "make-private-dashboard-text": "Luego de confirmar, el panel será privado y no podrá ser accesible por otros.", | ||
234 | + "make-private-dashboard": "Hacer panel privado", | ||
235 | + "socialshare-text": "'{{dashboardTitle}}' powered by ThingsBoard", | ||
236 | + "socialshare-title": "'{{dashboardTitle}}' powered by ThingsBoard", | ||
237 | + "select-dashboard": "Seleccionar panel", | ||
238 | + "no-dashboards-matching": "Panel '{{dashboard}}' no encontrado.", | ||
239 | + "dashboard-required": "Panel requerido.", | ||
240 | + "select-existing": "Seleccionar paneles existentes", | ||
241 | + "create-new": "Crear nuevo panel", | ||
242 | + "new-dashboard-title": "Nuevo título", | ||
243 | + "open-dashboard": "Abrir panel", | ||
244 | + "set-background": "Definir fondo", | ||
245 | + "background-color": "Color de fondo", | ||
246 | + "background-image": "Imagen de fondo", | ||
247 | + "background-size-mode": "Modo tamaño de fondo", | ||
248 | + "no-image": "No se ha seleccionado ningúna imagen", | ||
249 | + "drop-image": "Suelte una imagen o haga clic para seleccionar un archivo para cargar.", | ||
250 | + "settings": "Ajustes", | ||
251 | + "columns-count": "Número de columnas", | ||
252 | + "columns-count-required": "Número de columnas requerido.", | ||
253 | + "min-columns-count-message": "Solo se permite un número mínimo de 10 columnas.", | ||
254 | + "max-columns-count-message": "Solo se permite un número máximo de 1000 columnas.", | ||
255 | + "widgets-margins": "Margen entre widgets", | ||
256 | + "horizontal-margin": "Margen horizontal", | ||
257 | + "horizontal-margin-required": "Margen horizontal requerido.", | ||
258 | + "min-horizontal-margin-message": "Solo se permite margen horizontal mínimo de 0.", | ||
259 | + "max-horizontal-margin-message": "Solo se permite margen horizontal máximo de 50.", | ||
260 | + "vertical-margin": "Margen vertical", | ||
261 | + "vertical-margin-required": "Margen vertical requerido.", | ||
262 | + "min-vertical-margin-message": "Solo se permite margen vertical mínimo de 0.", | ||
263 | + "max-vertical-margin-message": "Solo se permite margen vertical máximo de 50.", | ||
264 | + "display-title": "Mostrar título del panel", | ||
265 | + "title-color": "Color del título", | ||
266 | + "display-device-selection": "Mostrar selección de dispositivo", | ||
267 | + "display-dashboard-timewindow": "Mostrar ventana de tiempo", | ||
268 | + "display-dashboard-export": "Mostrar exportar", | ||
269 | + "import": "Importar panel", | ||
270 | + "export": "Exportar panel", | ||
271 | + "export-failed-error": "Imposible exportar panel: {{error}}", | ||
272 | + "create-new-dashboard": "Crear nuevo panel", | ||
273 | + "dashboard-file": "Archivo del panel", | ||
274 | + "invalid-dashboard-file-error": "Imposible importar panel: Estructura de datos inválida.", | ||
275 | + "dashboard-import-missing-aliases-title": "Configurar alias utilizados por el panel importado", | ||
276 | + "create-new-widget": "Crear nuevo widget", | ||
277 | + "import-widget": "Importar widget", | ||
278 | + "widget-file": "Archivo de widget", | ||
279 | + "invalid-widget-file-error": "Imposible importar widget: Estructura de datos inválida.", | ||
280 | + "widget-import-missing-aliases-title": "Configurar alias utilizados por el widget", | ||
281 | + "open-toolbar": "Abrir toolbar del panel", | ||
282 | + "close-toolbar": "Cerrar toolbar", | ||
283 | + "configuration-error": "Error de configuración", | ||
284 | + "alias-resolution-error-title": "Error de configuración de alias del panel", | ||
285 | + "invalid-aliases-config": "No se puede encontrar ningún dispositivo que coincida con algunos de los alias de filtro.<br/>" + | ||
286 | + "Póngase en contacto con su administrador para resolver este problema.", | ||
287 | + "select-devices": "Seleccionar dispositivos", | ||
288 | + "assignedToCustomer": "Asignado al cliente", | ||
289 | + "public": "Público", | ||
290 | + "public-link": "Link público", | ||
291 | + "copy-public-link": "Copiar link público", | ||
292 | + "public-link-copied-message": "El link público del panel se ha copiado al portapapeles" | ||
293 | + }, | ||
294 | + "datakey": { | ||
295 | + "settings": "Ajustes", | ||
296 | + "advanced": "Avanzado", | ||
297 | + "label": "Etiqueta", | ||
298 | + "color": "Color", | ||
299 | + "data-generation-func": "Función de generación de datos", | ||
300 | + "use-data-post-processing-func": "Usar funcíon de post-procesamiendo de datos", | ||
301 | + "configuration": "Ajustes de clave de datos", | ||
302 | + "timeseries": "Serie de tiempos", | ||
303 | + "attributes": "Atributos", | ||
304 | + "timeseries-required": "Series de tiempo del dispositivo requerido.", | ||
305 | + "timeseries-or-attributes-required": "Series de tiempo/Atributos requeridos.", | ||
306 | + "function-types": "Tipos de funciones", | ||
307 | + "function-types-required": "Tipos de funciones requerido." | ||
308 | + }, | ||
309 | + "datasource": { | ||
310 | + "type": "Típo de fuente de datos", | ||
311 | + "add-datasource-prompt": "Por favor, agrega una fuente de datos" | ||
312 | + }, | ||
313 | + "details": { | ||
314 | + "edit-mode": "Modo Edición", | ||
315 | + "toggle-edit-mode": "Ir a Modo Edición" | ||
316 | + }, | ||
317 | + "device": { | ||
318 | + "device": "Dispositivo", | ||
319 | + "device-required": "Dispositivo requerido.", | ||
320 | + "devices": "Dispositivos", | ||
321 | + "management": "Gestión de Dispositivos", | ||
322 | + "view-devices": "Ver dispositivos", | ||
323 | + "device-alias": "Alias de dispositivo", | ||
324 | + "aliases": "Alias de dispositivos", | ||
325 | + "no-alias-matching": "'{{alias}}' no encontrado.", | ||
326 | + "no-aliases-found": "Ningún alias encontrado.", | ||
327 | + "no-key-matching": "'{{key}}' no encontrado.", | ||
328 | + "no-keys-found": "Ninguna clave encontrada.", | ||
329 | + "create-new-alias": "Crear nuevo alias!", | ||
330 | + "create-new-key": "Crear nueva clave!", | ||
331 | + "duplicate-alias-error": "Alias duplicado '{{alias}}'.<br> El alias de los dispositivos deben ser únicos dentro del panel.", | ||
332 | + "configure-alias": "Configurar alias '{{alias}}'", | ||
333 | + "no-devices-matching": "No se encontró dispositivo '{{device}}'", | ||
334 | + "alias": "Alias", | ||
335 | + "alias-required": "Alias de dispositivo requerido.", | ||
336 | + "remove-alias": "Eliminar alias", | ||
337 | + "add-alias": "Agregar alias", | ||
338 | + "name-starts-with": "Nombre empieza con", | ||
339 | + "device-list": "Lista de dispositivos", | ||
340 | + "use-device-name-filter": "Usar filtro", | ||
341 | + "device-list-empty": "Ningún dispositivo seleccionado.", | ||
342 | + "device-name-filter-required": "Nombre de filtro requerido.", | ||
343 | + "device-name-filter-no-device-matched": "Ningún dispositivo encontrado que comience con '{{device}}'.", | ||
344 | + "add": "Agregar dispositivo", | ||
345 | + "assign-to-customer": "Asignar a cliente", | ||
346 | + "assign-device-to-customer": "Asignar dispositivo(s) a Cliente", | ||
347 | + "assign-device-to-customer-text": "Por favor, seleccione los dispositivos que serán asignados al cliente", | ||
348 | + "make-public": "Hacer dispositivo público", | ||
349 | + "make-private": "Hacer dispositivo privado", | ||
350 | + "no-devices-text": "Ningún dispositivo encontrado", | ||
351 | + "assign-to-customer-text": "Por favor, seleccione el cliente para asignar el(los) dispositivo(s)", | ||
352 | + "device-details": "Detalles del dispositivo", | ||
353 | + "add-device-text": "Agregar nuevo dispositivo", | ||
354 | + "credentials": "Credenciales", | ||
355 | + "manage-credentials": "Gestionar credenciales", | ||
356 | + "delete": "Eliminar dispositivo", | ||
357 | + "assign-devices": "Asignar dispositivo", | ||
358 | + "assign-devices-text": "Asignar { count, select, 1 {1 dispositivo} other {# dispositivos} } al cliente", | ||
359 | + "delete-devices": "Eliminar dispositivo", | ||
360 | + "unassign-from-customer": "Desasignar del cliente", | ||
361 | + "unassign-devices": "Desasignar dispositivos", | ||
362 | + "unassign-devices-action-title": "Desasignar { count, select, 1 {1 dispositivo} other {# dispositivos} } del cliente", | ||
363 | + "assign-new-device": "Asignar nuevo dispositivo", | ||
364 | + "make-public-device-title": "¿Estás seguro que quieres hacer el dispositivo '{{deviceName}}' público?", | ||
365 | + "make-public-device-text": "Luego de confirmar, el dispositivo y la información relacionada serán públicos y podrá ser accesible por otros.", | ||
366 | + "make-private-device-title": "¿Estás seguro que quieres hacer el dispositivo '{{deviceName}}' privado?", | ||
367 | + "make-private-device-text": "Luego de confirmar, el dispositivo y la información relacionada serán privados y no podrá ser accesible por otros.", | ||
368 | + "view-credentials": "Ver credenciales", | ||
369 | + "delete-device-title": "¿Estás seguro que quieres eliminar el dispositivo '{{deviceName}}'?", | ||
370 | + "delete-device-text": "Ten cuidado, luego de confirmar los dispositivos serán eliminados y la información relacionada será irrecuperable.", | ||
371 | + "delete-devices-title": "¿Estás seguro que quieres eliminar { count, select, 1 {1 dispositivo} other {# dispositivos} }?", | ||
372 | + "delete-devices-action-title": "Eliminar { count, select, 1 {1 dispositivo} other {# dispositivos} }", | ||
373 | + "delete-devices-text": "Ten cuidado, luego de confirmar los dispositivos seleccionados serán eliminados y la información relacionada será irrecuperable.", | ||
374 | + "unassign-device-title": "¿Estás seguro que quieres desasignar el dispositivo '{{deviceName}}'?", | ||
375 | + "unassign-device-text": "Luego de confirmar el dispositivo será desasignado y no podrá ser accesible por el cliente.", | ||
376 | + "unassign-device": "Desasignar dispositivo", | ||
377 | + "unassign-devices-title": "¿Estás seguro que quieres desasignar { count, select, 1 {1 dispositivo} other {# dispositivos} }?", | ||
378 | + "unassign-devices-text": "Luego de confirmar los dispositivos seleccionados serán desasignados y no podrán ser accedidos por el cliente.", | ||
379 | + "device-credentials": "Credenciales del dispositivo", | ||
380 | + "credentials-type": "Tipo de credencial", | ||
381 | + "access-token": "Access token", | ||
382 | + "access-token-required": "Access token requerido.", | ||
383 | + "access-token-invalid": "Access token debe tener entre 1 a 20 caracteres.", | ||
384 | + "rsa-key": "Clave pública RSA", | ||
385 | + "rsa-key-required": "Clave pública RSA requerida.", | ||
386 | + "secret": "Secreta", | ||
387 | + "secret-required": "Secreta requerida.", | ||
388 | + "name": "Nombre", | ||
389 | + "name-required": "Nombre requerido.", | ||
390 | + "description": "Descripción", | ||
391 | + "events": "Eventos", | ||
392 | + "details": "Detalles", | ||
393 | + "copyId": "Copiar ID", | ||
394 | + "copyAccessToken": "Copiar access token", | ||
395 | + "idCopiedMessage": "Id del dispositivo copiado al portapapeles", | ||
396 | + "accessTokenCopiedMessage": "Access token del dispositivo copiado al portapapeles", | ||
397 | + "assignedToCustomer": "Asignado al cliente", | ||
398 | + "unable-delete-device-alias-title": "Imposible eliminar alias del dispositivo", | ||
399 | + "unable-delete-device-alias-text": "Alias '{{deviceAlias}}' no puede ser eliminado. Esta siendo usado por el(los) widget(s):<br/>{{widgetsList}}", | ||
400 | + "is-gateway": "Es gateway", | ||
401 | + "public": "Público", | ||
402 | + "device-public": "Dispositivo público" | ||
403 | + }, | ||
404 | + "dialog": { | ||
405 | + "close": "Cerrar cuadro de diálogo" | ||
406 | + }, | ||
407 | + "error": { | ||
408 | + "unable-to-connect": "Imposible conectar con el servidor! Por favor, revise su conexión a internet.", | ||
409 | + "unhandled-error-code": "Código de error no manejado: {{errorCode}}", | ||
410 | + "unknown-error": "Error desconocido" | ||
411 | + }, | ||
412 | + "event": { | ||
413 | + "event-type": "Tipo de evento", | ||
414 | + "type-alarm": "Alarma", | ||
415 | + "type-error": "Error", | ||
416 | + "type-lc-event": "Ciclo de vida", | ||
417 | + "type-stats": "Estadísticas", | ||
418 | + "no-events-prompt": "Ningún evento encontrado.", | ||
419 | + "error": "Error", | ||
420 | + "alarm": "Alarma", | ||
421 | + "event-time": "Hora del evento", | ||
422 | + "server": "Servidor", | ||
423 | + "body": "Cuerpo", | ||
424 | + "method": "Método", | ||
425 | + "event": "Evento", | ||
426 | + "status": "Status", | ||
427 | + "success": "Éxito", | ||
428 | + "failed": "Fallo", | ||
429 | + "messages-processed": "Mensajes procesados", | ||
430 | + "errors-occurred": "Ocurrieron errores" | ||
431 | + }, | ||
432 | + "fullscreen": { | ||
433 | + "expand": "Expandir a Pantalla Completa", | ||
434 | + "exit": "Salir de Pantalla Completa", | ||
435 | + "toggle": "Cambiar el modo de Pantalla Completa", | ||
436 | + "fullscreen": "Pantalla Completa" | ||
437 | + }, | ||
438 | + "function": { | ||
439 | + "function": "Función" | ||
440 | + }, | ||
441 | + "grid": { | ||
442 | + "delete-item-title": "¿Estás seguro que quieres eliminar este item?", | ||
443 | + "delete-item-text": "Ten cuidado, luego de confirmar el item será eliminado y la información relacionada será irrecuperable.", | ||
444 | + "delete-items-title": "¿Estás seguro que quieres eliminar { count, select, 1 {1 item} other {# items} }?", | ||
445 | + "delete-items-action-title": "Eliminar { count, select, 1 {1 item} other {# items} }", | ||
446 | + "delete-items-text": "Ten cuidado, luego de confirmar los items seleccionados serán eliminados y la información relacionada será irrecuperable.", | ||
447 | + "add-item-text": "Agregar nuevo item", | ||
448 | + "no-items-text": "Ningún item encontrado", | ||
449 | + "item-details": "Detalles del item", | ||
450 | + "delete-item": "Borrar Item", | ||
451 | + "delete-items": "Borrar Items", | ||
452 | + "scroll-to-top": "Ir hacia arriba" | ||
453 | + }, | ||
454 | + "help": { | ||
455 | + "goto-help-page": "Ir a Página de Ayuda" | ||
456 | + }, | ||
457 | + "home": { | ||
458 | + "home": "Principal", | ||
459 | + "profile": "Perfil", | ||
460 | + "logout": "Salir", | ||
461 | + "menu": "Menu", | ||
462 | + "avatar": "Avatar", | ||
463 | + "open-user-menu": "Abrir menú de usuario" | ||
464 | + }, | ||
465 | + "import": { | ||
466 | + "no-file": "Ningún archivo seleccionado", | ||
467 | + "drop-file": "Arrastra un archivo JSON o clickea para seleccionar uno." | ||
468 | + }, | ||
469 | + "item": { | ||
470 | + "selected": "Seleccionado" | ||
471 | + }, | ||
472 | + "js-func": { | ||
473 | + "no-return-error": "La función debe retornar un valor!", | ||
474 | + "return-type-mismatch": "La función debe retornar un valor de tipo: '{{type}}'!" | ||
475 | + }, | ||
476 | + "legend": { | ||
477 | + "position": "Posición de leyenda", | ||
478 | + "show-max": "Mostrar máximo", | ||
479 | + "show-min": "Mostrar mínimo", | ||
480 | + "show-avg": "Mostrar promedio", | ||
481 | + "show-total": "Mostrar total", | ||
482 | + "settings": "Ajustes de leyenda.", | ||
483 | + "min": "min", | ||
484 | + "max": "max", | ||
485 | + "avg": "prom", | ||
486 | + "total": "total" | ||
487 | + }, | ||
488 | + "login": { | ||
489 | + "login": "Ingresar", | ||
490 | + "request-password-reset": "Pedir restablecer contraseña", | ||
491 | + "reset-password": "Restablecer contraseña", | ||
492 | + "create-password": "Crear contraseña", | ||
493 | + "passwords-mismatch-error": "Las contraseñas deben ser las mismas!", | ||
494 | + "password-again": "Reingresa la contraseña", | ||
495 | + "sign-in": "Iniciar sesión", | ||
496 | + "username": "Usuario (email)", | ||
497 | + "remember-me": "Recordar", | ||
498 | + "forgot-password": "¿Olvidaste tu contraseña?", | ||
499 | + "password-reset": "Restablecer Contraseña", | ||
500 | + "new-password": "Nueva contraseña", | ||
501 | + "new-password-again": "Repita la nueva contraseña", | ||
502 | + "password-link-sent-message": "Se ha enviado el enlace de restablecimiento de contraseña con éxito!", | ||
503 | + "email": "Email" | ||
504 | + }, | ||
505 | + "plugin": { | ||
506 | + "plugins": "Plugins", | ||
507 | + "delete": "Eliminar plugin", | ||
508 | + "activate": "Activar plugin", | ||
509 | + "suspend": "Suspender plugin", | ||
510 | + "active": "Activo", | ||
511 | + "suspended": "Suspendido", | ||
512 | + "name": "Nombre", | ||
513 | + "name-required": "Nombre requerido.", | ||
514 | + "description": "Descripción", | ||
515 | + "add": "Agregar Plugin", | ||
516 | + "delete-plugin-title": "¿Estás seguro que quieres eliminar el plugin '{{pluginName}}'?", | ||
517 | + "delete-plugin-text": "Ten cuidado, luego de confirmar el plugin será eliminado y la información relacionada será irrecuperable.", | ||
518 | + "delete-plugins-title": "¿Estás seguro que quieres eliminar { count, select, 1 {1 plugin} other {# plugins} }?", | ||
519 | + "delete-plugins-action-title": "Eliminar { count, select, 1 {1 plugin} other {# plugins} }", | ||
520 | + "delete-plugins-text": "Ten cuidado, luego de confirmar todos los plugins seleccionados serán eliminados y la información relacionada será irrecuperable.", | ||
521 | + "add-plugin-text": "Agregar nuevo plugin", | ||
522 | + "no-plugins-text": "Ningún plugin encontrado", | ||
523 | + "plugin-details": "Detalles", | ||
524 | + "api-token": "API token", | ||
525 | + "api-token-required": "API token requerido.", | ||
526 | + "type": "Tipo del plugin", | ||
527 | + "type-required": "Tipo requerido.", | ||
528 | + "configuration": "Ajustes del plugin", | ||
529 | + "system": "Sistema", | ||
530 | + "select-plugin": "plugin", | ||
531 | + "plugin": "Plugin", | ||
532 | + "no-plugins-matching": "No se encontraron plugins: '{{plugin}}'", | ||
533 | + "plugin-required": "Plugin requerido.", | ||
534 | + "plugin-require-match": "Por favor, elija un plugin existente.", | ||
535 | + "events": "Eventos", | ||
536 | + "details": "Detalles", | ||
537 | + "import": "Importar plugin", | ||
538 | + "export": "Exportar plugin", | ||
539 | + "export-failed-error": "Imposible exportar plugin: {{error}}", | ||
540 | + "create-new-plugin": "Crear nuevo plugin", | ||
541 | + "plugin-file": "Archivo", | ||
542 | + "invalid-plugin-file-error": "Imposible de importar plugin: Estructura de datos inválida." | ||
543 | + }, | ||
544 | + "position": { | ||
545 | + "top": "Arriba", | ||
546 | + "bottom": "Abajo", | ||
547 | + "left": "Izquierda", | ||
548 | + "right": "Derecha" | ||
549 | + }, | ||
550 | + "profile": { | ||
551 | + "profile": "Perfil", | ||
552 | + "change-password": "Cambiar contraseña", | ||
553 | + "current-password": "Contraseña actual" | ||
554 | + }, | ||
555 | + "rule": { | ||
556 | + "rules": "Reglas", | ||
557 | + "delete": "Eliminar regla", | ||
558 | + "activate": "Activar regla", | ||
559 | + "suspend": "Suspender regla", | ||
560 | + "active": "Activada", | ||
561 | + "suspended": "Suspendida", | ||
562 | + "name": "Nombre", | ||
563 | + "name-required": "Nombre requerido.", | ||
564 | + "description": "Descripción", | ||
565 | + "add": "Agregar Regla", | ||
566 | + "delete-rule-title": "¿Estás seguro que quieres eliminar la regla '{{ruleName}}'?", | ||
567 | + "delete-rule-text": "Ten cuidado, luego de confirmar la regla será eliminada y la información relacionada será irrecuperable.", | ||
568 | + "delete-rules-title": "¿Estás seguro que quieres eliminar { count, select, 1 {1 regla} other {# reglas} }?", | ||
569 | + "delete-rules-action-title": "Eliminar { count, select, 1 {1 regla} other {# reglas} }", | ||
570 | + "delete-rules-text": "Ten cuidado, luego de confirmar todas las reglas seleccionadas serán borradas y la información relacionada será irrecuperable.", | ||
571 | + "add-rule-text": "Agregar nueva regla", | ||
572 | + "no-rules-text": "Ninguna regla encontrada", | ||
573 | + "rule-details": "Detalles", | ||
574 | + "filters": "Filtros", | ||
575 | + "filter": "Filtro", | ||
576 | + "add-filter-prompt": "Por favor, ingresa un filtro", | ||
577 | + "remove-filter": "Eliminar filtro", | ||
578 | + "add-filter": "Agregar filtro", | ||
579 | + "filter-name": "Nombre", | ||
580 | + "filter-type": "Tipo", | ||
581 | + "edit-filter": "Editar filtro", | ||
582 | + "view-filter": "Ver filtro", | ||
583 | + "component-name": "Nombre", | ||
584 | + "component-name-required": "Nombre requerido.", | ||
585 | + "component-type": "Tipo", | ||
586 | + "component-type-required": "Tipo requerido.", | ||
587 | + "processor": "Procesador", | ||
588 | + "no-processor-configured": "Ningún procesador encontrado", | ||
589 | + "create-processor": "Crear procesador", | ||
590 | + "processor-name": "Nombre", | ||
591 | + "processor-type": "Tipo", | ||
592 | + "plugin-action": "Acción del Plugin", | ||
593 | + "action-name": "Nombre", | ||
594 | + "action-type": "Tipo", | ||
595 | + "create-action-prompt": "Por favor, crea una acción.", | ||
596 | + "create-action": "Crear acción", | ||
597 | + "details": "Detalles", | ||
598 | + "events": "Eventos", | ||
599 | + "system": "Sistema", | ||
600 | + "import": "Importar regla", | ||
601 | + "export": "Exportar regla", | ||
602 | + "export-failed-error": "Imposible de exportar regla: {{error}}", | ||
603 | + "create-new-rule": "Crear nueva regla", | ||
604 | + "rule-file": "Archivo", | ||
605 | + "invalid-rule-file-error": "Imposible de importar regla: Estructura de datos inválida." | ||
606 | + }, | ||
607 | + "rule-plugin": { | ||
608 | + "management": "Gestión de Reglas y Plugins" | ||
609 | + }, | ||
610 | + "tenant": { | ||
611 | + "tenants": "Tenants", | ||
612 | + "management": "Gestión de Tenant", | ||
613 | + "add": "Agregar Tenant", | ||
614 | + "admins": "Admins", | ||
615 | + "manage-tenant-admins": "Gestionar administradores tenant", | ||
616 | + "delete": "Eliminar tenant", | ||
617 | + "add-tenant-text": "Agregar nuevo tenant", | ||
618 | + "no-tenants-text": "Ningún tenant encontrado", | ||
619 | + "tenant-details": "Detalles del Tenant", | ||
620 | + "delete-tenant-title": "¿Estás seguro que quieres eliminar el tenant '{{tenantTitle}}'?", | ||
621 | + "delete-tenant-text": "Ten cuidado, luego de confirmar el tenant será eliminado y la información relacionada será irrecuperable.", | ||
622 | + "delete-tenants-title": "¿Estás seguro que quieres eliminar { count, select, 1 {1 tenant} other {# tenants} }?", | ||
623 | + "delete-tenants-action-title": "Eliminar { count, select, 1 {1 tenant} other {# tenants} }", | ||
624 | + "delete-tenants-text": "Ten cuidado, luego de confirmar los tenants seleccionados serán eliminados y la información relacionada será irrecuperable.", | ||
625 | + "title": "Título", | ||
626 | + "title-required": "Título requerido.", | ||
627 | + "description": "Descripción" | ||
628 | + }, | ||
629 | + "timeinterval": { | ||
630 | + "seconds-interval": "{ seconds, select, 1 {1 segundo} other {# segundos} }", | ||
631 | + "minutes-interval": "{ minutes, select, 1 {1 minuto} other {# minutos} }", | ||
632 | + "hours-interval": "{ hours, select, 1 {1 hora} other {# horas} }", | ||
633 | + "days-interval": "{ days, select, 1 {1 día} other {# días} }", | ||
634 | + "days": "Días", | ||
635 | + "hours": "Horas", | ||
636 | + "minutes": "Minutos", | ||
637 | + "seconds": "Segundos", | ||
638 | + "advanced": "Avanzado" | ||
639 | + }, | ||
640 | + "timewindow": { | ||
641 | + "days": "{ days, select, 1 { día } other {# días } }", | ||
642 | + "hours": "{ hours, select, 0 { horas } 1 {1 hora } other {# horas } }", | ||
643 | + "minutes": "{ minutes, select, 0 { minutos } 1 {1 minuto } other {# minutos } }", | ||
644 | + "seconds": "{ seconds, select, 0 { segundos } 1 {1 segundo } other {# segundos } }", | ||
645 | + "realtime": "Tiempo-real", | ||
646 | + "history": "Histórico", | ||
647 | + "last-prefix": "último", | ||
648 | + "period": "desde {{ startTime }} hasta {{ endTime }}", | ||
649 | + "edit": "Editar ventana de tiempo", | ||
650 | + "date-range": "Rango de fechas", | ||
651 | + "last": "Últimos", | ||
652 | + "time-period": "Período de tiempo" | ||
653 | + }, | ||
654 | + "user": { | ||
655 | + "users": "Usuarios", | ||
656 | + "customer-users": "Usuarios del Cliente", | ||
657 | + "tenant-admins": "Tenant Admins", | ||
658 | + "sys-admin": "Administrador del Sistema", | ||
659 | + "tenant-admin": "Administrador Tenant", | ||
660 | + "customer": "Cliente", | ||
661 | + "anonymous": "Anónimo", | ||
662 | + "add": "Agregar usuario", | ||
663 | + "delete": "Eliminar usuario", | ||
664 | + "add-user-text": "Agregar nuevo usuario", | ||
665 | + "no-users-text": "Ningún usuario encontrado", | ||
666 | + "user-details": "Detalles del usuario", | ||
667 | + "delete-user-title": "¿Estás seguro que quieres eliminar el usuario '{{userEmail}}'?", | ||
668 | + "delete-user-text": "Ten cuidado, luego de confirmar el usuario seleccionado será eliminado y la información relacionada será irrecuperable.", | ||
669 | + "delete-users-title": "¿Estás seguro que quieres eliminar { count, select, 1 {1 usuario} other {# usuarios} }?", | ||
670 | + "delete-users-action-title": "Borrar { count, select, 1 {1 usuario} other {# usuarios} }", | ||
671 | + "delete-users-text": "Ten cuidado, luego de confirmar los usuarios seleccionados serán eliminados y la información relacionada será irrecuperable.", | ||
672 | + "activation-email-sent-message": "Mail de activación enviado con éxito!", | ||
673 | + "resend-activation": "Reenviar activación", | ||
674 | + "email": "Email", | ||
675 | + "email-required": "Email requerido.", | ||
676 | + "first-name": "Nombre", | ||
677 | + "last-name": "Apellido", | ||
678 | + "description": "Descripción", | ||
679 | + "default-dashboard": "Panel por defecto", | ||
680 | + "always-fullscreen": "Siempre en pantalla completa" | ||
681 | + }, | ||
682 | + "value": { | ||
683 | + "type": "Tipo de valor", | ||
684 | + "string": "Cadena de texto", | ||
685 | + "string-value": "Valor de cadena de texto", | ||
686 | + "integer": "Nro entero", | ||
687 | + "integer-value": "Valor de nro entero", | ||
688 | + "invalid-integer-value": "Valor inválido", | ||
689 | + "double": "Nro decimal", | ||
690 | + "double-value": "Valor nro decimal", | ||
691 | + "boolean": "Booleano", | ||
692 | + "boolean-value": "Valor booleano", | ||
693 | + "false": "Falso", | ||
694 | + "true": "Verdadero" | ||
695 | + }, | ||
696 | + "widget": { | ||
697 | + "widget-library": "Bibloteca de Widgets", | ||
698 | + "widget-bundle": "Paquetes de Widgets", | ||
699 | + "select-widgets-bundle": "Seleccionar paquete de widgets", | ||
700 | + "management": "Gestión de Widgets", | ||
701 | + "editor": "Editor de widgets", | ||
702 | + "widget-type-not-found": "Problema al cargar la configuración del widget.<br>Probablemente asociado\n El tipo de widget fue eliminado.", | ||
703 | + "widget-type-load-error": "Widget no pudo ser cargado debido a estos errores:", | ||
704 | + "remove": "Eliminar widget", | ||
705 | + "edit": "Editar widget", | ||
706 | + "remove-widget-title": "¿Estás seguro que quieres eliminar el widget '{{widgetTitle}}'?", | ||
707 | + "remove-widget-text": "Luego de confirmar el widget será eliminado y toda la información relacionada será irrecuperable..", | ||
708 | + "timeseries": "Series de tiempo", | ||
709 | + "latest-values": "Últimos valores", | ||
710 | + "rpc": "Widget de control", | ||
711 | + "static": "Widget estático", | ||
712 | + "select-widget-type": "Seleccionar tipo de widget", | ||
713 | + "missing-widget-title-error": "El titulo del widget debe ser especificado!", | ||
714 | + "widget-saved": "Widget guardado", | ||
715 | + "unable-to-save-widget-error": "Imposible guardar widget! Tiene errores!", | ||
716 | + "save": "Guardar widget", | ||
717 | + "saveAs": "Guardar widget como", | ||
718 | + "save-widget-type-as": "Guardar tipo de widget como", | ||
719 | + "save-widget-type-as-text": "Por favor, ingrese un nuevo titulo y/o seleccione un paquete de destino.", | ||
720 | + "toggle-fullscreen": "Cambiar a pantalla completa", | ||
721 | + "run": "Correr widget", | ||
722 | + "title": "Titulo", | ||
723 | + "title-required": "Titulo requerido.", | ||
724 | + "type": "Tipo", | ||
725 | + "resources": "Recursos", | ||
726 | + "resource-url": "JavaScript/CSS URL", | ||
727 | + "remove-resource": "Eliminar recurso", | ||
728 | + "add-resource": "Agregar recurso", | ||
729 | + "html": "HTML", | ||
730 | + "tidy": "Tidy", | ||
731 | + "css": "CSS", | ||
732 | + "settings-schema": "Esquema de configuración", | ||
733 | + "datakey-settings-schema": "Esquema de configuración de clave de datos", | ||
734 | + "javascript": "Javascript", | ||
735 | + "remove-widget-type-title": "¿Estás seguro que quieres eliminar el tipo del widget '{{widgetName}}'?", | ||
736 | + "remove-widget-type-text": "Luego de confirmar el tipo será eliminado y la información relacionada será irrecuperable.", | ||
737 | + "remove-widget-type": "Eliminar tipo de widget.", | ||
738 | + "add-widget-type": "Agregar nuevo tipo de widget", | ||
739 | + "widget-type-load-failed-error": "Error al cargar el tipo de widget!", | ||
740 | + "widget-template-load-failed-error": "Error al cargar el template del widget!", | ||
741 | + "add": "Agregar Widget", | ||
742 | + "undo": "Deshacer cambios", | ||
743 | + "export": "Exportar widget" | ||
744 | + }, | ||
745 | + "widgets-bundle": { | ||
746 | + "current": "Paquete actual", | ||
747 | + "widgets-bundles": "Paquete de Widgets", | ||
748 | + "add": "Agregar paquete de widgets", | ||
749 | + "delete": "Eliminar paquete de widgets", | ||
750 | + "title": "Título", | ||
751 | + "title-required": "Título requerido.", | ||
752 | + "add-widgets-bundle-text": "Agregar nuevo paquete de widgets", | ||
753 | + "no-widgets-bundles-text": "Ningún paquete de widgets encontrado", | ||
754 | + "empty": "Paquete de widgets vacío.", | ||
755 | + "details": "Detalles", | ||
756 | + "widgets-bundle-details": "Detalles del paquete de Widgets", | ||
757 | + "delete-widgets-bundle-title": "¿Estás seguro que desea eliminar el paquete de widgets '{{widgetsBundleTitle}}'?", | ||
758 | + "delete-widgets-bundle-text": "Ten cuidado, luego de confirmar todos los paquetes seleccionados serán eliminados y su información relacionada será irrecuperable.", | ||
759 | + "delete-widgets-bundles-title": "¿Estás seguro que deseas eliminar { count, select, 1 {1 paquete de widgets} other {# paquetes de widgets} }?", | ||
760 | + "delete-widgets-bundles-action-title": "Eliminar { count, select, 1 {1 paquete de widgets} other {# paquetes de widgets} }", | ||
761 | + "delete-widgets-bundles-text": "Ten cuidado, luego de confirmar todos los paquetes seleccionados serán eliminados y la información relacionada será irrecuperable.", | ||
762 | + "no-widgets-bundles-matching": "Ningún paquete '{{widgetsBundle}}' encontrado.", | ||
763 | + "widgets-bundle-required": "Paquete de widget requerido.", | ||
764 | + "system": "Sistema", | ||
765 | + "import": "Importar paquete de widgets", | ||
766 | + "export": "Exportar paquete de widgets", | ||
767 | + "export-failed-error": "Imposible exportar paquete de widgets: {{error}}", | ||
768 | + "create-new-widgets-bundle": "Crear nuevo paquete de widgets", | ||
769 | + "widgets-bundle-file": "Archivo de paquete de widgets", | ||
770 | + "invalid-widgets-bundle-file-error": "Imposible importar paquete de widgets: Estructura de datos inválida." | ||
771 | + }, | ||
772 | + "widget-config": { | ||
773 | + "data": "Datos", | ||
774 | + "settings": "Ajustes", | ||
775 | + "advanced": "Avanzado", | ||
776 | + "title": "Titulo", | ||
777 | + "general-settings": "Ajustes generales", | ||
778 | + "display-title": "Mostrar titulo", | ||
779 | + "drop-shadow": "Sombra", | ||
780 | + "enable-fullscreen": "Habilitar pantalla completa", | ||
781 | + "background-color": "Color de fondo", | ||
782 | + "text-color": "Color del texto", | ||
783 | + "padding": "Relleno", | ||
784 | + "title-style": "Estilo de título", | ||
785 | + "mobile-mode-settings": "Ajustes mobile.", | ||
786 | + "order": "Orden", | ||
787 | + "height": "Altura", | ||
788 | + "units": "Caracter especial a mostrar en el siguiente valor", | ||
789 | + "decimals": "Números de dígitos después de la coma", | ||
790 | + "timewindow": "Ventana de tiempo", | ||
791 | + "use-dashboard-timewindow": "Usar ventana de tiempo del Panel", | ||
792 | + "display-legend": "Mostrar leyenda", | ||
793 | + "datasources": "Set de datos", | ||
794 | + "datasource-type": "Tipo", | ||
795 | + "datasource-parameters": "Parámetros", | ||
796 | + "remove-datasource": "Eliminar set de datos", | ||
797 | + "add-datasource": "Agregar set de datos", | ||
798 | + "target-device": "Dispositivo destino" | ||
799 | + }, | ||
800 | + "widget-type": { | ||
801 | + "import": "Importar tipo de widget", | ||
802 | + "export": "Exportar tipo de widget", | ||
803 | + "export-failed-error": "Imposible exportar tipo de widget: {{error}}", | ||
804 | + "create-new-widget-type": "Crear nuevo tipo de widget", | ||
805 | + "widget-type-file": "Tipo de archivo del widget", | ||
806 | + "invalid-widget-type-file-error": "Imposible de importar tipo de widget: Estructura de datos inválida." | ||
807 | + }, | ||
808 | + "language": { | ||
809 | + "language": "Lenguaje", | ||
810 | + "en_US": "Inglés", | ||
811 | + "ko_KR": "Coreano", | ||
812 | + "zh_CN": "Chino", | ||
813 | + "ru_RU": "Ruso", | ||
814 | + "es_ES": "Español" | ||
815 | + } | ||
816 | + }; | ||
817 | + angular.extend(locales, {'es_ES': es_ES}); | ||
818 | +} |
@@ -776,7 +776,9 @@ export default function addLocaleKorean(locales) { | @@ -776,7 +776,9 @@ export default function addLocaleKorean(locales) { | ||
776 | "language": "언어", | 776 | "language": "언어", |
777 | "en_US": "영어", | 777 | "en_US": "영어", |
778 | "ko_KR": "한글", | 778 | "ko_KR": "한글", |
779 | - "zh_CN": "중국어" | 779 | + "zh_CN": "중국어", |
780 | + "ru_RU": "러시아어", | ||
781 | + "es_ES": "스페인어" | ||
780 | } | 782 | } |
781 | }; | 783 | }; |
782 | angular.extend(locales, {'ko_KR': ko_KR}); | 784 | angular.extend(locales, {'ko_KR': ko_KR}); |
ui/src/app/locale/locale.constant-ru.js
0 → 100644
1 | +/* | ||
2 | + * Copyright © 2016-2017 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 | + | ||
17 | +export default function addLocaleRussian(locales) { | ||
18 | + var ru_RU = { | ||
19 | + "access": { | ||
20 | + "unauthorized": "Неавторизированный", | ||
21 | + "unauthorized-access": "Несанкционированный доступ", | ||
22 | + "unauthorized-access-text": "Вы должны войти в систему для получения доступа к этому ресурсу!", | ||
23 | + "access-forbidden": "Доступ запрещен", | ||
24 | + "access-forbidden-text": "У вас нет прав доступа к этому ресурсу!<br/>Для получения доступа попробуйте войти под другим пользователем.", | ||
25 | + "refresh-token-expired": "Сессия истекла", | ||
26 | + "refresh-token-failed": "Не удалось обновить сессию" | ||
27 | + }, | ||
28 | + "action": { | ||
29 | + "activate": "Активировать", | ||
30 | + "suspend": "Приостановить", | ||
31 | + "save": "Сохранить", | ||
32 | + "saveAs": "Сохранить как", | ||
33 | + "cancel": "Отмена", | ||
34 | + "ok": "ОК", | ||
35 | + "delete": "Удалить", | ||
36 | + "add": "Добавить", | ||
37 | + "yes": "Да", | ||
38 | + "no": "Нет", | ||
39 | + "update": "Обновить", | ||
40 | + "remove": "Удалить", | ||
41 | + "search": "Поиск", | ||
42 | + "assign": "Присвоить", | ||
43 | + "unassign": "Отменить присвоение", | ||
44 | + "share": "Поделиться", | ||
45 | + "make-private": "Закрыть для общего доступа", | ||
46 | + "apply": "Применить", | ||
47 | + "apply-changes": "Применить изменения", | ||
48 | + "edit-mode": "Режим редактирования", | ||
49 | + "enter-edit-mode": "Режим редактирования", | ||
50 | + "decline-changes": "Отменить изменения", | ||
51 | + "close": "Закрыть", | ||
52 | + "back": "Назад", | ||
53 | + "run": "Запуск", | ||
54 | + "sign-in": "Войти", | ||
55 | + "edit": "Редактировать", | ||
56 | + "view": "Просмотреть", | ||
57 | + "create": "Создать", | ||
58 | + "drag": "Переместить", | ||
59 | + "refresh": "Обновить", | ||
60 | + "undo": "Откатить", | ||
61 | + "copy": "Копировать", | ||
62 | + "paste": "Вставить", | ||
63 | + "import": "Импортировать", | ||
64 | + "export": "Экспортировать", | ||
65 | + "share-via": "Поделиться в {{provider}}" | ||
66 | + }, | ||
67 | + "aggregation": { | ||
68 | + "aggregation": "Агрегация", | ||
69 | + "function": "Тип агрегации данных", | ||
70 | + "limit": "Максимальное значение", | ||
71 | + "group-interval": "Интервал группировки", | ||
72 | + "min": "Мин", | ||
73 | + "max": "Maкс", | ||
74 | + "avg": "Среднее", | ||
75 | + "sum": "Сумма", | ||
76 | + "count": "Количество", | ||
77 | + "none": "Без агрегации" | ||
78 | + }, | ||
79 | + "admin": { | ||
80 | + "general": "Общие", | ||
81 | + "general-settings": "Общие настройки", | ||
82 | + "outgoing-mail": "Исходящая почта", | ||
83 | + "outgoing-mail-settings": "Настройки исходящей почты", | ||
84 | + "system-settings": "Системные настройки", | ||
85 | + "test-mail-sent": "Пробное письмо успешно отправлено!", | ||
86 | + "base-url": "Базовая URL", | ||
87 | + "base-url-required": "Базовая URL обязательна.", | ||
88 | + "mail-from": "Отправитель", | ||
89 | + "mail-from-required": "Отправитель обязателен.", | ||
90 | + "smtp-protocol": "SMTP протокол", | ||
91 | + "smtp-host": "SMTP хост", | ||
92 | + "smtp-host-required": "SMTP хост обязателен.", | ||
93 | + "smtp-port": "SMTP порт", | ||
94 | + "smtp-port-required": "SMTP порт обязателен.", | ||
95 | + "smtp-port-invalid": "Недействительный SMTP порт.", | ||
96 | + "timeout-msec": "Таймаут (мс)", | ||
97 | + "timeout-required": "Таймаут обязателен.", | ||
98 | + "timeout-invalid": "Недействительный таймаут.", | ||
99 | + "enable-tls": "Включить TLS", | ||
100 | + "send-test-mail": "Отправить пробное письмо" | ||
101 | + }, | ||
102 | + "attribute": { | ||
103 | + "attributes": "Атрибуты", | ||
104 | + "latest-telemetry": "Последняя телеметрия", | ||
105 | + "attributes-scope": "Контекст атрибутов устройства", | ||
106 | + "scope-latest-telemetry": "Последняя телеметрия", | ||
107 | + "scope-client": "Клиентские атрибуты", | ||
108 | + "scope-server": "Серверные атрибуты", | ||
109 | + "scope-shared": "Общие атрибуты", | ||
110 | + "add": "Добавить атрибут", | ||
111 | + "key": "Ключ", | ||
112 | + "key-required": "Ключ атрибута обязателен.", | ||
113 | + "value": "Значение", | ||
114 | + "value-required": "Значение атрибута обязательно.", | ||
115 | + "delete-attributes-title": "Вы уверенны, что хотите удалить { count, plural, one {1 атрибут} few {# атрибута} other {# атрибутов} }? ", | ||
116 | + "delete-attributes-text": "Внимание, после подтверждения выбранные атрибуты будут удалены.", | ||
117 | + "delete-attributes": "Удалить атрибуты", | ||
118 | + "enter-attribute-value": "Введите значение атрибута", | ||
119 | + "show-on-widget": "Показать на виджете", | ||
120 | + "widget-mode": "Виджет-режим", | ||
121 | + "next-widget": "Следующий виджет", | ||
122 | + "prev-widget": "Предыдущий виджет", | ||
123 | + "add-to-dashboard": "Добавить на дашборд", | ||
124 | + "add-widget-to-dashboard": "Добавить виджет на дашборд", | ||
125 | + "selected-attributes": "{ count, plural, 1 {Выбран} other {Выбраны} } { count, plural, one {1 атрибут} few {# атрибута} other {# атрибутов} }", | ||
126 | + "selected-telemetry": "{ count, plural, 1 {Выбран} other {Выбраны} } { count, plural, 1 {1 параметр} few {# параметра} other {# параметров} } телеметрии" | ||
127 | + }, | ||
128 | + "confirm-on-exit": { | ||
129 | + "message": "У вас есть несохраненные изменения. Вы точно хотите покинуть эту страницу?", | ||
130 | + "html-message": "У вас есть несохраненные изменения.<br/>Вы точно хотите покинуть эту страницу?", | ||
131 | + "title": "Несохраненные изменения" | ||
132 | + }, | ||
133 | + "contact": { | ||
134 | + "country": "Страна", | ||
135 | + "city": "Город", | ||
136 | + "state": "Штат", | ||
137 | + "postal-code": "Почтовый код", | ||
138 | + "postal-code-invalid": "Допустимы только цифры", | ||
139 | + "address": "Адрес", | ||
140 | + "address2": "Адрес 2", | ||
141 | + "phone": "Телефон", | ||
142 | + "email": "Эл. адрес", | ||
143 | + "no-address": "Адрес не указан" | ||
144 | + }, | ||
145 | + "common": { | ||
146 | + "username": "Имя пользователя", | ||
147 | + "password": "Пароль", | ||
148 | + "enter-username": "Введите имя пользователя", | ||
149 | + "enter-password": "Введите пароль", | ||
150 | + "enter-search": "Введите условие поиска" | ||
151 | + }, | ||
152 | + "customer": { | ||
153 | + "customers": "Клиенты", | ||
154 | + "management": "Управление клиентами", | ||
155 | + "dashboard": "Дашборд клиентов", | ||
156 | + "dashboards": "Дашборды клиентов", | ||
157 | + "devices": "Устройства клиента", | ||
158 | + "public-dashboards": "Общедоступные дашборды", | ||
159 | + "public-devices": "Общедоступные устройства", | ||
160 | + "add": "Добавить клиента", | ||
161 | + "delete": "Удалить клиента", | ||
162 | + "manage-customer-users": "Управление пользователями клиента", | ||
163 | + "manage-customer-devices": "Управление устройствами клиента", | ||
164 | + "manage-customer-dashboards": "Управление дашбордами клиента", | ||
165 | + "manage-public-devices": "Управление общедоступными устройствами", | ||
166 | + "manage-public-dashboards": "Управление общедоступными дашбордами", | ||
167 | + "add-customer-text": "Добавить нового клиента", | ||
168 | + "no-customers-text": "Клиенты не найдены", | ||
169 | + "customer-details": "Подробности о клиенте", | ||
170 | + "delete-customer-title": "Вы точно хотите удалить клиента '{{customerTitle}}'?", | ||
171 | + "delete-customer-text": "Внимание, после подтверждения клиент и вся связанная с ним информация будут безвозвратно утеряны.", | ||
172 | + "delete-customers-title": "Вы точно хотите удалить { count, plural, one {1 клиента} other {# клиентов} }?", | ||
173 | + "delete-customers-action-title": "Удалить { count, plural, one {1 клиента} other {# клиентов} } }", | ||
174 | + "delete-customers-text": "Внимание, после подтверждения клиенты и вся связанная с ними информация будут безвозвратно утеряны.", | ||
175 | + "manage-users": "Управление пользователями", | ||
176 | + "manage-devices": "Управление устройствами", | ||
177 | + "manage-dashboards": "Управление дашбордами", | ||
178 | + "title": "Имя", | ||
179 | + "title-required": "Название обязательно.", | ||
180 | + "description": "Описание" | ||
181 | + }, | ||
182 | + "datetime": { | ||
183 | + "date-from": "Дата с", | ||
184 | + "time-from": "Время с", | ||
185 | + "date-to": "Дата до", | ||
186 | + "time-to": "Время до" | ||
187 | + }, | ||
188 | + "dashboard": { | ||
189 | + "dashboard": "Дашборд", | ||
190 | + "dashboards": "Дашборды", | ||
191 | + "management": "Управление дашбордами", | ||
192 | + "view-dashboards": "Просмотреть дашборды", | ||
193 | + "add": "Добавить дашборд", | ||
194 | + "assign-dashboard-to-customer": "Прикрепить дашборд(ы) к клиенту", | ||
195 | + "assign-dashboard-to-customer-text": "Пожалуйста, выберите дашборды, которые нужно прикрепить к клиенту", | ||
196 | + "assign-to-customer-text": "Пожалуйста, выберите клиента, к которому нужно прикрепить дашборд(ы)", | ||
197 | + "assign-to-customer": "Прикрепить к клиенту", | ||
198 | + "unassign-from-customer": "Открепить от клиента", | ||
199 | + "make-public": "Открыть дашборд для общего доступа", | ||
200 | + "make-private": "Закрыть дашборд для общего доступа", | ||
201 | + "no-dashboards-text": "Дашборды не найдены", | ||
202 | + "no-widgets": "Виджеты не сконфигурированы", | ||
203 | + "add-widget": "Добавить новый виджет", | ||
204 | + "title": "Название", | ||
205 | + "select-widget-title": "Выберите виджет", | ||
206 | + "select-widget-subtitle": "Список доступных виджетов", | ||
207 | + "delete": "Удалить дашборд", | ||
208 | + "title-required": "Название обязательно.", | ||
209 | + "description": "Описание", | ||
210 | + "details": "Подробности", | ||
211 | + "dashboard-details": "Подробности о дашборде", | ||
212 | + "add-dashboard-text": "Добавить новый дашборд", | ||
213 | + "assign-dashboards": "Прикрепить дашборды", | ||
214 | + "assign-new-dashboard": "Прикрепить новый дашборд", | ||
215 | + "assign-dashboards-text": "Прикрепить { count, plural, 1 {1 дашборд} other {# дашборда} } к клиенту", | ||
216 | + "delete-dashboards": "Удалить дашборды", | ||
217 | + "unassign-dashboards": "Открепить дашборды", | ||
218 | + "unassign-dashboards-action-title": "Открепить { count, plural, one {1 дашборд} few {# дашборда} other {# дашбордов} } от клиента", | ||
219 | + "delete-dashboard-title": "Вы точно хотите удалить дашборд '{{dashboardTitle}}'?", | ||
220 | + "delete-dashboard-text": "Внимание, после подтверждения дашборд и все связанные с ним данные будут безвозвратно утеряны.", | ||
221 | + "delete-dashboards-title": "Вы точно хотите удалить { count, plural, one {1 дашборд} few {# дашборда} other {# дашбордов} }?", | ||
222 | + "delete-dashboards-action-title": "Удалить { count, plural, one {1 дашборд} few {# дашборда} other {# дашбордов} }", | ||
223 | + "delete-dashboards-text": "Внимание, после подтверждения дашборды и все связанные с ними данные будут безвозвратно утеряны.", | ||
224 | + "unassign-dashboard-title": "Вы точно хотите открепить дашборд '{{dashboardTitle}}'?", | ||
225 | + "unassign-dashboard-text": "После подтверждения дашборд не будет доступен клиенту.", | ||
226 | + "unassign-dashboard": "Открепить дашборд", | ||
227 | + "unassign-dashboards-title": "Вы точно хотите открепить { count, plural, one {1 дашборд} few {# дашборда} other {# дашбордов} }?", | ||
228 | + "unassign-dashboards-text": "После подтверждения выбранные дашборды не будут доступны клиенту.", | ||
229 | + "public-dashboard-title": "Теперь дашборд общедоступный", | ||
230 | + "public-dashboard-text": "Теперь ваш дашборд <b>{{dashboardTitle}}</b> доступен всем по <a href='{{publicLink}}' target='_blank'>ссылке</a>:", | ||
231 | + "public-dashboard-notice": "<b>Примечание:</b> Для получения доступа к данным устройства нужно открыть общий доступ к этому устройству.", | ||
232 | + "make-private-dashboard-title": "Вы точно хотите закрыть общий доступ к дашборду '{{dashboardTitle}}'?", | ||
233 | + "make-private-dashboard-text": "После подтверждения дашборд будет закрыт для общего доступа.", | ||
234 | + "make-private-dashboard": "Закрыть дашборд для общего доступа", | ||
235 | + "socialshare-text": "'{{dashboardTitle}}' сделано ThingsBoard", | ||
236 | + "socialshare-title": "'{{dashboardTitle}}' сделано ThingsBoard", | ||
237 | + "select-dashboard": "Выберите дашборд", | ||
238 | + "no-dashboards-matching": "Дашборд '{{dashboard}}' не найден.", | ||
239 | + "dashboard-required": "Дашборд обязателен.", | ||
240 | + "select-existing": "Выберите существующий дашборд", | ||
241 | + "create-new": "Создать новый дашборд", | ||
242 | + "new-dashboard-title": "Новое название дашборда", | ||
243 | + "open-dashboard": "Открыть дашборд", | ||
244 | + "set-background": "Установить фон", | ||
245 | + "background-color": "Фоновый цвет", | ||
246 | + "background-image": "Фоновая картинка", | ||
247 | + "background-size-mode": "Размер фона", | ||
248 | + "no-image": "Картинка не выбрана", | ||
249 | + "drop-image": "Перетащите картинку или кликните для выбора файла.", | ||
250 | + "settings": "Настройки", | ||
251 | + "columns-count": "Количество колонок", | ||
252 | + "columns-count-required": "Количество колонок обязательно.", | ||
253 | + "min-columns-count-message": "Минимальное число колонок - 10.", | ||
254 | + "max-columns-count-message": "Максимальное число колонок - 1000.", | ||
255 | + "widgets-margins": "Величина отступа между виджетами", | ||
256 | + "horizontal-margin": "Величина горизонтального отступа", | ||
257 | + "horizontal-margin-required": "Величина горизонтального отступа обязательна.", | ||
258 | + "min-horizontal-margin-message": "Минимальная величина горизонтального отступа - 0.", | ||
259 | + "max-horizontal-margin-message": "Максимальная величина горизонтального отступа - 50.", | ||
260 | + "vertical-margin": "Величина вертикального отступа", | ||
261 | + "vertical-margin-required": "Величина вертикального отступа обязательна.", | ||
262 | + "min-vertical-margin-message": "Минимальная величина вертикального отступа - 0.", | ||
263 | + "max-vertical-margin-message": "Максимальная величина вертикального отступа - 50.", | ||
264 | + "display-title": "Показать название дашборда", | ||
265 | + "title-color": "Цвет названия", | ||
266 | + "display-device-selection": "Показать выборку устройств", | ||
267 | + "display-dashboard-timewindow": "Показать временное окно", | ||
268 | + "display-dashboard-export": "Показать экспорт", | ||
269 | + "import": "Импортировать дашборд", | ||
270 | + "export": "Экспортировать дашборд", | ||
271 | + "export-failed-error": "Не удалось экспортировать дашборд: {{error}}", | ||
272 | + "create-new-dashboard": "Создать новый дашборд", | ||
273 | + "dashboard-file": "Файл дашборда", | ||
274 | + "invalid-dashboard-file-error": "Не удалось импортировать дашборд: неизвестная схема данных дашборда.", | ||
275 | + "dashboard-import-missing-aliases-title": "Конфигурировать псевдонимы импортированного дашборда", | ||
276 | + "create-new-widget": "Создать новый виджет", | ||
277 | + "import-widget": "Импортировать новый виджет", | ||
278 | + "widget-file": "Файл виджета", | ||
279 | + "invalid-widget-file-error": "Не удалось импортировать виджет: неизвестная схема данных виджета.", | ||
280 | + "widget-import-missing-aliases-title": "Конфигурировать псевдонимы импортированного виджета", | ||
281 | + "open-toolbar": "Открыть панель инструментов", | ||
282 | + "close-toolbar": "Закрыть панель инструментов", | ||
283 | + "configuration-error": "Ошибка конфигурирования", | ||
284 | + "alias-resolution-error-title": "Ошибка конфигурирования псевдонимов дашборда", | ||
285 | + "invalid-aliases-config": "Не удалось найти устройства, соответствующие фильтру псевдонимов.<br/>" + | ||
286 | + "Пожалуйста, свяжитесь с администратором для устранения этой проблемы.", | ||
287 | + "select-devices": "Выберите устройства", | ||
288 | + "assignedToCustomer": "Прикреплен к клиенту", | ||
289 | + "public": "Общедоступный", | ||
290 | + "public-link": "Общедоступная ссылка", | ||
291 | + "copy-public-link": "Скопировать общедоступную ссылку", | ||
292 | + "public-link-copied-message": "Общедоступная ссылка на дашборд скопирована в буфер обмена" | ||
293 | + }, | ||
294 | + "datakey": { | ||
295 | + "settings": "Настройки", | ||
296 | + "advanced": "Дополнительно", | ||
297 | + "label": "Метка", | ||
298 | + "color": "Цвет", | ||
299 | + "data-generation-func": "Функция генерации данных", | ||
300 | + "use-data-post-processing-func": "Использовать функцию пост-обработки данных", | ||
301 | + "configuration": "Конфигурация ключа данных", | ||
302 | + "timeseries": "Выборка по времени", | ||
303 | + "attributes": "Атрибуты", | ||
304 | + "timeseries-required": "Выборка по времени обязательна.", | ||
305 | + "timeseries-or-attributes-required": "Выборка по времени/атрибуты обязательны.", | ||
306 | + "function-types": "Тип функции", | ||
307 | + "function-types-required": "Тип функции обязателен." | ||
308 | + }, | ||
309 | + "datasource": { | ||
310 | + "type": "Тип источника данных", | ||
311 | + "add-datasource-prompt": "Пожалуйста, добавьте источник данных" | ||
312 | + }, | ||
313 | + "details": { | ||
314 | + "edit-mode": "Режим редактирования", | ||
315 | + "toggle-edit-mode": "Режим редактирования" | ||
316 | + }, | ||
317 | + "device": { | ||
318 | + "device": "Устройство", | ||
319 | + "device-required": "Устройство обязательно.", | ||
320 | + "devices": "Устройства", | ||
321 | + "management": "Управление устройствами", | ||
322 | + "view-devices": "Просмотреть устройства", | ||
323 | + "device-alias": "Псевдоним устройства", | ||
324 | + "aliases": "Псевдонимы устройства", | ||
325 | + "no-alias-matching": "'{{alias}}' не найден.", | ||
326 | + "no-aliases-found": "Псевдонимы не найдены.", | ||
327 | + "no-key-matching": "'{{key}}' не найден.", | ||
328 | + "no-keys-found": "Ключи не найдены.", | ||
329 | + "create-new-alias": "Создать новый!", | ||
330 | + "create-new-key": "Создать новый!", | ||
331 | + "duplicate-alias-error": "Найден дублирующийся псевдоним '{{alias}}'.<br>В рамках дашборда псевдонимы устройств должны быть уникальными.", | ||
332 | + "configure-alias": "Конфигурировать '{{alias}}' псевдоним", | ||
333 | + "no-devices-matching": "Устройство '{{device}}' не найдено.", | ||
334 | + "alias": "Псевдоним", | ||
335 | + "alias-required": "Псевдоним устройства обязателен.", | ||
336 | + "remove-alias": "Удалить псевдоним устройства", | ||
337 | + "add-alias": "Добавить псевдоним устройства", | ||
338 | + "name-starts-with": "Название начинается с", | ||
339 | + "device-list": "Список устройств", | ||
340 | + "use-device-name-filter": "Использовать фильтр", | ||
341 | + "device-list-empty": "Устройства не выбраны.", | ||
342 | + "device-name-filter-required": "Фильтр названия устройства обязателен.", | ||
343 | + "device-name-filter-no-device-matched": "Устройства, названия которых начинаются с '{{device}}', не найдены.", | ||
344 | + "add": "Добавить устройство", | ||
345 | + "assign-to-customer": "Присвоить клиенту", | ||
346 | + "assign-device-to-customer": "Присвоить устройство(а) клиенту", | ||
347 | + "assign-device-to-customer-text": "Пожалуйста, выберите устройства, которые нужно присвоить клиенту", | ||
348 | + "make-public": "Открыть общий доступ к устройству", | ||
349 | + "make-private": "Закрыть общий доступ к устройству", | ||
350 | + "no-devices-text": "Устройства не найдены", | ||
351 | + "assign-to-customer-text": "Пожалуйста, выберите клиента, которому нужно присвоить устройство(а)", | ||
352 | + "device-details": "Подробности об устройстве", | ||
353 | + "add-device-text": "Добавить новое устройство", | ||
354 | + "credentials": "Учетные данные", | ||
355 | + "manage-credentials": "Управление учетными данными", | ||
356 | + "delete": "Удалить устройство", | ||
357 | + "assign-devices": "Присвоить устройство", | ||
358 | + "assign-devices-text": "Присвоить { count, plural, one {1 устройство} few {# устройства} other {# устройств} } клиенту", | ||
359 | + "delete-devices": "Удалить устройства", | ||
360 | + "unassign-from-customer": "Отменить присвоение клиенту", | ||
361 | + "unassign-devices": "Отменить присвоение устройств", | ||
362 | + "unassign-devices-action-title": "Отменить присвоение { count, plural, one {1 устройства} few {# устройств} other {# устройств} } клиенту", | ||
363 | + "assign-new-device": "Присвоить новое устройство", | ||
364 | + "make-public-device-title": "Вы точно хотите открыть общий доступ к устройству '{{deviceName}}'?", | ||
365 | + "make-public-device-text": "После подтверждения устройство и все связанные с ним данные будут общедоступными.", | ||
366 | + "make-private-device-title": "Вы точно хотите закрыть общий доступ к устройству '{{deviceName}}'", | ||
367 | + "make-private-device-text": "После подтверждения устройство и все связанные с ним данные будут закрыты для общего доступа.", | ||
368 | + "view-credentials": "Просмотреть учетные данные", | ||
369 | + "delete-device-title": "Вы точно хотите удалить устройство '{{deviceName}}'?", | ||
370 | + "delete-device-text": "Внимание, после подтверждения устройство и все связанные с ним данные будут безвозвратно утеряны.", | ||
371 | + "delete-devices-title": "Вы точно хотите удалить { count, plural, one {1 устройство} few {# устройства} other {# устройств} }?", | ||
372 | + "delete-devices-action-title": "Удалить { count, plural, one {1 устройство} few {# устройства} other {# устройств} } }", | ||
373 | + "delete-devices-text": "Внимание, после подтверждения выбранные устройства и все связанные с ними данные будут безвозвратно утеряны..", | ||
374 | + "unassign-device-title": "Вы точно хотите отменить присвоение устройства '{{deviceName}}'?", | ||
375 | + "unassign-device-text": "После подтверждения устройство будет недоступно клиенту.", | ||
376 | + "unassign-device": "Отменить присвоение устройства", | ||
377 | + "unassign-devices-title": "Вы точно хотите отменить присвоение { count, plural, one {1 устройство} few {# устройства} other {# устройств} } }?", | ||
378 | + "unassign-devices-text": "После подтверждения выбранные устройства будут недоступны клиенту.", | ||
379 | + "device-credentials": "Учетные данные устройства", | ||
380 | + "credentials-type": "Тип учетных данных", | ||
381 | + "access-token": "Токен", | ||
382 | + "access-token-required": "Токен обязателен.", | ||
383 | + "access-token-invalid": "Длина токена должна быть от 1 до 20 символов.", | ||
384 | + "rsa-key": "Открытый ключ RSA", | ||
385 | + "rsa-key-required": "Открытый ключ RSA обязателен.", | ||
386 | + "secret": "Секрет", | ||
387 | + "secret-required": "Секрет обязателен.", | ||
388 | + "name": "Название", | ||
389 | + "name-required": "Название обязательно.", | ||
390 | + "description": "Описание", | ||
391 | + "events": "События", | ||
392 | + "details": "Подробности", | ||
393 | + "copyId": "Копировать идентификатор устройства", | ||
394 | + "copyAccessToken": "Копировать токен", | ||
395 | + "idCopiedMessage": "Идентификатор устройства скопирован в буфер обмена", | ||
396 | + "accessTokenCopiedMessage": "Токен устройства скопирован в буфер обмена", | ||
397 | + "assignedToCustomer": "Присвоен клиенту", | ||
398 | + "unable-delete-device-alias-title": "Не удалось удалить псевдоним устройства", | ||
399 | + "unable-delete-device-alias-text": "Не удалось удалить псевдоним '{{deviceAlias}}' устройства, т.к. он используется следующими виджетами:<br/>{{widgetsList}}", | ||
400 | + "is-gateway": "Гейтвей", | ||
401 | + "public": "Общедоступный", | ||
402 | + "device-public": "Устройство общедоступно" | ||
403 | + }, | ||
404 | + "dialog": { | ||
405 | + "close": "Закрыть диалог" | ||
406 | + }, | ||
407 | + "error": { | ||
408 | + "unable-to-connect": "Не удалось подключиться к серверу! Пожалуйста, проверьте интернет-соединение.", | ||
409 | + "unhandled-error-code": "Код необработанной ошибки: {{errorCode}}", | ||
410 | + "unknown-error": "Неизвестная ошибка" | ||
411 | + }, | ||
412 | + "event": { | ||
413 | + "event-type": "Тип события", | ||
414 | + "type-alarm": "Аварийное оповещение", | ||
415 | + "type-error": "Ошибка", | ||
416 | + "type-lc-event": "Событие жизненного цикла", | ||
417 | + "type-stats": "Статистика", | ||
418 | + "no-events-prompt": "События не найдены", | ||
419 | + "error": "Ошибка", | ||
420 | + "alarm": "Аварийное оповещение", | ||
421 | + "event-time": "Время возникновения события", | ||
422 | + "server": "Сервер", | ||
423 | + "body": "Тело", | ||
424 | + "method": "Метод", | ||
425 | + "event": "Событие", | ||
426 | + "status": "Статус", | ||
427 | + "success": "Успех", | ||
428 | + "failed": "Неудача", | ||
429 | + "messages-processed": "Сообщения обработаны", | ||
430 | + "errors-occurred": "Возникли ошибки" | ||
431 | + }, | ||
432 | + "fullscreen": { | ||
433 | + "expand": "Во весь экран", | ||
434 | + "exit": "Выйти из полноэкранного режима", | ||
435 | + "toggle": "Во весь экран", | ||
436 | + "fullscreen": "Полноэкранный режим" | ||
437 | + }, | ||
438 | + "function": { | ||
439 | + "function": "Функция" | ||
440 | + }, | ||
441 | + "grid": { | ||
442 | + "delete-item-title": "Вы точно хотите удалить этот объект?", | ||
443 | + "delete-item-text": "Внимание, после подтверждения объект и все связанные с ним данные будут безвозвратно утеряны.", | ||
444 | + "delete-items-title": "Вы точно хотите удалить { count, plural, one {1 объект} few {# объекта} other {# объектов} }?", | ||
445 | + "delete-items-action-title": "Удалить { count, plural, one {1 объект} few {# объекта} other {# объектов}", | ||
446 | + "delete-items-text": "Внимание, после подтверждения выбранные объекты и все связанные с ними данные будут безвозвратно утеряны.", | ||
447 | + "add-item-text": "Добавить новый объект", | ||
448 | + "no-items-text": "Объекты не найдены", | ||
449 | + "item-details": "Подробности об объекте", | ||
450 | + "delete-item": "Удалить объект", | ||
451 | + "delete-items": "Удалить объекты", | ||
452 | + "scroll-to-top": "Прокрутка к началу" | ||
453 | + }, | ||
454 | + "help": { | ||
455 | + "goto-help-page": "Перейти к справке" | ||
456 | + }, | ||
457 | + "home": { | ||
458 | + "home": "Главная", | ||
459 | + "profile": "Профиль", | ||
460 | + "logout": "Выйти из системы", | ||
461 | + "menu": "Меню", | ||
462 | + "avatar": "Аватар", | ||
463 | + "open-user-menu": "Открыть меню пользователя" | ||
464 | + }, | ||
465 | + "import": { | ||
466 | + "no-file": "Файл не выбран", | ||
467 | + "drop-file": "Перетащите JSON файл или кликните для выбора файла." | ||
468 | + }, | ||
469 | + "item": { | ||
470 | + "selected": "Выбранные" | ||
471 | + }, | ||
472 | + "js-func": { | ||
473 | + "no-return-error": "Функция должна возвращать значение!", | ||
474 | + "return-type-mismatch": "Функция должна возвращать значение типа '{{type}}'!" | ||
475 | + }, | ||
476 | + "legend": { | ||
477 | + "position": "Расположение легенды", | ||
478 | + "show-max": "Показать максимальное значение", | ||
479 | + "show-min": "Показать минимальное значение", | ||
480 | + "show-avg": "Показать среднее значение", | ||
481 | + "show-total": "Показать сумму", | ||
482 | + "settings": "Настройки легенды", | ||
483 | + "min": "Мин", | ||
484 | + "max": "Макс", | ||
485 | + "avg": "Среднее", | ||
486 | + "total": "Сумма" | ||
487 | + }, | ||
488 | + "login": { | ||
489 | + "login": "Войти", | ||
490 | + "request-password-reset": "Запрос на сброс пароля", | ||
491 | + "reset-password": "Сбросить пароль", | ||
492 | + "create-password": "Создать пароль", | ||
493 | + "passwords-mismatch-error": "Введенные пароли должны быть одинаковыми!", | ||
494 | + "password-again": "Введите пароль еще раз", | ||
495 | + "sign-in": "Пожалуйста, войдите в систему", | ||
496 | + "username": "Имя пользователя (эл. адрес)", | ||
497 | + "remember-me": "Запомнить меня", | ||
498 | + "forgot-password": "Забыли пароль?", | ||
499 | + "password-reset": "Пароль сброшен", | ||
500 | + "new-password": "Новый пароль", | ||
501 | + "new-password-again": "Повторите новый пароль", | ||
502 | + "password-link-sent-message": "Ссылка для сброса пароля была успешно отправлена!", | ||
503 | + "email": "Эл. адрес" | ||
504 | + }, | ||
505 | + "plugin": { | ||
506 | + "plugins": "Плагины", | ||
507 | + "delete": "Удалить плагин", | ||
508 | + "activate": "Активировать плагин", | ||
509 | + "suspend": "Приостановить плагин", | ||
510 | + "active": "Активный", | ||
511 | + "suspended": "Приостановлен", | ||
512 | + "name": "Название", | ||
513 | + "name-required": "Название обязательно.", | ||
514 | + "description": "Описание", | ||
515 | + "add": "Добавить плагин", | ||
516 | + "delete-plugin-title": "Вы точно хотите удалить плагин '{{pluginName}}'?", | ||
517 | + "delete-plugin-text": "Внимание, после подтверждения плагин и все связанные с ним данные будут безвозвратно утеряны.", | ||
518 | + "delete-plugins-title": "Вы точно хотите удалить { count, plural, one {1 плагин} few {# плагина} other {# плагинов} }?", | ||
519 | + "delete-plugins-action-title": "Удалить { count, plural, one {1 плагин} few {# плагина} other {# плагинов} } }", | ||
520 | + "delete-plugins-text": "Внимание, после подтверждения выбранные плагины и все связанные с ними данные будут безвозвратно утеряны.", | ||
521 | + "add-plugin-text": "Добавить новый плагин", | ||
522 | + "no-plugins-text": "Плагины не найдены", | ||
523 | + "plugin-details": "Подробности о плагине", | ||
524 | + "api-token": "API токен", | ||
525 | + "api-token-required": "API токен обязателен.", | ||
526 | + "type": "Тип плагина", | ||
527 | + "type-required": "Тип плагина обязателен.", | ||
528 | + "configuration": "Настройки плагина", | ||
529 | + "system": "Системный", | ||
530 | + "select-plugin": "Выберите плагин", | ||
531 | + "plugin": "Плагин", | ||
532 | + "no-plugins-matching": "Плагин '{{plugin}}' не найден.", | ||
533 | + "plugin-required": "Плагин обязателен.", | ||
534 | + "plugin-require-match": "Пожалуйста, выберите существующий плагин.", | ||
535 | + "events": "События", | ||
536 | + "details": "Подробности", | ||
537 | + "import": "Импортировать плагин", | ||
538 | + "export": "Экспортировать плагин", | ||
539 | + "export-failed-error": "Не удалось экспортировать плагин: {{error}}", | ||
540 | + "create-new-plugin": "Создать новый плагин", | ||
541 | + "plugin-file": "Файл плагина", | ||
542 | + "invalid-plugin-file-error": "Не удалось импортировать плагин: неизвестная схема данных плагина." | ||
543 | + }, | ||
544 | + "position": { | ||
545 | + "top": "Верх", | ||
546 | + "bottom": "Низ", | ||
547 | + "left": "Левый край", | ||
548 | + "right": "Правый край" | ||
549 | + }, | ||
550 | + "profile": { | ||
551 | + "profile": "Профиль", | ||
552 | + "change-password": "Изменить пароль", | ||
553 | + "current-password": "Текущий пароль" | ||
554 | + }, | ||
555 | + "rule": { | ||
556 | + "rules": "Правила", | ||
557 | + "delete": "Удалить правило", | ||
558 | + "activate": "Активировать правило", | ||
559 | + "suspend": "Приостановить правило", | ||
560 | + "active": "Активное", | ||
561 | + "suspended": "Приостановлены", | ||
562 | + "name": "Название", | ||
563 | + "name-required": "Название обязательно.", | ||
564 | + "description": "Описание", | ||
565 | + "add": "Добавить правило", | ||
566 | + "delete-rule-title": "Вы точно хотите удалить правило '{{ruleName}}'?", | ||
567 | + "delete-rule-text": "Внимание, после подтверждения правило и все связанные с ним данные будут безвозвратно утеряны.", | ||
568 | + "delete-rules-title": "Вы точно хотите удалить { count, plural, one {1 правило} few {# правила} other {# правил} }?", | ||
569 | + "delete-rules-action-title": "Удалить { count, plural, one {1 правило} few {# правила} other {# правил} }", | ||
570 | + "delete-rules-text": "Внимание, после подтверждения выбранные правила и все связанные с ними данные будут безвозвратно утеряны.", | ||
571 | + "add-rule-text": "Добавить новое правило", | ||
572 | + "no-rules-text": "Правила не найдены", | ||
573 | + "rule-details": "Подробности о правиле", | ||
574 | + "filters": "Фильтры", | ||
575 | + "filter": "Фильтр", | ||
576 | + "add-filter-prompt": "Пожалуйста, добавьте фильтр", | ||
577 | + "remove-filter": "Удалить фильтр", | ||
578 | + "add-filter": "Добавить фильтр", | ||
579 | + "filter-name": "Название фильтра", | ||
580 | + "filter-type": "Тип фильтра", | ||
581 | + "edit-filter": "Редактировать фильтр", | ||
582 | + "view-filter": "Просмотреть фильтр", | ||
583 | + "component-name": "Название", | ||
584 | + "component-name-required": "Название обязательно.", | ||
585 | + "component-type": "Тип", | ||
586 | + "component-type-required": "Тип обязателен.", | ||
587 | + "processor": "Обработчик", | ||
588 | + "no-processor-configured": "Обработчики не сконфигурированы", | ||
589 | + "create-processor": "Создать обработчик", | ||
590 | + "processor-name": "Название обработчика", | ||
591 | + "processor-type": "Тип обработчика", | ||
592 | + "plugin-action": "Действие плагина", | ||
593 | + "action-name": "Название действия", | ||
594 | + "action-type": "Тип действия", | ||
595 | + "create-action-prompt": "Пожалуйста, создайте действие", | ||
596 | + "create-action": "Создать действие", | ||
597 | + "details": "Подробности", | ||
598 | + "events": "События", | ||
599 | + "system": "Системное", | ||
600 | + "import": "Импортировать правило", | ||
601 | + "export": "Экспортировать правило", | ||
602 | + "export-failed-error": "Не удалось экспортировать правило: {{error}}", | ||
603 | + "create-new-rule": "Создать новое правило", | ||
604 | + "rule-file": "Файл правила", | ||
605 | + "invalid-rule-file-error": "Не удалось импортировать правило: неизвестная схема данных правила." | ||
606 | + }, | ||
607 | + "rule-plugin": { | ||
608 | + "management": "Управление плагинами и правилами" | ||
609 | + }, | ||
610 | + "tenant": { | ||
611 | + "tenants": "Владельцы", | ||
612 | + "management": "Управление владельцами", | ||
613 | + "add": "Добавить владельца", | ||
614 | + "admins": "Администраторы", | ||
615 | + "manage-tenant-admins": "Управление администраторами владельца", | ||
616 | + "delete": "Удалить владельца", | ||
617 | + "add-tenant-text": "Добавить нового владельца", | ||
618 | + "no-tenants-text": "Владельцы не найдены", | ||
619 | + "tenant-details": "Подробности об владельце", | ||
620 | + "delete-tenant-title": "Вы точно хотите удалить владельца '{{tenantTitle}}'?", | ||
621 | + "delete-tenant-text": "Внимание, после подтверждения владелец и все связанные с ним данные будут безвозвратно утеряны.", | ||
622 | + "delete-tenants-title": "Вы точно хотите удалить { count, plural, one {1 владельца} other {# владельцев} }?", | ||
623 | + "delete-tenants-action-title": "Удалить { count, plural, one {1 владельца} other {# владельцев} }", | ||
624 | + "delete-tenants-text": "Внимание, после подтверждения выбранные Владельцы и все связанные с ними данные будут безвозвратно утеряны.", | ||
625 | + "title": "Имя", | ||
626 | + "title-required": "Имя обязательно.", | ||
627 | + "description": "Описание" | ||
628 | + }, | ||
629 | + "timeinterval": { | ||
630 | + "seconds-interval": "{ seconds, plural, one {1 секунда} few {# секунды} other {# секунд} }", | ||
631 | + "minutes-interval": "{ minutes, plural, one {1 минута} few {# минуты} other {# минут} }", | ||
632 | + "hours-interval": "{ hours, plural, one {1 час} few {# часа} other {# часов} }", | ||
633 | + "days-interval": "{ days, plural, one {1 день} few {# дня} other {# дней} }", | ||
634 | + "days": "Дни", | ||
635 | + "hours": "Часы", | ||
636 | + "minutes": "Минуты", | ||
637 | + "seconds": "Секунды", | ||
638 | + "advanced": "Дополнительно" | ||
639 | + }, | ||
640 | + "timewindow": { | ||
641 | + "days": "{ days, plural, one {1 день} few {# дня} other {# дней} }", | ||
642 | + "hours": "{ hours, plural, one {1 час} few {# часа} other {# часов} }", | ||
643 | + "minutes": "{ minutes, plural, one {1 минута} few {# минуты} other {# минут} }", | ||
644 | + "seconds": "{ seconds, plural, one {1 секунда} few {# секунды} other {# секунд} }", | ||
645 | + "realtime": "Режим реального времени", | ||
646 | + "history": "История", | ||
647 | + "last-prefix": "Последние", | ||
648 | + "period": "с {{ startTime }} до {{ endTime }}", | ||
649 | + "edit": "Изменить временное окно", | ||
650 | + "date-range": "Диапазон дат", | ||
651 | + "last": "Последние", | ||
652 | + "time-period": "Период времени" | ||
653 | + }, | ||
654 | + "user": { | ||
655 | + "users": "Пользователи", | ||
656 | + "customer-users": "Пользователи клиента", | ||
657 | + "tenant-admins": "Администраторы владельца", | ||
658 | + "sys-admin": "Системный администратор", | ||
659 | + "tenant-admin": "Администратор владельца", | ||
660 | + "customer": "Клиент", | ||
661 | + "anonymous": "Аноним", | ||
662 | + "add": "Добавить пользователя", | ||
663 | + "delete": "Удалить пользователя", | ||
664 | + "add-user-text": "Добавить нового пользователя", | ||
665 | + "no-users-text": "Пользователи не найдены", | ||
666 | + "user-details": "Подробности о пользователе", | ||
667 | + "delete-user-title": "Вы точно хотите удалить пользователя '{{userEmail}}'?", | ||
668 | + "delete-user-text": "Внимание, после подтверждения пользователь и все связанные с ним данные будут безвозвратно утеряны.", | ||
669 | + "delete-users-title": "Вы точно хотите удалить { count, plural, one {1 пользователя} other {# пользователей} }?", | ||
670 | + "delete-users-action-title": "Удалить { count, plural, one {1 пользователя} other {# пользователей} }", | ||
671 | + "delete-users-text": "Внимание, после подтверждения выбранные пользователи и все связанные с ними данные будут безвозвратно утеряны.", | ||
672 | + "activation-email-sent-message": "Активационное письмо успешно отправлено!", | ||
673 | + "resend-activation": "Повторить отправку активационного письма", | ||
674 | + "email": "Эл. адрес", | ||
675 | + "email-required": "Эл. адрес обязателен.", | ||
676 | + "first-name": "Имя", | ||
677 | + "last-name": "Фамилия", | ||
678 | + "description": "Описание", | ||
679 | + "default-dashboard": "Дашборд по умолчанию", | ||
680 | + "always-fullscreen": "Всегда во весь экран" | ||
681 | + }, | ||
682 | + "value": { | ||
683 | + "type": "Тип значения", | ||
684 | + "string": "Строка", | ||
685 | + "string-value": "Строковое значение", | ||
686 | + "integer": "Целое число", | ||
687 | + "integer-value": "Целочисленное значение", | ||
688 | + "invalid-integer-value": "Неправильный формат целого числа", | ||
689 | + "double": "Число двойной точности", | ||
690 | + "double-value": "Значение двойной точности", | ||
691 | + "boolean": "Логический тип", | ||
692 | + "boolean-value": "Логическое значение", | ||
693 | + "false": "Ложь", | ||
694 | + "true": "Правда" | ||
695 | + }, | ||
696 | + "widget": { | ||
697 | + "widget-library": "Галерея виджетов", | ||
698 | + "widget-bundle": "Набор виджетов", | ||
699 | + "select-widgets-bundle": "Выберите набор виджетов", | ||
700 | + "management": "Управление виджетами", | ||
701 | + "editor": "Редактор виджетов", | ||
702 | + "widget-type-not-found": "Ошибка при загрузке конфигурации виджета.<br>Возможно, связанный с ней\n тип виджета уже удален.", | ||
703 | + "widget-type-load-error": "Не удалось загрузить виджет по следующим причинам:", | ||
704 | + "remove": "Удалить виджет", | ||
705 | + "edit": "Редактировать виджет", | ||
706 | + "remove-widget-title": "Вы точно хотите удалить виджет '{{widgetTitle}}'?", | ||
707 | + "remove-widget-text": "Внимание, после подтверждения виджет и все связанные с ним данные будут безвозвратно утеряны.", | ||
708 | + "timeseries": "Выборка по времени", | ||
709 | + "latest-values": "Последние значения", | ||
710 | + "rpc": "Управляющий виджет", | ||
711 | + "static": "Статический виджет", | ||
712 | + "select-widget-type": "Выберите тип виджета", | ||
713 | + "missing-widget-title-error": "Укажите название виджета!", | ||
714 | + "widget-saved": "Виджет сохранен", | ||
715 | + "unable-to-save-widget-error": "Не удалось сохранить виджет! Виджет содержит ошибки!", | ||
716 | + "save": "Сохранить виджет", | ||
717 | + "saveAs": "Сохранить виджет как", | ||
718 | + "save-widget-type-as": "Сохранить тип виджета как", | ||
719 | + "save-widget-type-as-text": "Пожалуйста, введите название виджета и/или укажите целевой набор виджетов", | ||
720 | + "toggle-fullscreen": "Во весь экран", | ||
721 | + "run": "Запустить виджет", | ||
722 | + "title": "Название виджета", | ||
723 | + "title-required": "Название виджета обязательно.", | ||
724 | + "type": "Тип виджета", | ||
725 | + "resources": "Ресурсы", | ||
726 | + "resource-url": "JavaScript/CSS URL", | ||
727 | + "remove-resource": "Удалить ресурс", | ||
728 | + "add-resource": "Добавить ресурс", | ||
729 | + "html": "HTML", | ||
730 | + "tidy": "Форматировать", | ||
731 | + "css": "CSS", | ||
732 | + "settings-schema": "Схема конфигурации", | ||
733 | + "datakey-settings-schema": "Схема конфигурации ключа данных", | ||
734 | + "javascript": "Javascript", | ||
735 | + "remove-widget-type-title": "Вы точно хотите удалить виджет '{{widgetName}}'?", | ||
736 | + "remove-widget-type-text": "Внимание, после подтверждения тип виджета и все связанные с ним данные будут безвозвратно утеряны.", | ||
737 | + "remove-widget-type": "Удалить тип виджета", | ||
738 | + "add-widget-type": "Добавить новый тип виджета", | ||
739 | + "widget-type-load-failed-error": "Не удалось загрузить тип виджета!", | ||
740 | + "widget-template-load-failed-error": "Не удалось загрузить шаблон виджета!", | ||
741 | + "add": "Добавить виджет", | ||
742 | + "undo": "Откатить изменения в виджете", | ||
743 | + "export": "Экспортировать виджет" | ||
744 | + }, | ||
745 | + "widgets-bundle": { | ||
746 | + "current": "Текущий набор", | ||
747 | + "widgets-bundles": "Наборы виджетов", | ||
748 | + "add": "Добавить набор виджетов", | ||
749 | + "delete": "Удалить набор виджетов", | ||
750 | + "title": "Название", | ||
751 | + "title-required": "Название обязательно.", | ||
752 | + "add-widgets-bundle-text": "Добавить новый набор виджетов", | ||
753 | + "no-widgets-bundles-text": "Наборы виджетов не найдены", | ||
754 | + "empty": "Пустой набор виджетов", | ||
755 | + "details": "Подробности", | ||
756 | + "widgets-bundle-details": "Подробности о наборе виджетов", | ||
757 | + "delete-widgets-bundle-title": "Вы точно хотите удалить набор виджетов '{{widgetsBundleTitle}}'?", | ||
758 | + "delete-widgets-bundle-text": "Внимание, после подтверждения набор виджетов и все связанные с ним данные будут безвозвратно утеряны.", | ||
759 | + "delete-widgets-bundles-title": "Вы точно хотите удалить { count, plural, one {1 набор виджетов} few {# набора виджетов} other {# наборов виджетов} }?", | ||
760 | + "delete-widgets-bundles-action-title": "Удалить { count, plural, one {1 набор виджетов} few {# набора виджетов} other {# наборов виджетов} }", | ||
761 | + "delete-widgets-bundles-text": "Внимание, после подтверждения выбранные наборы виджетов и все связанные с ними данные будут безвозвратно утеряны..", | ||
762 | + "no-widgets-bundles-matching": "Набор виджетов '{{widgetsBundle}}' не найден.", | ||
763 | + "widgets-bundle-required": "Набор виджетов обязателен.", | ||
764 | + "system": "Системный", | ||
765 | + "import": "Импортировать набор виджетов", | ||
766 | + "export": "Экспортировать набор виджетов", | ||
767 | + "export-failed-error": "Не удалось экспортировать набор виджетов: {{error}}", | ||
768 | + "create-new-widgets-bundle": "Создать новый набор виджетов", | ||
769 | + "widgets-bundle-file": "Файл набора виджетов", | ||
770 | + "invalid-widgets-bundle-file-error": "Не удалось импортировать набор виджетов: неизвестная схема данных набора виджетов." | ||
771 | + }, | ||
772 | + "widget-config": { | ||
773 | + "data": "Данные", | ||
774 | + "settings": "Настройки", | ||
775 | + "advanced": "Дополнительно", | ||
776 | + "title": "Название", | ||
777 | + "general-settings": "Общие настройки", | ||
778 | + "display-title": "Показать название", | ||
779 | + "drop-shadow": "Тень", | ||
780 | + "enable-fullscreen": "Во весь экран", | ||
781 | + "background-color": "Цвет фона", | ||
782 | + "text-color": "Цвет текста", | ||
783 | + "padding": "Отступ", | ||
784 | + "title-style": "Стиль названия", | ||
785 | + "mobile-mode-settings": "Настройки мобильного режима", | ||
786 | + "order": "Порядок", | ||
787 | + "height": "Высота", | ||
788 | + "units": "Специальный символ после значения", | ||
789 | + "decimals": "Количество цифр после запятой", | ||
790 | + "timewindow": "Временное окно", | ||
791 | + "use-dashboard-timewindow": "Использовать временное окно дашборда", | ||
792 | + "display-legend": "Показать легенду", | ||
793 | + "datasources": "Источники данных", | ||
794 | + "datasource-type": "Тип", | ||
795 | + "datasource-parameters": "Параметры", | ||
796 | + "remove-datasource": "Удалить источник данных", | ||
797 | + "add-datasource": "Добавить источник данных", | ||
798 | + "target-device": "Целевое устройство" | ||
799 | + }, | ||
800 | + "widget-type": { | ||
801 | + "import": "Импортировать тип виджета", | ||
802 | + "export": "Экспортировать тип виджета", | ||
803 | + "export-failed-error": "Не удалось экспортировать тип виджета: {{error}}", | ||
804 | + "create-new-widget-type": "Создать новый тип виджета", | ||
805 | + "widget-type-file": "Файл типа виджета", | ||
806 | + "invalid-widget-type-file-error": "Не удалось импортировать виджет: неизвестная схема данных типа виджета." | ||
807 | + }, | ||
808 | + "language": { | ||
809 | + "language": "Язык", | ||
810 | + "en_US": "Английский", | ||
811 | + "ko_KR": "Корейский", | ||
812 | + "zh_CN": "Китайский", | ||
813 | + "ru_RU": "Русский", | ||
814 | + "es_ES": "испанский" | ||
815 | + | ||
816 | + } | ||
817 | + }; | ||
818 | + angular.extend(locales, {'ru_RU': ru_RU}); | ||
819 | +} |
@@ -809,7 +809,9 @@ export default function addLocaleChinese(locales) { | @@ -809,7 +809,9 @@ export default function addLocaleChinese(locales) { | ||
809 | "language" : "语言", | 809 | "language" : "语言", |
810 | "en_US" : "英语", | 810 | "en_US" : "英语", |
811 | "ko_KR" : "韩语", | 811 | "ko_KR" : "韩语", |
812 | - "zh_CN" : "汉语" | 812 | + "zh_CN" : "汉语", |
813 | + "ru_RU" : "俄语", | ||
814 | + "es_ES": "西班牙語" | ||
813 | } | 815 | } |
814 | }; | 816 | }; |
815 | angular.extend(locales, { | 817 | angular.extend(locales, { |
@@ -811,8 +811,10 @@ export default angular.module('thingsboard.locale', []) | @@ -811,8 +811,10 @@ export default angular.module('thingsboard.locale', []) | ||
811 | "language": "Language", | 811 | "language": "Language", |
812 | "en_US": "English", | 812 | "en_US": "English", |
813 | "ko_KR": "Korean", | 813 | "ko_KR": "Korean", |
814 | - "zh_CN": "Chinese" | 814 | + "zh_CN": "Chinese", |
815 | + "ru_RU": "Russian", | ||
816 | + "es_ES": "Spanish" | ||
815 | } | 817 | } |
816 | } | 818 | } |
817 | } | 819 | } |
818 | - ).name; | ||
820 | + ).name; |
@@ -30,7 +30,9 @@ export default function ProfileController(userService, $scope, $document, $mdDia | @@ -30,7 +30,9 @@ export default function ProfileController(userService, $scope, $document, $mdDia | ||
30 | vm.languageList = { | 30 | vm.languageList = { |
31 | en_US: {value : "en_US", name: "language.en_US"}, | 31 | en_US: {value : "en_US", name: "language.en_US"}, |
32 | ko_KR: {value : "ko_KR", name: "language.ko_KR"}, | 32 | ko_KR: {value : "ko_KR", name: "language.ko_KR"}, |
33 | - zh_CN: {value : "zh_CN", name: "language.zh_CN"} | 33 | + zh_CN: {value : "zh_CN", name: "language.zh_CN"}, |
34 | + ru_RU: {value : "ru_RU", name: "language.ru_RU"}ñ | ||
35 | + es_ES: {value : "es_ES", name: "language.es_ES"}, | ||
34 | }; | 36 | }; |
35 | 37 | ||
36 | loadProfile(); | 38 | loadProfile(); |