Showing
9 changed files
with
1663 additions
and
6 deletions
... | ... | @@ -266,6 +266,10 @@ function DatasourceSubscription(datasourceSubscription, telemetryWebsocketServic |
266 | 266 | type: types.dataKeyType.timeseries, |
267 | 267 | onData: function (data) { |
268 | 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 | 273 | onData(data.data, types.dataKeyType.timeseries, true); |
270 | 274 | } |
271 | 275 | }, | ... | ... |
... | ... | @@ -17,6 +17,8 @@ import injectTapEventPlugin from 'react-tap-event-plugin'; |
17 | 17 | import UrlHandler from './url.handler'; |
18 | 18 | import addLocaleKorean from './locale/locale.constant-ko'; |
19 | 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 | 23 | /* eslint-disable import/no-unresolved, import/default */ |
22 | 24 | |
... | ... | @@ -52,6 +54,9 @@ export default function AppConfig($provide, |
52 | 54 | |
53 | 55 | addLocaleKorean(locales); |
54 | 56 | addLocaleChinese(locales); |
57 | + addLocaleRussian(locales); | |
58 | + addLocaleSpanish(locales); | |
59 | + | |
55 | 60 | var $window = angular.injector(['ng']).get('$window'); |
56 | 61 | var lang = $window.navigator.language || $window.navigator.userLanguage; |
57 | 62 | if (lang === 'ko') { |
... | ... | @@ -60,6 +65,9 @@ export default function AppConfig($provide, |
60 | 65 | } else if (lang === 'zh') { |
61 | 66 | $translateProvider.useSanitizeValueStrategy(null); |
62 | 67 | $translateProvider.preferredLanguage('zh_CN'); |
68 | + } else if (lang === 'es') { | |
69 | + $translateProvider.useSanitizeValueStrategy(null); | |
70 | + $translateProvider.preferredLanguage('es_ES'); | |
63 | 71 | } |
64 | 72 | |
65 | 73 | for (var langKey in locales) { | ... | ... |
... | ... | @@ -36,7 +36,7 @@ export default function AppRun($rootScope, $window, $injector, $location, $log, |
36 | 36 | } |
37 | 37 | |
38 | 38 | initWatchers(); |
39 | - | |
39 | + | |
40 | 40 | function initWatchers() { |
41 | 41 | $rootScope.unauthenticatedHandle = $rootScope.$on('unauthenticated', function (event, doLogout) { |
42 | 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 | +} | |
\ No newline at end of file | ... | ... |
... | ... | @@ -776,7 +776,9 @@ export default function addLocaleKorean(locales) { |
776 | 776 | "language": "언어", |
777 | 777 | "en_US": "영어", |
778 | 778 | "ko_KR": "한글", |
779 | - "zh_CN": "중국어" | |
779 | + "zh_CN": "중국어", | |
780 | + "ru_RU": "러시아어", | |
781 | + "es_ES": "스페인어" | |
780 | 782 | } |
781 | 783 | }; |
782 | 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 | +} | |
\ No newline at end of file | ... | ... |
... | ... | @@ -809,7 +809,9 @@ export default function addLocaleChinese(locales) { |
809 | 809 | "language" : "语言", |
810 | 810 | "en_US" : "英语", |
811 | 811 | "ko_KR" : "韩语", |
812 | - "zh_CN" : "汉语" | |
812 | + "zh_CN" : "汉语", | |
813 | + "ru_RU" : "俄语", | |
814 | + "es_ES": "西班牙語" | |
813 | 815 | } |
814 | 816 | }; |
815 | 817 | angular.extend(locales, { | ... | ... |
... | ... | @@ -811,8 +811,10 @@ export default angular.module('thingsboard.locale', []) |
811 | 811 | "language": "Language", |
812 | 812 | "en_US": "English", |
813 | 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; | |
\ No newline at end of file | ||
820 | + ).name; | ... | ... |
... | ... | @@ -30,7 +30,9 @@ export default function ProfileController(userService, $scope, $document, $mdDia |
30 | 30 | vm.languageList = { |
31 | 31 | en_US: {value : "en_US", name: "language.en_US"}, |
32 | 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 | 38 | loadProfile(); | ... | ... |