diff --git a/ui-ngx/src/app/shared/components/entity/entity-select.component.ts b/ui-ngx/src/app/shared/components/entity/entity-select.component.ts
index 5671e9de3b..8d32cc7c17 100644
--- a/ui-ngx/src/app/shared/components/entity/entity-select.component.ts
+++ b/ui-ngx/src/app/shared/components/entity/entity-select.component.ts
@@ -139,7 +139,7 @@ export class EntitySelectComponent implements ControlValueAccessor, OnInit, Afte
};
}
this.entitySelectFormGroup.get('entityType').patchValue(this.modelValue.entityType, {emitEvent: false});
- this.entitySelectFormGroup.get('entityId').patchValue(this.modelValue.id, {emitEvent: false});
+ this.entitySelectFormGroup.get('entityId').patchValue(this.modelValue, {emitEvent: false});
}
updateView(entityType: EntityType | AliasEntityType | null, entityId: string | null) {
diff --git a/ui-ngx/src/app/shared/components/html.component.ts b/ui-ngx/src/app/shared/components/html.component.ts
index da7e1fde9b..68270f7ac4 100644
--- a/ui-ngx/src/app/shared/components/html.component.ts
+++ b/ui-ngx/src/app/shared/components/html.component.ts
@@ -126,7 +126,17 @@ export class HtmlComponent implements OnInit, OnDestroy, ControlValueAccessor, V
});
// @ts-ignore
this.htmlEditor.session.on('changeAnnotation', () => {
- const annotations = this.htmlEditor.session.getAnnotations();
+ const annotations = this.htmlEditor.session.getAnnotations() || [];
+ const length = annotations.length;
+ let i = length;
+ while (i--) {
+ if(annotations[i].text.includes('Named entity expected')) {
+ annotations.splice(i, 1);
+ }
+ }
+ if (length > annotations.length) {
+ this.htmlEditor.session.setAnnotations(annotations);
+ }
const hasErrors = annotations.filter(annotation => annotation.type === 'error').length > 0;
if (this.hasErrors !== hasErrors) {
this.hasErrors = hasErrors;
diff --git a/ui-ngx/src/app/shared/components/json-form/json-form.component.ts b/ui-ngx/src/app/shared/components/json-form/json-form.component.ts
index 691b1eca1b..682a88ba98 100644
--- a/ui-ngx/src/app/shared/components/json-form/json-form.component.ts
+++ b/ui-ngx/src/app/shared/components/json-form/json-form.component.ts
@@ -31,7 +31,7 @@ import { ControlValueAccessor, UntypedFormControl, NG_VALIDATORS, NG_VALUE_ACCES
import { coerceBooleanProperty } from '@angular/cdk/coercion';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
-import { deepClone, isString } from '@app/core/utils';
+import { deepClone, isString, unwrapModule } from '@app/core/utils';
import { JsonFormProps } from './react/json-form.models';
import inspector from 'schema-inspector';
import tinycolor from 'tinycolor2';
@@ -270,9 +270,9 @@ export class JsonFormComponent implements ControlValueAccessor, Validator, OnCha
];
forkJoin(reactSchemaFormObservables).subscribe(
(modules) => {
- const react = modules[0];
- const reactDomClient = modules[2];
- const jsonFormReact = modules[3].default;
+ const react = unwrapModule(modules[0]);
+ const reactDomClient = unwrapModule(modules[2]);
+ const jsonFormReact = unwrapModule(modules[3]);
this.reactRoot = reactDomClient.createRoot(this.reactRootElmRef.nativeElement);
this.reactRoot.render(react.createElement(jsonFormReact, this.formProps));
}
diff --git a/ui-ngx/src/app/shared/components/json-form/react/json-form-ace-editor.tsx b/ui-ngx/src/app/shared/components/json-form/react/json-form-ace-editor.tsx
index d9fd64f951..649ee16c95 100644
--- a/ui-ngx/src/app/shared/components/json-form/react/json-form-ace-editor.tsx
+++ b/ui-ngx/src/app/shared/components/json-form/react/json-form-ace-editor.tsx
@@ -20,18 +20,21 @@ import reactCSS from 'reactcss';
import Button from '@mui/material/Button';
import { JsonFormFieldProps, JsonFormFieldState } from '@shared/components/json-form/react/json-form.models';
import { IEditorProps } from 'react-ace/src/types';
-import { mergeMap } from 'rxjs/operators';
+import { map, mergeMap } from 'rxjs/operators';
import { getAce } from '@shared/models/ace/ace.models';
import { from, lastValueFrom } from 'rxjs';
import { Observable } from 'rxjs/internal/Observable';
import { CircularProgress, IconButton } from '@mui/material';
import { MouseEvent } from 'react';
import { Help, HelpOutline } from '@mui/icons-material';
+import { unwrapModule } from '@core/utils';
const ReactAce = React.lazy(() => {
return lastValueFrom(getAce().pipe(
mergeMap(() => {
- return from(import('react-ace'));
+ return from(import('react-ace')).pipe(
+ map((module) => unwrapModule(module)
+ ));
})
));
});
diff --git a/ui-ngx/src/app/shared/components/json-form/react/json-form-schema-form.tsx b/ui-ngx/src/app/shared/components/json-form/react/json-form-schema-form.tsx
index 7c37d720dd..5ce35ae96f 100644
--- a/ui-ngx/src/app/shared/components/json-form/react/json-form-schema-form.tsx
+++ b/ui-ngx/src/app/shared/components/json-form/react/json-form-schema-form.tsx
@@ -51,6 +51,7 @@ import { MouseEvent, ReactNode } from 'react';
class ThingsboardSchemaForm extends React.Component
{
private hasConditions: boolean;
+ private conditionFunction: Function;
private readonly mapper: {[type: string]: any};
constructor(props: JsonFormProps) {
@@ -130,8 +131,10 @@ class ThingsboardSchemaForm extends React.Component {
}
if (form.condition) {
this.hasConditions = true;
- // tslint:disable-next-line:no-eval
- if (eval(form.condition) === false) {
+ if (!this.conditionFunction) {
+ this.conditionFunction = new Function('form', 'model', 'index', `return ${form.condition};`);
+ }
+ if (this.conditionFunction(form, model, index) === false) {
return null;
}
}
diff --git a/ui-ngx/src/app/shared/components/page.component.ts b/ui-ngx/src/app/shared/components/page.component.ts
index 4a5ee06cbc..ec6864e227 100644
--- a/ui-ngx/src/app/shared/components/page.component.ts
+++ b/ui-ngx/src/app/shared/components/page.component.ts
@@ -14,7 +14,7 @@
/// limitations under the License.
///
-import { Directive, OnDestroy } from '@angular/core';
+import { Directive, inject, OnDestroy } from '@angular/core';
import { select, Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import { Observable, Subscription } from 'rxjs';
@@ -25,13 +25,15 @@ import { AbstractControl } from '@angular/forms';
@Directive()
export abstract class PageComponent implements OnDestroy {
+ protected store: Store = inject(Store);
+
isLoading$: Observable;
loadingSubscription: Subscription;
disabledOnLoadFormControls: Array = [];
showMainLoadingBar = true;
- protected constructor(protected store: Store) {
+ protected constructor(...args: unknown[]) {
this.isLoading$ = this.store.pipe(delay(0), select(selectIsLoading), share());
}
diff --git a/ui-ngx/src/app/shared/decorators/public-api.ts b/ui-ngx/src/app/shared/decorators/public-api.ts
index e8dbfc608f..d8a8a397f4 100644
--- a/ui-ngx/src/app/shared/decorators/public-api.ts
+++ b/ui-ngx/src/app/shared/decorators/public-api.ts
@@ -16,4 +16,3 @@
export * from './coercion';
export * from './enumerable';
-export * from './tb-inject';
diff --git a/ui-ngx/src/app/shared/decorators/tb-inject.ts b/ui-ngx/src/app/shared/decorators/tb-inject.ts
deleted file mode 100644
index 7c421c6514..0000000000
--- a/ui-ngx/src/app/shared/decorators/tb-inject.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-///
-/// Copyright © 2016-2024 The Thingsboard Authors
-///
-/// Licensed under the Apache License, Version 2.0 (the "License");
-/// you may not use this file except in compliance with the License.
-/// You may obtain a copy of the License at
-///
-/// http://www.apache.org/licenses/LICENSE-2.0
-///
-/// Unless required by applicable law or agreed to in writing, software
-/// distributed under the License is distributed on an "AS IS" BASIS,
-/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-/// See the License for the specific language governing permissions and
-/// limitations under the License.
-///
-
-import { Inject, Type } from '@angular/core';
-
-export function TbInject(token: any): (target: Type, key: any, paramIndex: number) => void {
- return (target: Type, key: any, paramIndex: number) => {
- Inject(token)(target, key, paramIndex);
- };
-}
diff --git a/ui-ngx/src/app/shared/models/ace/ace.models.ts b/ui-ngx/src/app/shared/models/ace/ace.models.ts
index 381d897066..29c018048e 100644
--- a/ui-ngx/src/app/shared/models/ace/ace.models.ts
+++ b/ui-ngx/src/app/shared/models/ace/ace.models.ts
@@ -18,6 +18,7 @@ import { Ace } from 'ace-builds';
import { Observable } from 'rxjs/internal/Observable';
import { forkJoin, from, of } from 'rxjs';
import { map, mergeMap, tap } from 'rxjs/operators';
+import { unwrapModule } from '@core/utils';
let aceDependenciesLoaded = false;
let aceModule: any;
@@ -67,10 +68,10 @@ export function getAce(): Observable {
if (aceModule) {
return of(aceModule);
} else {
- return from(import('ace')).pipe(
+ return from(import('ace-builds/src-noconflict/ace')).pipe(
mergeMap((module) => {
return loadAceDependencies().pipe(
- map(() => module)
+ map(() => unwrapModule(module))
);
}),
tap((module) => {
@@ -86,7 +87,9 @@ export function getAceDiff(): Observable {
} else {
return getAce().pipe(
mergeMap((ace) => {
- return from(import('ace-diff'));
+ return from(import('ace-diff')).pipe(
+ map((module) => unwrapModule(module))
+ );
}),
tap((module) => {
aceDiffModule = module;
diff --git a/ui-ngx/src/app/shared/models/beautify.models.ts b/ui-ngx/src/app/shared/models/beautify.models.ts
index 8cf54a1536..2975feeee5 100644
--- a/ui-ngx/src/app/shared/models/beautify.models.ts
+++ b/ui-ngx/src/app/shared/models/beautify.models.ts
@@ -17,6 +17,7 @@
import { Observable } from 'rxjs/internal/Observable';
import { from, of } from 'rxjs';
import { map, tap } from 'rxjs/operators';
+import { unwrapModule } from '@core/utils';
let jsBeautifyModule: any;
let htmlBeautifyModule: any;
@@ -27,6 +28,7 @@ function loadJsBeautify(): Observable {
return of(jsBeautifyModule);
} else {
return from(import('js-beautify/js/lib/beautify.js')).pipe(
+ map((module) => unwrapModule(module)),
tap((module) => {
jsBeautifyModule = module;
})
@@ -39,6 +41,7 @@ function loadHtmlBeautify(): Observable {
return of(htmlBeautifyModule);
} else {
return from(import('js-beautify/js/lib/beautify-html.js')).pipe(
+ map((module) => unwrapModule(module)),
tap((module) => {
htmlBeautifyModule = module;
})
@@ -51,6 +54,7 @@ function loadCssBeautify(): Observable {
return of(cssBeautifyModule);
} else {
return from(import('js-beautify/js/lib/beautify-css.js')).pipe(
+ map((module) => unwrapModule(module)),
tap((module) => {
cssBeautifyModule = module;
})
diff --git a/ui-ngx/src/app/shared/models/notification.models.ts b/ui-ngx/src/app/shared/models/notification.models.ts
index dd5550e907..365adda774 100644
--- a/ui-ngx/src/app/shared/models/notification.models.ts
+++ b/ui-ngx/src/app/shared/models/notification.models.ts
@@ -366,6 +366,7 @@ interface SlackDeliveryMethodNotificationTemplate {
interface MicrosoftTeamsDeliveryMethodNotificationTemplate {
subject?: string;
button: NotificationButtonConfig;
+ themeColor?: string;
}
interface MobileDeliveryMethodNotificationTemplate {
diff --git a/ui-ngx/src/app/shared/models/telemetry/telemetry.models.ts b/ui-ngx/src/app/shared/models/telemetry/telemetry.models.ts
index 9f0d244e9e..2db1983b0b 100644
--- a/ui-ngx/src/app/shared/models/telemetry/telemetry.models.ts
+++ b/ui-ngx/src/app/shared/models/telemetry/telemetry.models.ts
@@ -17,7 +17,7 @@
import { EntityType } from '@shared/models/entity-type.models';
import { AggregationType } from '../time/time.models';
-import { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';
+import { BehaviorSubject, connectable, Observable, ReplaySubject, Subscription } from 'rxjs';
import { EntityId } from '@shared/models/id/entity-id';
import { map } from 'rxjs/operators';
import { NgZone } from '@angular/core';
@@ -731,6 +731,91 @@ export class NotificationsUpdate extends CmdUpdate {
}
}
+interface SharedSubscriptionInfo {
+ key: string;
+ subscriber: TelemetrySubscriber;
+ subscribed: boolean;
+ sharedSubscribers: Set;
+}
+
+export class SharedTelemetrySubscriber {
+
+ private static subscribersCache: {[key: string]: SharedSubscriptionInfo} = {};
+
+ private static createTelemetrySubscriberKey (entityId: EntityId, attributeScope: TelemetryType, keys: string[] = null): string {
+ let key = entityId.entityType + '_' + entityId.id + '_' + attributeScope;
+ if (keys) {
+ key += '_' + keys.sort().join('_');
+ }
+ return key;
+ }
+
+ private subscribed = false;
+
+ private attributeDataSubject = connectable(this.sharedSubscriptionInfo.subscriber.attributeData$(),
+ { connector: () => new ReplaySubject>(1)});
+
+ private subscriptions = new Array();
+
+ public attributeData$: Observable> = this.attributeDataSubject; //this.attributeDataSubject.asObservable();
+
+ public static createEntityAttributesSubscription(telemetryService: TelemetryWebsocketService,
+ entityId: EntityId, attributeScope: TelemetryType,
+ zone: NgZone, keys: string[] = null): SharedTelemetrySubscriber {
+ const key = SharedTelemetrySubscriber.createTelemetrySubscriberKey(entityId, attributeScope, keys);
+ let info = SharedTelemetrySubscriber.subscribersCache[key];
+ if (!info) {
+ const subscriber = TelemetrySubscriber.createEntityAttributesSubscription(
+ telemetryService, entityId, attributeScope, zone, keys
+ );
+ info = {
+ key,
+ subscriber,
+ subscribed: false,
+ sharedSubscribers: new Set()
+ };
+ SharedTelemetrySubscriber.subscribersCache[key] = info;
+ }
+ const sharedSubscriber = new SharedTelemetrySubscriber(info);
+ info.sharedSubscribers.add(sharedSubscriber);
+ return sharedSubscriber;
+ }
+
+ private constructor(private sharedSubscriptionInfo: SharedSubscriptionInfo) {
+ }
+
+ public subscribe() {
+ if (!this.subscribed) {
+ this.subscribed = true;
+ this.subscriptions.push(this.attributeDataSubject.connect());
+ if (!this.sharedSubscriptionInfo.subscribed) {
+ this.sharedSubscriptionInfo.subscriber.subscribe();
+ this.sharedSubscriptionInfo.subscribed = true;
+ }
+ }
+ }
+
+ public unsubscribe() {
+ if (this.subscribed) {
+ this.complete();
+ }
+ this.sharedSubscriptionInfo.sharedSubscribers.delete(this);
+ if (!this.sharedSubscriptionInfo.sharedSubscribers.size) {
+ if (this.sharedSubscriptionInfo.subscribed) {
+ this.sharedSubscriptionInfo.subscriber.unsubscribe();
+ this.sharedSubscriptionInfo.subscribed = false;
+ }
+ delete SharedTelemetrySubscriber.subscribersCache[this.sharedSubscriptionInfo.key];
+ }
+ }
+
+ private complete() {
+ this.subscriptions.forEach(subscription => subscription.unsubscribe());
+ this.subscriptions.length = 0;
+ }
+
+}
+
export class TelemetrySubscriber extends WsSubscriber {
private dataSubject = new ReplaySubject(1);
diff --git a/ui-ngx/src/assets/help/en_US/widget/lib/gateway/address-filter_fn.md b/ui-ngx/src/assets/help/en_US/widget/lib/gateway/address-filter_fn.md
new file mode 100644
index 0000000000..9ead0a6afd
--- /dev/null
+++ b/ui-ngx/src/assets/help/en_US/widget/lib/gateway/address-filter_fn.md
@@ -0,0 +1,24 @@
+### Address filter field
+
+It is used to filter the allowed IP addresses to connect to the connector.
+
+### **Examples of IP addresses filtering**
+
+Let’s review more examples of IP addresses filtering:
+
+For example, we have a device that has the following IP address: 192.168.0.120:5001. Now let's look at examples of the configuration of the field to allow the connection of different variants of IP addresses:
+
+1. Only one device with a specified IP address and port can connect:
+
+ **Address filter**: 192.168.0.120:5001
+2. Allow any devices with any IP address and only port 5001:
+
+ **Address filter:** *:5001
+
+3. Allow all devices that have the IP address 192.168.0.120 with any port:
+
+ **Address filter:** 192.168.0.120:*
+
+4. Allow any devices:
+
+ **Address filter:** *:*
diff --git a/ui-ngx/src/assets/help/en_US/widget/lib/gateway/attribute-name-expression_fn.md b/ui-ngx/src/assets/help/en_US/widget/lib/gateway/attribute-name-expression_fn.md
new file mode 100644
index 0000000000..424e51022f
--- /dev/null
+++ b/ui-ngx/src/assets/help/en_US/widget/lib/gateway/attribute-name-expression_fn.md
@@ -0,0 +1,21 @@
+### **Attribute name expression field**
+
+The expression that is used to get the name of the requested attribute from the received data.
+
+### **Examples of data converting**
+
+Let’s review example of data converting:
+
+We have a device that measures temperature and humidity. And for example, you want to send a request for a shared attribute that stores the firmware version of the device. To do this, we need to specify exactly where in the message the attribute name is located, the value of which we want to get.
+
+In our case, let the requested attribute name is “**FirmwareVersion**”.
+
+Accordingly, the field will contain the following value:
+
+`[16:]`
+
+And if the device sends a message with the following payload:
+
+`myShrAttrRequestFirmwareVersion`
+
+The connector, according to the configuration above, will take bytes starting from **16** to the **end** (from **0** to **16** is the “**Request expression**”) and send a request to the platform for the dispersed name of the shared attribute.
diff --git a/ui-ngx/src/assets/help/en_US/widget/lib/gateway/byte_fn.md b/ui-ngx/src/assets/help/en_US/widget/lib/gateway/byte_fn.md
new file mode 100644
index 0000000000..c52861a592
--- /dev/null
+++ b/ui-ngx/src/assets/help/en_US/widget/lib/gateway/byte_fn.md
@@ -0,0 +1,35 @@
+## Byte field
+
+The byte field is used to slice received data from the specific index.
+
+### Examples of data converting
+
+Let’s review more examples of data converting:
+We have a device that measures temperature and humidity. Device has charasteristic that can be
+read and when we receive data from her, the data combine temperature and humidity. So, data
+from device have the next view:b’\x08<\x08\x00’ and in human readable format:[8, 34](first array
+element is temperature and the second is humidity).
+
+1. We want to read only temperature value
+
+ **“Bytes from”: “0”**
+
+ **“Bytes to”: “1”**
+
+ Data to platform: **8**
+
+2. We want to read only humidity value
+
+ **“Bytes from”: “1”**
+
+ **“Bytes to”: “-1”**
+
+ Data to platform: **34**
+
+3. We want to read all values
+
+ **“Bytes from”: “0”**
+
+ **“Bytes to”: “-1”**
+
+ Data to platform:**834**
diff --git a/ui-ngx/src/assets/help/en_US/widget/lib/gateway/request-expression_fn.md b/ui-ngx/src/assets/help/en_US/widget/lib/gateway/request-expression_fn.md
new file mode 100644
index 0000000000..5f38929c66
--- /dev/null
+++ b/ui-ngx/src/assets/help/en_US/widget/lib/gateway/request-expression_fn.md
@@ -0,0 +1,21 @@
+### **Request expression field**
+
+The expression that is used to know if the request from the device is “**Attribute Request**” or not.
+
+### **Examples of data converting**
+
+Let’s review example of data converting:
+
+We have a device that measures temperature and humidity. And for example, you want to send a request for a shared attribute that stores the firmware version of the device. In order for the connector to understand that the received message refers to "**Attribute request**" and not telemetry type, we must specify in the configuration what the message should begin with.
+
+In our case, let the beginning of the message contain “**myShrAttrRequest**”.
+
+Accordingly, the field will contain the following value:
+
+`${[0:16]==myShrAttrRequest}`
+
+And if the device sends a message with the following payload:
+
+`myShrAttrRequestFirmwareVersion`
+
+The connector will take the specified range from 0 to 16 bytes and see that this message belongs to the “**Attribute request**” type.
diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json
index bb65c61752..5571b22f80 100644
--- a/ui-ngx/src/assets/locale/locale.constant-en_US.json
+++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json
@@ -2836,6 +2836,7 @@
"gateways": "Gateways",
"create-new-gateway": "Create a new gateway",
"create-new-gateway-text": "Are you sure you want create a new gateway with name: '{{gatewayName}}'?",
+ "launch-command": "Launch command",
"no-gateway-found": "No gateway found.",
"no-gateway-matching": " '{{item}}' not found."
},
diff --git a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json
index c601e1d6a1..ac302a78bb 100644
--- a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json
+++ b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json
@@ -84,9 +84,9 @@
},
"aggregation": {
"aggregation": "聚合",
- "function": "数据聚合功能",
+ "function": "聚合功能",
"limit": "限制数",
- "group-interval": "分组间隔",
+ "group-interval": "间隔",
"min": "最小值",
"max": "最大值",
"avg": "平均值",
@@ -110,15 +110,6 @@
"prohibit-different-url-hint": "应为生产环境启用此设置。禁用时可能会导致安全问题",
"device-connectivity": {
"device-connectivity": "设备连接",
- "http-s": "HTTP(s)",
- "mqtt-s": "MQTT(s)",
- "coap-s": "COAP(s)",
- "http": "HTTP",
- "https": "HTTPs",
- "mqtt": "MQTT",
- "mqtts": "MQTTs",
- "coap": "COAP",
- "coaps": "COAPs",
"hint": "如果主机或端口字段为空,将使用默认的协议值。",
"host": "主机",
"port": "端口",
@@ -153,8 +144,6 @@
"sms-provider-type": "SMS 服务商类型",
"sms-provider-type-required": "SMS 服务商类型必填。",
"sms-provider-type-aws-sns": "亚马逊社交网站",
- "sms-provider-type-twilio": "Twilio",
- "sms-provider-type-smpp": "SMPP",
"aws-access-key-id": "AWS访问密钥ID",
"aws-access-key-id-required": "需要访问AWS密钥ID",
"aws-secret-access-key": "AWS秘密访问密钥",
@@ -183,6 +172,9 @@
"minimum-password-length": "最小密码长度",
"minimum-password-length-required": "最小密码长度必填",
"minimum-password-length-range": "最小密码长度应在5到50之间",
+ "maximum-password-length": "密码最大长度",
+ "maximum-password-length-min": "密码最大长度应至少为6个字符",
+ "maximum-password-length-less-min": "密码最大长度应大于最小长度",
"minimum-uppercase-letters": "最少大写字母位数",
"minimum-uppercase-letters-range": "最少大写字母位数不能为负数",
"minimum-lowercase-letters": "最少小写字母位数",
@@ -195,105 +187,135 @@
"password-expiration-period-days-range": "密码过期期限(天)不能为负",
"password-reuse-frequency-days": "密码重用频率(天)",
"password-reuse-frequency-days-range": "天内密码重用频率不能为负",
- "allow-whitespace": "Allow whitespace",
+ "force-reset-password-if-no-valid": "如果密码不可用则强制重置密码",
+ "force-reset-password-if-no-valid-hint": "启用此功能时请小心:它会要求使用不可用密码的用户通过电子邮件重置其密码。",
"general-policy": "基本策略",
"max-failed-login-attempts": "登录失败之前的最大登录尝试次数",
"minimum-max-failed-login-attempts-range": "登录失败次数不能为负数",
"user-lockout-notification-email": "如果用户帐户锁定,请发送通知到电子邮件",
+ "user-activation-token-ttl": "用户激活链接在1小时内",
+ "user-activation-token-ttl-range": "用户激活链接必须在1到24小时范围内",
+ "password-reset-token-ttl": "密码重置链接1小时内",
+ "password-reset-token-ttl-range": "密码重置链接必须在1到24小时内",
+ "mobile-secret-key-length": "移动端密钥长度",
+ "mobile-secret-key-length-range": "移动端密钥长度范围",
"domain-name": "域名",
"domain-name-unique": "域名和协议必须是唯一的。",
- "domain-name-max-length": "域名应该少于256个字符。",
+ "domain-name-max-length": "域名应该小于256个字符。",
"error-verification-url": "域名不应包含符号 “/” 和 “:”。例:thingsboard.io",
"connection-settings": "连接设置",
"oauth2": {
"access-token-uri": "访问令牌URI",
- "access-token-uri-required": "访问令牌 URI 必填。",
+ "access-token-uri-required": "访问令牌URI必填。",
"activate-user": "激活用户",
"add-domain": "添加域",
"delete-domain": "删除域",
- "add-provider": "添加 Provider",
- "delete-provider": "删除 Provider",
+ "add-provider": "添加Provider",
+ "delete-provider": "删除Provider",
"allow-user-creation": "允许用户创建",
"always-fullscreen": "始终全屏",
"authorization-uri": "授权URI",
- "authorization-uri-required": "授权 URI 必填。",
+ "authorization-uri-required": "授权URI必填。",
+ "add-client": "添加OAuth2.0客户端",
+ "client-details": "OAuth2.0客户端详情",
+ "client": "OAuth2.0客户端",
+ "clients": "OAuth2.0客户端",
+ "no-oauth2-clients": "未找到OAuth2.0客户端",
+ "search-oauth2-clients": "搜索OAuth2.0客户端",
+ "delete-client-title": "您确定要删除OAuth2.0客户端'{{clientName}}'?",
+ "delete-client-text": "请注意,确认后客户端和所有相关数据将无法恢复。",
+ "delete-mobile-app-title": "您确定要删除移动应用程序'{{applicationName}}'?",
+ "delete-mobile-app-text": "请小心,确认后移动应用程序和所有相关数据将变得无法恢复。",
+ "title": "标题",
+ "client-title-required": "标题是必填项。",
+ "client-title-max-length": "标题长度应该小于100个字符。",
+ "advanced-settings": "高级设置",
+ "domain-details": "域名详情",
+ "no-domains": "未找到域名",
+ "search-domains": "搜索域名",
+ "mobile-app-details": "移动端详细信息",
+ "add-mobile-app": "添加应用程序",
+ "no-mobile-apps": "未配置应用程序",
+ "search-mobile-apps": "搜索移动端",
+ "send-token": "发送令牌",
+ "create-new": "创建",
"client-authentication-method": "客户端身份验证方法",
"client-id": "客户端ID",
"client-id-required": "客户端 ID 必填。",
- "client-id-max-length": "客户端ID应该少于256个字符。",
+ "client-id-max-length": "客户端ID应该小于256个字符。",
"client-secret": "客户机密",
"client-secret-required": "需要客户端密码。",
- "client-secret-max-length": "客户端密钥应该少于2049个字符。",
+ "client-secret-max-length": "客户端密钥应该小于2049个字符。",
"custom-setting": "自定义设置",
"customer-name-pattern": "客户名称模式",
- "customer-name-pattern-max-length": "客户名称模式应该少于256个字符。",
+ "customer-name-pattern-max-length": "客户名称模式应该小于256个字符。",
"default-dashboard-name": "默认仪表板名称",
- "default-dashboard-name-max-length": "默认仪表板名称应该少于256个字符。",
- "delete-domain-text": "请注意:确认后,域和所有 provider data 将不可恢复。",
- "delete-domain-title": "确定要删除域 '{{domainName}}' 的设置吗?",
- "delete-registration-text": "请注意:确认后 provider data 将不可恢复。",
- "delete-registration-title": "确定要删除 provider '{{name}}' 吗?",
+ "default-dashboard-name-max-length": "默认仪表板名称应该小于256个字符。",
+ "delete-domain-text": "请注意:确认后域名和所有提供商数据将不可恢复。",
+ "delete-domain-title": "确定要删除域'{{domainName}}'的设置吗?",
+ "delete-registration-text": "请注意:确认后提供商数据将不可恢复。",
+ "delete-registration-title": "确定要删除'{{name}}'提供商吗?",
"email-attribute-key": "电子邮件属性键",
"email-attribute-key-required": "电子邮件属性键必填。",
- "email-attribute-key-max-length": "电子邮件属性键应该少于32个字符。",
- "first-name-attribute-key": "名字属性键",
- "first-name-attribute-key-max-length": "名字属性键应该少于32个字符。",
+ "email-attribute-key-max-length": "电子邮件属性键应该小于32个字符。",
+ "first-name-attribute-key": "First属性名称",
+ "first-name-attribute-key-max-length": "First属性名称应该小于32个字符。",
"general": "基本设置",
- "jwk-set-uri": "JSON Web Key URI",
- "last-name-attribute-key": "姓氏属性键",
- "last-name-attribute-key-max-length": "姓氏属性键应该少于32个字符。",
+ "jwk-set-uri": "JSON Web地址",
+ "last-name-attribute-key": "Last属性名称",
+ "last-name-attribute-key-max-length": "Last属性名称应该小于32个字符。",
"login-button-icon": "登录按钮图标",
- "login-button-label": "Provider 标签",
- "login-button-label-placeholder": "使用 $(Provider label) 登录",
+ "login-button-label": "标签",
+ "login-button-label-placeholder": "使用$(Provider label)登录",
"login-button-label-required": "标签必填。",
- "login-provider": "Login provider",
- "mapper": "Mapper",
- "new-domain": "新建域",
- "oauth2": "OAuth2",
- "password-max-length": "密码应该少于256个字符。",
+ "login-provider": "登录提供商",
+ "mapper": "映射",
+ "new-domain": "新建",
+ "password-max-length": "密码应该小于256个字符。",
"redirect-uri-template": "重定向URI模板",
"copy-redirect-uri": "复制重定向URI",
"registration-id": "注册ID",
- "registration-id-required": "注册 ID 必填。",
+ "registration-id-required": "注册ID必填。",
"registration-id-unique": "系统的注册ID必须是唯一的。",
"scope": "范围",
"scope-required": "范围必填。",
"tenant-name-pattern": "租户名称模式",
"tenant-name-pattern-required": "租户名称模式必填。",
- "tenant-name-pattern-max-length": "租户名称模式应该少于256个字符。",
+ "tenant-name-pattern-max-length": "租户名称模式应该小于256个字符。",
"tenant-name-strategy": "租户名称策略",
"type": "映射器类型",
"uri-pattern-error": "无效的URI格式。",
"url": "统一资源定位地址",
"url-pattern": "无效的URL格式。",
- "url-required": "URL 必填。",
- "url-max-length": "URL 应该少于256个字符。",
+ "url-required": "URL必填。",
+ "url-max-length": "URL应该小于256个字符。",
"user-info-uri": "用户信息URI",
- "user-info-uri-required": "用户信息 URI 必填。",
- "username-max-length": "用户名应该少于256个字符。",
+ "user-info-uri-required": "用户信息URI必填。",
+ "username-max-length": "用户名应该小于256个字符。",
"user-name-attribute-name": "用户名属性键",
"user-name-attribute-name-required": "用户名属性密钥必填",
"protocol": "协议",
- "domain-schema-http": "HTTP",
- "domain-schema-https": "HTTPS",
- "domain-schema-mixed": "HTTP+HTTPS",
- "enable": "启用OAuth2设置",
+ "enable": "启用OAuth2.0设置",
+ "disable": "禁用OAuth2.0设置",
+ "edge-enable": "启用Edge",
+ "edge-disable": "禁用Edge",
"domains": "域名",
"mobile-apps": "移动端应用",
- "no-mobile-apps": "未配置应用程序",
"mobile-package": "应用程序包",
"mobile-package-placeholder": "例如: my.example.app",
- "mobile-package-hint": "Android:应用程序ID,iOS:产品标识符",
+ "mobile-package-hint": "Android:应用程序ID或iOS:产品标识符",
"mobile-package-unique": "应用程序包必须是唯一的。",
+ "mobile-package-max-length": "应用程序包应小于256。",
+ "mobile-package-spaces": "应用程序包不应包含空间。",
"mobile-app-secret": "应用程序密钥",
+ "mobile-app-secret-hint": "BASE64编码字符串不少于512位数据。",
+ "mobile-app-secret-required": "应用程序密钥必填。",
+ "mobile-app-secret-min-length": "应用程序密钥不少于512位数据。",
+ "mobile-app-secret-base64": "应用程序密钥必须为base64格式。",
"invalid-mobile-app-secret": "应用程序密钥必须只包含字母和数字字符,并且长度必须介于16到2048个字符之间。",
"copy-mobile-app-secret": "复制应用程序密钥",
- "add-mobile-app": "添加应用程序",
"delete-mobile-app": "删除应用程序信息",
"providers": "供应商",
- "platform-web": "Web",
- "platform-android": "Android",
- "platform-ios": "iOS",
"all-platforms": "所有平台",
"smtp-provider": "SMTP提供商",
"allowed-platforms": "允许的平台",
@@ -302,6 +324,7 @@
"provider": "提供商",
"redirect-url": "重定向URL",
"domain-name": "域名",
+ "domain-name-required": "域名必填",
"redirect-url-template": "重定向URL模板",
"microsoft-tenant-id": "目录(租户)ID",
"microsoft-tenant-id-required": "需要目录(租户)ID",
@@ -309,8 +332,6 @@
"token-uri-required": "需要令牌URI",
"redirect-uri": "重定向URI",
"google-provider": "谷歌",
- "microsoft-provider": "Office 365",
- "sendgrid-provider": "Sendgrid",
"custom-provider": "自定义",
"generate-access-token": "生成访问令牌",
"update-access-token": "更新访问令牌",
@@ -367,10 +388,6 @@
"scheme-octet-unspecified-2": "2 - 八进制未指定 (8 位二进制)",
"scheme-latin-1": "3 - Latin 1 (ISO-8859-1)",
"scheme-octet-unspecified-4": "4 - 八进制未指定 (8 位二进制)",
- "scheme-jis": "5 - JIS (X 0208-1990)",
- "scheme-cyrillic": "6 - Cyrillic (ISO-8859-5)",
- "scheme-latin-hebrew": "7 - Latin/Hebrew (ISO-8859-8)",
- "scheme-ucs-utf": "8 - UCS2/UTF-16 (ISO/IEC-10646)",
"scheme-pictogram-encoding": "9 - 图标编码",
"scheme-music-codes": "10 - 音乐编码 (ISO-2022-JP)",
"scheme-extended-kanji-jis": "13 - 扩展汉字 JIS (X 0212-1990)",
@@ -413,6 +430,36 @@
"no-auto-commit-entities-prompt": "没有设置自动提交的实体",
"delete-auto-commit-settings-title": "确定要删除自动提交设置吗?",
"delete-auto-commit-settings-text": "请注意:确认后,自动提交设置将被删除,所有实体的自动提交将被禁用。",
+ "mobile-app": {
+ "mobile-app": "移动应用",
+ "mobile-app-qr-code-widget-settings": "移动应用二维码部件设置",
+ "applications": "应用程序",
+ "default": "默认",
+ "custom": "自定义",
+ "app-package-name": "应用程序包名称",
+ "app-package-name-required": "应用程序包名称必填",
+ "sha256-certificate-fingerprints": "SHA256证书指纹",
+ "sha256-certificate-fingerprints-required": "SHA256证书指纹必填",
+ "app-id-required": "App ID必填",
+ "google-play-link": "Google Play链接",
+ "google-play-link-required": "Google Play链接必填",
+ "app-store-link": "App Store链接",
+ "app-store-link-required": "App Store链接",
+ "appearance": "外观",
+ "appearance-on-home-page": "外观显示在首页",
+ "enabled": "启用",
+ "disabled": "禁用",
+ "badges": "徽章",
+ "label": "标签",
+ "label-required": "标签必填。",
+ "label-max-length": "标签应小于或等于50个字符",
+ "right": "右侧",
+ "left": "左侧",
+ "set": "设置",
+ "preview": "预览",
+ "connect-mobile-app": "连接移动端",
+ "use-system-settings": "使用系统设置"
+ },
"2fa": {
"2fa": "双因素认证",
"available-providers": "可用选项",
@@ -451,7 +498,7 @@
"issuer-name": "发行者名称",
"issuer-name-required": "发行者名称必填。",
"signings-key": "签名密钥",
- "signings-key-hint": "Base64编码的字符串,至少512位数据。",
+ "signings-key-hint": "Base64编码的字符串至少512位数据。",
"signings-key-required": "签名密钥必填。",
"signings-key-min-length": "签名密钥必须至少为512位的数据。",
"signings-key-base64": "签名密钥必须是Base64格式。",
@@ -472,20 +519,17 @@
"notifications": "通知",
"notifications-settings": "通知设置",
"slack-api-token": "Slack API令牌",
- "slack": "Slack",
- "slack-settings": "Slack 设置",
- "maximum-password-length": "密码最大长度",
- "maximum-password-length-min": "密码最大长度应至少为6个字符",
- "maximum-password-length-less-min": "密码最大长度应大于最小长度",
- "force-reset-password-if-no-valid": "如果密码不可用则强制重置密码",
- "force-reset-password-if-no-valid-hint": "启用此功能时请小心:它会要求使用不可用密码的用户通过电子邮件重置其密码。"
+ "slack-settings": "Slack设置",
+ "mobile-settings": "移动设置",
+ "firebase-service-account-file": "Firebase服务帐户JSON凭据文件",
+ "select-firebase-service-account-file": "拖放Firebase服务帐户凭据文件"
},
"alarm": {
"alarm": "告警",
"alarms": "告警",
"all-alarms": "所有告警",
"select-alarm": "选择告警",
- "no-alarms-matching": "未找到匹配 '{{entity}}' 的告警",
+ "no-alarms-matching": "未找到匹配'{{entity}}'的告警",
"alarm-required": "告警必填",
"alarm-filter": "告警筛选器",
"filter": "筛选器",
@@ -634,6 +678,7 @@
"filter-type-edge-search-query-description": "类型为 {{edgeTypes}} 且具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的边缘",
"entity-filter": "实体筛选器",
"resolve-multiple": "解析为多实体",
+ "resolve-multiple-hint": "启用所有过滤实体的数据同时渲染,\n如果禁用部件仅显示来自选定实体的数据。",
"filter-type": "筛选器类型",
"filter-type-required": "筛选器类型必填。",
"entity-filter-no-entity-matched": "未找到匹配指定筛选条件的实体。",
@@ -674,7 +719,7 @@
"select-asset-type": "选择资产类型",
"enter-asset-type": "输入资产类型",
"any-asset": "任何资产",
- "no-asset-types-matching": "未找到匹配 '{{entitySubtype}}' 的资产类型。",
+ "no-asset-types-matching": "未找到匹配'{{entitySubtype}}'的资产类型。",
"asset-type-list-empty": "资产类型未选择。",
"asset-types": "资产类型",
"name": "名称",
@@ -740,6 +785,11 @@
"scope-client": "客户端属性",
"scope-server": "服务端属性",
"scope-shared": "共享属性",
+ "scope-client-short": "客户端",
+ "scope-server-short": "服务端",
+ "scope-shared-short": "共享",
+ "scope-latest-short": "最新",
+ "scope-any": "任意",
"add": "添加属性",
"key": "键名",
"key-max-length": "键应该小于256个字符。",
@@ -795,13 +845,10 @@
"email-messages-monthly-activity": "每月产生的邮件消息",
"exceptions": "异常",
"executions": "执行数",
- "scripts": "Scripts",
"scripts-hourly-activity": "脚本每小时活动",
"scripts-daily-activity": "脚本每日活动",
"scripts-monthly-activity": "脚本每月活动",
- "javascript": "JavaScript",
"javascript-executions": "JavaScript 执行数",
- "tbel": "TBEL",
"tbel-executions": "TBEL 执行数",
"latest-error": "最新错误",
"messages": "消息",
@@ -842,16 +889,22 @@
"view-statistics": "查看统计信息"
},
"api-limit": {
- "cassandra-queries": "Cassandra查询次数",
- "entity-version-creation": "实体版本创建次数",
- "entity-version-load": "实体版本加载次数",
- "notification-requests": "通知请求次数",
- "notification-requests-per-rule": "每个规则的通知请求次数",
+ "cassandra-queries": "Cassandra查询",
+ "entity-version-creation": "实体版本创建",
+ "entity-version-load": "实体版本加载",
+ "notification-requests": "通知请求",
+ "notification-requests-per-rule": "每个规则的通知请求",
"rest-api-requests": "REST API请求次数",
- "rest-api-requests-per-customer": "每个客户的REST API请求次数",
+ "rest-api-requests-per-customer": "每个客户的REST API请求",
"transport-messages": "传输消息次数",
- "transport-messages-per-device": "每个设备的传输消息次数",
- "ws-updates-per-session": "每个会话的WS更新次数"
+ "transport-messages-per-device": "每个设备的传输消息",
+ "transport-messages-per-gateway": "每个网关的传输消息",
+ "transport-messages-per-gateway-device": "每个网关设备传输消息",
+ "ws-updates-per-session": "每个会话的WS更新",
+ "edge-events": "Edge事件",
+ "edge-events-per-edge": "Edge事件",
+ "edge-uplink-messages": "Edge上行",
+ "edge-uplink-messages-per-edge": "Edge下行"
},
"audit-log": {
"audit": "审计",
@@ -883,6 +936,7 @@
"type-relations-delete": "删除所有关联",
"type-alarm-ack": "已确认",
"type-alarm-clear": "已清除",
+ "type-alarm-delete": "Alarm deleted",
"type-alarm-assign": "已分配",
"type-alarm-unassign": "未分配",
"type-added-comment": "添加评论",
@@ -914,6 +968,7 @@
},
"contact": {
"country": "国家",
+ "country-required": "国家必填。",
"city": "城市",
"state": "省份",
"postal-code": "邮政编码",
@@ -923,6 +978,8 @@
"phone": "手机号码",
"email": "电子邮件",
"no-address": "无地址",
+ "no-country-found": "未找不到国家。",
+ "no-country-matching": "未匹配到'{{country}}'。",
"state-max-length": "省份长度应该小于256个字符",
"phone-max-length": "手机号码长度应该小于256个字符",
"city-max-length": "城市应该小于256个字符"
@@ -942,8 +999,8 @@
},
"content-type": {
"json": "Json",
- "text": "Text",
- "binary": "Binary (Base64)"
+ "text": "文本",
+ "binary": "二进制(Base64)"
},
"customer": {
"customer": "客户",
@@ -991,7 +1048,7 @@
"copyId": "复制客户ID",
"idCopiedMessage": "客户ID已复制到粘贴板",
"select-customer": "选择客户",
- "no-customers-matching": "未找到匹配 '{{entity}}' 的客户。",
+ "no-customers-matching": "未找到匹配'{{entity}}'的客户。",
"customer-required": "客户必填",
"select-default-customer": "选择默认的客户",
"default-customer": "默认客户",
@@ -1001,18 +1058,33 @@
"edges": "客户边缘实例",
"manage-edges": "管理边缘"
},
+ "css-size": {
+ "size-value-required": "尺寸值必填。",
+ "invalid-size-value": "尺寸值无效"
+ },
"date": {
"last-update-n-ago": "N分钟前的最后更新",
"last-update-n-ago-text": "最后更新{{ agoText }}",
"custom-date": "自定义日期",
"format": "格式",
- "preview": "预览"
+ "preview": "预览",
+ "auto": "自动",
+ "time-granularity-formats": "时间格式",
+ "unit-year": "年",
+ "unit-month": "月",
+ "unit-day": "日",
+ "unit-hour": "时",
+ "unit-minute": "分",
+ "unit-second": "秒",
+ "unit-millisecond": "毫秒"
},
"datetime": {
"date-from": "开始日期",
"time-from": "开始时间",
"date-to": "结束日期",
- "time-to": "结束时间"
+ "time-to": "结束时间",
+ "from": "从",
+ "to": "到"
},
"dashboard": {
"dashboard": "仪表板",
@@ -1050,7 +1122,7 @@
"select-widget-subtitle": "可用的部件类型列表",
"delete": "删除仪表板",
"title-required": "标题必填。",
- "title-max-length": "标题应该少于256个字符。",
+ "title-max-length": "标题应该小于256个字符。",
"description": "说明",
"details": "详情",
"dashboard-details": "仪表板详情",
@@ -1097,10 +1169,21 @@
"maximum-upload-file-size": "最大上传文件大小: {{ size }}",
"cannot-upload-file": "无法上传文件",
"settings": "设置",
+ "move-all-widgets": "移动所有部件",
+ "move-by": "移动",
+ "cols": "列",
+ "rows": "行",
+ "layout": "布局",
+ "layout-type-default": "默认",
+ "layout-type-scada": "SCADA",
+ "layout-type-divider": "分隔线",
+ "layout-settings-type": "布局设置:{{ type }}",
"columns-count": "列数",
"columns-count-required": "需要列数。",
"min-columns-count-message": "只允许最少10列",
"max-columns-count-message": "只允许最多1000列",
+ "min-layout-width": "最小布局宽度",
+ "columns-suffix": "列",
"widgets-margins": "部件间边距",
"margin-required": "边距值必填。",
"min-margin-message": "最小边距值只允许为0。",
@@ -1120,6 +1203,11 @@
"mobile-row-height-required": "移动端行高距必填。",
"min-mobile-row-height-message": "移动端行高距至少5px。",
"max-mobile-row-height-message": "移动端行高距最多200px。",
+ "row-height": "行高",
+ "row-height-required": "行高必填。",
+ "min-row-height-message": "仅允许5个像素作为最小行高值。",
+ "max-row-height-message": "仅允许200个像素作为最大行高值。",
+ "display-first-in-mobile-view": "优先在移动视图中显示",
"title-settings": "标题设置",
"display-title": "显示仪表板标题",
"title-color": "标题颜色",
@@ -1185,6 +1273,7 @@
"hide-details": "隐藏详情",
"select-state": "选择目标状态",
"state-controller": "状态控制",
+ "state-controller-default": "静态(已弃用)",
"search": "查找仪表板",
"selected-dashboards": "已选择 { count, plural, =1 {1 个仪表盘} other {# 个仪表盘} }",
"home-dashboard": "首页仪表板",
@@ -1196,8 +1285,19 @@
"assign-dashboard-to-edge-text": "请选择要分配给边缘的仪表板",
"non-existent-dashboard-state-error": "找不到ID为 '{{ stateId }}' 的仪表板状态。",
"edit-mode": "编辑模式",
- "state-controller-default": "静态(已弃用)",
- "duplicate-state-action": "复制状态"
+ "duplicate-state-action": "复制状态",
+ "breakpoint-value": "断点({{ value }})",
+ "breakpoints-id": {
+ "default": "默认",
+ "xs": "xs",
+ "sm": "sm",
+ "md": "md",
+ "lg": "lg",
+ "xl": "xl"
+ },
+ "view-format-type-grid": "网格",
+ "view-format-type-list": "列表",
+ "view-format": "类型"
},
"datakey": {
"settings": "设置",
@@ -1368,7 +1468,7 @@
"lwm2m-security-config": {
"identity": "客户端身份",
"identity-required": "需要提供客户端身份。",
- "identity-tooltip": "PSK 标识符是一个任意的 PSK 标识符,最多可以为 128 字节,如标准 [RFC7925] 中所述。\nPSK 标识符必须首先转换为字符字符串,然后使用 UTF-8 编码成八位字节。",
+ "identity-tooltip": "PSK 标识符是一个任意的 PSK 标识符,最多可以为 128 字节,如标准 [RFC7925] 中所述。",
"client-key": "客户端密钥",
"client-key-required": "需要提供客户端密钥。",
"client-key-tooltip-prk": "RPK 公钥或 ID 必须符合标准 [RFC7250] 并编码为 Base64 格式!",
@@ -1380,10 +1480,6 @@
"client-public-key-tooltip": "X509 公钥必须采用 DER 编码的 X509v3 格式,并且仅支持 EC 算法,然后编码为 Base64 格式!",
"mode": "安全配置模式",
"client-tab": "客户端安全配置",
- "client-certificate": "客户端证书",
- "bootstrap-tab": "Bootstrap Client",
- "bootstrap-server": "Bootstrap Server",
- "lwm2m-server": "LwM2M Server",
"client-publicKey-or-id": "客户端公钥或ID",
"client-publicKey-or-id-required": "客户端公钥或ID必填。",
"client-publicKey-or-id-tooltip-psk": "SK标识符是最多128字节,如标准[RFC7925]所述。",
@@ -1488,7 +1584,7 @@
"set-default": "设为默认资产配置",
"delete": "删除资产配置",
"copyId": "复制资产配置ID",
- "name-max-length": "名称长度必须少于256个字符",
+ "name-max-length": "名称长度必须小于256个字符",
"new-device-profile-name": "资产配置名称",
"new-device-profile-name-required": "资产配置名称必填。",
"name": "名称",
@@ -1533,7 +1629,7 @@
"set-default": "设为默认设备配置",
"delete": "删除设备配置",
"copyId": "复制设备配置 ID",
- "name-max-length": "名称长度必须少于256个字符",
+ "name-max-length": "名称长度必须小于256个字符",
"name": "名称",
"name-required": "名称是必需的。",
"type": "配置类型",
@@ -1563,11 +1659,11 @@
"mobile-dashboard": "移动端仪表板",
"mobile-dashboard-hint": "被移动端应用用作设备详情仪表板",
"select-queue-hint": "从下拉列表中选择或添加自定义名称。",
- "delete-device-profile-title": "确定要删除 '{{deviceProfileName}}' 设备配置吗?",
+ "delete-device-profile-title": "确定要删除'{{deviceProfileName}}'设备配置吗?",
"delete-device-profile-text": "请注意:确认后,设备配置和所有相关数据将不可恢复。",
"delete-device-profiles-title": "确定要删除 { count, plural, =1 {1 个设备配置} other {# 个设备配置} }吗?",
"delete-device-profiles-text": "请注意:确认后,所有选定的设备配置将被删除,所有相关数据将不可恢复。",
- "set-default-device-profile-title": "确定要将设备配置 '{{deviceProfileName}}' 设为默认值吗?",
+ "set-default-device-profile-title": "确定要将设备配置'{{deviceProfileName}}'设为默认值吗?",
"set-default-device-profile-text": "确认后,设备配置将被标记为默认,并将用于未指定配置的新设备。",
"no-device-profiles-found": "未找到设备配置。",
"create-new-device-profile": "创建设备配置",
@@ -1578,8 +1674,6 @@
"mqtt-device-topic-filters-spark-plug-attribute-metric-names": "将SparkPlug指标存储为属性。",
"mqtt-device-topic-filters-spark-plug-attribute-metric-names-hint": "将作为设备属性存储的SparkPlug指标的名称。其他指标将作为设备遥测数据进行存储。",
"mqtt-device-payload-type": "MQTT 设备 Payload",
- "mqtt-device-payload-type-json": "JSON",
- "mqtt-device-payload-type-proto": "Protobuf",
"mqtt-enable-compatibility-with-json-payload-format": "启用与其他payload格式兼容。",
"mqtt-enable-compatibility-with-json-payload-format-hint": "启用后平台将默认使用Protobuf的payload格式,如果解析失败平台将尝试使用JSON的payload格式。对于固件更新期间的向后兼容性很有用,例如固件的初始版本使用Json而新版本使用Protobuf在设备队列的固件更新过程中,需要同时支持Protobuf和JSON。兼容模式会导致一点的性能下降,因此建议在所有设备更新后禁用此模式。",
"mqtt-use-json-format-for-default-downlink-topics": "缺省下行主题采用json格式",
@@ -1590,11 +1684,6 @@
"snmp-mapping-not-configured": "OID到时间序列/遥测的映射未配置",
"snmp-timseries-or-attribute-name": "用于映射的时间序列/属性名称",
"snmp-timseries-or-attribute-type": "用于映射的时间序列/属性类型",
- "snmp-method-pdu-type-get-request": "GetRequest",
- "snmp-method-pdu-type-get-next-request": "GetNextRequest",
- "snmp-oid": "OID",
- "transport-device-payload-type-json": "JSON",
- "transport-device-payload-type-proto": "Protobuf",
"mqtt-payload-type-required": "Payload 类型必填。",
"coap-device-type": "CoAP 设备类型",
"coap-device-payload-type": "CoAP 设备消息 Payload",
@@ -1622,10 +1711,10 @@
"not-valid-pattern-topic-filter": "无效的 Topic 筛选器模式",
"not-valid-single-character": "单级通配符的使用无效",
"not-valid-multi-character": "多级通配符的使用无效",
- "single-level-wildcards-hint": "[+] 适用于任何 Topic 过滤级别。例如:v1/devices/+/telemetry or +/devices/+/attributes。",
- "multi-level-wildcards-hint": "[#]可以替换 Topic 筛选器本身,并且必须是 Topic 的最后一个符号。例如:# or v1/devices/me/#。",
+ "single-level-wildcards-hint": "[+] 适用于任何Topic过滤级别。例如:v1/devices/+/telemetry or +/devices/+/attributes。",
+ "multi-level-wildcards-hint": "[#]可以替换Topic筛选器本身,并且必须是Topic的最后一个符号。例如:# or v1/devices/me/#。",
"alarm-rules": "告警规则",
- "alarm-rules-with-count": "告警规则 ({{count}})",
+ "alarm-rules-with-count": "告警规则({{count}})",
"no-alarm-rules": "未配置告警规则",
"add-alarm-rule": "添加告警规则",
"edit-alarm-rule": "编辑告警规则",
@@ -1654,7 +1743,7 @@
"alarm-rule-additional-info": "附加信息",
"edit-alarm-rule-additional-info": "编辑附加信息",
"alarm-rule-additional-info-placeholder": "请在此处提供评论和调整,以便在附加信息下的告警详情中显示",
- "alarm-rule-additional-info-hint": "提示: 使用 ${keyName} 来替代告警规则条件中使用的属性或遥测键的值。",
+ "alarm-rule-additional-info-hint": "提示: 使用${keyName}来替代告警规则条件中使用的属性或遥测键的值。",
"alarm-rule-mobile-dashboard": "移动端仪表板",
"alarm-rule-mobile-dashboard-hint": "作为移动端告警详情仪表板使用。",
"alarm-rule-no-mobile-dashboard": "未选择仪表板。",
@@ -1695,8 +1784,8 @@
"condition-type": "条件类型",
"condition-type-simple": "简单",
"condition-type-duration": "持续时间",
- "condition-during": "在 {{during}} 期间",
- "condition-during-dynamic": "\"{{ attribute }}\" ({{during}}) 期间",
+ "condition-during": "在{{during}}期间",
+ "condition-during-dynamic": " \"{{ attribute }}\" ({{during}})期间",
"condition-type-repeating": "重复",
"condition-type-required": "条件类型必填。",
"condition-repeating-value": "事件计数",
@@ -1704,7 +1793,7 @@
"condition-repeating-value-pattern": "事件计数应为整数。",
"condition-repeating-value-required": "事件计数值必填。",
"condition-repeat-times": "重复 { count, plural, =1 {1 次} other {# 次} }",
- "condition-repeat-times-dynamic": "重复 \"{ attribute }\" ({ count, plural, =1 {1 次} other {# 次} })",
+ "condition-repeat-times-dynamic": "重复 \"{ attribute }\" ({ count, plural, =1 {1 time} other {# times} })",
"schedule-type": "计划程序类型",
"schedule-type-required": "计划类型必填。",
"schedule": "启用规则:",
@@ -1787,11 +1876,12 @@
"delete-server-title": "确定要删除服务器吗?",
"mode": "安全配置模式",
"bootstrap-tab": "Bootstrap",
- "bootstrap-server-legend": "Bootstrap Server (ShortId...)",
- "lwm2m-server-legend": "LwM2M Server (ShortId...)",
+ "bootstrap-server-legend": "Bootstrap服务...",
+ "lwm2m-server-legend": "LwM2M服务...",
"server": "服务器",
"short-id": "服务器ID",
"short-id-tooltip": "服务器ID用作关联服务器对象实例的链接。",
+ "short-id-tooltip-bootstrap": "服务器短ID用作关联服务器对象实例的链接,\n 该标识符唯一地标识了为LWM2M客户端配置的每个LWM2M服务器,\n 当Bootstrap-Server资源的值为‘false’时必须设置资源。",
"short-id-required": "服务器ID必填。",
"short-id-range": "服务器ID应在{{ min }}到{{ max }}范围内。",
"short-id-pattern": "服务器ID必须是一个正整数。",
@@ -1817,7 +1907,7 @@
"tqs": "TQS: 通过TCP和SMS活动连接(不支持LWM2M 1.1)。",
"sq": "SQ: 通过队列模式的SMS连接(不支持LWM2M 1.1)。"
},
- "binding-tooltip": "这是LwM2M服务器对象的\"绑定\"资源列表 - /1/x/7。\n表示LwM2M客户端中支持的绑定模式。\n此值应与设备对象(/3/0/16)中的\"支持的绑定和模式\"资源。\n虽然支持多个传输但在整个传输会话期间只能使用一个传输绑定。\n 例如:当UDP和SMS都受支持,LwM2M客户端和LwM2M服务器可以选择在整个传输会话期间通过UDP或SMS进行通信。",
+ "binding-tooltip": "这是LwM2M服务器对象的绑定资源列表 - /1/x/7。",
"bootstrap-server": "Bootstrap Server",
"lwm2m-server": "LwM2M Server",
"include-bootstrap-server": "包含Bootstrap Server更新",
@@ -1871,6 +1961,11 @@
"step": "步长",
"min-evaluation-period": "最小评估周期",
"max-evaluation-period": "最大评估周期"
+ },
+ "default-object-id": "默认对象版本(属性)",
+ "default-object-id-ver": {
+ "v1-0": "1.0",
+ "v1-1": "1.1"
}
},
"snmp": {
@@ -1936,9 +2031,9 @@
"edge-instances": "边缘实例",
"instances": "边缘实例",
"edge-file": "边缘文件",
- "name-max-length": "名称长度必须少于256个字符",
- "label-max-length": "标签长度必须少于256个字符",
- "type-max-length": "类型长度必须少于256个字符",
+ "name-max-length": "名称长度必须小于256个字符",
+ "label-max-length": "标签长度必须小于256个字符",
+ "type-max-length": "类型长度必须小于256个字符",
"management": "边缘管理",
"no-edges-matching": "未找到匹配的边缘 '{{entity}}'。",
"add": "增加边缘",
@@ -2081,14 +2176,14 @@
"entities": "实体",
"entities-count": "实体数量",
"alarms-count": "告警数量",
- "aliases": "实体别名",
+ "aliases": "别名",
"aliases-short": "别名",
- "entity-alias": "实体别名",
+ "entity-alias": "别名",
"unable-delete-entity-alias-title": "无法删除实体别名",
- "unable-delete-entity-alias-text": "实体别名 '{{entityAlias}}' 被以下部件使用不能删除:
{{widgetsList}}",
- "duplicate-alias-error": "别名 '{{alias}}' 重复。
同一仪表板别名必须唯一。",
- "missing-entity-filter-error": "别名 '{{alias}}' 缺少筛选器",
- "configure-alias": "别名 '{{alias}}' 配置",
+ "unable-delete-entity-alias-text": "实体别名'{{entityAlias}}'被以下部件使用不能删除:
{{widgetsList}}",
+ "duplicate-alias-error": "别名'{{alias}}'重复,同一仪表板别名必须唯一。",
+ "missing-entity-filter-error": "别名'{{alias}}'缺少筛选器",
+ "configure-alias": "别名'{{alias}}'配置",
"alias": "别名",
"alias-required": "实体别名必填。",
"remove-alias": "移除实体别名",
@@ -2100,25 +2195,26 @@
"any-entity": "任意实体",
"add-entity-type": "添加实体类型",
"enter-entity-type": "输入实体类型",
- "no-entities-matching": "未找到匹配 '{{entity}}' 的实体。",
- "no-entity-types-matching": "未找到匹配 '{{entityType}}' 类型的实体。",
+ "no-entities-matching": "未找到匹配'{{entity}}'的实体。",
+ "no-entities-text": "找不到实体",
+ "no-entity-types-matching": "未找到匹配'{{entityType}}'类型的实体。",
"name-starts-with": "名称开始于",
- "help-text": "根据需要可以使用'%'进行匹配,例如:'%entity_name_contains%', '%entity_name_ends', 'entity_starts_with'。",
+ "help-text": "根据需要可以使用'%'进行匹配例如:'%entity_name_contains%', '%entity_name_ends', 'entity_starts_with'。",
"use-entity-name-filter": "用户筛选器",
"entity-list-empty": "没有选择实体。",
"entity-type-list-required": "至少应选择一个实体类型。",
"entity-name-filter-required": "实体名筛选器必填。",
- "entity-name-filter-no-entity-matched": "未找到以 '{{entity}}' 开头的实体",
+ "entity-name-filter-no-entity-matched": "未找到以'{{entity}}'开头的实体",
"all-subtypes": "全部",
"select-entities": "选择实体",
"no-aliases-found": "未找到别名",
- "no-alias-matching": "未找到 '{{alias}}'",
+ "no-alias-matching": "未找到'{{alias}}'",
"create-new-alias": "创建别名",
"create-new": "创建",
"key": "键名",
"key-name": "键名",
"no-keys-found": "未找到键名",
- "no-key-matching": "未找到键名 '{{key}}'",
+ "no-key-matching": "未找到键名'{{key}}'",
"create-new-key": "创建键",
"type": "类型",
"type-required": "实体类型必填。",
@@ -2205,11 +2301,21 @@
"type-edge": "边缘",
"type-edges": "边缘",
"list-of-edges": "{ count, plural, =1 {1 个边缘} other {列表 # 个边缘} }",
- "edge-name-starts-with": "以 '{{prefix}}' 开头的边缘",
+ "edge-name-starts-with": "以'{{prefix}}'开头的边缘",
+ "version-conflict": {
+ "message": "您要覆盖现有版本还是丢弃更改并加载最新版本?",
+ "link": "您可以使用此下载的{{entityType}}版本",
+ "overwrite": "覆盖",
+ "discard": "丢弃"
+ },
"type-tb-resource": "资源",
+ "type-tb-resources": "资源",
+ "list-of-tb-resources": "{ count, plural, =1 {1 个资源} other {# 个资源} }",
"type-ota-package": "OTA包",
"type-rpc": "RPC",
"type-queue": "队列",
+ "type-queue-stats": "队列统计",
+ "type-queues-stats": "队列统计",
"type-notification": "通知",
"type-notification-rule": "通知规则",
"type-notification-rules": "通知规则",
@@ -2221,8 +2327,16 @@
"type-notification-template": "通知模板",
"type-notification-templates": "通知模板",
"list-of-notification-templates": "{ count, plural, =1 {1 个通知模板} other {# 个通知模板} }",
- "type-tb-resources": "资源",
- "list-of-tb-resources": "{ count, plural, =1 {1 个资源} other {# 个资源} }"
+ "link": "连接",
+ "type-oauth2-client": "OAuth 2.0客户端",
+ "type-oauth2-clients": "OAuth 2.0客户端",
+ "list-of-oauth2-clients": "{ count, plural, =1 {One OAuth 2.0 client} other {List of # OAuth 2.0 clients} }",
+ "type-domain": "域名",
+ "type-domains": "域名",
+ "list-of-domains": "{ count, plural, =1 {One Domain} other {List of # Domains} }",
+ "type-mobile-app": "移劝端",
+ "type-mobile-apps": "移动端",
+ "list-of-mobile-apps": "{ count, plural, =1 {One Mobile application} other {List of # Mobile applications} }"
},
"entity-field": {
"created-time": "创建时间",
@@ -2239,7 +2353,11 @@
"address2": "地址二",
"zip": "邮政编码",
"phone": "电话",
- "label": "标签"
+ "label": "标签",
+ "queue-name": "对列名称",
+ "service-id": "服务Id",
+ "owner-name": "所有者名称",
+ "owner-type": "所有者类型"
},
"entity-view": {
"entity-view": "实体视图",
@@ -2249,15 +2367,15 @@
"view-entity-views": "查看实体视图",
"entity-view-alias": "实体视图别名",
"aliases": "实体视图别名",
- "no-alias-matching": "未找到匹配 '{{alias}}' 的别名。",
+ "no-alias-matching": "未找到匹配'{{alias}}'的别名。",
"no-aliases-found": "未找到别名。",
"no-key-matching": "'{{key}}' 未找到。",
"no-keys-found": "未找到密钥。",
"create-new-alias": "创建别名",
"create-new-key": "创建键",
- "duplicate-alias-error": "找到重复别名 '{{alias}}'。
实体视图别名必须是唯一的。",
+ "duplicate-alias-error": "找到重复别名'{{alias}}'。
实体视图别名必须是唯一的。",
"configure-alias": "配置 '{{alias}}' 别名",
- "no-entity-views-matching": "未找到与 '{{entity}}' 匹配的实体视图。",
+ "no-entity-views-matching": "未找到与'{{entity}}'匹配的实体视图。",
"public": "公开",
"alias": "别名",
"alias-required": "实体视图别名必填。",
@@ -2309,8 +2427,8 @@
"created-time": "创建时间",
"name": "名称",
"name-required": "名称必填。",
- "name-max-length": "名称应该少于256个字符。",
- "type-max-length": "实体视图类型应该少于256个字符。",
+ "name-max-length": "名称应该小于256个字符。",
+ "type-max-length": "实体视图类型应该小于256个字符。",
"description": "说明",
"events": "事件",
"details": "详情",
@@ -2452,11 +2570,11 @@
"password": "密码",
"retry-interval": "重试间隔(毫秒)",
"anonymous": "匿名",
- "basic": "Basic",
+ "basic": "基本",
"pem": "PEM",
- "ca-cert": "CA证书文件 *",
- "private-key": "私钥文件 *",
- "cert": "证书文件 *",
+ "ca-cert": "CA证书文件*",
+ "private-key": "私钥文件*",
+ "cert": "证书文件*",
"no-file": "没有选择文件。",
"drop-file": "删除文件或单击以选择要上载的文件。",
"mapping": "映射",
@@ -2477,7 +2595,7 @@
"value-expression": "值表达式",
"topic": "主题",
"timeout": "超时时间(毫秒)",
- "converter-json-required": "Converter JSON 必填。",
+ "converter-json-required": "转换JSON必填。",
"converter-json-parse": "无法解析转换JSON。",
"filter-expression": "筛选条件表达式",
"connect-requests": "连接请求",
@@ -2509,7 +2627,7 @@
"opc-keystore": "密钥库",
"opc-type": "类型",
"opc-keystore-type": "类型",
- "opc-keystore-location": "位置 *",
+ "opc-keystore-location": "Location *",
"opc-keystore-password": "密码",
"opc-keystore-alias": "别名",
"opc-keystore-key-password": "密钥密码",
@@ -2601,7 +2719,7 @@
"not-in": "不存在"
},
"ignore-case": "忽略大小写",
- "value": "值",
+ "value": "数值",
"remove-filter": "删除筛选器",
"duplicate-filter-action": "重复过滤器",
"preview": "筛选器预览",
@@ -2652,6 +2770,7 @@
"current-user": "当前用户",
"current-device": "当前设备",
"default-value": "默认值",
+ "default-comma-separated-values": "默认用逗号分隔",
"dynamic-source-type": "动态源类型",
"dynamic-value": "动态值",
"no-dynamic-value": "无动态值",
@@ -2685,9 +2804,9 @@
"grid": {
"delete-item-title": "确定要删除此项吗?",
"delete-item-text": "请注意,确认后,项目及其所有相关数据将不可恢复。",
- "delete-items-title": "确定删除 { count, plural, =1 {1 项} other {# 项} }吗?",
- "delete-items-action-title": "删除 { count, plural, =1 {1 个元素} other {# 个元素} }",
- "delete-items-text": "请注意,确认后所有选择的项目将被删除,所有相关数据将不可恢复。",
+ "delete-items-title": "确定删除{ count, plural, =1 {1 项} other {# 项} }吗?",
+ "delete-items-action-title": "删除{ count, plural, =1 {1 个元素} other {# 个元素} }",
+ "delete-items-text": "请注意确认后所有选择的项目将被删除,所有相关数据将不可恢复。",
"add-item-text": "添加项目",
"no-items-text": "未找到项目",
"item-details": "项目详细信息",
@@ -2714,12 +2833,12 @@
"image": {
"gallery": "图像库",
"search": "搜索图像",
- "selected-images": "已选择 { count, plural, =1 {1 个图像} other {# 个图像} }",
+ "selected-images": "已选择{ count, plural, =1 {1 个图像} other {# 个图像} }",
"created-time": "创建时间",
"name": "名称",
"name-required": "名称不能为空。",
"resolution": "分辨率",
- "size": "大小",
+ "size": "尺寸",
"system": "系统",
"download-image": "下载图像",
"export-image": "导出图像为JSON",
@@ -2731,7 +2850,7 @@
"delete-image": "删除图像",
"delete-image-title": "确定要删除图像 '{{imageTitle}}' 吗?",
"delete-image-text": "请注意,确认后图像将无法恢复。",
- "delete-images-title": "确定要删除 { count, plural, =1 {1 个图像} other {# 个图像} } 吗?",
+ "delete-images-title": "确定要删除{ count, plural, =1 {1 个图像} other {# 个图像} } 吗?",
"delete-images-text": "请注意,确认后所有选定的图像都将被删除,并且所有相关数据将无法恢复。",
"list-mode": "列表视图",
"grid-mode": "网格视图",
@@ -2843,12 +2962,257 @@
"error-entities": "创建 {{count}} 个实体时出错。"
}
},
+ "scada": {
+ "symbols": "组态库",
+ "search": "搜索组态图形",
+ "selected-symbols": "选中{ count, plural, =1 {1个图形} other {#个图形} }",
+ "download-symbol": "下载图形",
+ "export-symbol": "导出图形",
+ "import-symbol": "导入图形",
+ "upload-symbol": "上传图形",
+ "update-symbol": "更新图形",
+ "edit-symbol": "编辑图形",
+ "symbol-details": "图形详情",
+ "mode-svg": "SVG",
+ "mode-xml": "XML",
+ "no-symbols": "未找到图形",
+ "show-hidden-elements": "显示元素",
+ "hide-hidden-elements": "隐藏元素",
+ "delete-symbol": "删除图形",
+ "delete-symbol-title": "确定要删除'{{imageTitle}}'组态图形吗?",
+ "delete-symbol-text": "请注意在确认后组态图形将无法恢复。",
+ "delete-symbols-title": "确定要删除{ count, plural, =1 {1个图形} other {#个图形} }吗?",
+ "delete-symbols-text": "请注意在确认后所有选择的组态图形将被删除且相关数据将无法恢复。",
+ "include-system-symbols": "包含系统组态图形",
+ "symbol-preview": "图形预览",
+ "general": "常规",
+ "tags": "标签",
+ "properties": "属性",
+ "title": "标题",
+ "description": "描述",
+ "search-tags": "标签",
+ "widget-size": "尺寸",
+ "cols": "列",
+ "rows": "行",
+ "state-render-function": "函数",
+ "preview": "预览",
+ "preview-widget-action-text": "部件动作'{{type}}'调用成功!",
+ "no-symbol": "没有图形",
+ "no-symbol-selected": "没有选中图形。",
+ "clear-symbol": "清除图形缓存",
+ "browse-symbol-from-gallery": "查看图形库中的图形",
+ "zoom-in": "放大",
+ "zoom-out": "缩小",
+ "create-widget": "创建部件",
+ "create-widget-from-symbol": "根据图形创建部件",
+ "hidden": "隐藏",
+ "tag": {
+ "tag": "标签",
+ "on-click-action": "事件",
+ "no-tags": "没有配置标签",
+ "delete-tag-text": "您确定要从{{elementType}}元素删除{{tag}}标签吗?",
+ "update-tag": "更新标签",
+ "enter-tag": "确定标签",
+ "tag-settings": "标签设置",
+ "remove-tag": "移除标签",
+ "add-tag": "添加标签"
+ },
+ "behavior": {
+ "behavior": "行为",
+ "id": "序号",
+ "name": "名称",
+ "type": "类型",
+ "no-behaviors": "无任何行为配置",
+ "add-behavior": "添加行为",
+ "type-action": "动作",
+ "type-value": "数值",
+ "type-widget-action": "部件动作",
+ "behavior-settings": "行为设置",
+ "remove-behavior": "移除行为",
+ "hint": "提示",
+ "group-title": "分组标题",
+ "value-type": "数据类型",
+ "default-value": "默认数据",
+ "true-label": "True标签",
+ "false-label": "False标签",
+ "state-label": "State标签",
+ "default-payload": "默认payload",
+ "not-unique-behavior-ids-error": "行为ID必须是唯一的!",
+ "default-settings": "默认设置"
+ },
+ "property": {
+ "property": "属性",
+ "id": "序号",
+ "name": "名称",
+ "type": "类型",
+ "type-text": "文本",
+ "type-number": "数字",
+ "type-switch": "开关",
+ "type-color": "颜色",
+ "type-color-settings": "颜色设置",
+ "type-font": "字体",
+ "type-units": "单位",
+ "type-icon": "图标",
+ "no-properties": "无任何属性配置",
+ "add-property": "添加属性",
+ "property-settings": "属性设置",
+ "remove-property": "删除属性",
+ "default-value": "默认数据",
+ "value-required": "值必填",
+ "number-settings": "数字设置",
+ "min": "最小值",
+ "max": "最大值",
+ "step": "步长",
+ "advanced-ui-settings": "UI高级设置",
+ "disable-on-property": "禁用属性",
+ "sub-label": "子级标签",
+ "vertical-divider-after": "垂直分隔线",
+ "input-field-suffix": "输入字段后缀",
+ "property-row-classes": "行类名称",
+ "property-field-classes": "字段类名称",
+ "not-unique-property-ids-error": "属性ID必须是唯一的!"
+ },
+ "symbol": {
+ "symbol": "图形",
+ "fluid-presence": "液体",
+ "fluid-presence-hint": "指示管道中是否显示液体。",
+ "fluid-present": "液体显示",
+ "present": "显示",
+ "absent": "隐藏",
+ "flow-presence": "流动",
+ "flow-presence-hint": "指示液体是否在管道中流动。",
+ "flow-present": "存在流动",
+ "flow-direction": "方向",
+ "flow-direction-hint": "指示液体流动方向。",
+ "forward": "向前",
+ "reverse": "向后",
+ "flow-animation-speed": "速度",
+ "flow-animation-speed-hint": "数值表示流动的动画速度:1正常速度 0无动画 <1动画较慢 >1动画较快。",
+ "leak": "裂纹",
+ "leak-hint": "指示管道是否存在裂纹。",
+ "leak-present": "裂纹存在",
+ "fluid-color": "液体颜色",
+ "pipe-color": "管道颜色",
+ "horizontal-pipe": "水平管",
+ "vertical-pipe": "垂直管",
+ "horizontal-fluid-color": "水平液体颜色",
+ "vertical-fluid-color": "垂直液体颜色",
+ "left-pipe": "左管",
+ "right-pipe": "右管",
+ "top-pipe": "顶管",
+ "bottom-pipe": "底管",
+ "left-fluid-color": "左液体颜色",
+ "right-fluid-color": "正常液体颜色",
+ "top-fluid-color": "顶液体颜色",
+ "bottom-fluid-color": "底液体颜色",
+ "display": "显示",
+ "value": "数值",
+ "units": "单位",
+ "flow-meter-value-hint": "在流量计上显示数值",
+ "running": "运行",
+ "running-hint": "指示组件是否处于运行状态。",
+ "warning-state": "警告状态",
+ "warning": "警告",
+ "warning-state-hint": "指示组件是否处于警告状态。",
+ "critical-state": "严重状态",
+ "critical": "严重",
+ "critical-state-hint": "指示组件是否处于严重状态。",
+ "critical-state-animation": "状态动画",
+ "critical-state-animation-hint": "当组件处于严重状态时显示闪烁动画。",
+ "animation": "动画",
+ "broken": "裂纹",
+ "broken-hint": "指示组件是否存在裂纹。",
+ "on-display-click": "显示单击",
+ "on-display-click-hint": "当用户单击时请调用显示操作。",
+ "pipe": "管道",
+ "default-border-color": "默认边框颜色",
+ "active-border-color": "主动边框颜色",
+ "warning-border-color": "警告边框颜色",
+ "critical-border-color": "严重边框颜色",
+ "background-color": "背景颜色",
+ "rotation-animation-speed": "动画速度",
+ "rotation-animation-speed-hint": "数值表示旋转动画速度:1正常速度 0无动画 <1动画较慢 >1动画较快。",
+ "on-click": "单击",
+ "on-click-hint": "当用户单击组件时调用操作。",
+ "right-top-connector": "右上连接",
+ "right-bottom-connector": "右下连接",
+ "left-top-connector": "左上连接",
+ "left-bottom-connector": "左下连接",
+ "top-left-connector": "上左连接",
+ "top-right-connector": "右左连接",
+ "running-color": "运行颜色",
+ "stopped-color": "停止颜色",
+ "warning-color": "警告颜色",
+ "critical-color": "严重颜色",
+ "opened": "已经打开",
+ "opened-hint": "指示组件是否处于打开状态。",
+ "open": "打开",
+ "open-hint": "当用户单击打开组件时请调用操作。",
+ "close": "关闭",
+ "close-hint": "当用户单击关闭组件时请调用操作。",
+ "close-state-animation": "关闭状态动画",
+ "close-state-animation-hint": "当组件处于关闭状态时启用闪烁动画。",
+ "opened-color": "打开时颜色",
+ "closed-color": "关闭时颜色",
+ "opened-rotation-angle": "打开角度",
+ "closed-rotation-angle": "关闭角度",
+ "tank-capacity": "容器容量",
+ "tank-capacity-hint": "双值表示总储罐容量。",
+ "current-volume": "当前容量",
+ "current-volume-hint": "双重值表示当前占用的体积。",
+ "tank-color": "容器颜色",
+ "value-box": "显示文本框",
+ "value-text": "单位",
+ "scale": "显示刻度",
+ "transparent-mode": "透明模式",
+ "major-ticks": "数值刻度",
+ "intervals": "间隔",
+ "major-ticks-color": "数值颜色",
+ "normal": "正常",
+ "minor-ticks": "线条刻度",
+ "minor-ticks-color": "线条颜色",
+ "temperature": "温度",
+ "temperature-hint": "表示当前温度。",
+ "update-temperature": "温度更新",
+ "update-temperature-hint": "当用户单击更改当前温度时调用动作。",
+ "run": "运行",
+ "run-hint": "当用户单击组件时调用运行操作。",
+ "stop": "停止",
+ "stop-hint": "当用户单击组件时调用停止操作。",
+ "temperature-step": "温度步长",
+ "heat-pump-color": "背景颜色",
+ "power-button-background": "按钮颜色",
+ "value-box-background": "文本框颜色",
+ "value-units": "显示单位",
+ "filtration-mode": "过滤模式",
+ "filtration-mode-hint": "指示当前的过滤模式。",
+ "filtration-mode-update": "状态更新",
+ "filtration-mode-update-hint": "当用户单击更改当前过滤模式时调用操作。",
+ "filter-mode": "过滤",
+ "waste-mode": "废弃",
+ "backwash-mode": "清洗",
+ "recirculate-mode": "循环",
+ "rinse-mode": "冲洗",
+ "closed-mode": "关闭",
+ "stand-filter-color": "沙箱背景色",
+ "mode-box-background": "按钮颜色",
+ "border-color": "状态颜色",
+ "label-color": "文本颜色",
+ "water-leak-hint": "指示是否泄漏。",
+ "default-color": "默认颜色",
+ "leak-color": "泄漏颜色",
+ "full-value": "全部数值",
+ "full-value-hint": "表示全部数值。",
+ "label": "标签",
+ "icon": "图标"
+ }
+ },
"item": {
"selected": "选择"
},
"js-func": {
"no-return-error": "函数必须返回值!",
- "return-type-mismatch": "函数必须返回 '{{type}}' 类型的值!",
+ "return-type-mismatch": "函数必须返回'{{type}}'类型的值!",
"tidy": "整理",
"mini": "迷你"
},
@@ -2882,7 +3246,14 @@
"left-width-percentage-required": "左侧百分比宽度必填",
"divider": "分隔线",
"right-side": "右侧布局",
- "left-side": "左侧布局"
+ "left-side": "左侧布局",
+ "add-new-breakpoint": "添加新的栅格",
+ "breakpoint": "栅格",
+ "breakpoints": "栅格",
+ "copy-from": "复制",
+ "size": "尺寸",
+ "delete-breakpoint-title": "确定要删除栅格'{{name}}'吗?",
+ "delete-breakpoint-text": "请注意确认后栅格将无法恢复并且将使用默认栅格。"
},
"legend": {
"direction": "图例方向",
@@ -2899,12 +3270,17 @@
"show-avg": "显示平均值",
"show-total": "显示总数",
"show-latest": "显示最新值",
- "settings": "图例设置",
+ "settings": "设置图例",
"min": "最小值",
"max": "最大值",
"avg": "平均值",
"total": "总数",
"latest": "最新值",
+ "Min": "最小值",
+ "Max": "最大值",
+ "Avg": "平均值",
+ "Total": "总数",
+ "Latest": "最新值",
"comparison-time-ago": {
"previousInterval": "(历史间隔)",
"customInterval": "(自定义间隔)",
@@ -2913,8 +3289,9 @@
"months": "(一个月前)",
"years": "(一年前)"
},
+ "column-title": "标题",
"label": "标签",
- "value": "值"
+ "value": "数值"
},
"login": {
"login": "登录",
@@ -2934,7 +3311,8 @@
"new-password-again": "再次输入新密码",
"password-link-sent-message": "密码重置链接已成功发送!",
"email": "电子邮件",
- "login-with": "使用 {{name}} 登录",
+ "invalid-email-format": "email格式无效。",
+ "login-with": "使用{{name}}登录",
"or": "或",
"error": "登录错误",
"verify-your-identity": "身份验证",
@@ -2944,18 +3322,22 @@
"try-another-way": "尝试其他方法",
"totp-auth-description": "请从验证APP中查看验证码。",
"totp-auth-placeholder": "验证码",
- "sms-auth-description": "验证码已发送到手机号码 {{contact}}。",
+ "sms-auth-description": "验证码已发送到手机号码{{contact}}。",
"sms-auth-placeholder": "SMS 验证码",
- "email-auth-description": "验证码已发送到电子邮箱地址 {{contact}}。",
+ "email-auth-description": "验证码已发送到电子邮箱地址{{contact}}。",
"email-auth-placeholder": "电子邮件验证码",
"backup-code-auth-description": "请输入一个备份验证码。",
- "backup-code-auth-placeholder": "备份验证码"
+ "backup-code-auth-placeholder": "备份验证码",
+ "activation-link-expired": "激活链接已过期",
+ "activation-link-expired-message": "您的激活链接已过期返回登录页面重新发送电子邮件。",
+ "reset-password-link-expired": "密码重置链接已过期",
+ "reset-password-link-expired-message": "重置密码链接已过期返回登录页面重新发送电子邮件。"
},
"markdown": {
"edit": "编辑",
"preview": "预览",
"copy-code": "点击复制",
- "copied": "已复制!"
+ "copied": "复制完成"
},
"notification": {
"action-button": "操作按钮",
@@ -2977,6 +3359,7 @@
"api-usage-trigger-settings": "API使用触发设置",
"new-platform-version-trigger-settings": "新平台版本触发设置",
"rate-limits-trigger-settings": "超出速率限制触发设置",
+ "task-processing-failure-trigger-settings": "任务处理故障触发设置",
"at-least-one-should-be-selected": "至少需要选择一个",
"basic-settings": "基本设置",
"button-text": "按钮文本",
@@ -2990,26 +3373,27 @@
"copy-template": "复制模板",
"create-new": "创建",
"created": "已创建",
+ "customize-messages": "自定义消息",
"delete-notification-text": "请注意,在确认后,通知将无法恢复。",
"delete-notification-title": "您确定要删除该通知吗?",
"delete-notifications-text": "请注意,在确认后,通知将无法恢复。",
- "delete-notifications-title": "确定要删除 { count, plural, =1 {1 个通知} other {# 个通知} } 吗?",
+ "delete-notifications-title": "确定要删除{ count, plural, =1 {1 个通知} other {# 个通知} }吗?",
"delete-recipient-text": "请注意,在确认后,收件人将无法恢复。",
- "delete-recipient-title": "确定要删除收件人 '{{recipientName}}' 吗?",
+ "delete-recipient-title": "确定要删除收件人'{{recipientName}}' 吗?",
"delete-recipients-text": "请注意,在确认后,收件人将无法恢复。",
- "delete-recipients-title": "确定要删除 { count, plural, =1 {1 个收件人} other {# 个收件人} } 吗?",
+ "delete-recipients-title": "确定要删除{ count, plural, =1 {1 个收件人} other {# 个收件人} }吗?",
"delete-request-text": "请注意,在确认后,请求将无法恢复。",
"delete-request-title": "确定要删除请求吗?",
"delete-requests-text": "请注意,在确认后,请求将无法恢复。",
- "delete-requests-title": "确定要删除 { count, plural, =1 {1 个请求} other {# 个请求} } 吗?",
+ "delete-requests-title": "确定要删除{ count, plural, =1 {1 个请求} other {# 个请求} }吗?",
"delete-rule-text": "请注意,在确认后,规则将无法恢复。",
- "delete-rule-title": "确定要删除规则 '{{ruleName}}' 吗?请注意,确认后无法恢复。",
+ "delete-rule-title": "确定要删除规则'{{ruleName}}' 吗?请注意,确认后无法恢复。",
"delete-rules-text": "请注意,在确认后,规则将无法恢复。",
- "delete-rules-title": "确定要删除 { count, plural, =1 {1 条规则} other {# 条规则} } 吗?",
+ "delete-rules-title": "确定要删除{ count, plural, =1 {1 条规则} other {# 条规则} }吗?",
"delete-template-text": "请注意,在确认后,模板将无法恢复。",
- "delete-template-title": "确定要删除模板 '{{templateName}}' 吗?",
+ "delete-template-title": "确定要删除模板'{{templateName}}' 吗?",
"delete-templates-text": "请注意,在确认后,模板将无法恢复。",
- "delete-templates-title": "确定要删除 { count, plural, =1 {1 个模板} other {# 个模板} } 吗?",
+ "delete-templates-title": "确定要删除{ count, plural, =1 {1 个模板} other {# 个模板} }吗?",
"deleted": "已删除",
"delivery-method": {
"delivery-method": "推送方式",
@@ -3017,21 +3401,25 @@
"email-preview": "Email 通知预览",
"slack": "Slack",
"slack-preview": "Slack 通知预览",
- "microsoft-teams": "Microsoft Teams",
- "microsoft-teams-preview": "Microsoft Teams 通知预览",
+ "microsoft-teams": "微软Teams",
+ "microsoft-teams-preview": "微软Teams通知预览",
"sms": "SMS",
- "sms-preview": "SMS 通知预览",
+ "sms-preview": "SMS通知预览",
"web": "Web",
- "web-preview": "Web 通知预览"
+ "web-preview": "Web通知预览",
+ "mobile-app": "移动应用",
+ "mobile-app-preview": "移动应用通知预览"
},
- "delivery-method-not-configure-click": "推送方式未配置,点击进行设置。",
- "delivery-method-not-configure-contact": "推送方式未配置,请与您的系统管理员联系。",
+ "delivery-method-not-configure-click": "单击进行推送方式设置。",
+ "delivery-method-not-configure-contact": "推送方式未设置,请与系统管理员联系。",
"delivery-methods": "推送方式",
"description": "描述",
"device-activity-trigger-settings": "设备活动触发设置",
"device-list-rule-hint": "如果该字段为空,则触发器将适用于所有设备。",
"device-profiles-list-rule-hint": "如果该字段为空,则触发器将适用于所有设备配置。",
- "disabled": "已禁用",
+ "disabled": "禁用",
+ "edge-trigger-settings": "Edge触发设置",
+ "edge-list-rule-hint": "如果字段为空则将触发应用于所有Edge实例",
"edit-notification-recipients-group": "编辑通知收件人群组",
"edit-notification-template": "编辑通知模板",
"edit-rule": "编辑规则",
@@ -3062,7 +3450,7 @@
"mark-as-read": "标记为已读",
"message": "信息",
"message-required": "信息必填。",
- "message-max-length": "提示信息应该少于或等于 {{ length }} 个字符",
+ "message-max-length": "提示信息应该小于或等于 {{ length }}个字符",
"name": "名称",
"name-required": "名称必填",
"new-notification": "新通知",
@@ -3074,11 +3462,13 @@
"no-rule": "未配置规则",
"no-rules-notification": "没有规则通知",
"no-severity-found": "未找到严重性级别",
- "no-severity-matching": "未找到 '{{severity}}'。",
- "no-template-matching": "未找到与 '{{template}}' 匹配的资源。",
- "not-found-slack-recipient": "未找到 Slack 的收件人",
+ "no-severity-matching": "未找到'{{severity}}'。",
+ "no-template-matching": "未找到与'{{template}}' 匹配的资源。",
+ "not-found-slack-recipient": "未找到Slack的收件人",
"notification": "通知",
"notification-center": "通知中心",
+ "notification-tap-action": "单击通知操作",
+ "notification-tap-action-hint": "如果未启用将使用默认警报仪表板",
"notify": "通知",
"notify-again": "再次通知",
"notify-alarm-action": {
@@ -3113,7 +3503,7 @@
"users-entity-owner": "实体所有者的用户"
},
"recipients": "收件人",
- "notification-recipients": "通知 / 收件人",
+ "notification-recipients": "通知/收件人",
"recipients-count": "{ count, plural, =1 {1 个收件人} other {# 个收件人} }",
"recipients-required": "收件人必填。",
"refresh-allow-delivery-method": "刷新允许推送方式",
@@ -3141,16 +3531,17 @@
"search-rules": "搜索规则",
"search-templates": "搜索模板",
"see-documentation": "查看文档",
- "selected-notifications": "已选择 { count, plural, =1 {1 个通知} other {# 个通知} }",
- "selected-recipients": "已选择 { count, plural, =1 {1 个收件人} other {# 个收件人} }",
- "selected-requests": "已选择 { count, plural, =1 {1 个请求} other {# 个请求} }",
- "selected-rules": "已选择 { count, plural, =1 {1 个规则} other {# 个规则} }",
- "selected-template": "已选择 { count, plural, =1 {1 个模板} other {# 个模板} }",
+ "selected-notifications": "已选择{ count, plural, =1 {1 个通知} other {# 个通知} }",
+ "selected-recipients": "已选择{ count, plural, =1 {1 个收件人} other {# 个收件人} }",
+ "selected-requests": "已选择{ count, plural, =1 {1 个请求} other {# 个请求} }",
+ "selected-rules": "已选择{ count, plural, =1 {1 个规则} other {# 个规则} }",
+ "selected-template": "已选择{ count, plural, =1 {1 个模板} other {# 个模板} }",
"send-notification": "发送通知",
"sent": "已发送",
- "notification-sent": "通知 / 已发送",
+ "setup": "步骤",
+ "notification-sent": "通知/已发送",
"set-entity-from-notification": "将通知中的实体设置为仪表盘状态",
- "slack-chanel-type": "Slack 频道类型",
+ "slack-chanel-type": "Slack频道类型",
"slack-chanel-types": {
"direct": "直接消息",
"private-channel": "私有频道",
@@ -3161,6 +3552,7 @@
"stop-escalation-alarm-status-become": "停止逐步升级,将告警状态设置为:",
"subject": "主题",
"subject-required": "主题必填。",
+ "subject-max-length": "主题应小于或等于{{ length }}个字符",
"template": "模板",
"template-name": "模板名称",
"template-required": "模板必填。",
@@ -3176,10 +3568,13 @@
"rule-engine-lifecycle-event": "规则引擎生命周期事件",
"rule-node": "规则节点",
"new-platform-version": "新的平台版本",
- "rate-limits": "超过速率限制"
+ "rate-limits": "超过速率限制",
+ "edge-communication-failure": "Edge通信故障",
+ "edge-connection": "Edge连接",
+ "task-processing-failure": "任务处理失败"
},
"templates": "模板",
- "notification-templates": "通知 / 模板",
+ "notification-templates": "通知/模板",
"tenant-profiles-list-rule-hint": "如果字段为空,触发器将应用于所有租户配置",
"tenants-list-rule-hint": "如果字段为空,触发器将应用于所有租户",
"threshold": "阈值",
@@ -3197,17 +3592,24 @@
"rule-engine-lifecycle-event": "规则引擎生命周期事件",
"new-platform-version": "新的平台版本",
"rate-limits": "超过速率限制",
+ "edge-connection": "Edge连接",
+ "edge-communication-failure": "Edge通信故障",
+ "task-processing-failure": "任务处理失败",
"trigger": "触发器",
"trigger-required": "触发器必填。"
},
"type": "类型",
"unread": "未读",
"updated": "已更新",
+ "use-deprecated-webhook-connectors": "使用已弃用的Webhook连接器",
+ "use-old-api": "使用旧API",
"use-template": "使用模板",
"view-all": "查看全部",
"warning": "警告",
"webhook-url": "Webhook URL",
- "webhook-url-required": "需要填写Webhook URL",
+ "webhook-url-required": "Webhook URL必填。",
+ "workflow-url": "Workflow URL",
+ "workflow-url-required": "Workflow URL必填。",
"channel-name": "频道名称",
"channel-name-required": "需要填写频道名称",
"settings": {
@@ -3232,8 +3634,8 @@
"checksum-hint": "如果校验和为空,会自动生成",
"checksum-algorithm": "校验和算法",
"checksum-copied-message": "包校验和已复制到剪贴板",
- "change-firmware": "固件的更改可能会导致 { count, plural, =1 {1 个设备} other {# 个设备} } 的更新。",
- "change-software": "软件的更改可能会导致 { count, plural, =1 {1 个设备} other {# 个设备} } 的更新。",
+ "change-firmware": "固件的更改可能会导致{ count, plural, =1 {1 个设备} other {# 个设备} } 的更新。",
+ "change-software": "软件的更改可能会导致{ count, plural, =1 {1 个设备} other {# 个设备} } 的更新。",
"chose-compatible-device-profile": "上传的包仅适用于具有所选配置的设备。",
"chose-firmware-distributed-device": "选择将分发到设备的固件",
"chose-software-distributed-device": "选择将分发到设备的软件",
@@ -3246,7 +3648,7 @@
"delete-ota-update-text": "请注意:确认后,OTA升级将不可恢复。",
"delete-ota-update-title": "确定要删除 '{{title}}' OTA升级吗?",
"delete-ota-updates-text": "请注意:确认后,所有选中的OTA升级将被删除。",
- "delete-ota-updates-title": "确定要删除 { count, plural, =1 {1 OTA升级} other {# OTA升级} } 吗?",
+ "delete-ota-updates-title": "确定要删除{ count, plural, =1 {1 OTA升级} other {# OTA升级} }吗?",
"description": "说明",
"direct-url": "直接URL",
"direct-url-copied-message": "包直接URL已复制到剪贴板",
@@ -3266,13 +3668,14 @@
"ota-update": "OTA 升级",
"ota-update-details": "OTA 升级详情",
"ota-updates": "OTA 升级",
+ "package-file": "包文件",
"package-type": "包类型",
"packages-repository": "包仓库",
"search": "搜索包",
- "selected-package": "{ count, plural, =1 {1 个包} other {# 个包} } 选中",
+ "selected-package": "{ count, plural, =1 {1个包} other {#个包} }选中",
"title": "标题",
"title-required": "标题必填。",
- "title-max-length": "标题长度应该少于256个字符。",
+ "title-max-length": "标题长度应该小于256个字符。",
"types": {
"firmware": "固件",
"software": "软件"
@@ -3283,9 +3686,8 @@
"version-required": "版本必填。",
"version-tag": "版本标签",
"version-tag-hint": "自定义标签应与您设备报告的软件包版本相匹配。",
- "version-max-length": "版本长度应该少于256个字符",
- "warning-after-save-no-edit": "上传包后,您将无法修改标题、版本、设备配置和包类型。",
- "package-file": "包文件"
+ "version-max-length": "版本长度应该小于256个字符",
+ "warning-after-save-no-edit": "上传包后,您将无法修改标题、版本、设备配置和包类型。"
},
"position": {
"top": "顶部",
@@ -3321,8 +3723,8 @@
"2fa": "双因素认证",
"2fa-description": "双因素认证可保护您的帐户免受未经授权的访问。在登录时必须输入安全验证码。",
"authenticate-with": "可以使用以下身份验证:",
- "disable-2fa-provider-text": "禁用 {{ name }} 会降低帐户的安全性",
- "disable-2fa-provider-title": "确定要禁用 {{ name }} 吗?",
+ "disable-2fa-provider-text": "禁用{{ name }}会降低帐户的安全性",
+ "disable-2fa-provider-title": "确定要禁用 {{ name }}吗?",
"get-new-code": "获取新验证码",
"main-2fa-method": "用作主要的双因素认证方法",
"dialog": {
@@ -3353,16 +3755,16 @@
"verification-code-invalid": "验证码格式无效",
"verification-code-incorrect": "验证码不正确",
"verification-code-many-request": "请求过多,请检查验证码",
- "verification-step-description": "输入发送到 {{ address }} 的6位代码",
+ "verification-step-description": "输入发送到{{ address }}的6位代码",
"verification-step-label": "验证"
},
"provider": {
"email": "电子邮件",
"email-description": "使用您电子邮件中的验证码进行身份验证。",
- "email-hint": "身份验证码通过电子邮件发送到 {{ info }}",
+ "email-hint": "身份验证码通过电子邮件发送到{{ info }}",
"sms": "SMS",
- "sms-description": "使用短信进行身份验证。当登录时,系统会通过短信向您发送验证码。",
- "sms-hint": "身份验证码通过短信发送到 {{ info }}",
+ "sms-description": "使用短信进行身份验证,当登录时系统会通过短信向您发送验证码。",
+ "sms-hint": "身份验证码通过短信发送到{{ info }}",
"totp": "验证APP",
"totp-description": "使用手机上的Google Authenticator、Authy或Duo等应用程序进行身份验证,它将生成用于登录的验证码。",
"totp-hint": "已为您的帐户设置验证APP",
@@ -3375,7 +3777,7 @@
"at-least": "至少:",
"character": "{ count, plural, =1 {1 位字符} other {# 位字符} }",
"digit": "{ count, plural, =1 {1 位数字} other {# 位数字} }",
- "incorrect-password-try-again": "密码不正确。再试一次",
+ "incorrect-password-try-again": "密码不正确再试一次。",
"lowercase-letter": "{ count, plural, =1 {1 位小写字母} other {# 位小写字母} }",
"new-passwords-not-match": "新密码不匹配",
"password-should-not-contain-spaces": "密码不应包含空格",
@@ -3401,7 +3803,7 @@
},
"from-relations": "向外的关联",
"to-relations": "向内的关联",
- "selected-relations": "已选择 { count, plural, =1 {1 个关联} other {# 个关联} }",
+ "selected-relations": "已选择{ count, plural, =1 {1 个关联} other {# 个关联} }",
"type": "类型",
"to-entity-type": "到实体类型",
"to-entity-name": "到实体名称",
@@ -3412,17 +3814,17 @@
"delete": "删除关联",
"relation-type": "关联类型",
"relation-type-required": "关联类型必填",
- "relation-type-max-length": "关联类型长度应该少于256个字符。",
+ "relation-type-max-length": "关联类型长度应该小于256个字符。",
"any-relation-type": "任何类型",
"add": "添加关联",
"edit": "编辑关联",
- "delete-to-relation-title": "确定要删除实体 '{{entityName}}' 的关联吗?",
- "delete-to-relation-text": "确定删除后实体 '{{entityName}}' 将取消与当前实体的关联关系。",
- "delete-to-relations-title": "确定要删除 { count, plural, =1 {1 个关联} other {# 个关联} }吗?",
+ "delete-to-relation-title": "确定要删除实体'{{entityName}}'的关联吗?",
+ "delete-to-relation-text": "确定删除后实体'{{entityName}}'将取消与当前实体的关联关系。",
+ "delete-to-relations-title": "确定要删除{ count, plural, =1 {1 个关联} other {# 个关联} }吗?",
"delete-to-relations-text": "确定删除所有选择的关联关系后,与当前实体对应的所有关联关系将被移除。",
- "delete-from-relation-title": "确定要从实体 '{{entityName}}' 删除关联吗?",
- "delete-from-relation-text": "确定删除后,当前实体将与实体 '{{entityName}}' 取消关联",
- "delete-from-relations-title": "确定删除 { count, plural, =1 {1 个关联} other {# 个关联} } 吗?",
+ "delete-from-relation-title": "确定要从实体'{{entityName}}' 删除关联吗?",
+ "delete-from-relation-text": "确定删除后当前实体将与实体 '{{entityName}}'取消关联",
+ "delete-from-relations-title": "确定删除{ count, plural, =1 {1 个关联} other {# 个关联} }吗?",
"delete-from-relations-text": "确定删除所有选择的关联关系后,当前实体将与对应的实体取消关联",
"remove-relation-filter": "移除关联筛选器",
"remove-filter": "移除过滤器",
@@ -3439,20 +3841,22 @@
"copyId": "复制资源ID",
"delete": "删除资源",
"delete-resource-text": "请注意:确认后,资源将不可恢复。",
- "delete-resource-title": "确定要删除资源 '{{resourceTitle}}' 吗?",
- "delete-resources-action-title": "删除 { count, plural, =1 {1 个资源} other {# 个资源} }",
+ "delete-resource-title": "确定要删除资源'{{resourceTitle}}'吗?",
+ "delete-resources-action-title": "删除{ count, plural, =1 {1 个资源} other {# 个资源} }",
"delete-resources-text": "请注意:确认后,所有选定的资源将被删除。",
- "delete-resources-title": "确定要删除 { count, plural, =1 {1 个资源} other {# 个资源} }吗?",
+ "delete-resources-title": "确定要删除{ count, plural, =1 {1 个资源} other {# 个资源} }吗?",
"download": "下载资源",
"drop-file": "拖放资源文件或单击以选择要上传的文件。",
"drop-resource-file-or": "拖放一个资源文件或者",
"empty": "资源为空",
"file-name": "文件名称",
"idCopiedMessage": "资源ID已复制到剪贴板",
- "no-resource-matching": "未找到与 '{{widgetsBundle}}' 匹配的资源。",
+ "no-resource-matching": "未找到与'{{widgetsBundle}}'匹配的资源。",
"no-resource-text": "未找到资源",
"open-widgets-bundle": "打开部件库",
"resource": "资源",
+ "resource-file": "资源文件",
+ "resource-files": "资源文件",
"resource-library-details": "资源库详情",
"resource-type": "资源类型",
"resources-library": "资源库",
@@ -3461,15 +3865,22 @@
"system": "系统",
"title": "标题",
"title-required": "标题是必填项。",
- "title-max-length": "标题长度应该少于256个字符。",
+ "title-max-length": "标题长度应该小于256个字符。",
"type": {
"jks": "JKS",
"js-module": "JS 模块",
"lwm2m-model": "LWM2M 模型",
"pkcs-12": "PKCS #12"
- },
- "resource-file": "资源文件",
- "resource-files": "资源文件"
+ }
+ },
+ "rpc": {
+ "error": {
+ "target-device-is-not-set": "目标设备未设置!",
+ "invalid-target-entity": "{{entityType}}实体不支持RPC命令。",
+ "failed-to-resolve-target-device": "无法解析目标设备!",
+ "request-timeout": "请求超时",
+ "rpc-http-error": "错误: {{status}}-{{statusText}}"
+ }
},
"rulechain": {
"rulechain": "规则链",
@@ -3479,7 +3890,7 @@
"delete": "删除规则链",
"name": "名称",
"name-required": "名称必填。",
- "name-max-length": "名称长度应该少于256个字符。",
+ "name-max-length": "名称长度应该小于256个字符。",
"description": "说明",
"add": "添加规则链",
"set-root": "设置为根规则链",
@@ -3488,8 +3899,8 @@
"delete-rulechain-title": " 确定要删除规则链'{{ruleChainName}}'吗?",
"delete-rulechain-text": "请注意,确认后,规则链和所有相关数据将不可恢复。",
"delete-rulechains-title": "确定要删除{count, plural, =1 { 1 个规则链} other {# 个规则链} }吗?",
- "delete-rulechains-action-title": "删除 { count, plural, =1 {1 个规则链} other {# 个规则链} }",
- "delete-rulechains-text": "请注意:确认后,所有选定的规则链将被删除,所有相关的数据将不可恢复。",
+ "delete-rulechains-action-title": "删除{ count, plural, =1 {1 个规则链} other {# 个规则链} }",
+ "delete-rulechains-text": "请注意:确认后所有选定的规则链将被删除,所有相关的数据将不可恢复。",
"add-rulechain-text": "添加规则链",
"no-rulechains-text": "未找到规则链",
"rulechain-details": "规则链详情",
@@ -3510,18 +3921,18 @@
"management": "规则集管理",
"debug-mode": "调试模式",
"search": "查找规则链",
- "selected-rulechains": "已选择 { count, plural, =1 {1 个规则链} other {# 个规则链} }",
+ "selected-rulechains": "已选择{ count, plural, =1 {1 个规则链} other {# 个规则链} }",
"open-rulechain": "打开规则链",
"edge-template-root": "模版根链",
"assign-to-edge": "分配给边缘",
"edge-rulechain": "边缘规则链",
- "unassign-rulechain-from-edge-text": "确认后,规则链将会取消分配,边缘无法访问。",
- "unassign-rulechains-from-edge-title": "确定要取消分配 { count, plural, =1 {1 个规则链} other {# 个规则链} }吗?",
+ "unassign-rulechain-from-edge-text": "确认后规则链将会取消分配,边缘无法访问。",
+ "unassign-rulechains-from-edge-title": "确定要取消分配{ count, plural, =1 {1 个规则链} other {# 个规则链} }吗?",
"unassign-rulechains-from-edge-text": "确认后,选定的规则链将会取消分配,边缘无法访问。",
"assign-rulechain-to-edge-title": "分配规则链给边缘",
"assign-rulechain-to-edge-text": "请选择要分配给边缘的规则链",
"set-edge-template-root-rulechain": "设置为边缘模版根规则链",
- "set-edge-template-root-rulechain-title": "确定将 '{{ruleChainName}}' 设置为边缘模版根规则链吗?",
+ "set-edge-template-root-rulechain-title": "确定将'{{ruleChainName}}' 设置为边缘模版根规则链吗?",
"set-edge-template-root-rulechain-text": "确认后,将会成为边缘模版根规则链,且它会成为新创建边缘的根规则链。",
"invalid-rulechain-type-error": "不能导入规则链:无效的规则链类型。期望类型为{{expectedRuleChainType}}。",
"set-auto-assign-to-edge": "将规则链分配给新创建的边缘",
@@ -3530,7 +3941,7 @@
"unset-auto-assign-to-edge": "不将规则链分配给边缘",
"unset-auto-assign-to-edge-title": "确定不再将规则链'{{ruleChainName}}'自动分配给新创建的边缘吗?",
"unset-auto-assign-to-edge-text": "确认后,将不再自动分配规则链给新创建的边缘。",
- "unassign-rulechain-title": "确定要取消分配规则链 '{{ruleChainName}}' 吗?",
+ "unassign-rulechain-title": "确定要取消分配规则链'{{ruleChainName}}' 吗?",
"unassign-rulechains": "取消分配规则链"
},
"rulenode": {
@@ -3543,7 +3954,7 @@
"add": "添加规则节点",
"name": "名称",
"name-required": "名称必填。",
- "name-max-length": "名称长度应该少于256个字符。",
+ "name-max-length": "名称长度应该小于256个字符。",
"type": "类型",
"rule-node-description": "规则节点描述",
"delete": "删除规则节点",
@@ -3553,7 +3964,7 @@
"delete-selected": "删除选定",
"create-nested-rulechain": "创建嵌套规则链",
"select-all": "选择全部",
- "copy-selected": "选择副本",
+ "copy-selected": "复制",
"deselect-all": "取消选择",
"rulenode-details": "规则节点详情",
"debug-mode": "调试模式",
@@ -3569,27 +3980,27 @@
"link-labels": "链接标签",
"link-labels-required": "链接标签必填。",
"no-link-labels-found": "未找到链接标签",
- "no-link-label-matching": "未找到匹配 '{{label}}' 的链接标签。",
+ "no-link-label-matching": "未找到匹配'{{label}}'的链接标签。",
"create-new-link-label": "创建链接标签",
"type-filter": "筛选器",
"type-filter-details": "使用配置条件筛选传入消息",
"type-enrichment": "属性集",
"type-enrichment-details": "向消息元数据中添加附加信息",
"type-transformation": "变换",
- "type-transformation-details": "更改消息 Payload 和元数据",
+ "type-transformation-details": "更改消息Payload和元数据",
"type-action": "动作",
"type-action-details": "执行特别动作",
- "type-external": "外部的",
+ "type-external": "外部",
"type-external-details": "与外部系统交互",
"type-rule-chain": "规则链",
"type-rule-chain-details": "将传入消息转发到指定的规则链",
- "type-flow": "Flow",
- "type-flow-details": "组织消息流",
+ "type-flow": "流",
+ "type-flow-details": "流详情",
"type-input": "输入",
"type-input-details": "规则链的逻辑输入,将传入消息转发到下一个相关规则节点",
"type-unknown": "未知",
"type-unknown-details": "未解析的规则节点",
- "directive-is-not-loaded": "定义的配置指令 '{{directiveName}}' 不可用。",
+ "directive-is-not-loaded": "定义的配置指令'{{directiveName}}'不可用。",
"ui-resources-load-error": "加载配置UI资源失败。",
"invalid-target-rulechain": "无法解析目标规则链!",
"test-script-function": "测试脚本功能",
@@ -3605,24 +4016,26 @@
"test": "测试",
"help": "帮助",
"reset-debug-mode": "重置所有节点中的调试模式",
- "test-with-this-message": "使用此消息进行{{test}}测试"
+ "test-with-this-message": "使用此消息进行{{test}}测试",
+ "queue-hint": "选择一个队列将消息转发到另一个队列,默认情况下使用'Main'队列。",
+ "queue-singleton-hint": "选择一个队列以在多实体中转发消息,默认情况下使用'Main'队列。"
},
"timezone": {
"timezone": "时区",
"select-timezone": "选择时区",
- "no-timezones-matching": "未找到与 '{{timezone}}' 匹配的时区。",
+ "no-timezones-matching": "未找到与'{{timezone}}'匹配的时区。",
"timezone-required": "时区必填。",
"browser-time": "浏览器时间"
},
"queue": {
"queue-name": "队列",
"no-queues-found": "未找到队列",
- "no-queues-matching": "未找到匹配 '{{queue}}' 的队列",
+ "no-queues-matching": "未找到匹配'{{queue}}'的队列",
"select-name": "选择队列名称",
"name": "名称",
"name-required": "队列名称必填。",
"name-unique": "队列名称必须唯一。",
- "name-pattern": "队列名称不能包含ASCII字母数字以外的字符, '.', '_' 和 '-'等。",
+ "name-pattern": "队列名称不能包含ASCII字母数字以外的字符,'.','_'和'-'等。",
"queue-required": "队列必填。",
"topic-required": "队列主题必填。",
"poll-interval-required": "轮询间隔必填。",
@@ -3645,11 +4058,11 @@
"submit-strategy-type-required": "提交策略类型必填。",
"processing-strategy-type-required": "处理策略类型必填。",
"queues": "队列",
- "selected-queues": "已选择 { count, plural, =1 {1 个队列} other {# 个队列} }",
- "delete-queue-title": "确定要删除 '{{queueName}}' 队列吗?",
- "delete-queues-title": "确定要删除 { count, plural, =1 {1 个队列} other {# 个队列} }吗?",
- "delete-queue-text": "请注意:确认后,队列和所有相关数据将不可恢复。",
- "delete-queues-text": "确认后,所有选定队列都将被删除,无法访问。",
+ "selected-queues": "已选择{ count, plural, =1 {1 个队列} other {# 个队列} }",
+ "delete-queue-title": "确定要删除'{{queueName}}'队列吗?",
+ "delete-queues-title": "确定要删除{ count, plural, =1 {1 个队列} other {# 个队列} }吗?",
+ "delete-queue-text": "请注意:确认后队列和所有相关数据将不可恢复。",
+ "delete-queues-text": "确认后所有选定队列都将被删除并无法访问。",
"search": "搜索队列",
"add": "添加队列",
"details": "队列详情",
@@ -3667,6 +4080,7 @@
"immediate-processing": "即时处理",
"consumer-per-partition": "每个分区消费者单独轮询消息",
"consumer-per-partition-hint": "每个分区启用单独的消费者",
+ "duplicate-msg-to-all-partitions": "重复给所有分区的消息",
"processing-timeout": "处理超时(毫秒)",
"batch-size": "批量处理大小",
"retries": "重试次数 (0 – 无限制)",
@@ -3680,7 +4094,7 @@
"description-hint": "此文本将显示在队列说明中,而不是所选策略中",
"alt-description": "提交策略:{{submitStrategy}},处理策略:{{processingStrategy}}",
"custom-properties": "自定义属性",
- "custom-properties-hint": "自定义队列(主题)创建属性,例如 'retention.ms:604800000;retention.bytes:1048576000'",
+ "custom-properties-hint": "自定义队列(主题)创建属性例如'retention.ms:604800000;retention.bytes:1048576000'",
"strategies": {
"sequential-by-originator-label": "按发起者顺序处理",
"sequential-by-originator-hint": "在确认设备A的前一条消息之前,不会提交设备A的新消息",
@@ -3706,6 +4120,15 @@
"retry-failed-and-timeout-hint": "重试处理包中所有失败和超时的消息"
}
},
+ "queue-statistics": {
+ "queue-statistics": "队列统计",
+ "no-queue-statistics-matching": "未找到与'{{entity}}'匹配的队列统计信息。",
+ "queue-statistics-required": "队列统计必填。",
+ "list-of-queue-statistics": "{ count, plural, =1 {个队列统计} other {对列统计#列表} }",
+ "selected-queue-statistics": "选中{ count, plural, =1 {1个队列统计} other {#对列统计} }",
+ "no-queue-statistics-text": "找不到队列统计数据",
+ "queue-statistics-starts-with": "队列统计的名称以始于'{{prefix}}'"
+ },
"server-error": {
"general": "一般服务器错误",
"authentication": "授权错误",
@@ -3730,12 +4153,12 @@
"add-tenant-text": "添加租户",
"no-tenants-text": "未找到租户",
"tenant-details": "租客详情",
- "title-max-length": "标题长度应该少于256个字符。",
+ "title-max-length": "标题长度应该小于256个字符。",
"delete-tenant-title": "确定要删除租户'{{tenantTitle}}'吗?",
- "delete-tenant-text": "请注意:确认后,租户和所有相关数据将不可恢复。",
- "delete-tenants-title": "确定要删除 {count,plural,=1 {1 个租户} other {# 个租户} } 吗?",
- "delete-tenants-action-title": "删除 { count, plural, =1 {1 个租户} other {# 个租户} }",
- "delete-tenants-text": "请注意:确认后,所有选定的租户将被删除,所有相关数据将不可恢复。",
+ "delete-tenant-text": "请注意:确认后租户和所有相关数据将不可恢复。",
+ "delete-tenants-title": "确定要删除{count,plural,=1 {1 个租户} other {# 个租户} }吗?",
+ "delete-tenants-action-title": "删除{ count, plural, =1 {1 个租户} other {# 个租户} }",
+ "delete-tenants-text": "请注意:确认后所有选定的租户将被删除,所有相关数据将不可恢复。",
"title": "标题",
"title-required": "标题必填。",
"description": "说明",
@@ -3744,10 +4167,10 @@
"copyId": "复制租户ID",
"idCopiedMessage": "租户ID已经复制到粘贴板",
"select-tenant": "选择租户",
- "no-tenants-matching": "未找到匹配 '{{entity}}' 的租户",
+ "no-tenants-matching": "未找到匹配'{{entity}}'的租户",
"tenant-required": "租户必填",
"search": "查找租户",
- "selected-tenants": "已选择 { count, plural, =1 {1 个租户} other {# 个租户} }",
+ "selected-tenants": "已选择{ count, plural, =1 {1 个租户} other {# 个租户} }",
"isolated-tb-rule-engine": "使用独立的规则引擎服务",
"isolated-tb-rule-engine-details": "每个独立租户需要单独的规则引擎微服务"
},
@@ -3759,10 +4182,10 @@
"edit": "编辑租户配置",
"tenant-profile-details": "租户配置详细信息",
"no-tenant-profiles-text": "未找到租户配置",
- "name-max-length": "名称长度必须少于256个字符",
+ "name-max-length": "名称长度必须小于256个字符",
"search": "查找租户配置",
- "selected-tenant-profiles": "已选择 { count, plural, =1 {1 个租户配置} other {# 个租户配置} }",
- "no-tenant-profiles-matching": "未找到与 '{{entity}}' 匹配的租户配置。",
+ "selected-tenant-profiles": "已选择{ count, plural, =1 {1 个租户配置} other {# 个租户配置} }",
+ "no-tenant-profiles-matching": "未找到与'{{entity}}'匹配的租户配置。",
"tenant-profile-required": "租户配置必填",
"idCopiedMessage": "租户配置ID已复制到剪贴板",
"set-default": "设置该租户配置为默认",
@@ -3774,18 +4197,18 @@
"profile-configuration": "配置设置",
"description": "说明",
"default": "默认",
- "delete-tenant-profile-title": "确定要删除租户配置 '{{tenantProfileName}}'吗?",
+ "delete-tenant-profile-title": "确定要删除租户配置'{{tenantProfileName}}'吗?",
"delete-tenant-profile-text": "请注意:确认后,租户配置和所有相关数据将不可恢复。",
- "delete-tenant-profiles-title": "确定要删除 { count, plural, =1 {1 个租户配置} other {# 个租户配置} }吗?",
+ "delete-tenant-profiles-title": "确定要删除{ count, plural, =1 {1 个租户配置} other {# 个租户配置} }吗?",
"delete-tenant-profiles-text": "请注意:确认后,所有选定的租户配置将被删除,所有相关数据将不可恢复。",
- "set-default-tenant-profile-title": "确定要将租户配置 '{{tenantProfileName}}' 设为默认值吗?",
- "set-default-tenant-profile-text": "确认后,此租户配置将被标记为默认配置,并将用于未指定配置的新租户。",
+ "set-default-tenant-profile-title": "确定要将租户配置'{{tenantProfileName}}'设为默认值吗?",
+ "set-default-tenant-profile-text": "确认后此租户配置将被标记为默认配置并将用于未指定配置的新租户。",
"no-tenant-profiles-found": "未找到租户配置。",
"create-new-tenant-profile": "创建租户配置",
"create-tenant-profile": "创建租户配置",
"import": "导入租户配置",
"export": "导出租户配置",
- "export-failed-error": "无法导出租户配置: {{error}}",
+ "export-failed-error": "无法导出租户配置:{{error}}",
"tenant-profile-file": "租户配置",
"invalid-tenant-profile-file-error": "无法导入租户配置:无效的租户配置数据结构。",
"advanced-settings": "高级设置",
@@ -3817,6 +4240,9 @@
"maximum-resources-sum-data-size": "资源文件总大小",
"maximum-resources-sum-data-size-required": "资源文件总大小必填。",
"maximum-resources-sum-data-size-range": "资源文件总大小不能为负数",
+ "maximum-resource-size": "最大资源文件大小(字节)",
+ "maximum-resource-size-required": "最大资源文件大小是必需的",
+ "maximum-resource-size-range": "最大资源文件大小不能为负数",
"maximum-ota-packages-sum-data-size": "OTA包文件总大小",
"maximum-ota-package-sum-data-size-required": "OTA包文件总大小必填。",
"maximum-ota-package-sum-data-size-range": "OTA包文件总大小不能为负数",
@@ -3826,6 +4252,12 @@
"transport-device-msg-rate-limit": "设备消息",
"transport-device-telemetry-msg-rate-limit": "设备遥测数据点",
"transport-device-telemetry-data-points-rate-limit": "设备遥测消息",
+ "transport-gateway-msg-rate-limit": "传输网关消息",
+ "transport-gateway-telemetry-msg-rate-limit": "传输网关遥测消息",
+ "transport-gateway-telemetry-data-points-rate-limit": "传输网关遥测数据点",
+ "transport-gateway-device-msg-rate-limit": "传输网关设备消息",
+ "transport-gateway-device-telemetry-msg-rate-limit": "传输网关设备遥测消息",
+ "transport-gateway-device-telemetry-data-points-rate-limit": "传输网关设备遥测数据点",
"tenant-entity-export-rate-limit": "实体版本创建",
"tenant-entity-import-rate-limit": "实体版本加载",
"tenant-notification-request-rate-limit": "通知请求",
@@ -3839,12 +4271,12 @@
"max-r-e-executions": "最大规则引擎执行数",
"max-r-e-executions-required": "最大规则引擎执行数必填。",
"max-r-e-executions-range": "最大规则引擎执行数不能为负",
- "max-j-s-executions": "最大 JavaScript 执行数",
- "max-j-s-executions-required": "最大 JavaScript 执行数必填。",
- "max-j-s-executions-range": "最大 JavaScript 执行数不能为负数",
- "max-tbel-executions": "最大 TBEL 执行数",
- "max-tbel-executions-required": "需要指定最大 TBEL 执行数。",
- "max-tbel-executions-range": "最大 TBEL 执行数不能为负数。",
+ "max-j-s-executions": "最大JavaScript执行数",
+ "max-j-s-executions-required": "最大JavaScript执行数必填。",
+ "max-j-s-executions-range": "最大JavaScript执行数不能为负数",
+ "max-tbel-executions": "最大TBEL执行数",
+ "max-tbel-executions-required": "需要指定最大TBEL执行数。",
+ "max-tbel-executions-range": "最大TBEL执行数不能为负数。",
"max-d-p-storage-days": "最大存储点天",
"max-d-p-storage-days-required": "最大存储点天必填。",
"max-d-p-storage-days-range": "最大存储点天不能为负数",
@@ -3881,7 +4313,7 @@
"queues-with-count": "队列 ({{count}})",
"tenant-rest-limits": "租户REST请求",
"customer-rest-limits": "客户REST请求",
- "incorrect-pattern-for-rate-limits": "格式为以冒号分割容量与周期(秒)并以逗号分割配置对,例如 100:1,2000:60",
+ "incorrect-pattern-for-rate-limits": "格式为以冒号分割容量与周期(秒)并以逗号分割配置对例如 100:1,2000:60",
"too-small-value-zero": "数值必须大于0",
"too-small-value-one": "数值必须大于1",
"queue-size-is-limited-by-system-configuration": "队列的大小也受系统配置的限制。",
@@ -3907,7 +4339,13 @@
"edit-transport-device-msg-title": "编辑传输设备消息速率限制",
"edit-transport-device-telemetry-msg-title": "编辑传输设备遥测消息速率限制",
"edit-transport-device-telemetry-data-points-title": "编辑传输设备遥测数据点速率限制",
- "edit-tenant-rest-limits-title": "Edit REST requests for tenant rate limits",
+ "edit-transport-gateway-msg-title": "编辑传输网关消息速率限制",
+ "edit-transport-gateway-telemetry-msg-title": "编辑传输网关遥测消息速率限制",
+ "edit-transport-gateway-telemetry-data-points-title": "编辑传输网关遥测数据点率限制",
+ "edit-transport-gateway-device-msg-title": "编辑传输网关设备消息速率限制",
+ "edit-transport-gateway-device-telemetry-msg-title": "编辑传输网关设备遥测消息速率限制",
+ "edit-transport-gateway-device-telemetry-data-points-title": "编辑传输网关设备遥测数据点速率限制",
+ "edit-tenant-rest-limits-title": "编辑租户费率限制的休息请求",
"edit-customer-rest-limits-title": "编辑客户REST请求速率限制",
"edit-ws-limit-updates-per-session-title": "编辑会话WS更新速率限制",
"edit-cassandra-tenant-limits-configuration-title": "编辑租户Cassandra查询速率限制",
@@ -3915,14 +4353,22 @@
"edit-tenant-entity-import-rate-limit-title": "编辑实体版本加载速率限制",
"edit-tenant-notification-request-rate-limit-title": "编辑通知请求的速率限制",
"edit-tenant-notification-requests-per-rule-rate-limit-title": "编辑每个通知规则的通知请求速率限制",
- "messages-per": "条消息每",
+ "edit-edge-events-rate-limit": "编辑Edge事件速率限制",
+ "edit-edge-events-per-edge-rate-limit": "编辑每个Edge事件速率限制",
+ "edge-events-rate-limit": "Edge事件",
+ "edge-events-per-edge-rate-limit": "每个Edge事件",
+ "edit-edge-uplink-messages-rate-limit": "编辑Edge上行链路消息速率限制",
+ "edit-edge-uplink-messages-per-edge-rate-limit": "编辑Edge上行链路消息每个Edge速率限制",
+ "edge-uplink-messages-rate-limit": "Edge上行链路消息",
+ "edge-uplink-messages-per-edge-rate-limit": "每个Edge上行链路消息",
+ "messages-per": "每条消息",
"not-set": "未配置",
"number-of-messages": "消息数量",
"number-of-messages-required": "消息数量必填。",
"number-of-messages-min": "最小值为1。",
"preview": "预览",
"per-seconds": "每秒",
- "per-seconds-required": "时间比率必填。",
+ "per-seconds-required": "时间必填。",
"per-seconds-min": "最小值为1。",
"rate-limits": "速率限制",
"remove-limit": "删除限制",
@@ -3932,11 +4378,14 @@
"transport-device-msg": "传输设备消息",
"transport-device-telemetry-msg": "传输设备遥测消息",
"transport-device-telemetry-data-points": "传输设备遥测数据点",
+ "transport-gateway-msg": "传输网关消息",
+ "transport-gateway-telemetry-msg": "传输网关遥测消息",
+ "transport-gateway-telemetry-data-points": "传输网关遥测数据点",
+ "transport-gateway-device-msg": "传输网关设备消息",
+ "transport-gateway-device-telemetry-msg": "传输网关设备遥测消息",
+ "transport-gateway-device-telemetry-data-points": "传输网关设备遥测数据点",
"sec": "秒"
- },
- "maximum-resource-size": "最大资源文件大小(字节)",
- "maximum-resource-size-required": "最大资源文件大小是必需的",
- "maximum-resource-size-range": "最大资源文件大小不能为负数"
+ }
},
"timeinterval": {
"seconds-interval": "{ seconds, plural, =1 {1 秒} other {# 秒} }",
@@ -3948,6 +4397,7 @@
"minutes": "分钟",
"seconds": "秒",
"advanced": "高级",
+ "custom": "自定义",
"predefined": {
"yesterday": "昨天",
"day-before-yesterday": "前天",
@@ -3973,6 +4423,12 @@
"current-half-year-so-far": "当前半年到目前为止",
"current-year": "本年",
"current-year-so-far": "本年到目前为止"
+ },
+ "type": {
+ "week": "每周(星期日-星期六)",
+ "week-iso": "每周(星期一-星期日)",
+ "month": "月",
+ "quarter": "季度"
}
},
"timeunit": {
@@ -3984,33 +4440,34 @@
},
"timewindow": {
"timewindow": "时间窗口",
- "years": "{ years, plural, =1 {1 年 } other {# 年 } }",
+ "timewindow-settings": "设置时间窗口",
+ "years": "{ years, plural, =1 {1年 } other {#年 } }",
"years-short": "{{ years }}y",
- "months": "{ months, plural, =1 {1 月 } other {# 月 } }",
+ "months": "{ months, plural, =1 {1月 } other {#月 } }",
"months-short": "{{ months }}M",
- "weeks": "{ weeks, plural, =1 {1 周 } other {# 周 } }",
+ "weeks": "{ weeks, plural, =1 {1周 } other {#周 } }",
"weeks-short": "{{ weeks }}w",
- "days": "{ days, plural, =1 {1 天 } other {# 天 } }",
+ "days": "{ days, plural, =1 {1天 } other {#天 } }",
"days-short": "{{ days }}d",
- "hours": "{ hours, plural, =0 {- 小时 } =1 {1 小时 } other {# 小时 } }",
+ "hours": "{ hours, plural, =0 {-小时 } =1 {1小时 } other {#小时 } }",
"hr": "{{ hr }} 时",
"hr-short": "{{ hr }}h",
- "minutes": "{ minutes, plural, =0 {- 分 } =1 {1 分 } other {# 分 } }",
+ "minutes": "{ minutes, plural, =0 {-分 } =1 {1分 } other {#分 } }",
"min": "{{ min }} 分",
"min-short": "{{ min }}m",
- "seconds": "{ seconds, plural, =0 {- 秒 } =1 {1 秒 } other {# 秒 } }",
+ "seconds": "{ seconds, plural, =0 {-秒 } =1 {1秒 } other {#秒 } }",
"sec": "{{ sec }} 秒",
"sec-short": "{{ sec }}s",
"short": {
"days": "{ days, plural, =1 {1 天 } other {# 天 } }",
"hours": "{ hours, plural, =1 {1 小时 } other {# 小时 } }",
- "minutes": "{{minutes}} 分 ",
- "seconds": "{{seconds}} 秒 "
+ "minutes": "{{minutes}}分 ",
+ "seconds": "{{seconds}}秒 "
},
"realtime": "实时",
"history": "历史",
"last-prefix": "最后",
- "period": "从 {{ startTime }} 到 {{ endTime }}",
+ "period": "从{{ startTime }}到{{ endTime }}",
"edit": "编辑时间窗口",
"date-range": "日期范围",
"for-all-time": "所有时间",
@@ -4021,22 +4478,101 @@
"just-now": "刚刚",
"just-now-lower": "刚刚",
"ago": "之前",
- "style": "时间窗口样式",
+ "style": "样式",
"icon": "图标",
"icon-position": "图标位置",
"icon-position-left": "左侧",
"icon-position-right": "右侧",
"font": "字体",
"color": "颜色",
- "displayTypePrefix": "显示实时/历史前缀",
- "preview": "预览"
+ "displayTypePrefix": "实时/历史",
+ "preview": "预览",
+ "relative": "相对",
+ "range": "范围",
+ "hide-timewindow-section": "隐藏用户的时间窗口",
+ "hide-last-interval": "隐藏用户的最后间隔",
+ "hide-relative-interval": "隐藏用户的相对间隔",
+ "hide-fixed-interval": "隐藏用户的固定间隔",
+ "hide-aggregation": "隐藏用户的聚合",
+ "hide-group-interval": "隐藏用户的分组间隔",
+ "hide-max-values": "隐藏用户的最大值",
+ "hide-timezone": "隐藏用户的时区",
+ "disable-custom-interval": "禁用自定义间隔选择"
},
"tooltip": {
- "value": "值",
+ "trigger": "触发",
+ "trigger-point": "点",
+ "trigger-axis": "轴",
+ "label": "标签",
+ "value": "数值",
"date": "日期",
+ "show-date-time-interval": "显示间隔",
+ "show-date-time-interval-hint": "根据数据聚合显示时间间隔。",
"background-color": "背景颜色",
"background-blur": "背景模糊"
},
+ "unit": {
+ "millimeter": "毫米",
+ "centimeter": "厘米",
+ "angstrom": "埃米",
+ "nanometer": "纳米",
+ "micrometer": "千分尺",
+ "meter": "米",
+ "kilometer": "公里",
+ "inch": "英寸",
+ "foot": "英尺",
+ "yard": "码",
+ "mile": "英里",
+ "nautical-mile": "海里",
+ "astronomical-unit": "天文单位",
+ "reciprocal-metre": "倒数米",
+ "meter-per-meter": "每米",
+ "steradian": "球面度",
+ "thou": "毫英寸",
+ "barleycorn": "1/3英寸",
+ "hand": "4英寸",
+ "chain": "66英尺",
+ "furlong": "660英尺",
+ "league": "3英里",
+ "fathom": "6英尺",
+ "cable": "平方毫米",
+ "link": "Link",
+ "rod": "杆",
+ "nanogram": "纳克",
+ "microgram": "微克",
+ "milligram": "毫克",
+ "gram": "克",
+ "kilogram": "千克",
+ "tonne": "吨",
+ "ounce": "盎司",
+ "pound": "磅",
+ "stone": "英石",
+ "hundredweight-count": "数百分点",
+ "short-tons": "短吨",
+ "dalton": "道尔顿",
+ "grain": "格令",
+ "drachm": "打兰",
+ "quarter": "一刻钟",
+ "slug": "斯勒格",
+ "carat": "克拉",
+ "cubic-millimeter": "立方毫米",
+ "cubic-centimeter": "立方厘米",
+ "cubic-meter": "立方米",
+ "cubic-kilometer": "立方千米",
+ "microliter": "微升",
+ "milliliter": "毫升",
+ "liter": "公升",
+ "hectoliter": "百升",
+ "cubic-inch": "立方英寸",
+ "cubic-foot": "立方英尺",
+ "cubic-yard": "立方英里",
+ "fluid-ounce": "液体盎司",
+ "pint": "品脱",
+ "quart": "夸脱",
+ "gallon": "加仑",
+ "oil-barrels": "油桶",
+ "cubic-meter-per-kilogram": "每公斤立方米"
+ },
"user": {
"user": "用户",
"users": "用户",
@@ -4051,11 +4587,11 @@
"add-user-text": "添加用户",
"no-users-text": "未找到用户",
"user-details": "用户详细信息",
- "delete-user-title": "确定要删除用户 '{{userEmail}}' 吗?",
+ "delete-user-title": "确定要删除用户'{{userEmail}}' 吗?",
"delete-user-text": "请注意:确认后,用户和所有相关数据将不可恢复。",
- "delete-users-title": "确定要删除 { count, plural, =1 {1 个用户} other {# 个用户} } 吗?",
- "delete-users-action-title": "删除 { count, plural, =1 {1 个用户} other {# 个用户} }",
- "delete-users-text": "请注意:确认后,所有选定的用户将被删除,所有相关数据将不可恢复。",
+ "delete-users-title": "确定要删除{ count, plural, =1 {1 个用户} other {# 个用户} } 吗?",
+ "delete-users-action-title": "删除{ count, plural, =1 {1 个用户} other {# 个用户} }",
+ "delete-users-text": "请注意:确认后所有选定的用户将被删除,所有相关数据将不可恢复。",
"activation-email-sent-message": "激活电子邮件已成功发送!",
"resend-activation": "重新发送激活",
"email": "电子邮件",
@@ -4067,20 +4603,20 @@
"default-dashboard": "默认面板",
"always-fullscreen": "始终全屏",
"select-user": "选择用户",
- "no-users-matching": "未找到匹配 '{{entity}}' 的用户。",
+ "no-users-matching": "未找到匹配'{{entity}}'的用户。",
"user-required": "用户必填",
"activation-method": "激活方式",
"display-activation-link": "显示激活链接",
"send-activation-mail": "发送激活邮件",
"activation-link": "用户激活链接",
- "activation-link-text": "使用该链接 激活 激活用户:",
+ "activation-link-text": "使用该链接激活激活用户:",
"copy-activation-link": "复制用户激活链接",
"activation-link-copied-message": "用户激活链接已经复制到粘贴板",
"details": "详情",
"login-as-tenant-admin": "以租户管理员身份登录",
"login-as-customer-user": "以客户用户身份登录",
"search": "查找用户",
- "selected-users": "已选择 { count, plural, =1 {1 个用户} other {# 个用户} }",
+ "selected-users": "已选择{ count, plural, =1 {1 个用户} other {# 个用户} }",
"disable-account": "禁用用户帐户",
"enable-account": "启用用户帐户",
"enable-account-message": "已成功启用用户帐户!",
@@ -4138,13 +4674,13 @@
"creating-version": "请稍候,正在创建版本...",
"nothing-to-commit": "没有要提交的更改",
"restore-version": "还原版本",
- "restore-entity-from-version": "从版本 '{{versionName}}' 还原实体",
- "restoring-entity-version": "请稍候,正在还原实体版本...",
+ "restore-entity-from-version": "从版本'{{versionName}}'还原实体",
+ "restoring-entity-version": "请稍候正在还原实体版本...",
"load-relations": "加载关联",
"load-attributes": "加载属性",
"load-credentials": "加载凭据",
"compare-with-current": "与当前比较",
- "diff-entity-with-version": "与实体版本 '{{versionName}}' 不同",
+ "diff-entity-with-version": "与实体版本'{{versionName}}'不同",
"previous-difference": "上一个差异",
"next-difference": "下一个差异",
"current": "当前",
@@ -4161,24 +4697,26 @@
"no-entities-to-restore-prompt": "请指定要还原的实体",
"add-entity-type": "添加实体类型",
"remove-all": "全部删除",
- "version-create-result": "{ added, plural, =0 {没有实体} =1 {1 个实体} other {# 个实体} } 被添加。
{ modified, plural, =0 {没有实体} =1 {1 个实体} other {# 个实体} } 被修改。
{ removed, plural, =0 {没有实体} =1 {1 个实体} other {# 个实体} } 被删除。",
+ "version-create-result": "{ added, plural, =0 {没有实体} =1 {1 个实体} other {# 个实体} } 被添加。
{ modified, plural, =0 {没有实体} =1 {1 个实体} other {# 个实体} }被修改。
{ removed, plural, =0 {没有实体} =1 {1 个实体} other {# 个实体} }被删除。",
"remove-other-entities": "删除其他实体",
"find-existing-entity-by-name": "按名称查找现有实体",
- "restore-entities-from-version": "从版本 '{{versionName}}' 还原实体",
- "restoring-entities-from-version": "请稍候,正在还原实体...",
+ "restore-entities-from-version": "从版本'{{versionName}}'还原实体",
+ "restoring-entities-from-version": "请稍候正在还原实体...",
"no-entities-restored": "未还原任何实体",
- "created": "{{created}} 创建",
- "updated": "{{updated}} 更新",
- "deleted": "{{deleted}} 删除",
- "remove-other-entities-confirm-text": "请注意!在还原版本中不存在的当前实体
将被永久 删除。
请输入 \"remove other entities\" 进行确认。",
- "auto-commit-to-branch": "自动提交到 {{ branch }} 分支",
- "default-create-entity-version-name": "{{entityName}} 更新",
+ "created": "{{created}}创建",
+ "updated": "{{updated}}更新",
+ "deleted": "{{deleted}}删除",
+ "remove-other-entities-confirm-text": "请注意!在还原版本中不存在的当前实体
将被永久删除。
请输入\"remove other entities\"进行确认。",
+ "auto-commit-to-branch": "自动提交到{{ branch }}分支",
+ "default-create-entity-version-name": "{{entityName}}更新",
"sync-strategy-merge-hint": "创建或更新选定的实体,仓库其他实体均不修改。",
"sync-strategy-overwrite-hint": "创建或更新选定的实体,仓库其他实体将被删除。",
- "device-credentials-conflict": "无法加载外部ID为 {{entityId}} 的设备
因为数据库中已存在相同的凭据。
请考虑禁用还原表单中的 加载凭据 设置。",
- "missing-referenced-entity": "无法加载外部ID为 {{sourceEntityId}} 的 {{sourceEntityTypeName}}
因为它引用了缺失的 {{targetEntityTypeName}} (ID:{{targetEntityId}}).",
- "runtime-failed": "失败: {{message}}",
- "auto-commit-settings-read-only-hint": "在仓库设置中启用只读选项后,'自动提交'功能将无法正常工作。"
+ "device-credentials-conflict": "无法加载外部ID为{{entityId}} 的设备
因为数据库中已存在相同的凭据。
请考虑禁用还原表单中的 加载凭据 设置。",
+ "missing-referenced-entity": "无法加载外部ID为{{sourceEntityId}} 的 {{sourceEntityTypeName}}
因为它引用了缺失的 {{targetEntityTypeName}} (ID:{{targetEntityId}}).",
+ "runtime-failed": "失败:{{message}}",
+ "auto-commit-settings-read-only-hint": "在仓库设置中启用只读选项后,'自动提交'功能将无法正常工作。",
+ "rollback-on-error": "回滚错误",
+ "rollback-on-error-hint": "如果您有大量实体需要恢复请考虑禁用此选项以提高性能。\n请注意如果在版本加载过程中发生错误,已经持久化的实体(具有关系、属性等)将不发生修改。"
},
"widget": {
"widget-library": "部件库",
@@ -4189,19 +4727,20 @@
"all-widgets": "所有部件",
"widget": "部件",
"select-widget": "选择部件",
- "no-widgets-matching": "未找到与 '{{entity}}' 匹配的部件。",
+ "no-widgets-matching": "未找到与'{{entity}}匹配的部件。",
"no-widgets": "暂无部件",
"no-widgets-text": "未找到部件",
"management": "管理部件",
"editor": "部件编辑器",
- "confirm-to-exit-editor-html": "有未保存的部件设置。
确定要离开此页面吗?",
- "widget-type-not-found": "加载部件配置出错。
可能关联的部件已经删除了。",
+ "confirm-to-exit-editor-html": "有未保存的部件设置
确定要离开此页面吗?",
+ "widget-type-not-found": "加载部件配置出错
可能关联的部件已经删除了。",
"widget-type-load-error": "由于以下错误未加载部件:",
"remove": "删除部件",
"delete": "删除部件",
"edit": "编辑部件",
- "remove-widget-title": "确定要删除 '{{widgetTitle}}'部件吗?",
- "remove-widget-text": "确认后,控件和所有相关数据将变得不可恢复。",
+ "remove-widget-title": "确定要删除'{{widgetTitle}}'部件吗?",
+ "remove-widget-text": "确认后所有相关数据将变得不可恢复。",
+ "replace-reference-with-widget-copy": "基于部件复制替换引用",
"timeseries": "时间序列",
"search-data": "查找数据",
"no-data-found": "未找到数据",
@@ -4217,32 +4756,32 @@
"select-widget-type": "选择窗口部件类型",
"missing-widget-title-error": "部件标题必须指定!",
"widget-saved": "部件已保存",
- "unable-to-save-widget-error": "无法保存部件!控件有错误!",
+ "unable-to-save-widget-error": "控件有错误无法保存部件!",
"save": "保存部件",
"saveAs": "部件另存为",
"move": "移动部件",
- "save-widget-as": "另存部件为",
+ "save-widget-as": "部件另存为",
"save-widget-as-text": "请输入部件标题",
- "toggle-fullscreen": "切换全屏",
- "run": "运行部件",
+ "toggle-fullscreen": "全屏",
+ "run": "运行",
"widget-title": "部件标题",
"title": "部件标题",
"title-required": "部件标题必填。",
- "title-max-length": "标题应少于256个字符",
+ "title-max-length": "标题必须小于256个字符",
"system": "系统",
- "type": "部件类型",
+ "type": "类型",
"resources": "资源",
- "resource-url": "JavaScript/CSS URL",
- "resource-is-module": "Is module",
+ "resource-url": "JavaScript/CSS",
+ "resource-is-module": "是否模块",
"remove-resource": "删除资源",
"add-resource": "添加资源",
"html": "HTML",
"tidy": "整理",
"css": "CSS",
"settings-schema": "设置模式",
- "datakey-settings-schema": "数据键设置模式",
- "latest-datakey-settings-schema": "最新值数据键设置模式",
- "widget-settings": "部件设置",
+ "datakey-settings-schema": "数据键设置",
+ "latest-datakey-settings-schema": "最新数据键设置",
+ "widget-settings": "设置",
"description": "描述",
"tags": "标签",
"image-preview": "图片预览",
@@ -4251,17 +4790,18 @@
"latest-data-key-settings-form-selector": "最新值数据键设置表单选择器",
"all": "全部",
"actual": "实际",
- "deprecated": "已弃用",
- "has-basic-mode": "具有基本模式",
- "basic-mode-form-selector": "基本模式表单选择器",
- "basic-mode": "基本",
+ "scada": "组态",
+ "deprecated": "弃用",
+ "has-basic-mode": "基础模式",
+ "basic-mode-form-selector": "表单选择器",
+ "basic-mode": "基础",
"advanced-mode": "高级",
"javascript": "JavaScript",
"js": "JS",
"delete-widget-title": "确定要删除部件'{{widgetName}}'吗?",
- "delete-widget-text": "确认后,部件及其所有相关数据将无法恢复。",
- "delete-widgets-title": "确定要删除 { count, plural, =1 {1个部件} other {#个部件} }吗?",
- "delete-widgets-text": "请谨慎操作,确认后,所有选定的部件将被删除,并且所有相关数据将无法恢复。",
+ "delete-widget-text": "确认后部件及其所有相关数据将无法恢复。",
+ "delete-widgets-title": "确定要删除{ count, plural, =1 {1个部件} other {#个部件} }吗?",
+ "delete-widgets-text": "请谨慎操作确认后,所有选定的部件将被删除并且所有相关数据将无法恢复。",
"delete-widget": "删除部件",
"widget-template-load-failed-error": "无法加载部件模板!",
"details": "详情",
@@ -4270,34 +4810,38 @@
"add-existing-widget": "添加现有部件",
"add-new-widget": "添加新部件",
"search-widgets": "搜索部件",
- "selected-widgets": "已选择 { count, plural, =1 {1 个部件} other {# 个部件} }",
+ "selected-widgets": "已选择{ count, plural, =1 {1 个部件} other {# 个部件} }",
"undo": "撤销",
"export": "导出",
"export-widgets": "导出部件",
"import": "导入部件",
"no-data": "部件上没有要显示的数据",
- "data-overflow": "部件显示 {{count}} 条实体中的 {{total}} 条",
- "alarm-data-overflow": "部件显示了 {{allowedEntities}}(最大允许)实体中的告警,总共有 {{totalEntities}} 个实体",
- "search": "搜索部件",
- "filter": "部件类型过滤",
+ "data-overflow": "部件显示{{count}}条实体中的{{total}}条。",
+ "alarm-data-overflow": "部件显示了{{allowedEntities}}(最大允许)实体中的告警,总共有{{totalEntities}}个实体",
+ "search": "搜索",
+ "filter": "过滤",
"loading-widgets": "加载部件...",
- "widget-template-error": "无效的部件 HTML 模板。"
+ "widget-template-error": "无效HTML模板部件。",
+ "reference": "引用"
},
"widget-action": {
- "header-button": "部件顶部按钮",
- "open-dashboard-state": "切换到新仪表板状态",
- "update-dashboard-state": "更新当前仪表板状态",
- "open-dashboard": "切换到另一个仪表板",
+ "header-button": "顶部按钮",
+ "do-nothing": "无任何动作",
+ "open-dashboard-state": "切换仪表板状态",
+ "update-dashboard-state": "更新仪表板状态",
+ "open-dashboard": "打开仪表板",
"custom": "自定义动作",
- "custom-pretty": "自定义动作(使用HTML模板)",
+ "custom-pretty": "自定义动作(HTML模板)",
"custom-pretty-error-title": "自定义对话框错误",
"custom-pretty-template-error": "无效的自定义对话框模板。",
- "custom-pretty-controller-error": "在评估自定义对话框函数时发生了错误。",
+ "custom-pretty-controller-error": "自定义对话框函数错误。",
"mobile-action": "移动端动作",
"target-dashboard-state": "目标仪表板状态",
"target-dashboard-state-required": "目标仪表板状态必填",
"set-entity-from-widget": "从部件中设置实体",
"target-dashboard": "目标仪表板",
+ "select-target-dashboard": "选择目标仪表板",
+ "target-dashboard-required": "必须选择目标仪表板。",
"open-right-layout": "打开右侧布局 (移动端视图)",
"state-display-type": "显示仪表板状态选项",
"open-normal": "普通",
@@ -4323,12 +4867,15 @@
"popover-placement-leftBottom": "左下",
"popover-hide-on-click-outside": "在点击弹出框外部时隐藏弹出框",
"popover-hide-dashboard-toolbar": "在弹出框中隐藏仪表板工具栏",
- "popover-width": "弹出宽度",
- "popover-height": "弹出高度",
- "popover-style": "弹出框样式",
- "open-new-browser-tab": "在新的浏览器选项卡中打开",
+ "popover-width": "宽度",
+ "popover-height": "高度",
+ "popover-style": "样式",
+ "open-new-browser-tab": "在选项卡中打开",
+ "open-URL": "打开URL",
+ "url-required": "URL必填。",
"mobile": {
"action-type": "移动端动作类型",
+ "select-action-type": "选择移动端操作类型",
"action-type-required": "移动端动作类型必填。",
"take-picture-from-gallery": "从图库中获取照片",
"take-photo": "拍照",
@@ -4338,7 +4885,9 @@
"make-phone-call": "拨打电话",
"get-location": "获取手机位置",
"take-screenshot": "截屏"
- }
+ },
+ "custom-action-function": "自定义动作函数",
+ "custom-pretty-function": "自定义动作(HTML模板)"
},
"widgets-bundle": {
"current": "当前组",
@@ -4348,21 +4897,22 @@
"delete": "删除部件包",
"title": "标题",
"title-required": "标题必填。",
- "title-max-length": "标题长度应该少于256个字符。",
+ "title-max-length": "标题长度应该小于256个字符。",
"description": "描述",
"image-preview": "图片预览",
+ "scada": "SCADA部件包",
"order": "其他",
"add-widgets-bundle-text": "添加部件包",
"no-widgets-bundles-text": "未找到部件包",
"empty": "部件包是空的",
"details": "详情",
"widgets-bundle-details": "部件包详细信息",
- "delete-widgets-bundle-title": "确定要删除部件包 '{{widgetsBundleTitle}}'吗?",
- "delete-widgets-bundle-text": "请注意:确认后,部件包和所有相关数据将不可恢复。",
- "delete-widgets-bundles-title": "确定要删除 { count, plural, =1 {1 个部件包} other {# 个部件包} } 吗?",
- "delete-widgets-bundles-action-title": "删除 { count, plural, =1 {1 个部件包} other {# 个部件包} }",
+ "delete-widgets-bundle-title": "确定要删除部件包'{{widgetsBundleTitle}}'吗?",
+ "delete-widgets-bundle-text": "请注意:确认后部件包和所有相关数据将不可恢复。",
+ "delete-widgets-bundles-title": "确定要删除{ count, plural, =1 {1 个部件包} other {# 个部件包} }吗?",
+ "delete-widgets-bundles-action-title": "删除{ count, plural, =1 {1 个部件包} other {# 个部件包} }",
"delete-widgets-bundles-text": "请注意:确认后,所有选定的部件包将被删除,所有相关数据将不可恢复。",
- "no-widgets-bundles-matching": "未找到与 '{{widgetsBundle}}' 匹配的部件包。",
+ "no-widgets-bundles-matching": "未找到与'{{widgetsBundle}}'匹配的部件包。",
"widgets-bundle-required": "部件包必填。",
"system": "系统",
"import": "导入部件包",
@@ -4373,22 +4923,23 @@
"widgets-bundle-file": "部件包文件",
"invalid-widgets-bundle-file-error": "无法导入部件包:无效的部件包数据结构。",
"search": "查找部件包",
- "selected-widgets-bundles": "已选择 { count, plural, =1 {1 个部件包} other {# 个部件包} }",
+ "selected-widgets-bundles": "已选择{ count, plural, =1 {1 个部件包} other {# 个部件包} }",
"open-widgets-bundle": "打开部件包",
- "loading-widgets-bundles": "加载部件包..."
+ "loading-widgets-bundles": "加载部件包...",
+ "create-new": "创建新部件包"
},
"widget-config": {
"data": "数据",
"settings": "设置",
"advanced": "高级",
"appearance": "外观",
- "widget-card": "部件卡片",
+ "widget-card": "卡片",
"mobile": "移动设备",
"title": "标题",
- "title-tooltip": "标题文字提示",
+ "title-tooltip": "标题提示文字",
"general-settings": "常规设置",
- "display-title": "显示标题",
- "card-title": "卡片标题",
+ "display-title": "显示",
+ "card-title": "标题",
"drop-shadow": "投影",
"enable-fullscreen": "启用全屏",
"background-color": "背景颜色",
@@ -4408,7 +4959,7 @@
"units-by-default": "默认单位",
"decimals": "小数位数",
"decimals-by-default": "默认小数位数",
- "default-data-key-parameter-hint": "该参数适用于所有部件值,除非被数据键配置覆盖",
+ "default-data-key-parameter-hint": "该参数适用于所有部件值,除非被数据键配置覆盖。",
"units-short": "单位",
"decimals-short": "小数",
"decimals-suffix": "位小数",
@@ -4420,8 +4971,8 @@
"display-legend": "显示图例",
"datasources": "数据源",
"datasource": "数据源",
- "maximum-datasources": "最大允许 { count, plural, =1 {1 个数据源。} other {# 个数据源。} }",
- "timeseries-key-error": "需要至少指定一个 timeseries 数据键",
+ "maximum-datasources": "最大允许{ count, plural, =1 {1 个数据源。} other {# 个数据源。} }",
+ "timeseries-key-error": "需要至少指定一个timeseries数据键",
"datasource-type": "类型",
"datasource-parameters": "参数",
"remove-datasource": "移除数据源",
@@ -4434,59 +4985,155 @@
"search-actions": "搜索动作",
"no-actions-text": "找不到动作",
"action-source": "动作源",
+ "select-action-source": "选择动作源",
"action-source-required": "动作源必填",
+ "column-index": "序号",
+ "select-column-index": "选择序号",
+ "column-index-required": "序号必填。",
+ "not-set": "未设置",
"action-name": "名称",
"action-name-required": "动作名称必填。",
- "action-name-not-unique": "动作名称已经存在。\n相同动作源的动作名称必须唯一。",
+ "action-name-not-unique": "动作名称已经存在。",
"action-icon": "图标",
"show-hide-action-using-function": "使用函数显示/隐藏动作",
+ "show-action-function": "显示动作函数",
"action-type": "类型",
"action-type-required": "类型必填",
"edit-action": "编辑动作",
"delete-action": "删除动作",
"delete-action-title": "删除部件动作",
- "delete-action-text": "确定要删除部件动作'{{actionName}}' 吗?",
+ "delete-action-text": "确定要删除部件动作'{{actionName}}'吗?",
"title-icon": "标题图标",
"display-icon": "显示标题图标",
- "card-icon": "卡片图标",
+ "card-icon": "图标",
"icon": "图标",
"icon-color": "图标颜色",
"icon-size": "图标大小",
"advanced-settings": "高级设置",
"data-settings": "数据设置",
"limits": "限制",
- "no-data-display-message": "\"没有数据可显示\" 替代信息",
+ "no-data-display-message": "没有数据时显示文本",
"data-page-size": "每个数据源的最大实体数",
- "settings-component-not-found": "未找到设置的表单组件选择器 '{{selector}}'",
+ "settings-component-not-found": "未找到设置的表单组件选择器'{{selector}}'",
"preview": "预览",
"set": "设置",
- "set-message": "设置消息",
+ "set-message": "设置显示文本",
"advanced-title-style": "高级标题样式",
- "card-style": "卡片样式",
+ "card-style": "样式",
"text": "文本",
"background": "背景",
"advanced-widget-style": "高级部件样式",
- "card-buttons": "卡片按钮",
- "show-card-buttons": "显示卡片按钮",
- "card-border-radius": "卡片边框半径",
- "card-appearance": "卡片外观",
+ "card-buttons": "按钮",
+ "show-card-buttons": "全屏按钮",
+ "card-border-radius": "边框半径",
+ "card-padding": "内边边距",
+ "card-appearance": "外观",
"color": "颜色",
"tooltip": "文字提示",
- "units-required": "单位是必须的。"
+ "units-required": "单位必填",
+ "list-layout": "列表",
+ "layout": "布局",
+ "resize-options": "调整大小",
+ "resizable": "可调整大小",
+ "preserve-aspect-ratio": "保留纵横比例"
},
"widget-type": {
- "import": "导入部件类型",
- "export": "导出部件类型",
- "export-failed-error": "无法导出部件类型: {{error}}",
+ "import": "导入部件",
+ "export": "导出部件",
+ "export-failed-error": "无法导出部件:{{error}}",
"widget-file": "部件文件",
"invalid-widget-file-error": "无法导入部件:无效的部件数据结构。"
},
"widgets": {
+ "mobile-app-qr-code": {
+ "configuration-hint": "配置取决于平台中设置的移动应用二维码部件",
+ "get-it-on-google-play": "在Google Play上下载",
+ "download-on-the-app-store": "在App Store上下载"
+ },
+ "action-button": {
+ "behavior": "行为",
+ "on-click": "单击",
+ "on-click-hint": "单击按钮时触发动作"
+ },
+ "command-button": {
+ "behavior": "行为",
+ "on-click": "单击",
+ "on-click-hint": "单击按钮时触发动作"
+ },
+ "power-button": {
+ "behavior": "行为",
+ "power-on": "打开",
+ "power-on-hint": "打开电源执行的动作。",
+ "power-off": "关闭",
+ "power-off-hint": "关闭电源执行的动作。",
+ "on-label": "打开",
+ "off-label": "关闭",
+ "layout": "布局",
+ "layout-default": "默认",
+ "layout-simplified": "精简",
+ "layout-outlined": "默认",
+ "layout-default-volume": "默认",
+ "layout-simplified-volume": "精简",
+ "layout-outlined-volume": "默认",
+ "layout-default-icon": "默认.Icon",
+ "layout-simplified-icon": "精简.Icon",
+ "layout-outlined-icon": "默认.Icon",
+ "main": "前景色",
+ "background": "背景色",
+ "power-on-colors": "打开颜色",
+ "power-off-colors": "关闭颜色",
+ "disabled-colors": "禁用颜色",
+ "button": "按钮"
+ },
+ "toggle-button": {
+ "behavior": "行为",
+ "checked": "打开",
+ "unchecked": "关闭",
+ "check": "打开状态",
+ "check-hint": "打开组件执行的动作。",
+ "uncheck": "关闭状态",
+ "uncheck-hint": "关闭组件执行的动作。",
+ "auto-scale": "自动",
+ "horizontal-fill": "水平填充",
+ "vertical-fill": "垂直填充",
+ "button-appearance": "外观"
+ },
+ "button": {
+ "layout": "布局",
+ "outlined": "默认",
+ "filled": "填充",
+ "underlined": "强调",
+ "basic": "基础",
+ "auto-scale": "自动",
+ "label": "标签",
+ "icon": "图标",
+ "border-radius": "圆角",
+ "color-palette": "调色板",
+ "main": "前景色",
+ "background": "背景色",
+ "custom-styles": "自定义样式",
+ "clear-style": "清除样式",
+ "shadow": "阴影",
+ "enabled": "启用",
+ "disabled": "禁用",
+ "preview": "预览",
+ "copy-style-from": "复制"
+ },
+ "button-state": {
+ "activated-state": "激活状态",
+ "activated-state-hint": "按钮在激活状态的触发条件。",
+ "disabled-state": "禁用状态",
+ "disabled-state-hint": "按钮在禁用状态的触发条件。",
+ "enabled": "启用",
+ "hovered": "悬停",
+ "pressed": "按压",
+ "activated": "激活",
+ "disabled": "禁用"
+ },
"background": {
- "background": "背景",
+ "background": "背景颜色",
"background-settings": "背景设置",
"background-type-image": "上传图像",
- "background-type-image-url": "图像URL",
"background-type-color": "纯色背景",
"image-url": "图像URL",
"overlay": "覆盖",
@@ -4494,18 +5141,30 @@
"blur": "模糊",
"preview": "预览"
},
+ "bar-chart": {
+ "bar-appearance": "外观",
+ "label-on-bar": "标签",
+ "value-on-bar": "数值",
+ "bar-chart-style": "样式",
+ "bar-axis": "轴"
+ },
+ "polar-area-chart": {
+ "polar-axis": "极轴",
+ "start-angle": "角度",
+ "polar-area-chart-style": "图表样式"
+ },
"battery-level": {
"layout": "布局",
- "layout-vertical-solid": "垂直. 实心",
- "layout-horizontal-solid": "水平. 实心",
- "layout-vertical-divided": "垂直. 分割",
- "layout-horizontal-divided": "水平. 分割",
+ "layout-vertical-solid": "垂直.实心",
+ "layout-horizontal-solid": "水平.实心",
+ "layout-vertical-divided": "垂直.分割",
+ "layout-horizontal-divided": "水平.分割",
"icon": "图标",
"value": "数值",
"auto-scale": "自动缩放",
- "battery-level-color": "电池电量颜色",
- "battery-shape-color": "电池形状颜色",
- "battery-level-card-style": "电池电量卡片样式",
+ "battery-level-color": "电量颜色",
+ "battery-shape-color": "形状颜色",
+ "battery-level-card-style": "电量卡片样式",
"sections-count": "分段数量"
},
"signal-strength": {
@@ -4514,12 +5173,32 @@
"no-signal": "无信号",
"layout": "布局",
"layout-wifi": "Wi-Fi",
- "layout-cellular-bar": "蜂窝网络条状",
+ "layout-cellular-bar": "蜂窝网络",
"icon": "图标",
"date": "日期",
- "active-bars-color": "活动信号条颜色",
- "inactive-bars-color": "非活动信号条颜色",
- "signal-strength-card-style": "信号强度卡片样式"
+ "active-bars-color": "有信号颜色",
+ "inactive-bars-color": "无信号颜色",
+ "signal-strength-card-style": "信号强度样式",
+ "no-signal-rssi-value": "无信号RSSI值"
+ },
+ "status-widget": {
+ "behavior": "行为",
+ "layout": "布局",
+ "layout-default": "默认",
+ "layout-center": "居中",
+ "layout-icon": "图标",
+ "on": "打开",
+ "off": "关闭",
+ "label": "标签",
+ "status": "状态",
+ "icon": "图标",
+ "color-palette": "启用时调色板",
+ "disabled-color-palette": "禁用时调色板",
+ "primary": "基本",
+ "primary-color-hint": "图标和标签的颜色",
+ "secondary": "次要",
+ "secondary-color-hint": "状态颜色",
+ "background": "背景"
},
"chart": {
"common-settings": "通用设置",
@@ -4565,7 +5244,7 @@
"comparison-settings": "比较设置",
"enable-comparison": "启用比较",
"time-for-comparison": "比较期间",
- "time-for-comparison-previous-interval": "上一个时间段 (默认)",
+ "time-for-comparison-previous-interval": "上一个时间段(默认)",
"time-for-comparison-days": "一天前",
"time-for-comparison-weeks": "一周前",
"time-for-comparison-months": "一月前",
@@ -4576,7 +5255,7 @@
"axis-position": "轴位置",
"axis-position-top": "顶部 (默认)",
"axis-position-bottom": "底部",
- "custom-legend-settings": "自定义图例设置",
+ "custom-legend-settings": "自定义设置图例",
"enable-custom-legend": "启用自定义图例 (这将允许您在键标签中使用属性/时间序列值)",
"key-name": "键名",
"key-name-required": "键名是必需的",
@@ -4593,21 +5272,21 @@
"remove-from-legend": "从图例中移除数据键",
"exclude-from-stacking": "从堆叠中排除(仅适用于'堆叠'模式)",
"line-settings": "线设置",
- "show-line": "显示线",
- "fill-line": "填充线",
+ "show-line": "显示线条",
+ "fill-line": "填充线条",
"fill-line-opacity": "填充透明度",
"points-settings": "点设置",
"show-points": "显示点",
"points-line-width": "点的线宽",
"points-radius": "点的半径",
- "point-shape": "点形状",
+ "point-shape": "形状",
"point-shape-circle": "圆",
"point-shape-cross": "十字",
"point-shape-diamond": "菱形",
"point-shape-square": "矩形",
"point-shape-triangle": "三角形",
"point-shape-custom": "自定义函数",
- "point-shape-draw-function": "点形状绘制函数",
+ "point-shape-draw-function": "形状绘制函数",
"show-separate-axis": "显示分离的轴",
"axis-position-left": "左侧",
"axis-position-right": "右侧",
@@ -4618,7 +5297,7 @@
"comparison-values-label": "历史值标签",
"comparison-line-color": "对比线颜色",
"threshold-settings": "阈值设置",
- "use-as-threshold": "使用键值作为阈值",
+ "use-as-threshold": "使用遥测作为阈值",
"threshold-line-width": "阈值线宽",
"threshold-color": "阈值颜色",
"common-pie-settings": "常用饼图设置",
@@ -4627,22 +5306,22 @@
"tilt": "倾斜",
"common-pie-settings-range-error": "值应在0到1的范围内",
"stroke-settings": "描边设置",
- "width-pixels": "宽度 (px)",
+ "width-pixels": "宽度(px)",
"show-labels": "显示标签",
"animation-settings": "动画设置",
- "animated-pie": "启用饼图动画 (实验性)",
+ "animated-pie": "启用饼图动画",
"border-settings": "边框设置",
"border-width": "边框宽度",
"border-color": "边框颜色",
- "legend-settings": "图例设置",
+ "legend-settings": "设置图例",
"display-legend": "显示图例",
"labels-font-color": "标签字体颜色",
- "series": "系列",
- "add-series": "添加系列",
- "series-settings": "系列设置",
- "remove-series": "删除系列",
- "no-series": "未配置系列",
- "no-series-error": "至少应指定一个系列",
+ "series": "时间序列",
+ "add-series": "添加",
+ "series-settings": "设置",
+ "remove-series": "删除",
+ "no-series": "没有设置时间序列",
+ "no-series-error": "至少指定一个时间序列",
"chart-appearance": "图表外观",
"vertical-grid-lines": "垂直网格线",
"horizontal-grid-lines": "水平网格线",
@@ -4652,19 +5331,87 @@
"axis": "轴",
"vertical-axis": "垂直轴",
"ticks": "刻度",
- "horizontal-axis": "水平轴"
+ "horizontal-axis": "水平轴",
+ "shape-empty-circle": "空心圆形",
+ "shape-circle": "圆形",
+ "shape-rect": "长方形",
+ "shape-round-rect": "矩形",
+ "shape-triangle": "三角形",
+ "shape-diamond": "菱形",
+ "shape-pin": "Pin",
+ "shape-arrow": "箭头",
+ "shape-none": "无",
+ "line-type-solid": "实线",
+ "line-type-dashed": "虚线",
+ "line-type-dotted": "点画线",
+ "label-position-top": "上",
+ "label-position-bottom": "下",
+ "label-position-outside": "外部",
+ "label-position-inside": "内部",
+ "fill": "填充",
+ "fill-type-none": "无",
+ "fill-type-solid": "实线",
+ "fill-type-opacity": "透明度",
+ "fill-type-gradient": "渐变色",
+ "background": "背景色",
+ "opacity": "透明度",
+ "gradient-stops": "渐变值",
+ "gradient-start": "起始点",
+ "gradient-end": "结束点",
+ "animation": {
+ "animation": "动画",
+ "animation-threshold": "动画阈值",
+ "animation-duration": "动画时长",
+ "animation-easing": "动画方式",
+ "animation-delay": "动画延迟",
+ "update-animation-duration": "更新时长",
+ "update-animation-easing": "更新方式",
+ "update-animation-delay": "更新延迟"
+ },
+ "chart-axis": {
+ "scale": "比例",
+ "scale-min": "最小",
+ "scale-max": "最大",
+ "scale-auto": "自动"
+ },
+ "bar": {
+ "show-border": "显示边框",
+ "border-width": "边框宽度",
+ "border-radius": "边框圆角",
+ "bar-width": "宽度",
+ "label": "标签",
+ "label-hint": "在bar上显示标签。",
+ "series-label-hint": "显示具有数值的标签。",
+ "label-background": "标签背景"
+ }
},
"color": {
"color-settings": "颜色设置",
"color-type-constant": "固定值",
+ "color-type-gradient": "渐变色",
"color-type-range": "数值范围",
"color-type-function": "函数",
"color": "颜色",
"value-range": "数值范围",
"from": "从",
- "to": "至",
+ "to": "到",
"color-function": "颜色函数",
- "copy-color-settings-from": "从其他处复制颜色设置"
+ "copy-color-settings-from": "复制其他颜色设置",
+ "copy-from": "复制",
+ "settings-type": "类型设置",
+ "basic-mode": "基础",
+ "advanced-mode": "高级",
+ "entity-alias": "实体别名",
+ "entity-attribute": "实体属性",
+ "gradient-color": "渐变色",
+ "gradient-color-min": "颜色",
+ "gradient-start": "起始点",
+ "gradient-start-min": "起始",
+ "gradient-end": "结束点",
+ "gradient-end-min": "结束",
+ "start-value": "起始值",
+ "end-value": "结束植",
+ "gradient-type": "渐变类型"
},
"dashboard-state": {
"dashboard-state-settings": "仪表板状态设置",
@@ -4749,21 +5496,16 @@
"Custom interval": "自定义间隔",
"Interval": "间隔",
"Step size": "步长",
- "Ok": "Ok"
+ "Ok": "确定"
}
},
"doughnut": {
- "total": "总计",
+ "doughnut-appearance": "外观",
"layout": "布局",
"layout-default": "默认",
- "layout-with-total": "带总计",
- "auto-scale": "自动缩放",
- "clockwise-layout": "顺时针布局",
- "sort-series": "按标签对系列排序",
- "central-total-value": "中央总计值",
- "tooltip-value-type-absolute": "绝对值",
- "tooltip-value-type-percentage": "百分比",
- "doughnut-card-style": "圆环样式"
+ "layout-with-total": "总计",
+ "central-total-value": "中心数值",
+ "doughnut-card-style": "样式"
},
"entities-hierarchy": {
"hierarchy-data-settings": "层次数据设置",
@@ -4773,7 +5515,7 @@
"node-opened-function": "展开函数",
"node-disabled-function": "禁用函数",
"display-settings": "显示设置",
- "node-icon-function": "icon函数",
+ "node-icon-function": "图标函数",
"node-text-function": "文本函数",
"sort-settings": "排序设置",
"nodes-sort-function": "排序函数"
@@ -4796,20 +5538,20 @@
"event-key-contains": "事件键包含...",
"show-connector": "显示连接器",
"connector-state-param-key": "连接器状态参数键",
- "status": "状态",
"message": "消息",
+ "level": "层级",
"created-time": "创建时间"
},
"gauge": {
"default-color": "默认颜色",
- "radial-gauge-settings": "径向量规设置",
+ "radial-gauge-settings": "量规设置",
"ticks-settings": "刻度设置",
"min-value": "最小值",
"max-value": "最大值",
"min-value-short": "最小值",
"max-value-short": "最大值",
- "start-ticks-angle": "刻度起始角度",
- "ticks-angle": "刻度角度",
+ "start-ticks-angle": "起始角度",
+ "ticks-angle": "结束角度",
"major-ticks": "主刻度",
"major-ticks-count": "主刻度数量",
"major-ticks-color": "主刻度颜色",
@@ -4817,35 +5559,35 @@
"minor-ticks-count": "次刻度数量",
"minor-ticks-color": "次刻度颜色",
"tick-numbers-font": "刻度数字字体",
- "unit-title-settings": "单位标题设置",
- "show-unit-title": "显示单位标题",
- "unit-title": "单位标题",
- "title-font": "标题文字字体",
+ "unit-title-settings": "单位设置",
+ "show-unit-title": "显示单位",
+ "unit-title": "单位",
+ "title-font": "字体",
"units-settings": "单位设置",
- "units-font": "单位文字字体",
+ "units-font": "字体",
"value-box-settings": "数值框设置",
"show-value-box": "显示数值框",
"value-box": "数值框",
- "value-int": "整数部位数",
+ "value-int": "整数位数",
"value-text": "数值文本",
- "value-text-shadow": "数值文本阴影",
+ "value-text-shadow": "文本阴影",
"value-font": "数值字体",
- "rect-stroke-color-start": "矩形边框颜色 - 渐变起始",
- "rect-stroke-color-end": "矩形边框颜色 - 渐变结束",
+ "rect-stroke-color-start": "边框色渐变起始",
+ "rect-stroke-color-end": "边框色渐变结束",
"background-color": "背景颜色",
"shadow-color": "阴影颜色",
- "value-box-rect-stroke-color": "数值框矩形描边颜色",
- "value-box-rect-stroke-color-end": "数值框矩形描边颜色 - 渐变结束",
+ "value-box-rect-stroke-color": "数值框描边",
+ "value-box-rect-stroke-color-end": "数值框描边色渐变结束",
"value-box-background-color": "数值框背景颜色",
"value-box-shadow-color": "数值框阴影颜色",
- "plate-settings": "背景板设置",
- "show-plate-border": "显示背景板边框",
- "plate-color": "背景板颜色",
+ "plate-settings": "背景设置",
+ "show-plate-border": "显示背景边框",
+ "plate-color": "背景颜色",
"needle-settings": "指针设置",
- "needle-circle-size": "指针圆圈尺寸",
+ "needle-circle-size": "针座尺寸",
"needle-color": "指针颜色",
- "needle-color-start": "指针颜色 - 渐变起始",
- "needle-color-end": "指针颜色 - 渐变结束",
+ "needle-color-start": "指针颜色渐变起始",
+ "needle-color-end": "指针颜色渐变结束",
"needle-color-shadow-up": "指针上半部分阴影颜色",
"needle-color-shadow-down": "指针下半部分阴影颜色",
"highlights-settings": "高亮设置",
@@ -4858,8 +5600,8 @@
"add-highlight": "添加高亮",
"animation-settings": "动画设置",
"enable-animation": "启用动画",
- "animation-duration-rule": "动画持续时间和规则",
- "animation-duration": "动画持续时间",
+ "animation-duration-rule": "动画保持规则",
+ "animation-duration": "动画保持时间",
"animation-rule": "动画规则",
"animation-linear": "线性",
"animation-quad": "二次方",
@@ -4877,11 +5619,11 @@
"bar-stroke-width": "条形图描边宽度",
"bar-stroke-color": "条形图描边颜色",
"bar-background-color": "量规条形图背景颜色",
- "bar-background-color-end": "条形图背景颜色 - 渐变结束",
+ "bar-background-color-end": "条形图背景颜色-渐变结束",
"progress-bar-color": "进度条颜色",
"progress-bar": "进度条",
- "progress-bar-color-start": "进度条颜色 - 渐变起始",
- "progress-bar-color-end": "进度条颜色 - 渐变结束",
+ "progress-bar-color-start": "进度条颜色-渐变起始",
+ "progress-bar-color-end": "进度条颜色-渐变结束",
"major-ticks-names": "主刻度名称",
"show-stroke-ticks": "显示刻度描边",
"major-ticks-font": "主刻度字体",
@@ -4895,16 +5637,18 @@
"common-settings": "通用量规设置",
"gauge-type": "量规类型",
"gauge-type-arc": "弧形",
- "gauge-type-donut": "甜甜圈",
+ "gauge-type-donut": "圆圈",
"gauge-type-horizontal-bar": "水平条形",
"gauge-type-vertical-bar": "垂直条形",
- "donut-start-angle": "起始角度",
+ "donut-start-angle": "角度",
"bar-settings": "条形图设置",
- "relative-bar-width": "相对条形宽度",
- "neon-glow-brightness": "霓虹灯光效亮度,(0-100),0 - 禁用效果",
- "stripes-thickness": "条纹的厚度,0 - 无条纹",
- "rounded-line-cap": "显示圆角线帽",
- "bar-color-settings": "条形图颜色设置",
+ "relative-bar-width": "条形宽度",
+ "neon-glow-brightness": "霓虹灯光效亮度(0-100)0-禁用效果",
+ "neon-glow-brightness-hint": "0-禁用效果",
+ "stripes-thickness": "条纹的厚度",
+ "stripes-thickness-hint": "0-无条纹",
+ "rounded-line-cap": "圆角线帽",
+ "bar-color-settings": "颜色设置",
"use-precise-level-color-values": "使用精确的颜色级别",
"bar-colors": "条形图颜色,从低到高",
"color": "颜色",
@@ -4919,7 +5663,7 @@
"gauge-title-font": "量规标题字体",
"unit-title-and-timestamp-settings": "单位标题和时间戳设置",
"show-timestamp": "显示值时间戳",
- "timestamp-format": "时间戳格式",
+ "timestamp-format": "时间格式",
"label-font": "显示在数值下方的标签字体",
"value-settings": "数值设置",
"show-value": "显示数值文本",
@@ -4927,8 +5671,8 @@
"show-min-max": "显示最小和最大值",
"min-max-font": "最小和最大标签字体",
"show-ticks": "显示刻度",
- "tick-width": "刻度宽度",
- "tick-color": "刻度颜色",
+ "tick-width": "宽度",
+ "tick-color": "颜色",
"tick-values": "刻度值",
"no-tick-values": "未配置刻度值",
"add-tick-value": "添加刻度值",
@@ -4936,13 +5680,22 @@
"units-title": "单位标题",
"value": "数值",
"ticks": "刻度",
- "arrow-and-scale-color": "箭头和刻度默认颜色",
- "scale-settings": "刻度设置",
- "scale": "刻度尺寸",
- "scale-color": "刻度颜色",
- "compass-appearance": "指南针外观",
+ "arrow-and-scale-color": "默认颜色",
+ "scale-settings": "设置",
+ "scale": "尺寸",
+ "scale-color": "颜色",
+ "compass-appearance": "外观",
+ "label": "标签",
"labels": "标签",
- "label-style": "标签样式"
+ "label-style": "标签样式",
+ "simple-gauge-type": "类型",
+ "gauge-bar-background": "量规背景",
+ "bar-color": "颜色",
+ "min-and-max-value": "最小和最大值",
+ "min-and-max-label": "最小和最大标签",
+ "font": "字体",
+ "tick-width-and-color": "刻度宽度和颜色",
+ "min-max-validation-text": "最大值必须大于最小值"
},
"gpio": {
"pin": "引脚",
@@ -4964,10 +5717,6 @@
"no-gpio-leds": "未配置GPIO LED",
"add-gpio-led": "添加GPIO LED"
},
- "html-card": {
- "html": "HTML",
- "css": "CSS"
- },
"input-widgets": {
"attribute-not-allowed": "属性参数不能在此部件中使用",
"blocked-location": "在浏览器中阻止地理位置",
@@ -5162,7 +5911,7 @@
},
"label-widget": {
"label-pattern": "模式",
- "label-pattern-hint": "提示:例如 'Text ${keyName} units.' or ${#<key index>} units'",
+ "label-pattern-hint": "提示:例如文本${keyName}单位或${#<key index>}单位'",
"label-pattern-required": "必须提供模式",
"label-position": "位置(相对于背景的百分比)",
"x-pos": "X",
@@ -5236,14 +5985,18 @@
"display-columns": "要显示的列",
"column": "列",
"no-columns-found": "找不到列",
- "no-columns-matching": "未找到 '{{column}}'。"
+ "no-columns-matching": "未找到'{{column}}'。"
},
"range-chart": {
"chart": "图表",
"data-zoom": "数据缩放",
+ "range-chart-appearance": "图表范围外观",
"range-colors": "范围颜色",
"out-of-range-color": "超出范围颜色",
+ "show-range-thresholds": "显示范围阈值",
+ "range-thresholds-settings": "范围阈值设置",
"fill-area": "填充区域",
+ "fill-area-opacity": "填充区域透明度",
"range-chart-style": "范围图样式"
},
"rpc": {
@@ -5310,13 +6063,13 @@
"select-entity": "选择实体",
"select-entity-hint": "提示:选择后在地图上点击以设置位置",
"tooltips": {
- "placeMarker": "点击以放置 '{{entityName}}' 实体",
+ "placeMarker": "点击以放置'{{entityName}}'实体",
"firstVertex": "'{{entityName}}' 的多边形:点击以放置第一个点",
"firstVertex-cut": "点击以放置第一个点",
"continueLine": "'{{entityName}}' 的多边形:点击以继续绘制",
"continueLine-cut": "点击以继续绘制",
"finishLine": "点击任意现有标记以完成",
- "finishPoly": "'{{entityName}}' 的多边形:点击第一个标记以完成并保存",
+ "finishPoly": "'{{entityName}}'的多边形:点击第一个标记以完成并保存",
"finishPoly-cut": "点击第一个标记以完成并保存",
"finishRect": "'{{entityName}}' 的多边形:点击以完成并保存",
"startCircle": "'{{entityName}}' 的圆:点击以放置圆心",
@@ -5438,7 +6191,7 @@
"show-polygon-tooltip": "显示多边形文字提示",
"auto-close-polygon-tooltips": "自动关闭多边形文字提示",
"use-polygon-tooltip-function": "使用多边形文字提示函数",
- "polygon-tooltip-pattern": "文字提示(例如 'Text ${keyName} units.' or Link text')",
+ "polygon-tooltip-pattern": "文字提示(例如'文本${keyName}单位'或连接文本')",
"polygon-tooltip-function": "多边形文字提示函数",
"polygon-color": "多边形颜色",
"polygon-opacity": "多边形不透明度",
@@ -5463,7 +6216,7 @@
"show-circle-tooltip": "显示圆文字提示",
"auto-close-circle-tooltips": "自动关闭圆文字提示",
"use-circle-tooltip-function": "使用圆文字提示函数",
- "circle-tooltip-pattern": "文字提示 (例如 'Text ${keyName} units.' or Link text')",
+ "circle-tooltip-pattern": "文字提示(例如'文本${keyName}单位'或连接文本')",
"circle-tooltip-function": "圆文字提示函数",
"circle-fill-color": "圆填充颜色",
"circle-fill-color-opacity": "圆填充颜色不透明度",
@@ -5527,10 +6280,10 @@
"marker-color-function": "标记颜色函数"
},
"markdown": {
- "use-markdown-text-function": "使用 Markdown/HTML 值函数",
- "markdown-text-function": "Markdown/HTML 值函数",
- "markdown-text-pattern": "Markdown/HTML 模板 (使用变量的 markdown 或 HTML,例如 '${entityName} or ${keyName} - some text.')",
- "apply-default-markdown-style": "应用默认的 Markdown 样式",
+ "use-markdown-text-function": "使用Markdown/HTML值函数",
+ "markdown-text-function": "Markdown/HTML值函数",
+ "markdown-text-pattern": "Markdown/HTML模板(使用变量的markdown或HTML,例如 '${entityName}或${keyName}。')",
+ "apply-default-markdown-style": "应用默认Markdown样式",
"markdown-css": "Markdown/HTML CSS"
},
"simple-card": {
@@ -5539,6 +6292,49 @@
"label-position-left": "左侧",
"label-position-top": "顶部"
},
+ "single-switch": {
+ "behavior": "行为",
+ "layout": "布局",
+ "layout-right": "居右",
+ "layout-left": "居左",
+ "layout-centered": "居中",
+ "auto-scale": "自动",
+ "label": "标签",
+ "icon": "图标",
+ "switch-color": "开关颜色",
+ "on": "打开",
+ "off": "关闭",
+ "disabled": "禁用",
+ "tumbler-color": "缩略图颜色",
+ "on-label": "打开标签",
+ "off-label": "闭关标签",
+ "switch": "开关"
+ },
+ "slider": {
+ "behavior": "行为",
+ "initial-value": "初始值",
+ "initial-value-hint": "获取滑块的初始值。",
+ "on-value-change": "设置值",
+ "on-value-change-hint": "更改滑块数值时触发操作。",
+ "layout": "布局",
+ "layout-default": "默认",
+ "layout-extended": "扩展",
+ "layout-simplified": "精简",
+ "auto-scale": "自动",
+ "icon": "图标",
+ "value": "数值",
+ "range": "范围",
+ "min": "最小值",
+ "max": "最大值",
+ "range-ticks": "刻度范围",
+ "tick-marks": "刻度线",
+ "colors": "颜色",
+ "main": "前景色",
+ "background": "背景色",
+ "left-icon": "左边图标",
+ "right-icon": "右边图标",
+ "slider": "滑块"
+ },
"value-card": {
"layout": "布局",
"layout-square": "正方形",
@@ -5554,6 +6350,16 @@
"value-card-style": "数值卡片样式",
"auto-scale": "自动缩放"
},
+ "label-card": {
+ "auto-scale": "自动",
+ "label": "标签",
+ "icon": "图标",
+ "label-card-style": "样式"
+ },
+ "label-value-card": {
+ "value": "数值",
+ "label-value-card-style": "标签数值样式"
+ },
"liquid-level-card": {
"layout-simple": "简单",
"layout-percentage": "百分比",
@@ -5561,21 +6367,22 @@
"layout": "布局",
"background-overlay": "值背景叠加",
"total-volume": "总体积",
- "tank": "储罐",
+ "total-volume-units": "总体积单位",
+ "tank": "容器",
"shape": "形状",
"datasource-units": "数据源单位",
- "widget-units": "小部件单位",
+ "widget-units": "部件单位",
"decimals": "小数位数",
"liquid": "液体",
"liquid-color": "液体颜色",
- "value": "值",
+ "value": "数值",
"value-font": "值字体",
"level": "水位",
"last-update": "最后更新",
"shape-by-attribute": "按属性名称设置储罐形状",
"tooltip-background": "背景颜色",
"background-blur": "背景模糊",
- "tank-color": "储罐颜色",
+ "tank-color": "容器颜色",
"static": "静态",
"see-examples": "查看示例",
"attribute": "属性",
@@ -5590,15 +6397,15 @@
"h-cylinder": "水平圆柱体",
"h-capsule": "水平胶囊",
"h-elliptical_2_1": "水平2:1椭圆",
- "icon": "卡片图标",
- "title": "卡片标题",
+ "icon": "图标",
+ "title": "标题",
"units": "单位",
"color-and-font": "颜色和字体",
"shape-attribute-name": "属性名称",
"total-volume-required": "需要总体积。",
"attribute-name-required": "需要属性名称。",
- "attribute-key-not-set": "未设置属性 '{{attributeName}}' 键",
- "attribute-key-invalid": "属性 '{{attributeName}}' 键无效"
+ "attribute-key-not-set": "未设置属性'{{attributeName}}'键",
+ "attribute-key-invalid": "属性'{{attributeName}}'键无效"
},
"aggregated-value-card": {
"subtitle": "副标题",
@@ -5640,16 +6447,33 @@
"icon": "图标",
"value": "数值",
"range": "范围",
- "min": "最小",
- "max": "最大",
- "range-ticks": "范围刻度",
- "bar": "进度条",
- "bar-color": "进度条颜色",
- "bar-background": "进度条背景",
- "progress-bar-card-style": "进度条卡片样式"
+ "min": "最小值",
+ "max": "最大值",
+ "range-ticks": "刻度范围",
+ "bar": "条形",
+ "bar-color": "条形颜色",
+ "bar-background": "条形背景色",
+ "progress-bar-card-style": "条形卡片样式"
+ },
+ "notification": {
+ "max-notification-display": "显示的最大通知数量",
+ "counter": "计数提示",
+ "counter-hint": "如果启用部件标题将显示通知计数",
+ "icon": "图标",
+ "counter-value": "数值",
+ "counter-color": "颜色",
+ "notification-button": "通知按钮",
+ "button-view-all": "查看全部",
+ "button-filter": "过滤",
+ "type-filter": "类型",
+ "button-mark-read": "全部已读",
+ "notification-types": "通知类型",
+ "notification-type": "通知类型",
+ "search-type": "查询类型",
+ "any-type": "任意类型"
},
"alarm-count": {
- "alarm-count-card-style": "告警计数卡片样式"
+ "alarm-count-card-style": "告警告计数卡片样式"
},
"entity-count": {
"entity-count-card-style": "实体计数卡片样式"
@@ -5666,16 +6490,16 @@
"auto-scale": "自动缩放"
},
"table": {
- "common-table-settings": "常规表格设置",
+ "common-table-settings": "常规设置",
"enable-search": "启用搜索",
- "enable-sticky-header": "始终显示表头",
- "enable-sticky-action": "始终显示操作列",
+ "enable-sticky-header": "显示表头",
+ "enable-sticky-action": "显示操作列",
"hidden-cell-button-display-mode": "隐藏单元格按钮操作显示模式",
"show-empty-space-hidden-action": "显示空白区域而不是隐藏单元格按钮操作",
"dont-reserve-space-hidden-action": "不为隐藏的操作按钮预留空间",
- "display-timestamp": "显示时间戳列",
+ "display-timestamp": "显示时间",
"display-pagination": "显示分页",
- "default-page-size": "默认页面大小",
+ "default-page-size": "默认大小",
"use-entity-label-tab-name": "在选项卡名称中使用实体标签",
"hide-empty-lines": "隐藏空行",
"row-style": "行样式",
@@ -5698,22 +6522,22 @@
"display-entity-type": "显示实体类型列",
"default-sort-order": "默认排序顺序",
"custom-title": "自定义表头标题",
- "column-width": "列宽度(px 或 %)",
- "default-column-visibility": "默认列可见性",
- "column-visibility-visible": "可见",
+ "column-width": "列宽度(px或%)",
+ "default-column-visibility": "默认显示",
+ "column-visibility-visible": "显示",
"column-visibility-hidden": "隐藏",
"column-visibility-hidden-mobile": "在移动模式下隐藏",
- "column-selection-to-display": "'显示列' 中的列选择",
+ "column-selection-to-display": "'显示列'中的列选择",
"column-selection-to-display-enabled": "启用",
"column-selection-to-display-disabled": "禁用",
- "alarms-table-title": "告警表标题",
+ "alarms-table-title": "告警表格标题",
"enable-alarms-selection": "启用告警选择",
"enable-alarms-search": "启用告警搜索",
"enable-alarm-filter": "启用告警过滤",
"display-alarm-details": "显示告警详细信息",
"allow-alarms-ack": "允许确认告警",
"allow-alarms-clear": "允许清除告警",
- "display-alarm-activity": "显示告警活动",
+ "display-alarm-activity": "显示活动告警",
"allow-alarms-assign": "允许分配告警",
"columns": "列",
"column-settings": "列设置",
@@ -5726,11 +6550,184 @@
"table-buttons": "表格按钮",
"pagination": "分页",
"rows": "行",
- "timeseries-column-error": "至少应指定一个时间序列列",
- "alarm-column-error": "至少应指定一个告警列",
- "table-tabs": "表格标签",
+ "timeseries-column-error": "必须指定一个时间序序列",
+ "alarm-column-error": "必须指定一个告警数据列",
+ "table-tabs": "标签",
"show-cell-actions-menu-mobile": "在移动模式下显示单元格操作下拉菜单"
},
+ "latest-chart": {
+ "total": "总数",
+ "auto-scale": "自动",
+ "clockwise-layout": "顺时针方向",
+ "sort-series": "标签排序",
+ "tooltip-value-type-absolute": "绝对",
+ "tooltip-value-type-percentage": "百分比"
+ },
+ "pie-chart": {
+ "pie-chart-appearance": "外观",
+ "label": "标签",
+ "border": "标签",
+ "radius": "圆角",
+ "pie-chart-card-style": "样式"
+ },
+ "radar-chart": {
+ "radar-appearance": "外观",
+ "shape": "形状",
+ "shape-polygon": "多边形",
+ "shape-circle": "圆形",
+ "color": "颜色",
+ "line": "线条",
+ "points": "点",
+ "points-label": "点标签",
+ "radar-axis": "雷达轴",
+ "axis-label": "轴标签",
+ "ticks-label": "刻度标签",
+ "radar-chart-style": "样式"
+ },
+ "time-series-chart": {
+ "chart": "图表",
+ "chart-style": "样式",
+ "data-zoom": "数据缩放",
+ "stack-mode": "堆叠模式",
+ "stack-mode-hint": "图表上的堆栈具有同一单元的序列将放置在一起。",
+ "axes": "坐标",
+ "y-axes": "Y轴",
+ "line-type": "线条类型",
+ "line-width": "线条宽度",
+ "type-line": "线条",
+ "type-bar": "条形",
+ "type-point": "点",
+ "no-aggregation-bar-width-strategy": "非聚合数据的条形宽度",
+ "no-aggregation-bar-width-strategy-group": "分组",
+ "no-aggregation-bar-width-strategy-separate": "分隔",
+ "bar-group-width": "条形分组宽度",
+ "bar-width": "条形宽度",
+ "bar-width-relative": "百分比",
+ "bar-width-absolute": "绝对(ms)",
+ "comparison": {
+ "comparison": "数据比较",
+ "comparison-hint": "仅与历史数据一起比较!",
+ "show": "显示",
+ "settings": "比较设置",
+ "show-values-for-comparison": "显示历史数据进行比较",
+ "comparison-values-label": "数据键标签",
+ "comparison-values-label-auto": "自动",
+ "comparison-data-color": "颜色"
+ },
+ "threshold": {
+ "thresholds": "阈值",
+ "source": "源",
+ "key-value": "键/值",
+ "no-thresholds": "未配置阈值",
+ "add-threshold": "添加",
+ "type-constant": "常量",
+ "type-latest-key": "键",
+ "type-entity": "实体",
+ "threshold-settings": "设置阈值",
+ "remove-threshold": "移除阈值",
+ "threshold-value-required": "阈值必填。",
+ "key-required": "键必填。",
+ "entity-key-required": "实体必填。",
+ "line-appearance": "线条外观",
+ "line-color": "线条颜色",
+ "start-symbol": "起始",
+ "end-symbol": "结束",
+ "symbol-size": "尺寸",
+ "label": "标签",
+ "label-position-start": "起始",
+ "label-position-middle": "中间",
+ "label-position-end": "结束",
+ "label-position-inside-start": "起始",
+ "label-position-inside-start-top": "起始上",
+ "label-position-inside-start-bottom": "起始下",
+ "label-position-inside-middle": "中间",
+ "label-position-inside-middle-top": "中间上",
+ "label-position-inside-middle-bottom": "中间下",
+ "label-position-inside-end": "结束",
+ "label-position-inside-end-top": "结束上",
+ "label-position-inside-end-bottom": "结束下",
+ "label-background": "标签背景"
+ },
+ "state": {
+ "states": "状态",
+ "label": "标签",
+ "ticks-value": "刻度",
+ "source": "源",
+ "value-range": "值/范围",
+ "no-states": "未配置状态",
+ "add-state": "添加",
+ "type-constant": "常量",
+ "type-range": "范围",
+ "from": "从",
+ "to": "到",
+ "remove-state": "移除"
+ },
+ "grid": {
+ "grid": "网格",
+ "background-color": "背景颜色",
+ "border": "边框"
+ },
+ "axis": {
+ "axes": "坐标",
+ "x-axis": "X轴",
+ "y-axis": "Y轴",
+ "y-axis-settings": "Y轴设置",
+ "comparison-x-axis-settings": "比较X轴设置",
+ "remove-y-axis": "移除Y轴",
+ "id": "编号",
+ "label": "标签",
+ "position": "位置",
+ "position-left": "左",
+ "position-right": "右",
+ "position-top": "上",
+ "position-bottom": "下",
+ "tick-labels": "刻度标签",
+ "ticks-formatter-function": "刻度格式化函数",
+ "ticks-generator-function": "刻度生成函数",
+ "show-ticks": "显示刻度",
+ "show-line": "显示线条",
+ "show-split-lines": "显示分隔线",
+ "show-split-lines-x-axis-hint": "启用则显示垂直线。",
+ "show-split-lines-y-axis-hint": "启用则显示水平线。",
+ "ticks-interval": "刻度间隔",
+ "ticks-interval-hint": "强制设置轴的分段间隔。",
+ "split-number": "分隔号码",
+ "split-number-hint": "轴分成的多少段数量。",
+ "min": "最小值",
+ "max": "最大值",
+ "show": "显示",
+ "add-y-axis": "添加"
+ },
+ "series": {
+ "legend-settings": "设置图例",
+ "show-in-legend": "显示图例",
+ "show-in-legend-hint": "在图例中显示系列名称和数据。",
+ "hidden-by-default": "默认情况下隐藏",
+ "hidden-by-default-hint": "默认情况下使系列隐藏在图例中。",
+ "series-type": "序列类型",
+ "type": "类型",
+ "type-line": "线条类型",
+ "type-bar": "条形",
+ "line": {
+ "line": "线条",
+ "show-line": "显示线条",
+ "step-line": "斜线",
+ "step-type-start": "起始",
+ "step-type-middle": "中间",
+ "step-type-end": "结束",
+ "smooth-line": "流畅"
+ },
+ "point": {
+ "points": "点",
+ "show-points": "显示",
+ "point-label": "标签",
+ "point-label-hint": "显示具有超过序列点的值的标签。",
+ "point-label-background": "背景",
+ "point-shape": "形状",
+ "point-size": "尺寸"
+ }
+ }
+ },
"wind-speed-direction": {
"layout": "布局",
"layout-default": "默认",
@@ -5756,9 +6753,79 @@
"value-source": "值来源",
"predefined-value": "预定义值",
"entity-attribute": "从实体属性中获取的值",
- "value": "值",
+ "value": "数值",
+ "value-required": "数值必填。",
+ "key-required": "键必填。",
+ "entity-key-required": "实体必填。",
"source-entity-alias": "源实体别名",
- "source-entity-attribute": "源实体属性"
+ "source-entity-attribute": "源实体属性",
+ "type-constant": "常量",
+ "type-latest-key": "键",
+ "type-entity": "实体"
+ },
+ "rpc-state": {
+ "initial-state": "初始状态",
+ "initial-state-hint": "获取组件的初始状态(开/关)。",
+ "disabled-state": "禁用状态",
+ "disabled-state-hint": "配置禁用条件。",
+ "turn-on": "打开",
+ "turn-on-hint": "当滑块切换至“开”时触发的操作",
+ "turn-off": "关闭",
+ "turn-off-hint": "当滑块切换至“关闭”时触发的操作",
+ "on": "打开",
+ "off": "关闭",
+ "disabled": "禁用"
+ },
+ "value-action": {
+ "do-nothing": "无任何动作",
+ "execute-rpc": "执行RPC",
+ "get-attribute": "获取属性",
+ "set-attribute": "设置属性",
+ "get-time-series": "获取遥测",
+ "get-dashboard-state": "获取仪表板状态",
+ "add-time-series": "添加遥测",
+ "execute-rpc-text": "执行RPC方法'{{methodName}}'",
+ "get-attribute-text": "使用属性'{{key}}'",
+ "get-time-series-text": "使用遥测'{{key}}'",
+ "get-dashboard-state-text": "使用仪表板状态",
+ "when-dashboard-state-is-text": "当仪表板状态为'{{state}}'",
+ "when-dashboard-state-function-is-text": "当(仪表板状态)是'{{state}}'",
+ "set-attribute-to-value-text": "设置'{{key}}'属性值:{{value}}",
+ "add-time-series-value-text": "添加'{{key}}'遥测值:{{value}}",
+ "set-attribute-text": "设置'{{key}}'属性",
+ "add-time-series-text": "添加'{{key}}'遥测",
+ "action": "动作",
+ "value": "数值",
+ "init-value-hint": "在设备发送数据之前将值设置。",
+ "method": "方法",
+ "method-name-required": "方法名称必填。",
+ "request-timeout-ms": "RPC请求超时(ms)",
+ "request-timeout-required": "RPC请求超时必填。",
+ "min-request-timeout-error": "请求超时值应更大或等于5000(5秒)。",
+ "request-persistent": "RPC请求持久化",
+ "persistent-polling-interval": "持久化的轮训间隔(ms)",
+ "persistent-polling-interval-hint": "轮询获取持久化RPC的命令响应",
+ "persistent-polling-interval-required": "轮询获取持久化必填。",
+ "min-persistent-polling-interval-error": "持续的轮询间隔值应>=1000 ms(1秒)。",
+ "attribute-scope": "作用域",
+ "attribute-key": "键名称",
+ "attribute-key-required": "键名称必填。",
+ "time-series-key": "键名称",
+ "time-series-key-required": "键名称必填。",
+ "action-result-converter": "动作转换",
+ "converter-none": "无",
+ "converter-function": "函数",
+ "converter-constant": "常量",
+ "converter-value": "数值",
+ "parse-value-function": "解析函数",
+ "state-when-result-is": "'{{state}}'结果是",
+ "parameters": "参数",
+ "convert-value-function": "转换函数",
+ "error": {
+ "target-entity-is-not-set": "目标实体未设置!",
+ "failed-to-perform-action": "无法执行{{ actionLabel }}操作。",
+ "invalid-attribute-scope": " {{entityType}}实体不支持{{scope}}属性作用域。"
+ }
},
"widget-font": {
"font-settings": "字体设置",
@@ -5787,12 +6854,12 @@
"cpu": "CPU",
"ram": "内存",
"disk": "磁盘",
- "cpu-warning-text": "CPU 使用率过高。为了避免系统故障,请优化系统性能。",
- "cpu-critical-text": "CPU 使用率严重过高。为了避免系统故障,请优化系统性能。",
- "ram-warning-text": "内存储备不足。为了避免系统故障,请优化系统性能或增加内存大小。",
- "ram-critical-text": "内存储备严重不足。为了避免系统故障,请优化系统性能或增加内存大小。",
- "disk-warning-text": "磁盘空间不足。为了避免数据丢失,请释放或扩展磁盘空间。",
- "disk-critical-text": "磁盘空间严重不足。为了避免数据丢失,请释放或扩展磁盘空间。"
+ "cpu-warning-text": "CPU使用率过高为了避免系统故障,请优化系统性能。",
+ "cpu-critical-text": "CPU使用率严重过高为了避免系统故障,请优化系统性能。",
+ "ram-warning-text": "内存储备不足为了避免系统故障,请优化系统性能或增加内存大小。",
+ "ram-critical-text": "内存储备严重不足为了避免系统故障,请优化系统性能或增加内存大小。",
+ "disk-warning-text": "磁盘空间不足为了避免数据丢失,请释放或扩展磁盘空间。",
+ "disk-critical-text": "磁盘空间严重不足为了避免数据丢失,请释放或扩展磁盘空间。"
},
"cluster-info": {
"service-id": "服务ID",
@@ -5839,10 +6906,10 @@
"email-feature": "电子邮件",
"sms-feature": "短信",
"slack-feature": "Slack",
- "oauth2-feature": "OAuth 2",
+ "oauth2-feature": "OAuth2.0",
"2fa-feature": "两步验证",
- "feature-configured": "功能已配置\n点击设置",
- "feature-not-configured": "功能未配置\n点击设置"
+ "feature-configured": "功能已配置",
+ "feature-not-configured": "功能未配置"
},
"version-info": {
"title": "版本",
@@ -5857,19 +6924,19 @@
"usage-info": {
"title": "使用情况",
"entities": "实体",
- "api-calls": "API 调用"
+ "api-calls": "API调用"
},
"functions": {
"title": "功能",
- "pe-feature-tooltip": "仅适用于 ThingsBoard 专业版",
- "switch-to-pe": "切换至专业版",
+ "pe-feature-tooltip": "仅适用于ThingsBoard专业版",
+ "switch-to-pe": "切换专业版",
"alarms": "告警",
"dashboards": "仪表盘",
"entities-and-relations": "实体和关系",
"profiles": "配置",
"advanced-features": "高级功能",
"notification-center": "通知中心",
- "api-usage": "API 使用情况",
+ "api-usage": "API使用情况",
"customers": "客户",
"customers-hierarchy": "客户层级",
"roles-and-permissions": "角色和权限",
@@ -5946,7 +7013,7 @@
"install-curl": "从Windows 10 b17063开始,cURL已默认可用。"
},
"replace-access-token": "将$ACCESS_TOKEN替换为您的设备令牌:",
- "content-after": "您还可以使用其他协议,如MQTT、CoAP等。
请按照文档进行操作:
",
+ "content-after": "您还可以使用其他协议如MQTT、CoAP等。
请按照文档进行操作:
",
"how-to-connect-device": "如何连接设备"
},
"step3": {
@@ -5991,8 +7058,8 @@
"phone-input-label": "手机号码",
"phone-input-required": "手机号码必填",
"phone-input-validation": "手机号码无效或不存在",
- "phone-input-pattern": "无效的手机号码。应为E.164格式,例如:{{phoneNumber}}",
- "phone-input-hint": "E.164格式手机号码,例如:{{phoneNumber}}"
+ "phone-input-pattern": "无效的手机号码应为E.164格式例如:{{phoneNumber}}",
+ "phone-input-hint": "E.164格式手机号码例如:{{phoneNumber}}"
},
"custom": {
"widget-action": {
@@ -6010,12 +7077,12 @@
}
},
"paginator": {
- "items-per-page": "每页条数:",
+ "items-per-page": "每页数量:",
"first-page-label": "首页",
"last-page-label": "尾页",
"next-page-label": "下一页",
"previous-page-label": "上一页",
- "items-per-page-separator": "of"
+ "items-per-page-separator": "至"
},
"language": {
"language": "语言"
diff --git a/ui-ngx/src/main.ts b/ui-ngx/src/main.ts
index ed9283d1ca..2fdf60da0c 100644
--- a/ui-ngx/src/main.ts
+++ b/ui-ngx/src/main.ts
@@ -22,6 +22,11 @@ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from '@app/app.module';
import { environment } from '@env/environment';
+import $ from 'jquery';
+
+(window as any).jQuery = $;
+(window as any).$ = $;
+
if (environment.production) {
enableProdMode();
}
diff --git a/ui-ngx/src/styles.scss b/ui-ngx/src/styles.scss
index e9016253f9..4af35913da 100644
--- a/ui-ngx/src/styles.scss
+++ b/ui-ngx/src/styles.scss
@@ -15,8 +15,8 @@
*/
/* You can add global styles to this file, and also import other style files */
-@import '~typeface-roboto/index.css';
-@import '~font-awesome/css/font-awesome.min.css';
+@import 'typeface-roboto/index.css';
+@import 'font-awesome/css/font-awesome.min.css';
@import 'theme.scss';
@import './scss/constants';
@import './scss/animations';
@@ -1050,6 +1050,9 @@ pre.tb-highlight {
margin-bottom: 0;
padding: 8px;
}
+ .mdc-dialog__surface {
+ display: block;
+ }
}
}
diff --git a/ui-ngx/src/tsconfig.app.json b/ui-ngx/src/tsconfig.app.json
index 84be0c97d7..7a029aa8c7 100644
--- a/ui-ngx/src/tsconfig.app.json
+++ b/ui-ngx/src/tsconfig.app.json
@@ -6,7 +6,9 @@
"react", "react-dom", "raphael", "canvas-gauges", "systemjs"]
},
"angularCompilerOptions": {
- "fullTemplateTypeCheck": true
+ "fullTemplateTypeCheck": true,
+ "supportTestBed": true,
+ "supportJitMode": true
},
"files": [
"main.ts",
diff --git a/ui-ngx/src/typings/rawloader.typings.d.ts b/ui-ngx/src/typings/rawloader.typings.d.ts
index 66b312befd..9bd5c14fb3 100644
--- a/ui-ngx/src/typings/rawloader.typings.d.ts
+++ b/ui-ngx/src/typings/rawloader.typings.d.ts
@@ -14,7 +14,7 @@
/// limitations under the License.
///
-declare module '!raw-loader!*' {
- const contents: string;
- export = contents;
+declare module '*.raw' {
+ const content: string;
+ export default content;
}
diff --git a/ui-ngx/tailwind.config.js b/ui-ngx/tailwind.config.js
index e1e1d18d4a..f459324348 100644
--- a/ui-ngx/tailwind.config.js
+++ b/ui-ngx/tailwind.config.js
@@ -170,7 +170,8 @@ module.exports = {
'md:!hidden',
'gap-6',
'gap-7',
- 'gap-10'
+ 'gap-10',
+ 'gt-md:justify-center'
],
corePlugins: {
preflight: false
diff --git a/ui-ngx/tsconfig.json b/ui-ngx/tsconfig.json
index 6ccaf0e518..61712840f4 100644
--- a/ui-ngx/tsconfig.json
+++ b/ui-ngx/tsconfig.json
@@ -15,6 +15,7 @@
"module": "es2020",
"emitDecoratorMetadata": true,
"jsx": "react",
+ "resolveJsonModule": true,
"typeRoots": [
"node_modules/@types",
"src/typings"
diff --git a/ui-ngx/yarn.lock b/ui-ngx/yarn.lock
index 290e4a5500..28b7cb2bd0 100644
--- a/ui-ngx/yarn.lock
+++ b/ui-ngx/yarn.lock
@@ -24,36 +24,34 @@
ts-node "^10.0.0"
tsconfig-paths "^4.1.0"
-"@angular-builders/custom-webpack@~18.0.0":
+"@angular-builders/custom-esbuild@18.0.0":
version "18.0.0"
- resolved "https://registry.yarnpkg.com/@angular-builders/custom-webpack/-/custom-webpack-18.0.0.tgz#b51f8b03d6fff4955f63cbe9e090e0366acc90d2"
- integrity sha512-XSynPSXHq5+nrh7J2snfrcbvm6YGwUGQRzr7OuO3wURJ6CHOD9C+xEAmvEUWW8c1YjEslVNG7aLtCGz7LA4ymw==
+ resolved "https://registry.yarnpkg.com/@angular-builders/custom-esbuild/-/custom-esbuild-18.0.0.tgz#7da11ce47cfa0bbab1e5e07a9bdefb8a6afe8ed8"
+ integrity sha512-SdAGatJMJJjPYrdkUupdRazid3xe1sIj/CAHDdDVP094vZ9CrZs6fgcsOF17waAo6uMxrQCWmPDrTjNgR3CvMQ==
dependencies:
"@angular-builders/common" "2.0.0"
"@angular-devkit/architect" ">=0.1800.0 < 0.1900.0"
"@angular-devkit/build-angular" "^18.0.0"
"@angular-devkit/core" "^18.0.0"
- lodash "^4.17.15"
- webpack-merge "^5.7.3"
-"@angular-devkit/architect@0.1802.7", "@angular-devkit/architect@>=0.1800.0 < 0.1900.0":
- version "0.1802.7"
- resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1802.7.tgz#eb69e6b94473c3ca3428b71c5f31ee418724a8e5"
- integrity sha512-kpcgXnepEXcoxDTbqbGj7Hg1WJLWj1HLR3/FKmC5TbpBf1xiLxiqfkQNwz3BbE/W9JWMLdrXr3GI9O3O2gWPLg==
+"@angular-devkit/architect@0.1802.10", "@angular-devkit/architect@>=0.1800.0 < 0.1900.0":
+ version "0.1802.10"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1802.10.tgz#1ae877263261e33a86fb3a047c3741ab09a9c599"
+ integrity sha512-/xudcHK2s4J/GcL6qyobmGaWMHQcYLSMqCaWMT+nK6I6tu9VEAj/p3R83Tzx8B/eKi31Pz499uHw9pmqdtbafg==
dependencies:
- "@angular-devkit/core" "18.2.7"
+ "@angular-devkit/core" "18.2.10"
rxjs "7.8.1"
-"@angular-devkit/build-angular@18.2.7", "@angular-devkit/build-angular@^18.0.0":
- version "18.2.7"
- resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-18.2.7.tgz#21b72596f270e4a5a16d38224b38e46a609aad80"
- integrity sha512-u8PriYdgddK7k+OS/pOFPD1v4Iu5bztUJZXZVcGeXBZFFdnGFFzKmQw9mfcyGvTMJp2ABgBuuJT0YqYgNfAhzw==
+"@angular-devkit/build-angular@18.2.10", "@angular-devkit/build-angular@^18.0.0":
+ version "18.2.10"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-18.2.10.tgz#7eab5b31856f8d3ce02e89771e3966328d13268f"
+ integrity sha512-47XgJ5fdIqlZUFWAo/XtNsh3y597DtLZWvfsnwShw6/TgyiV0rbL1Z24Rn2TCV1D/b3VhLutAIIZ/i5O5BirxQ==
dependencies:
"@ampproject/remapping" "2.3.0"
- "@angular-devkit/architect" "0.1802.7"
- "@angular-devkit/build-webpack" "0.1802.7"
- "@angular-devkit/core" "18.2.7"
- "@angular/build" "18.2.7"
+ "@angular-devkit/architect" "0.1802.10"
+ "@angular-devkit/build-webpack" "0.1802.10"
+ "@angular-devkit/core" "18.2.10"
+ "@angular/build" "18.2.10"
"@babel/core" "7.25.2"
"@babel/generator" "7.25.0"
"@babel/helper-annotate-as-pure" "7.24.7"
@@ -64,7 +62,7 @@
"@babel/preset-env" "7.25.3"
"@babel/runtime" "7.25.0"
"@discoveryjs/json-ext" "0.6.1"
- "@ngtools/webpack" "18.2.7"
+ "@ngtools/webpack" "18.2.10"
"@vitejs/plugin-basic-ssl" "1.1.0"
ansi-colors "4.1.3"
autoprefixer "10.4.20"
@@ -75,7 +73,7 @@
css-loader "7.1.2"
esbuild-wasm "0.23.0"
fast-glob "3.3.2"
- http-proxy-middleware "3.0.0"
+ http-proxy-middleware "3.0.3"
https-proxy-agent "7.0.5"
istanbul-lib-instrument "6.0.3"
jsonc-parser "3.3.1"
@@ -114,18 +112,18 @@
optionalDependencies:
esbuild "0.23.0"
-"@angular-devkit/build-webpack@0.1802.7":
- version "0.1802.7"
- resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1802.7.tgz#07c64d2763b10bedacff29795b778c81e888ca2c"
- integrity sha512-VrtbrhZ+dht3f0GjtfRLRGRN4XHN/W+/bA9DqckdxVS6SydsrCWNHonvEPmOs4jJmGIGXIu6tUBMcWleTao2sg==
+"@angular-devkit/build-webpack@0.1802.10":
+ version "0.1802.10"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1802.10.tgz#cf55fd2bee8a7d86b91bfeb0c8af9c22957c6727"
+ integrity sha512-WRftK/RJ9rBDDmkx5IAtIpyNo0DJiMfgGUTuZNpNUaJfSfGeaSZYgC7o1++axMchID8pncmI3Hr8L8gaP94WQg==
dependencies:
- "@angular-devkit/architect" "0.1802.7"
+ "@angular-devkit/architect" "0.1802.10"
rxjs "7.8.1"
-"@angular-devkit/core@18.2.7", "@angular-devkit/core@^18.0.0":
- version "18.2.7"
- resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-18.2.7.tgz#f7133c9c50eb1916f8862370be975e4e2b84cca3"
- integrity sha512-1ZTi4A6tEC2bkJ/puCIdIPYhesnlCVOMSDJL/lZAd0hC6X22T4pwu0AEvue7mcP5NbXpQDiBaXOZ3MmCA8PwOA==
+"@angular-devkit/core@18.2.10", "@angular-devkit/core@^18.0.0":
+ version "18.2.10"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-18.2.10.tgz#7565f0c7bf0fa3318d08c4a696e890ab0b670032"
+ integrity sha512-LFqiNdraBujg8e1lhuB0bkFVAoIbVbeXXwfoeROKH60OPbP8tHdgV6sFTqU7UGBKA+b+bYye70KFTG2Ys8QzKQ==
dependencies:
ajv "8.17.1"
ajv-formats "3.0.1"
@@ -134,12 +132,12 @@
rxjs "7.8.1"
source-map "0.7.4"
-"@angular-devkit/schematics@18.2.7":
- version "18.2.7"
- resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-18.2.7.tgz#348cb0d790720a66e8183d6876effc262571086c"
- integrity sha512-j7198lpkOXMG+Gyfln/5aDgBZV7m4pWMzHFhkO3+w3cbCNUN1TVZW0SyJcF+CYaxANzTbuumfvpsYc/fTeAGLw==
+"@angular-devkit/schematics@18.2.10":
+ version "18.2.10"
+ resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-18.2.10.tgz#2ca7dde6f8c9062c3ef8254a12edeffdd180272e"
+ integrity sha512-EIm/yCYg3ZYPsPYJxXRX5F6PofJCbNQ5rZEuQEY09vy+ZRTqGezH0qoUP5WxlYeJrjiRLYqADI9WtVNzDyaD4w==
dependencies:
- "@angular-devkit/core" "18.2.7"
+ "@angular-devkit/core" "18.2.10"
jsonc-parser "3.3.1"
magic-string "0.30.11"
ora "5.4.1"
@@ -206,13 +204,13 @@
dependencies:
tslib "^2.3.0"
-"@angular/build@18.2.7":
- version "18.2.7"
- resolved "https://registry.yarnpkg.com/@angular/build/-/build-18.2.7.tgz#3bdb7c18e8f3bee00c0ce12a48216ce2df15f87c"
- integrity sha512-oq6JsVxLP9/w9F2IjKroJwPB9CdlMblu2Xhfq/qQZRSUuM8Ppt1svr2FBTo1HrLIbosqukkVcSSdmKYDneo+cg==
+"@angular/build@18.2.10":
+ version "18.2.10"
+ resolved "https://registry.yarnpkg.com/@angular/build/-/build-18.2.10.tgz#98eb7f1ced225483693280964482e617eba3eb1b"
+ integrity sha512-YFBKvAyC5sH17yRYcx7VHCtJ4KUg7xCjCQ4Pe16kiTvW6vuYsgU6Btyti0Qgewd7XaWpTM8hk8N6hE4Z0hpflw==
dependencies:
"@ampproject/remapping" "2.3.0"
- "@angular-devkit/architect" "0.1802.7"
+ "@angular-devkit/architect" "0.1802.10"
"@babel/core" "7.25.2"
"@babel/helper-annotate-as-pure" "7.24.7"
"@babel/helper-split-export-declaration" "7.24.7"
@@ -246,17 +244,17 @@
optionalDependencies:
parse5 "^7.1.2"
-"@angular/cli@18.2.7":
- version "18.2.7"
- resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-18.2.7.tgz#b5fe23d6d9d65d37ba580f1860c8a09c7578bc69"
- integrity sha512-KoWgSvhRsU05A2m6B7jw1kdpyoS+Ce5GGLW6xcnX7VF2AckW54vYd/8ZkgpzQrKfvIpVblYd4KJGizKoaLZ5jA==
+"@angular/cli@18.2.10":
+ version "18.2.10"
+ resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-18.2.10.tgz#29ab1344bb496122b2689ebbb862f2b44fb31848"
+ integrity sha512-qW/F3XVZMzzenFzbn+7FGpw8GOt9qW8UxBtYya7gUNdWlcsgGUk+ZaGC2OLbfI5gX6pchW4TOPMsDSMeaCEI2Q==
dependencies:
- "@angular-devkit/architect" "0.1802.7"
- "@angular-devkit/core" "18.2.7"
- "@angular-devkit/schematics" "18.2.7"
+ "@angular-devkit/architect" "0.1802.10"
+ "@angular-devkit/core" "18.2.10"
+ "@angular-devkit/schematics" "18.2.10"
"@inquirer/prompts" "5.3.8"
"@listr2/prompt-adapter-inquirer" "2.0.15"
- "@schematics/angular" "18.2.7"
+ "@schematics/angular" "18.2.10"
"@yarnpkg/lockfile" "1.1.0"
ini "4.1.3"
jsonc-parser "3.3.1"
@@ -276,14 +274,14 @@
dependencies:
tslib "^2.3.0"
-"@angular/compiler-cli@18.2.6":
- version "18.2.6"
- resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-18.2.6.tgz#84d94852ec5088107a9ffa81908b38c51c576bd5"
- integrity sha512-b5x9STfjNiNM/S0D+CnqRP9UOxPtSz1+RlCH5WdOMiW/p8j5p6dBix8YYgTe6Wg3OD7eItD2pnFQKgF/dWiopA==
+"@angular/compiler-cli@18.2.9":
+ version "18.2.9"
+ resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-18.2.9.tgz#637f40e0fbb210ccd8d4ff464ddb6628ffa0fc46"
+ integrity sha512-4iMoRvyMmq/fdI/4Gob9HKjL/jvTlCjbS4kouAYHuGO9w9dmUhi1pY1z+mALtCEl9/Q8CzU2W8e5cU2xtV4nVg==
dependencies:
"@babel/core" "7.25.2"
"@jridgewell/sourcemap-codec" "^1.4.14"
- chokidar "^3.0.0"
+ chokidar "^4.0.0"
convert-source-map "^1.5.1"
reflect-metadata "^0.2.0"
semver "^7.0.0"
@@ -318,10 +316,10 @@
dependencies:
tslib "^2.3.0"
-"@angular/language-service@18.2.6":
- version "18.2.6"
- resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-18.2.6.tgz#c1cd36e40579b5bacaf0d666477c138577d2a6dd"
- integrity sha512-GBvBvS2llh+/l2YhO7UO5o3GftlvQQoXnw3v0hcNoHKwcnvqXV4CCi+T2WOaZyK0iB8Is4QRbMrpJUC66HokZg==
+"@angular/language-service@18.2.9":
+ version "18.2.9"
+ resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-18.2.9.tgz#f24f5e7e53036f6c9c4968113a3ea9ea827048f7"
+ integrity sha512-vC9la5VpvfX27ept36rlc42nGxDak7YfbWtSoZUageyZJUWyIEAvW8rNNPEvoO86RLi011/HmyyIr2GSQLKvxA==
"@angular/material@18.2.6":
version "18.2.6"
@@ -1792,30 +1790,56 @@
dependencies:
eslint-visitor-keys "^3.3.0"
-"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1":
+"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0":
version "4.11.1"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f"
integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
-"@eslint/eslintrc@^2.1.4":
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
- integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
+"@eslint/config-array@^0.18.0":
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d"
+ integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==
+ dependencies:
+ "@eslint/object-schema" "^2.1.4"
+ debug "^4.3.1"
+ minimatch "^3.1.2"
+
+"@eslint/core@^0.7.0":
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3"
+ integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==
+
+"@eslint/eslintrc@^3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
+ integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
- espree "^9.6.0"
- globals "^13.19.0"
+ espree "^10.0.1"
+ globals "^14.0.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
js-yaml "^4.1.0"
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@8.57.1":
- version "8.57.1"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
- integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
+"@eslint/js@9.13.0":
+ version "9.13.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.13.0.tgz#c5f89bcd57eb54d5d4fa8b77693e9c28dc97e547"
+ integrity sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==
+
+"@eslint/object-schema@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
+ integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
+
+"@eslint/plugin-kit@^0.2.0":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz#cd14fe2db79fa639839dfef4105e83bad1814482"
+ integrity sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==
+ dependencies:
+ levn "^0.4.1"
"@floating-ui/core@^1.6.0":
version "1.6.8"
@@ -1880,24 +1904,28 @@
lodash "4.17.21"
polyclip-ts "^0.16.5"
-"@humanwhocodes/config-array@^0.13.0":
- version "0.13.0"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748"
- integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==
+"@humanfs/core@^0.19.0":
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.0.tgz#08db7a8c73bb07673d9ebd925f2dad746411fcec"
+ integrity sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==
+
+"@humanfs/node@^0.16.5":
+ version "0.16.5"
+ resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.5.tgz#a9febb7e7ad2aff65890fdc630938f8d20aa84ba"
+ integrity sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==
dependencies:
- "@humanwhocodes/object-schema" "^2.0.3"
- debug "^4.3.1"
- minimatch "^3.0.5"
+ "@humanfs/core" "^0.19.0"
+ "@humanwhocodes/retry" "^0.3.0"
"@humanwhocodes/module-importer@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-"@humanwhocodes/object-schema@^2.0.3":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
- integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
+"@humanwhocodes/retry@^0.3.0", "@humanwhocodes/retry@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a"
+ integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
"@iconify/types@^2.0.0":
version "2.0.0"
@@ -2505,10 +2533,10 @@
dependencies:
tslib "^2.0.0"
-"@ngtools/webpack@18.2.7":
- version "18.2.7"
- resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-18.2.7.tgz#2e8e7a3753ccdf49a3f350e082bdf79c7550db44"
- integrity sha512-BmnFxss6zGobGyq9Mi7736golbK8RLgF+zYCQZ+4/OfMMA1jKVoELnyJqNyAx+DQn3m1qKVBjtGEL7pTNpPzOw==
+"@ngtools/webpack@18.2.10":
+ version "18.2.10"
+ resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-18.2.10.tgz#6fd94d33a9de0b5f48f8b900a9d32e4f8c89872e"
+ integrity sha512-CGYr8rdM5ntdb4kLUAhrLBPrhJQ4KBPo3KMT6qJE/S+jJJn5zHzedpuGFOCVhC1Siw+n1pOBSI8leTRJIW/eCQ==
"@ngx-translate/core@^15.0.0":
version "15.0.0"
@@ -2528,7 +2556,7 @@
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+"@nodelib/fs.walk@^1.2.3":
version "1.2.8"
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
@@ -2825,13 +2853,13 @@
resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8"
integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
-"@schematics/angular@18.2.7":
- version "18.2.7"
- resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-18.2.7.tgz#0b6caf0491618c2e9b24506cc68fb629845b6c6c"
- integrity sha512-WOBzO11qstznHbC9tZXQf6/8+PqmaRI6QYcdTspqXNh9q9nNglvi43Xn4tSIpEhW8aSHea9hgWZV8sG+i/4W9Q==
+"@schematics/angular@18.2.10":
+ version "18.2.10"
+ resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-18.2.10.tgz#8ef1e67d266c334e71bac38cdef4cefab141f244"
+ integrity sha512-2pDHT4aSzfs8Up4RQmHHuFd5FeuUebS1ZJwyt46MfXzRMFtzUZV/JKsIvDqyMwnkvFfLvgJyTCkl8JGw5jQObg==
dependencies:
- "@angular-devkit/core" "18.2.7"
- "@angular-devkit/schematics" "18.2.7"
+ "@angular-devkit/core" "18.2.10"
+ "@angular-devkit/schematics" "18.2.10"
jsonc-parser "3.3.1"
"@sigstore/bundle@^2.3.2":
@@ -3166,7 +3194,7 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
-"@types/estree@1.0.6", "@types/estree@^1.0.5":
+"@types/estree@1.0.6", "@types/estree@^1.0.5", "@types/estree@^1.0.6":
version "1.0.6"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
@@ -3243,7 +3271,7 @@
resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f"
integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==
-"@types/http-proxy@^1.17.10", "@types/http-proxy@^1.17.8":
+"@types/http-proxy@^1.17.15", "@types/http-proxy@^1.17.8":
version "1.17.15"
resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.15.tgz#12118141ce9775a6499ecb4c01d02f90fc839d36"
integrity sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==
@@ -3262,7 +3290,7 @@
resolved "https://registry.yarnpkg.com/@types/js-beautify/-/js-beautify-1.14.3.tgz#6ced76f79935e37e0d613110dea369881d93c1ff"
integrity sha512-FMbQHz+qd9DoGvgLHxeqqVPaNRffpIu5ZjozwV8hf9JAGpIOzuAf4wGbRSo8LNITHqGjmmVjaMggTT5P4v4IHg==
-"@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
+"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
@@ -3465,62 +3493,62 @@
dependencies:
"@types/node" "*"
-"@typescript-eslint/eslint-plugin@^8.7.0":
- version "8.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz#b2b02a5447cdc885950eb256b3b8a97b92031bd3"
- integrity sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==
+"@typescript-eslint/eslint-plugin@^8.11.0":
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz#c3f087d20715fa94310b30666c08b3349e0ab084"
+ integrity sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
- "@typescript-eslint/scope-manager" "8.8.0"
- "@typescript-eslint/type-utils" "8.8.0"
- "@typescript-eslint/utils" "8.8.0"
- "@typescript-eslint/visitor-keys" "8.8.0"
+ "@typescript-eslint/scope-manager" "8.11.0"
+ "@typescript-eslint/type-utils" "8.11.0"
+ "@typescript-eslint/utils" "8.11.0"
+ "@typescript-eslint/visitor-keys" "8.11.0"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
ts-api-utils "^1.3.0"
-"@typescript-eslint/parser@^8.7.0":
- version "8.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.8.0.tgz#ee4397c70230c4eee030456924c0fba480072f5e"
- integrity sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==
+"@typescript-eslint/parser@^8.11.0":
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.11.0.tgz#2ad1481388dc1c937f50b2d138c9ca57cc6c5cce"
+ integrity sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==
dependencies:
- "@typescript-eslint/scope-manager" "8.8.0"
- "@typescript-eslint/types" "8.8.0"
- "@typescript-eslint/typescript-estree" "8.8.0"
- "@typescript-eslint/visitor-keys" "8.8.0"
+ "@typescript-eslint/scope-manager" "8.11.0"
+ "@typescript-eslint/types" "8.11.0"
+ "@typescript-eslint/typescript-estree" "8.11.0"
+ "@typescript-eslint/visitor-keys" "8.11.0"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@8.8.0":
- version "8.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz#30b23a6ae5708bd7882e40675ef2f1b2beac741f"
- integrity sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==
+"@typescript-eslint/scope-manager@8.11.0":
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz#9d399ce624118966732824878bc9a83593a30405"
+ integrity sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==
dependencies:
- "@typescript-eslint/types" "8.8.0"
- "@typescript-eslint/visitor-keys" "8.8.0"
+ "@typescript-eslint/types" "8.11.0"
+ "@typescript-eslint/visitor-keys" "8.11.0"
-"@typescript-eslint/type-utils@8.8.0":
- version "8.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz#a0ca1c8a90d94b101176a169d7a0958187408d33"
- integrity sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==
+"@typescript-eslint/type-utils@8.11.0":
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz#b7f9e6120c1ddee8a1a07615646642ad85fc91b5"
+ integrity sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==
dependencies:
- "@typescript-eslint/typescript-estree" "8.8.0"
- "@typescript-eslint/utils" "8.8.0"
+ "@typescript-eslint/typescript-estree" "8.11.0"
+ "@typescript-eslint/utils" "8.11.0"
debug "^4.3.4"
ts-api-utils "^1.3.0"
-"@typescript-eslint/types@8.8.0":
- version "8.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.8.0.tgz#08ea5df6c01984d456056434641491fbf7a1bf43"
- integrity sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==
+"@typescript-eslint/types@8.11.0":
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.11.0.tgz#7c766250502097f49bbc2e651132e6bf489e20b8"
+ integrity sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==
-"@typescript-eslint/typescript-estree@8.8.0":
- version "8.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz#072eaab97fdb63513fabfe1cf271812affe779e3"
- integrity sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==
+"@typescript-eslint/typescript-estree@8.11.0":
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz#35fe5d3636fc5727c52429393415412e552e222b"
+ integrity sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==
dependencies:
- "@typescript-eslint/types" "8.8.0"
- "@typescript-eslint/visitor-keys" "8.8.0"
+ "@typescript-eslint/types" "8.11.0"
+ "@typescript-eslint/visitor-keys" "8.11.0"
debug "^4.3.4"
fast-glob "^3.3.2"
is-glob "^4.0.3"
@@ -3528,29 +3556,24 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
-"@typescript-eslint/utils@8.8.0", "@typescript-eslint/utils@^8.7.0":
- version "8.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.8.0.tgz#bd8607e3a68c461b69169c7a5824637dc9e8b3f1"
- integrity sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==
+"@typescript-eslint/utils@8.11.0", "@typescript-eslint/utils@^8.11.0":
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.11.0.tgz#4480d1e9f2bb18ea3510c79f870a1aefc118103d"
+ integrity sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
- "@typescript-eslint/scope-manager" "8.8.0"
- "@typescript-eslint/types" "8.8.0"
- "@typescript-eslint/typescript-estree" "8.8.0"
+ "@typescript-eslint/scope-manager" "8.11.0"
+ "@typescript-eslint/types" "8.11.0"
+ "@typescript-eslint/typescript-estree" "8.11.0"
-"@typescript-eslint/visitor-keys@8.8.0":
- version "8.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz#f93965abd38c82a1a1f5574290a50d02daf1cd2e"
- integrity sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==
+"@typescript-eslint/visitor-keys@8.11.0":
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz#273de1cbffe63d9f9cd7dfc20b5a5af66310cb92"
+ integrity sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==
dependencies:
- "@typescript-eslint/types" "8.8.0"
+ "@typescript-eslint/types" "8.11.0"
eslint-visitor-keys "^3.4.3"
-"@ungap/structured-clone@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
- integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
-
"@vitejs/plugin-basic-ssl@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz#8b840305a6b48e8764803435ec0c716fa27d3802"
@@ -3734,7 +3757,7 @@ acorn-walk@^8.1.1:
dependencies:
acorn "^8.11.0"
-acorn@^8.11.0, acorn@^8.11.3, acorn@^8.12.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0:
+acorn@^8.11.0, acorn@^8.11.3, acorn@^8.12.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2:
version "8.12.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
@@ -4329,7 +4352,7 @@ chevrotain@~11.0.3:
"@chevrotain/utils" "11.0.3"
lodash-es "4.17.21"
-"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.3, chokidar@^3.6.0:
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3, chokidar@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
@@ -4344,6 +4367,13 @@ chevrotain@~11.0.3:
optionalDependencies:
fsevents "~2.3.2"
+chokidar@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41"
+ integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
+ dependencies:
+ readdirp "^4.0.1"
+
chownr@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
@@ -5305,13 +5335,6 @@ doctrine@^2.1.0:
dependencies:
esutils "^2.0.2"
-doctrine@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
- integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
- dependencies:
- esutils "^2.0.2"
-
dom-helpers@^5.0.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
@@ -5735,15 +5758,7 @@ eslint-scope@5.1.1:
esrecurse "^4.3.0"
estraverse "^4.1.1"
-eslint-scope@^7.2.2:
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
- integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
- dependencies:
- esrecurse "^4.3.0"
- estraverse "^5.2.0"
-
-eslint-scope@^8.0.2:
+eslint-scope@^8.0.2, eslint-scope@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.1.0.tgz#70214a174d4cbffbc3e8a26911d8bf51b9ae9d30"
integrity sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==
@@ -5751,7 +5766,7 @@ eslint-scope@^8.0.2:
esrecurse "^4.3.0"
estraverse "^5.2.0"
-eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
@@ -5761,51 +5776,48 @@ eslint-visitor-keys@^4.1.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz#1f785cc5e81eb7534523d85922248232077d2f8c"
integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==
-eslint@~8.57.1:
- version "8.57.1"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9"
- integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==
+eslint@~9.13.0:
+ version "9.13.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.13.0.tgz#7659014b7dda1ff876ecbd990f726e11c61596e6"
+ integrity sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
- "@eslint-community/regexpp" "^4.6.1"
- "@eslint/eslintrc" "^2.1.4"
- "@eslint/js" "8.57.1"
- "@humanwhocodes/config-array" "^0.13.0"
+ "@eslint-community/regexpp" "^4.11.0"
+ "@eslint/config-array" "^0.18.0"
+ "@eslint/core" "^0.7.0"
+ "@eslint/eslintrc" "^3.1.0"
+ "@eslint/js" "9.13.0"
+ "@eslint/plugin-kit" "^0.2.0"
+ "@humanfs/node" "^0.16.5"
"@humanwhocodes/module-importer" "^1.0.1"
- "@nodelib/fs.walk" "^1.2.8"
- "@ungap/structured-clone" "^1.2.0"
+ "@humanwhocodes/retry" "^0.3.1"
+ "@types/estree" "^1.0.6"
+ "@types/json-schema" "^7.0.15"
ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.3.2"
- doctrine "^3.0.0"
escape-string-regexp "^4.0.0"
- eslint-scope "^7.2.2"
- eslint-visitor-keys "^3.4.3"
- espree "^9.6.1"
- esquery "^1.4.2"
+ eslint-scope "^8.1.0"
+ eslint-visitor-keys "^4.1.0"
+ espree "^10.2.0"
+ esquery "^1.5.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
- file-entry-cache "^6.0.1"
+ file-entry-cache "^8.0.0"
find-up "^5.0.0"
glob-parent "^6.0.2"
- globals "^13.19.0"
- graphemer "^1.4.0"
ignore "^5.2.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
- is-path-inside "^3.0.3"
- js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
- levn "^0.4.1"
lodash.merge "^4.6.2"
minimatch "^3.1.2"
natural-compare "^1.4.0"
optionator "^0.9.3"
- strip-ansi "^6.0.1"
text-table "^0.2.0"
-espree@^10.1.0:
+espree@^10.0.1, espree@^10.1.0, espree@^10.2.0:
version "10.2.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-10.2.0.tgz#f4bcead9e05b0615c968e85f83816bc386a45df6"
integrity sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==
@@ -5814,16 +5826,7 @@ espree@^10.1.0:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^4.1.0"
-espree@^9.6.0, espree@^9.6.1:
- version "9.6.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
- integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
- dependencies:
- acorn "^8.9.0"
- acorn-jsx "^5.3.2"
- eslint-visitor-keys "^3.4.1"
-
-esquery@^1.4.2, esquery@^1.6.0:
+esquery@^1.5.0, esquery@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
@@ -5996,12 +5999,12 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4:
node-domexception "^1.0.0"
web-streams-polyfill "^3.0.3"
-file-entry-cache@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
- integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+file-entry-cache@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
+ integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
dependencies:
- flat-cache "^3.0.4"
+ flat-cache "^4.0.0"
file-selector@^0.6.0:
version "0.6.0"
@@ -6081,14 +6084,13 @@ find-yarn-workspace-root@^2.0.0:
dependencies:
micromatch "^4.0.2"
-flat-cache@^3.0.4:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
- integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
+flat-cache@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
+ integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
dependencies:
flatted "^3.2.9"
- keyv "^4.5.3"
- rimraf "^3.0.2"
+ keyv "^4.5.4"
flat@^5.0.2:
version "5.0.2"
@@ -6317,12 +6319,10 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-globals@^13.19.0:
- version "13.24.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
- integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
- dependencies:
- type-fest "^0.20.2"
+globals@^14.0.0:
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
+ integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
globalthis@^1.0.3:
version "1.0.4"
@@ -6520,17 +6520,17 @@ http-proxy-agent@^7.0.0:
agent-base "^7.1.0"
debug "^4.3.4"
-http-proxy-middleware@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz#550790357d6f92a9b82ab2d63e07343a791cf26b"
- integrity sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==
+http-proxy-middleware@3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz#dc1313c75bd00d81e103823802551ee30130ebd1"
+ integrity sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==
dependencies:
- "@types/http-proxy" "^1.17.10"
- debug "^4.3.4"
+ "@types/http-proxy" "^1.17.15"
+ debug "^4.3.6"
http-proxy "^1.18.1"
- is-glob "^4.0.1"
- is-plain-obj "^3.0.0"
- micromatch "^4.0.5"
+ is-glob "^4.0.3"
+ is-plain-object "^5.0.0"
+ micromatch "^4.0.8"
http-proxy-middleware@^2.0.3:
version "2.0.6"
@@ -6853,11 +6853,6 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-is-path-inside@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
- integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
-
is-plain-obj@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
@@ -6870,6 +6865,11 @@ is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
+is-plain-object@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
is-regex@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -7267,7 +7267,7 @@ katex@^0.16.0, katex@^0.16.9:
dependencies:
commander "^8.3.0"
-keyv@^4.5.3:
+keyv@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
@@ -7534,7 +7534,7 @@ lodash.merge@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-lodash@4.17.21, lodash@^4.0.1, lodash@^4.17.14, lodash@^4.17.15:
+lodash@4.17.21, lodash@^4.0.1, lodash@^4.17.14:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -7695,7 +7695,7 @@ methods@~1.1.2:
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
-micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
+micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
@@ -7755,7 +7755,7 @@ minimatch@9.0.1:
dependencies:
brace-expansion "^2.0.1"
-minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -9089,6 +9089,11 @@ readable-stream@^3.0.6, readable-stream@^3.4.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+readdirp@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a"
+ integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==
+
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -9262,13 +9267,6 @@ rimraf@^2.6.3:
dependencies:
glob "^7.1.3"
-rimraf@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
- integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
- dependencies:
- glob "^7.1.3"
-
rimraf@^5.0.5:
version "5.0.10"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c"
@@ -10163,10 +10161,10 @@ tinyexec@^0.3.0:
resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.0.tgz#ed60cfce19c17799d4a241e06b31b0ec2bee69e6"
integrity sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==
-tinymce@6.8.4, "tinymce@^7.0.0 || ^6.0.0 || ^5.5.0", tinymce@~6.8.4:
- version "6.8.4"
- resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-6.8.4.tgz#53e1313ebfe5524b24c0fa45937d51fda058632d"
- integrity sha512-okoJyxuPv1gzASxQDNgQbnUXOdAIyoOSXcXcZZu7tiW0PSKEdf3SdASxPBupRj+64/E3elHwVRnzSdo82Emqbg==
+tinymce@6.8.5, "tinymce@^7.0.0 || ^6.0.0 || ^5.5.0", tinymce@~6.8.5:
+ version "6.8.5"
+ resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-6.8.5.tgz#aa9a711c4e0b59d506dd281bade857d35a7b3c59"
+ integrity sha512-qAL/FxL7cwZHj4BfaF818zeJJizK9jU5IQzTcSLL4Rj5MaJdiVblEj7aDr80VCV1w9h4Lak9hlnALhq/kVtN1g==
tmp@^0.0.33:
version "0.0.33"
@@ -10241,11 +10239,6 @@ ts-node@^10.0.0, ts-node@^10.9.2:
v8-compile-cache-lib "^3.0.1"
yn "3.1.1"
-ts-transformer-keys@^0.4.4:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/ts-transformer-keys/-/ts-transformer-keys-0.4.4.tgz#c185508b3ae9b79236aac58f788c85ca3ac807d7"
- integrity sha512-LrqgvaFvar01/5mbunRyeLTSIkqoC2xfcpL/90aDY6vR07DGyH+UaYGdIEsUudnlAw2Sr0pxFgdZvE0QIyI4qA==
-
tsconfig-paths@^3.15.0:
version "3.15.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4"
@@ -10301,11 +10294,6 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
-type-fest@^0.20.2:
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
- integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-
type-fest@^0.21.3:
version "0.21.3"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
@@ -10668,15 +10656,6 @@ webpack-merge@6.0.1:
flat "^5.0.2"
wildcard "^2.0.1"
-webpack-merge@^5.7.3:
- version "5.10.0"
- resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177"
- integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==
- dependencies:
- clone-deep "^4.0.1"
- flat "^5.0.2"
- wildcard "^2.0.0"
-
webpack-sources@^3.0.0, webpack-sources@^3.2.3:
version "3.2.3"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
@@ -10802,7 +10781,7 @@ which@^4.0.0:
dependencies:
isexe "^3.1.1"
-wildcard@^2.0.0, wildcard@^2.0.1:
+wildcard@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67"
integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==