thingsboard-aplcache

Changes

Details

diff --git a/ui/src/app/locale/locale.constant-zh.js b/ui/src/app/locale/locale.constant-zh.js
index 62746c7..0684fdc 100644
--- a/ui/src/app/locale/locale.constant-zh.js
+++ b/ui/src/app/locale/locale.constant-zh.js
@@ -16,337 +16,540 @@
 
 export default function addLocaleChinese(locales) {
     var zh_CN = {
-        "access" : {
-            "unauthorized" : "未授权",
-            "unauthorized-access" : "未授权访问",
-            "unauthorized-access-text" : "您需要登陆才能访问这个资源!",
-            "access-forbidden" : "禁止访问",
-            "access-forbidden-text" : "您没有访问此位置的权限<br/>如果您仍希望访问此位置,请尝试使用其他用户登录。",
-            "refresh-token-expired" : "会话已过期",
-            "refresh-token-failed" : "无法刷新会话"
-        },
-        "action" : {
-            "activate" : "激活",
-            "suspend" : "暂停",
-            "save" : "保存",
-            "saveAs" : "另存为",
-            "cancel" : "取消",
-            "ok" : "确定",
-            "delete" : "删除",
-            "add" : "添加",
-            "yes" : "是",
-            "no" : "否",
-            "update" : "更新",
-            "remove" : "移除",
-            "search" : "查询",
-            "assign" : "分配",
-            "unassign" : "取消分配",
-            "share" : "分享",
-            "make-private" : "私有",
-            "apply" : "应用",
-            "apply-changes" : "应用更改",
-            "edit-mode" : "编辑模式",
-            "enter-edit-mode" : "进入编辑模式",
-            "decline-changes" : "拒绝变更",
-            "close" : "关闭",
-            "back" : "后退",
-            "run" : "运行",
-            "sign-in" : "登录!",
-            "edit" : "编辑",
-            "view" : "查看",
-            "create" : "创建",
-            "drag" : "拖拽",
-            "refresh" : "刷新",
-            "undo" : "撤销",
-            "copy" : "复制",
-            "paste" : "粘贴",
-            "import" : "导入",
-            "export" : "导出",
-            "share-via" : "通过 {{provider}}分享"
-        },
-        "aggregation" : {
-            "aggregation" : "聚合",
-            "function" : "数据聚合功能",
-            "limit" : "最大值",
-            "group-interval" : "分组间隔",
-            "min" : "最少值",
-            "max" : "最大值",
-            "avg" : "平均值",
-            "sum" : "求和",
-            "count" : "计数",
-            "none" : "空"
-        },
-        "admin" : {
-            "general" : "常规",
-            "general-settings" : "常规设置",
-            "outgoing-mail" : "发送邮件",
-            "outgoing-mail-settings" : "发送邮件设置",
-            "system-settings" : "系统设置",
-            "test-mail-sent" : "测试邮件发送成功!",
-            "base-url" : "基本URL",
-            "base-url-required" : "基本URL是必须的。",
-            "mail-from" : "邮件来自",
-            "mail-from-required" : "邮件发件人是必须的。",
-            "smtp-protocol" : "SMTP协议",
-            "smtp-host" : "SMTP主机",
-            "smtp-host-required" : "SMTP主机是必须的。",
-            "smtp-port" : "SMTP端口",
-            "smtp-port-required" : "您必须提供一个smtp端口。",
-            "smtp-port-invalid" : "这看起来不是有效的smtp端口。",
-            "timeout-msec" : "超时(ms)",
-            "timeout-required" : "超时是必须的。",
-            "timeout-invalid" : "这看起来不像有效的超时值。",
-            "enable-tls" : "启用TLS",
-            "send-test-mail" : "发送测试邮件"
-        },
-        "attribute" : {
-            "attributes" : "属性",
-            "latest-telemetry" : "最新遥测",
-            "attributes-scope" : "设备属性范围",
-            "scope-latest-telemetry" : "最新遥测",
-            "scope-client" : "客户端属性",
-            "scope-server" : "服务端属性",
-            "scope-shared" : "共享属性",
-            "add" : "添加属性",
-            "key" : "键",
-            "key-required" : "属性键是必需的。",
-            "value" : "值",
-            "value-required" : "属性值是必需的。",
-            "delete-attributes-title" : "您确定要删除 { count, select, 1 {1 attribute} other {# attributes} }吗?",
-            "delete-attributes-text" : "注意,确认后所有选中的属性都会被删除。",
-            "delete-attributes" : "删除属性",
-            "enter-attribute-value" : "输入属性值",
-            "show-on-widget" : "在部件上显示",
-            "widget-mode" : "部件模式",
-            "next-widget" : "下一个部件",
-            "prev-widget" : "上一个部件",
-            "add-to-dashboard" : "添加到仪表板",
-            "add-widget-to-dashboard" : "将部件添加到仪表板",
-            "selected-attributes" : "{ count, select, 1 {1 attribute} other {# attributes} } 被选中",
-            "selected-telemetry" : "{ count, select, 1 {1 telemetry unit} other {# telemetry units} } 被选中"
-        },
-        "confirm-on-exit" : {
-            "message" : "您有未保存的更改。确定要离开此页吗?",
-            "html-message" : "您有未保存的更改。<br/> 确定要离开此页面吗?",
-            "title" : "未保存的更改"
-        },
-        "contact" : {
-            "country" : "国家",
-            "city" : "城市",
-            "state" : "州",
-            "postal-code" : "邮政编码",
-            "postal-code-invalid" : "只允许数字。",
-            "address" : "地址",
-            "address2" : "地址2",
-            "phone" : "手机",
-            "email" : "邮箱",
-            "no-address" : "无地址"
-        },
-        "common" : {
-            "username" : "用户名",
-            "password" : "密码",
-            "enter-username" : "输入用户名",
-            "enter-password" : "输入密码",
-            "enter-search" : "输入检索条件"
-        },
-        "customer" : {
-            "customers" : "客户",
-            "management" : "客户管理",
-            "dashboard" : "客户仪表板",
-            "dashboards" : "客户仪表板",
-            "devices" : "客户设备",
-            "public-dashboards" : "公共仪表板",
-            "public-devices" : "公共设备",
-            "add" : "添加客户",
-            "delete" : "删除客户",
-            "manage-customer-users" : "管理客户用户",
-            "manage-customer-devices" : "管理客户设备",
-            "manage-customer-dashboards" : "管理客户仪表板",
-            "manage-public-devices" : "管理公共设备",
-            "manage-public-dashboards" : "管理公共仪表板",
-            "add-customer-text" : "添加新客户",
-            "no-customers-text" : "没有找到客户",
-            "customer-details" : "客户详情",
-            "delete-customer-title" : "您确定要删除客户'{{customerTitle}}'吗?",
-            "delete-customer-text" : "小心!确认后,客户及其所有相关数据将不可恢复。",
-            "delete-customers-title" : "您确定要删除 { count, select, 1 {1 customer} other {# customers} }吗?",
-            "delete-customers-action-title" : "删除 { count, select, 1 {1 customer} other {# customers} }",
-            "delete-customers-text" : "小心!确认后,所有选定的客户将被删除,所有相关数据将不可恢复。",
-            "manage-users" : "管理用户",
-            "manage-devices" : "管理设备",
-            "manage-dashboards" : "管理仪表板",
-            "title" : "标题",
-            "title-required" : "需要标题。",
-            "description" : "描述"
-        },
-        "datetime" : {
-            "date-from" : "日期从",
-            "time-from" : "时间从",
-            "date-to" : "日期到",
-            "time-to" : "时间到"
-        },
-        "dashboard" : {
-            "dashboard" : "仪表板",
-            "dashboards" : "仪表板库",
-            "management" : "仪表板管理",
-            "view-dashboards" : "查看仪表板",
-            "add" : "添加仪表板",
-            "assign-dashboard-to-customer" : "将仪表板分配给客户",
-            "assign-dashboard-to-customer-text" : "请选择要分配给客户的仪表板",
-            "assign-to-customer-text" : "请选择客户分配仪表板",
-            "assign-to-customer" : "分配给客户",
-            "unassign-from-customer" : "取消分配客户",
-            "make-public" : "使仪表板公有",
-            "make-private" : "使仪表板私有",
-            "no-dashboards-text" : "没有找到仪表板",
-            "no-widgets" : "没有配置部件",
-            "add-widget" : "添加新的部件",
-            "title" : "标题",
-            "select-widget-title" : "选择部件",
-            "select-widget-subtitle" : "可用的部件类型列表",
-            "delete" : "删除仪表板",
-            "title-required" : "需要标题。",
-            "description" : "描述",
-            "details" : "详情",
-            "dashboard-details" : "仪表板详情",
-            "add-dashboard-text" : "添加新的仪表板",
-            "assign-dashboards" : "分配仪表板",
-            "assign-new-dashboard" : "分配新的仪表板",
-            "assign-dashboards-text" : "分配 { count, select, 1 {1 dashboard} other {# dashboards} } 给客户",
-            "delete-dashboards" : "删除仪表板",
-            "unassign-dashboards" : "取消分配仪表板",
-            "unassign-dashboards-action-title" : "取消分配 { count, select, 1 {1 dashboard} other {# dashboards} } from customer",
-            "delete-dashboard-title" : "您确定要删除仪表板 '{{dashboardTitle}}'吗?",
-            "delete-dashboard-text" : "小心!确认后仪表板及其所有相关数据将不可恢复。",
-            "delete-dashboards-title" : "你确定你要删除 { count, select, 1 {1 dashboard} other {# dashboards} }吗?",
-            "delete-dashboards-action-title" : "删除 { count, select, 1 {1 dashboard} other {# dashboards} }",
-            "delete-dashboards-text" : "小心!确认后所有选定的仪表板将被删除,所有相关数据将不可恢复。",
-            "unassign-dashboard-title" : "您确定要取消分配仪表板 '{{dashboardTitle}}'吗?",
-            "unassign-dashboard-text" : "确认后,面板将被取消分配,客户将无法访问。",
-            "unassign-dashboard" : "取消分配仪表板",
-            "unassign-dashboards-title" : "您确定要取消分配仪表板 { count, select, 1 {1 dashboard} other {# dashboards} } 吗?",
-            "unassign-dashboards-text" : "确认后,所有选定的仪表板将被取消分配,客户将无法访问。",
-            "public-dashboard-title" : "仪表板现已公布",
-            "public-dashboard-text" : "你的仪表板 <b>{{dashboardTitle}}</b> 已被公开,可通过如下 <a href='{{publicLink}}' target='_blank'>链接</a>访问:",
-            "public-dashboard-notice" : "<b>提示:</b> 不要忘记将相关设备公开以访问其数据。",
-            "make-private-dashboard-title" : "您确定要使仪表板 '{{dashboardTitle}}' 私有吗?",
-            "make-private-dashboard-text" : "确认后,仪表板将被私有,不能被其他人访问。",
-            "make-private-dashboard" : "仪表板私有",
-            "socialshare-text" : "'{{dashboardTitle}}' 由ThingsBoard提供支持",
-            "socialshare-title" : "'{{dashboardTitle}}' 由ThingsBoard提供支持",
-            "select-dashboard" : "选择仪表板",
-            "no-dashboards-matching" : "找不到符合 '{{entity}}' 的仪表板。",
-            "dashboard-required" : "仪表板是必需的。",
-            "select-existing" : "选择现有仪表板",
-            "create-new" : "创建新的仪表板",
-            "new-dashboard-title" : "新仪表板标题",
-            "open-dashboard" : "打开仪表板",
-            "set-background" : "设置背景",
-            "background-color" : "背景颜色",
-            "background-image" : "背景图片",
-            "background-size-mode" : "背景大小模式",
-            "no-image" : "无图像选择",
-            "drop-image" : "拖拽图像或单击以选择要上传的文件。",
-            "settings" : "设置",
-            "columns-count" : "列数",
-            "columns-count-required" : "需要列数。",
-            "min-columns-count-message" : "只允许最少10列",
-            "max-columns-count-message" : "只允许最多1000列",
-            "widgets-margins" : "部件间边距",
-            "horizontal-margin" : "水平边距",
-            "horizontal-margin-required" : "需要水平边距值。",
-            "min-horizontal-margin-message" : "只允许0作为最小水平边距值。",
-            "max-horizontal-margin-message" : "只允许50作为最大水平边距值。",
-            "vertical-margin" : "垂直边距",
-            "vertical-margin-required" : "需要垂直边距值。",
-            "min-vertical-margin-message" : "只允许0作为最小垂直边距值。",
-            "max-vertical-margin-message" : "只允许50作为最大垂直边距值。",
-            "display-title" : "显示仪表板标题",
-            "title-color" : "标题颜色",
-            "display-device-selection" : "显示设备选择",
-            "display-dashboard-timewindow" : "显示时间窗口",
-            "display-dashboard-export" : "显示导出",
-            "import" : "导入仪表板",
-            "export" : "导出仪表板",
-            "export-failed-error" : "无法导出仪表板: {{error}}",
-            "create-new-dashboard" : "创建新的仪表板",
-            "dashboard-file" : "仪表板文件",
-            "invalid-dashboard-file-error" : "无法导入仪表板: 仪表板数据结构无效。",
-            "dashboard-import-missing-aliases-title" : "配置导入仪表板使用的别名",
-            "create-new-widget" : "创建新部件",
-            "import-widget" : "导入部件",
-            "widget-file" : "部件文件",
-            "invalid-widget-file-error" : "无法导入窗口部件: 窗口部件数据结构无效。",
-            "widget-import-missing-aliases-title" : "配置导入的窗口部件使用的别名",
-            "open-toolbar" : "打开仪表板工具栏",
-            "close-toolbar" : "关闭工具栏",
-            "configuration-error" : "配置错误",
-            "alias-resolution-error-title" : "仪表板别名配置错误",
-            "invalid-aliases-config" : "无法找到与某些别名过滤器匹配的任何设备。<br/>" +
-                "请联系您的管理员以解决此问题。",
-            "select-devices" : "选择设备",
-            "assignedToCustomer" : "分配给客户",
-            "public" : "公共",
-            "public-link" : "公共链接",
-            "copy-public-link" : "复制公共链接",
-            "public-link-copied-message" : "仪表板的公共链接已被复制到剪贴板"
-        },
-        "datakey" : {
+        "access": {
+            "unauthorized": "未授权",
+            "unauthorized-access": "未授权访问",
+            "unauthorized-access-text": "您需要登陆才能访问这个资源!",
+            "access-forbidden": "禁止访问",
+            "access-forbidden-text": "您没有访问此位置的权限<br/>如果您仍希望访问此位置,请尝试使用其他用户登录。",
+            "refresh-token-expired": "会话已过期",
+            "refresh-token-failed": "无法刷新会话"
+        },
+        "action": {
+            "activate": "激活",
+            "suspend": "暂停",
+            "save": "保存",
+            "saveAs": "另存为",
+            "cancel": "取消",
+            "ok": "确定",
+            "delete": "删除",
+            "add": "添加",
+            "yes": "是",
+            "no": "否",
+            "update": "更新",
+            "remove": "移除",
+            "search": "查询",
+            "assign": "分配",
+            "unassign": "取消分配",
+            "share": "分享",
+            "make-private": "私有",
+            "apply": "应用",
+            "apply-changes": "应用更改",
+            "edit-mode": "编辑模式",
+            "enter-edit-mode": "进入编辑模式",
+            "decline-changes": "撤销更改",
+            "close": "关闭",
+            "back": "后退",
+            "run": "运行",
+            "sign-in": "登录!",
+            "edit": "编辑",
+            "view": "查看",
+            "create": "创建",
+            "drag": "拖拽",
+            "refresh": "刷新",
+            "undo": "撤销",
+            "copy": "复制",
+            "paste": "粘贴",
+            "copy-reference": "复制引用",
+            "paste-reference": "粘贴引用",
+            "import": "导入",
+            "export": "导出",
+            "share-via": "通过 {{provider}}分享"
+        },
+        "aggregation": {
+            "aggregation": "聚合",
+            "function": "数据聚合功能",
+            "limit": "最大值",
+            "group-interval": "分组间隔",
+            "min": "最少值",
+            "max": "最大值",
+            "avg": "平均值",
+            "sum": "求和",
+            "count": "计数",
+            "none": "空"
+        },
+        "admin": {
+            "general": "常规",
+            "general-settings": "常规设置",
+            "outgoing-mail": "发送邮件",
+            "outgoing-mail-settings": "发送邮件设置",
+            "system-settings": "系统设置",
+            "test-mail-sent": "测试邮件发送成功!",
+            "base-url": "基本URL",
+            "base-url-required": "基本URL必填。",
+            "mail-from": "邮件来自",
+            "mail-from-required": "邮件发件人必填。",
+            "smtp-protocol": "SMTP协议",
+            "smtp-host": "SMTP主机",
+            "smtp-host-required": "SMTP主机必填。",
+            "smtp-port": "SMTP端口",
+            "smtp-port-required": "您必须提供一个smtp端口。",
+            "smtp-port-invalid": "这看起来不是有效的smtp端口。",
+            "timeout-msec": "超时(ms)",
+            "timeout-required": "超时必填。",
+            "timeout-invalid": "这看起来不像有效的超时值。",
+            "enable-tls": "启用TLS",
+            "send-test-mail": "发送测试邮件"
+        },
+        "alarm": {
+            "alarm": "警告",
+            "alarms": "警告",
+            "select-alarm": "选择警告",
+            "no-alarms-matching": "没有找到匹配 '{{entity}}' 的警告",
+            "alarm-required": "警告必填",
+            "alarm-status": "警告状态",
+            "search-status": {
+                "ANY": "所有",
+                "ACTIVE": "已激活",
+                "CLEARED": "已清除",
+                "ACK": "已应答",
+                "UNACK": "未应答"
+            },
+            "display-status": {
+                "ACTIVE_UNACK": "激活未应答",
+                "ACTIVE_ACK": "激活已应答",
+                "CLEARED_UNACK": "清除未应答",
+                "CLEARED_ACK": "清除已应答"
+            },
+            "no-alarms-prompt": "未发现警告",
+            "created-time": "创建时间",
+            "type": "类型",
+            "severity": "严重程度",
+            "originator": "起因",
+            "originator-type": "起因类型",
+            "details": "详情",
+            "status": "状态",
+            "alarm-details": "警告详情",
+            "start-time": "开始时间",
+            "end-time": "结束时间",
+            "ack-time": "应答时间",
+            "clear-time": "创建时间",
+            "severity-critical": "危险",
+            "severity-major": "重要",
+            "severity-minor": "次要",
+            "severity-warning": "警告",
+            "severity-indeterminate": "不确定",
+            "acknowledge": "应答",
+            "clear": "清除",
+            "search": "搜索警告",
+            "selected-alarms": "已选择 { count, select, 1 {1 警告} other {# 警告} } ",
+            "no-data": "无数据显示",
+            "polling-interval": "警告轮询间隔(秒)",
+            "polling-interval-required": "警告轮询间隔必填。",
+            "min-polling-interval-message": "轮询间隔至少是1秒。",
+            "aknowledge-alarms-title": "应答 { count, select, 1 {1 警告} other {# 警告} }",
+            "aknowledge-alarms-text": "确定要应答 { count, select, 1 {1 警告} other {# 警告} }?",
+            "clear-alarms-title": "清除 { count, select, 1 {1 警告} other {# 警告} }",
+            "clear-alarms-text": "确定要清除 { count, select, 1 {1 警告} other {# 警告} }?"
+        },
+        "alias": {
+            "add": "添加别名",
+            "edit": "编辑别名",
+            "name": "别名",
+            "name-required": "别名必填",
+            "duplicate-alias": "别名已经存在。",
+            "filter-type-single-entity": "单个实体",
+            "filter-type-entity-list": "实体列表",
+            "filter-type-entity-name": "实体名称",
+            "filter-type-state-entity": "实体(仪表板状态)",
+            "filter-type-state-entity-description": "实体令牌(仪表板状态参数)",
+            "filter-type-asset-type": "资产类型",
+            "filter-type-asset-type-description": "类型为 '{{assetType}}' 的资产",
+            "filter-type-asset-type-and-name-description": "类型为 '{{assetType}}' 且以 '{{prefix}}' 开头的资产",
+            "filter-type-device-type": "设备类型",
+            "filter-type-device-type-description": "类型为 '{{deviceType}}' 的设备",
+            "filter-type-device-type-and-name-description": "类型为 '{{deviceType}}' 且以 '{{prefix}}' 开头的设备",
+            "filter-type-relations-query": "关系查询",
+            "filter-type-relations-query-description": "具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的 {{entities}} ",
+            "filter-type-asset-search-query": "资产搜索查询",
+            "filter-type-asset-search-query-description": "类型为 {{assetTypes}} 且具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的资产",
+            "filter-type-device-search-query": "设备搜索查询",
+            "filter-type-device-search-query-description": "类型为 {{deviceTypes}} 且具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的设备",
+            "entity-filter": "实体过滤",
+            "resolve-multiple": "解决为多实体",
+            "filter-type": "过滤类型",
+            "filter-type-required": "过滤类型必填。",
+            "entity-filter-no-entity-matched": "未找到符合指定过滤条件的实体。",
+            "no-entity-filter-specified": "没有指定实体过滤条件",
+            "root-state-entity": "使用仪表板状态实体作为根实体",
+            "root-entity": "根实体",
+            "state-entity-parameter-name": "状态实体参数名称",
+            "default-state-entity": "默认状态实体",
+            "default-entity-parameter-name": "默认",
+            "max-relation-level": "最大关系层级",
+            "unlimited-level": "不限层级",
+            "state-entity": "仪表板状态实体",
+            "all-entities": "所有实体",
+            "any-relation": "不限"
+        },
+        "asset": {
+            "asset": "资产",
+            "assets": "资产",
+            "management": "资产管理",
+            "view-assets": "查看资产",
+            "add": "添加资产",
+            "assign-to-customer": "分配给客户",
+            "assign-asset-to-customer": "将资产分配给客户",
+            "assign-asset-to-customer-text": "请选择要分配给客户的资产",
+            "no-assets-text": "未找到资产",
+            "assign-to-customer-text": "请选择客户以分配资产",
+            "public": "公开",
+            "assignedToCustomer": "分配客户",
+            "make-public": "资产设为公开",
+            "make-private": "资产设为私有",
+            "unassign-from-customer": "取消分配客户",
+            "delete": "删除资产",
+            "asset-public": "资产公开",
+            "asset-type": "资产类型",
+            "asset-type-required": "资产类型必填。",
+            "select-asset-type": "选择资产类型",
+            "enter-asset-type": "输入资产类型",
+            "any-asset": "Any asset",
+            "no-asset-types-matching": "没有找到匹配 '{{entitySubtype}}' 的资产类型。",
+            "asset-type-list-empty": "资产类型未选择。",
+            "asset-types": "资产类型",
+            "name": "名称",
+            "name-required": "名称必填。",
+            "description": "描述",
+            "type": "类型",
+            "type-required": "类型必填。",
+            "details": "详情",
+            "events": "事件",
+            "add-asset-text": "添加新资产",
+            "asset-details": "资产详情",
+            "assign-assets": "分配资产",
+            "assign-assets-text": "分配 { count, select, 1 {1 资产} other {# 资产} } 给客户",
+            "delete-assets": "删除资产",
+            "unassign-assets": "取消分配资产",
+            "unassign-assets-action-title": "从客户处取消分配 { count, select, 1 {1 资产} other {# 资产} } ",
+            "assign-new-asset": "分配新资产",
+            "delete-asset-title": "确定要删除资产 '{{assetName}}'?",
+            "delete-asset-text": "小心!确认后资产及其所有相关数据将不可恢复。",
+            "delete-assets-title": "确定要删除 { count, select, 1 {1 资产} other {# 资产} }?",
+            "delete-assets-action-title": "删除 { count, select, 1 {1 资产} other {# 资产} }",
+            "delete-assets-text": "小心!确认后,所有选定的客户将被删除,所有相关数据将不可恢复。",
+            "make-public-asset-title": "确定要将资产 '{{assetName}}' 设为公开?",
+            "make-public-asset-text": "确认后资产及所有相关数据会被设为公开并对其他人所见。",
+            "make-private-asset-title": "确定要将资产 '{{assetName}}' 设为私有?",
+            "make-private-asset-text": "确认后资产及所有相关数据会被设为私有并对其他人不可见。",
+            "unassign-asset-title": "确定要取消分配资产 '{{assetName}}'?",
+            "unassign-asset-text": "确定后资产将被取消分配并对客户不可见。",
+            "unassign-asset": "取消分配资产",
+            "unassign-assets-title": "确定要取消分配 { count, select, 1 {1 资产} other {# 资产} }?",
+            "unassign-assets-text": "确定后资产将被取消分配并对客户不可见。",
+            "copyId": "复制资产ID",
+            "idCopiedMessage": "资产ID已经复制到粘贴板",
+            "select-asset": "选择资产",
+            "no-assets-matching": "没有找到匹配 '{{entity}}' 的资产。",
+            "asset-required": "资产必填",
+            "name-starts-with": "资产名称以此开头"
+        },
+        "attribute": {
+            "attributes": "属性",
+            "latest-telemetry": "最新遥测",
+            "attributes-scope": "设备属性范围",
+            "scope-latest-telemetry": "最新遥测",
+            "scope-client": "客户端属性",
+            "scope-server": "服务端属性",
+            "scope-shared": "共享属性",
+            "add": "添加属性",
+            "key": "键",
+            "last-update-time": "最后更新时间",
+            "key-required": "属性键必填。",
+            "value": "值",
+            "value-required": "属性值必填。",
+            "delete-attributes-title": "您确定要删除 { count, select, 1 {1 属性} other {# 属性} }吗?",
+            "delete-attributes-text": "注意,确认后所有选中的属性都会被删除。",
+            "delete-attributes": "删除属性",
+            "enter-attribute-value": "输入属性值",
+            "show-on-widget": "在部件上显示",
+            "widget-mode": "部件模式",
+            "next-widget": "下一个部件",
+            "prev-widget": "上一个部件",
+            "add-to-dashboard": "添加到仪表板",
+            "add-widget-to-dashboard": "将部件添加到仪表板",
+            "selected-attributes": "{ count, select, 1 {1 属性} other {# 属性} } 被选中",
+            "selected-telemetry": "{ count, select, 1 {1 遥测} other {# 遥测} } 被选中"
+        },
+        "confirm-on-exit": {
+            "message": "您有未保存的更改。确定要离开此页吗?",
+            "html-message": "您有未保存的更改。<br/> 确定要离开此页面吗?",
+            "title": "未保存的更改"
+        },
+        "contact": {
+            "country": "国家",
+            "city": "城市",
+            "state": "州",
+            "postal-code": "邮政编码",
+            "postal-code-invalid": "只允许数字。",
+            "address": "地址",
+            "address2": "地址2",
+            "phone": "手机",
+            "email": "邮箱",
+            "no-address": "无地址"
+        },
+        "common": {
+            "username": "用户名",
+            "password": "密码",
+            "enter-username": "输入用户名",
+            "enter-password": "输入密码",
+            "enter-search": "输入检索条件"
+        },
+        "customer": {
+            "customer": "客户",
+            "customers": "客户",
+            "management": "客户管理",
+            "dashboard": "客户仪表板",
+            "dashboards": "客户仪表板",
+            "devices": "客户设备",
+            "assets": "客户资产",
+            "public-dashboards": "公共仪表板",
+            "public-devices": "公共设备",
+            "public-assets": "公共资产",
+            "add": "添加客户",
+            "delete": "删除客户",
+            "manage-customer-users": "管理客户用户",
+            "manage-customer-devices": "管理客户设备",
+            "manage-customer-dashboards": "管理客户仪表板",
+            "manage-public-devices": "管理公共设备",
+            "manage-public-dashboards": "管理公共仪表板",
+            "manage-customer-assets": "管理客户资产",
+            "manage-public-assets": "管理公共资产",
+            "add-customer-text": "添加新客户",
+            "no-customers-text": "没有找到客户",
+            "customer-details": "客户详情",
+            "delete-customer-title": "您确定要删除客户'{{customerTitle}}'吗?",
+            "delete-customer-text": "小心!确认后,客户及其所有相关数据将不可恢复。",
+            "delete-customers-title": "您确定要删除 { count, select, 1 {1 客户} other {# 客户} }吗?",
+            "delete-customers-action-title": "删除 { count, select, 1 {1 客户} other {# 客户} }",
+            "delete-customers-text": "小心!确认后,所有选定的客户将被删除,所有相关数据将不可恢复。",
+            "manage-users": "管理用户",
+            "manage-assets": "管理资产",
+            "manage-devices": "管理设备",
+            "manage-dashboards": "管理仪表板",
+            "title": "标题",
+            "title-required": "需要标题",
+            "description": "描述",
+            "details": "详情",
+            "events": "事件",
+            "copyId": "复制客户ID",
+            "idCopiedMessage": "客户ID已复制到粘贴板",
+            "select-customer": "选择客户",
+            "no-customers-matching": "没有找到匹配 '{{entity}}' 的客户。",
+            "customer-required": "客户是必选项"
+        },
+        "datetime": {
+            "date-from": "日期从",
+            "time-from": "时间从",
+            "date-to": "日期到",
+            "time-to": "时间到"
+        },
+        "dashboard": {
+            "dashboard": "仪表板",
+            "dashboards": "仪表板库",
+            "management": "仪表板管理",
+            "view-dashboards": "查看仪表板",
+            "add": "添加仪表板",
+            "assign-dashboard-to-customer": "将仪表板分配给客户",
+            "assign-dashboard-to-customer-text": "请选择要分配给客户的仪表板",
+            "assign-to-customer-text": "请选择客户分配仪表板",
+            "assign-to-customer": "分配给客户",
+            "unassign-from-customer": "取消分配客户",
+            "make-public": "仪表板设为公开",
+            "make-private": "仪表板设为私有",
+            "no-dashboards-text": "没有找到仪表板",
+            "no-widgets": "没有配置部件",
+            "add-widget": "添加新的部件",
+            "title": "标题",
+            "select-widget-title": "选择部件",
+            "select-widget-subtitle": "可用的部件类型列表",
+            "delete": "删除仪表板",
+            "title-required": "需要标题。",
+            "description": "描述",
+            "details": "详情",
+            "dashboard-details": "仪表板详情",
+            "add-dashboard-text": "添加新的仪表板",
+            "assign-dashboards": "分配仪表板",
+            "assign-new-dashboard": "分配新的仪表板",
+            "assign-dashboards-text": "分配 { count, select, 1 {1 仪表板} other {# 仪表板} } 给客户",
+            "delete-dashboards": "删除仪表板",
+            "unassign-dashboards": "取消分配仪表板",
+            "unassign-dashboards-action-title": "从客户处取消分配 { count, select, 1 {1 仪表板} other {# 仪表板} } ",
+            "delete-dashboard-title": "您确定要删除仪表板 '{{dashboardTitle}}'吗?",
+            "delete-dashboard-text": "小心!确认后仪表板及其所有相关数据将不可恢复。",
+            "delete-dashboards-title": "你确定你要删除 { count, select, 1 {1 仪表板} other {# 仪表板} }吗?",
+            "delete-dashboards-action-title": "删除 { count, select, 1 {1 仪表板} other {# 仪表板} }",
+            "delete-dashboards-text": "小心!确认后所有选定的仪表板将被删除,所有相关数据将不可恢复。",
+            "unassign-dashboard-title": "您确定要取消分配仪表板 '{{dashboardTitle}}'吗?",
+            "unassign-dashboard-text": "确认后,面板将被取消分配,客户将无法访问。",
+            "unassign-dashboard": "取消分配仪表板",
+            "unassign-dashboards-title": "您确定要取消分配仪表板 { count, select, 1 {1 仪表板} other {# 仪表板} } 吗?",
+            "unassign-dashboards-text": "确认后,所有选定的仪表板将被取消分配,客户将无法访问。",
+            "public-dashboard-title": "仪表板现已公布",
+            "public-dashboard-text": "你的仪表板 <b>{{dashboardTitle}}</b> 已被公开,可通过如下 <a href='{{publicLink}}' target='_blank'>链接</a>访问:",
+            "public-dashboard-notice": "<b>提示:</b> 不要忘记将相关设备公开以访问其数据。",
+            "make-private-dashboard-title": "您确定要将仪表板 '{{dashboardTitle}}' 设为私有吗?",
+            "make-private-dashboard-text": "确认后,仪表板将被设为私有,不能被其他人访问。",
+            "make-private-dashboard": "仪表板设为私有",
+            "socialshare-text": "'{{dashboardTitle}}' 由Thingsboard提供支持",
+            "socialshare-title": "'{{dashboardTitle}}' 由Thingsboard提供支持",
+            "select-dashboard": "选择仪表板",
+            "no-dashboards-matching": "找不到符合 '{{entity}}' 的仪表板。",
+            "dashboard-required": "仪表板必填。",
+            "select-existing": "选择现有仪表板",
+            "create-new": "创建新的仪表板",
+            "new-dashboard-title": "新仪表板标题",
+            "open-dashboard": "打开仪表板",
+            "set-background": "设置背景",
+            "background-color": "背景颜色",
+            "background-image": "背景图片",
+            "background-size-mode": "背景大小模式",
+            "no-image": "无图像选择",
+            "drop-image": "拖拽图像或单击以选择要上传的文件。",
+            "settings": "设置",
+            "columns-count": "列数",
+            "columns-count-required": "需要列数。",
+            "min-columns-count-message": "只允许最少10列",
+            "max-columns-count-message": "只允许最多1000列",
+            "widgets-margins": "部件间边距",
+            "horizontal-margin": "水平边距",
+            "horizontal-margin-required": "需要水平边距值。",
+            "min-horizontal-margin-message": "只允许0作为最小水平边距值。",
+            "max-horizontal-margin-message": "只允许50作为最大水平边距值。",
+            "vertical-margin": "垂直边距",
+            "vertical-margin-required": "需要垂直边距值。",
+            "min-vertical-margin-message": "只允许0作为最小垂直边距值。",
+            "max-vertical-margin-message": "只允许50作为最大垂直边距值。",
+            "autofill-height": "自动填充布局高度",
+            "mobile-layout": "移动端布局设置",
+            "mobile-row-height": "移动端行高距(px)",
+            "mobile-row-height-required": "移动端行高距必填。",
+            "min-mobile-row-height-message": "移动端行高距至少5px。",
+            "max-mobile-row-height-message": "移动端行高距最多200px。",
+            "display-title": "显示仪表板标题",
+            "toolbar-always-open": "工具栏常驻",
+            "title-color": "标题颜色",
+            "display-dashboards-selection": "显示仪表板选项",
+            "display-entities-selection": "显示实体选项",
+            "display-dashboard-timewindow": "显示时间窗口",
+            "display-dashboard-export": "显示导出",
+            "import": "导入仪表板",
+            "export": "导出仪表板",
+            "export-failed-error": "无法导出仪表板: {{error}}",
+            "create-new-dashboard": "创建新的仪表板",
+            "dashboard-file": "仪表板文件",
+            "invalid-dashboard-file-error": "无法导入仪表板: 仪表板数据结构无效。",
+            "dashboard-import-missing-aliases-title": "配置导入仪表板使用的别名",
+            "create-new-widget": "创建新部件",
+            "import-widget": "导入部件",
+            "widget-file": "部件文件",
+            "invalid-widget-file-error": "无法导入窗口部件: 窗口部件数据结构无效。",
+            "widget-import-missing-aliases-title": "配置导入的窗口部件使用的别名",
+            "open-toolbar": "打开仪表板工具栏",
+            "close-toolbar": "关闭工具栏",
+            "configuration-error": "配置错误",
+            "alias-resolution-error-title": "仪表板别名配置错误",
+            "invalid-aliases-config": "无法找到与某些别名过滤器匹配的任何设备。<br/>请联系您的管理员以解决此问题。",
+            "select-devices": "选择设备",
+            "assignedToCustomer": "分配给客户",
+            "public": "公共",
+            "public-link": "公共链接",
+            "copy-public-link": "复制公共链接",
+            "public-link-copied-message": "仪表板的公共链接已被复制到剪贴板",
+            "manage-states": "仪表板状态管理",
+            "states": "仪表板状态",
+            "search-states": "仪表板状态检索",
+            "selected-states": "{ count, select, 1 {1 仪表板状态} other {# 仪表板状态} } 选中",
+            "edit-state": "仪表板状态编辑",
+            "delete-state": "删除仪表板状态",
+            "add-state": "添加仪表板状态",
+            "state": "仪表板状态",
+            "state-name": "状态名",
+            "state-name-required": "仪表板状态名必填。",
+            "state-id": "状态ID",
+            "state-id-required": "仪表板状态ID必填。",
+            "state-id-exists": "仪表板状态ID已经存在。",
+            "is-root-state": "根状态",
+            "delete-state-title": "删除仪表板状态",
+            "delete-state-text": "确定要删除仪表板状态 '{{stateName}}' 吗?",
+            "show-details": "显示详情",
+            "hide-details": "隐藏详情",
+            "select-state": "选择目标状态",
+            "state-controller": "状态控制"
+        },
+        "datakey": {
             "settings": "设置",
             "advanced": "高级",
             "label": "标签",
             "color": "颜色",
+            "units": "单位符号",
+            "decimals": "小数位数",
             "data-generation-func": "数据生成功能",
             "use-data-post-processing-func": "使用数据后处理功能",
             "configuration": "数据键配置",
             "timeseries": "时间序列",
             "attributes": "属性",
+            "alarm": "Alarm fields",
             "timeseries-required": "需要设备时间序列。",
-            "timeseries-or-attributes-required": "设备时间/属性是必需的。",
+            "timeseries-or-attributes-required": "设备时间/属性必填。",
+            "maximum-timeseries-or-attributes": "最大允许 { count, select, 1 {1 时间序列/属性} other {# 时间序列/属性} }",
+            "alarm-fields-required": "警告字段必填。",
             "function-types": "函数类型",
-            "function-types-required": "需要函数类型。"
+            "function-types-required": "需要函数类型。",
+            "maximum-function-types": "至少需要 { count, select, 1 {1 函数类型} other {# 函数类型} }"
         },
-        "datasource" : {
+        "datasource": {
             "type": "数据源类型",
+            "name": "数据源名称",
             "add-datasource-prompt": "请添加数据源"
         },
-        "details" : {
+        "details": {
             "edit-mode": "编辑模式",
             "toggle-edit-mode": "切换编辑模式"
         },
-        "device" : {
+        "device": {
             "device": "设备",
-            "device-required": "设备是必需的",
+            "device-required": "设备必填",
             "devices": "设备",
             "management": "设备管理",
             "view-devices": "查看设备",
             "device-alias": "设备别名",
             "aliases": "设备别名",
-            "no-alias-matching" : "'{{alias}}' 没有找到。",
-            "no-aliases-found" : "找不到别名。",
-            "no-key-matching" : "'{{key}}' 没有找到。",
-            "no-keys-found" : "找不到密钥。",
+            "no-alias-matching": "'{{alias}}' 没有找到。",
+            "no-aliases-found": "找不到别名。",
+            "no-key-matching": "'{{key}}' 没有找到。",
+            "no-keys-found": "找不到密钥。",
             "create-new-alias": "创建一个新的!",
             "create-new-key": "创建一个新的!",
-            "duplicate-alias-error" : "找到重复别名 '{{alias}}'。 <br> 设备别名必须是唯一的。",
-            "configure-alias" : "配置 '{{alias}}' 别名",
-            "no-devices-matching" : "找不到与 '{{entity}}' 匹配的设备。",
-            "alias" : "别名",
-            "alias-required" : "需要设备别名。",
+            "duplicate-alias-error": "找到重复别名 '{{alias}}'。 <br> 设备别名必须是唯一的。",
+            "configure-alias": "配置 '{{alias}}' 别名",
+            "no-devices-matching": "找不到与 '{{entity}}' 匹配的设备。",
+            "alias": "别名",
+            "alias-required": "需要设备别名。",
             "remove-alias": "删除设备别名",
             "add-alias": "添加设备别名",
-            "name-starts-with" : "名称前缀",
-            "device-list" : "设备列表",
-            "use-device-name-filter" : "使用过滤器",
-            "device-list-empty" : "没有被选中的设备",
-            "device-name-filter-required" : "设备名称过滤器是必需得。",
-            "device-name-filter-no-device-matched" : "找不到以'{{device}}' 开头的设备。",
-            "add" : "添加设备",
+            "name-starts-with": "名称前缀",
+            "device-list": "设备列表",
+            "use-device-name-filter": "使用过滤器",
+            "device-list-empty": "没有被选中的设备",
+            "device-name-filter-required": "设备名称过滤器必填。",
+            "device-name-filter-no-device-matched": "找不到以'{{device}}' 开头的设备。",
+            "add": "添加设备",
             "assign-to-customer": "分配给客户",
             "assign-device-to-customer": "将设备分配给客户",
             "assign-device-to-customer-text": "请选择要分配给客户的设备",
-            "make-public" : "公有",
-            "make-private" : "私有",
+            "make-public": "公开",
+            "make-private": "私有",
             "no-devices-text": "找不到设备",
             "assign-to-customer-text": "请选择客户分配设备",
             "device-details": "设备详细信息",
@@ -355,26 +558,26 @@ export default function addLocaleChinese(locales) {
             "manage-credentials": "管理凭据",
             "delete": "删除设备",
             "assign-devices": "分配设备",
-            "assign-devices-text": "将{count,select,1 {1 device} other {# devices}}分配给客户",
+            "assign-devices-text": "将{count,select,1 {1 设备} other {# 设备}}分配给客户",
             "delete-devices": "删除设备",
             "unassign-from-customer": "取消分配客户",
             "unassign-devices": "取消分配设备",
-            "unassign-devices-action-title": "从客户处取消分配{count,select,1 {1 device} other {# devices}}",
+            "unassign-devices-action-title": "从客户处取消分配{count,select,1 {1 设备} other {# 设备}}",
             "assign-new-device": "分配新设备",
-            "make-public-device-title" : "您确定要将设备 '{{deviceName}}' 设为公开吗?",
-            "make-public-device-text" : "确认后,设备及其所有数据将被公开并可被其他人访问。",
-            "make-private-device-title" : "您确定要将设备 '{{deviceName}}' 设为私有吗?",
-            "make-private-device-text" : "确认后,设备及其所有数据将被私有化,不被其他人访问。",
+            "make-public-device-title": "您确定要将设备 '{{deviceName}}' 设为公开吗?",
+            "make-public-device-text": "确认后,设备及其所有数据将被设为公开并可被其他人访问。",
+            "make-private-device-title": "您确定要将设备 '{{deviceName}}' 设为私有吗?",
+            "make-private-device-text": "确认后,设备及其所有数据将被设为私有,不被其他人访问。",
             "view-credentials": "查看凭据",
             "delete-device-title": "您确定要删除设备的{{deviceName}}吗?",
             "delete-device-text": "小心!确认后设备及其所有相关数据将不可恢复。",
-            "delete-devices-title": "您确定要删除{count,select,1 {1 device} other {# devices}} 吗?",
-            "delete-devices-action-title": "删除 {count,select,1 {1 device} other {# devices}}",
+            "delete-devices-title": "您确定要删除{count,select,1 {1 设备} other {# 设备}} 吗?",
+            "delete-devices-action-title": "删除 {count,select,1 {1 设备} other {# 设备}}",
             "delete-devices-text": "小心!确认后所有选定的设备将被删除,所有相关数据将不可恢复。",
             "unassign-device-title": "您确定要取消分配设备 '{{deviceName}}'?",
             "unassign-device-text": "确认后,设备将被取消分配,客户将无法访问。",
             "unassign-device": "取消分配设备",
-            "unassign-devices-title": "您确定要取消分配{count,select,1 {1 device} other {# devices}} 吗?",
+            "unassign-devices-title": "您确定要取消分配{count,select,1 {1 设备} other {# 设备}} 吗?",
             "unassign-devices-text": "确认后,所有选定的设备将被取消分配,并且客户将无法访问。",
             "device-credentials": "设备凭据",
             "credentials-type": "凭据类型",
@@ -384,9 +587,17 @@ export default function addLocaleChinese(locales) {
             "rsa-key": "RSA公钥",
             "rsa-key-required": "需要RSA公钥",
             "secret": "密钥",
-            "secret-required": "密钥是必需的",
+            "secret-required": "密钥必填",
+            "device-type": "设备类型",
+            "device-type-required": "设备类型必填。",
+            "select-device-type": "选择设备类型",
+            "enter-device-type": "输入设备类型",
+            "any-device": "任意设备",
+            "no-device-types-matching": "没有找到符合 '{{entitySubtype}}' 的设备类型。",
+            "device-type-list-empty": "未选择设备类型",
+            "device-types": "设备类型",
             "name": "名称",
-            "name-required": "名称是必需的。",
+            "name-required": "名称必填。",
             "description": "说明",
             "events": "事件",
             "details": "详细信息",
@@ -398,18 +609,102 @@ export default function addLocaleChinese(locales) {
             "unable-delete-device-alias-title": "无法删除设备别名",
             "unable-delete-device-alias-text": "设备别名 '{{deviceAlias}}' 不能够被删除,因为它被下列部件所使用: <br/> {{widgetsList}}",
             "is-gateway": "是网关",
-            "public" : "公共",
-            "device-public" : "设备是公共的"
+            "public": "公开",
+            "device-public": "设备公开",
+            "select-device": "选择设备"
         },
-        "dialog" : {
-            "close" : "关闭对话框"
+        "dialog": {
+            "close": "关闭对话框"
         },
-        "error" : {
+        "error": {
             "unable-to-connect": "无法连接到服务器!请检查您的互联网连接。",
             "unhandled-error-code": "未处理的错误代码: {{errorCode}}",
             "unknown-error": "未知错误"
         },
-        "event" : {
+        "entity": {
+            "entity": "实体",
+            "entities": "实体",
+            "aliases": "实体别名",
+            "entity-alias": "实体别名",
+            "unable-delete-entity-alias-title": "无法删除实体别名",
+            "unable-delete-entity-alias-text": "实体别名 '{{entityAlias}}' 被以下部件使用不能删除:<br/>{{widgetsList}}",
+            "duplicate-alias-error": "别名 '{{alias}}' 重复。<br>同一仪表板别名必须唯一。",
+            "missing-entity-filter-error": "别名 '{{alias}}' 缺少过滤器",
+            "configure-alias": "别名 '{{alias}}' 配置",
+            "alias": "别名",
+            "alias-required": "实体别名必填。",
+            "remove-alias": "移除实体别名",
+            "add-alias": "添加实体别名",
+            "entity-list": "实体列表",
+            "entity-type": "实体类型",
+            "entity-types": "实体类型",
+            "entity-type-list": "实体类型列表",
+            "any-entity": "任意实体",
+            "enter-entity-type": "输入实体类型",
+            "no-entities-matching": "没有找到符合 '{{entity}}' 的实体。",
+            "no-entity-types-matching": "没有找到符合 '{{entityType}}' 类型的实体。",
+            "name-starts-with": "名称开始于",
+            "use-entity-name-filter": "用户过滤",
+            "entity-list-empty": "没有选择实体。",
+            "entity-type-list-empty": "没有选择实体类型。",
+            "entity-name-filter-required": "实体名过滤器必填。",
+            "entity-name-filter-no-entity-matched": "没有找到以 '{{entity}}' 开头的实体",
+            "all-subtypes": "所有",
+            "select-entities": "选择实体",
+            "no-aliases-found": "没有找到别名",
+            "no-alias-matching": "没有找到 '{{alias}}'",
+            "create-new-alias": "创建新别名",
+            "key": "键",
+            "key-name": "键名",
+            "no-keys-found": "没有找到键",
+            "no-key-matching": "没有找到键 '{{key}}'",
+            "create-new-key": "创建新键",
+            "type": "类型",
+            "type-required": "实体类型必填。",
+            "type-device": "设备",
+            "type-devices": "设备",
+            "list-of-devices": "{ count, select, 1 {设备} other {# 设备列表} }",
+            "device-name-starts-with": "以 '{{prefix}}' 开头的设备",
+            "type-asset": "资产",
+            "type-assets": "资产",
+            "list-of-assets": "{ count, select, 1 {资产} other {# 资产列表} }",
+            "asset-name-starts-with": "以 '{{prefix}}' 开头的资产",
+            "type-rule": "规则",
+            "type-rules": "规则",
+            "list-of-rules": "{ count, select, 1 {规则} other {# 规则列表} }",
+            "rule-name-starts-with": "以 '{{prefix}}' 开头的规则",
+            "type-plugin": "插件",
+            "type-plugins": "插件",
+            "list-of-plugins": "{ count, select, 1 {插件} other {# 插件列表} }",
+            "plugin-name-starts-with": "以 '{{prefix}}' 开头的插件",
+            "type-tenant": "租户",
+            "type-tenants": "租户",
+            "list-of-tenants": "{ count, select, 1 {租户} other {# 租户列表} }",
+            "tenant-name-starts-with": "以 '{{prefix}}' 开头的租户",
+            "type-customer": "客户",
+            "type-customers": "客户",
+            "list-of-customers": "{ count, select, 1 {客户} other {# 客户列表} }",
+            "customer-name-starts-with": "以 '{{prefix}}' 开头的客户",
+            "type-user": "用户",
+            "type-users": "用户",
+            "list-of-users": "{ count, select, 1 {用户} other {# 用户列表} }",
+            "user-name-starts-with": "以 '{{prefix}}' 开头的用户",
+            "type-dashboard": "仪表板",
+            "type-dashboards": "仪表板",
+            "list-of-dashboards": "{ count, select, 1 {仪表板} other {# 仪表板列表} }",
+            "dashboard-name-starts-with": "以 '{{prefix}}' 开头的仪表板",
+            "type-alarm": "警告",
+            "type-alarms": "警告",
+            "list-of-alarms": "{ count, select, 1 {警告} other {# 警告列表} }",
+            "alarm-name-starts-with": "以 '{{prefix}}' 开头的警告",
+            "search": "实体检索",
+            "selected-entities": "{ count, select, 1 {1 实体} other {# 实体} } 被选中",
+            "entity-name": "实体名",
+            "details": "实体详情",
+            "no-entities-prompt": "没有找到实体",
+            "no-data": "无数据"
+        },
+        "event": {
             "event-type": "事件类型",
             "type-error": "错误",
             "type-lc-event": "生命周期事件",
@@ -428,20 +723,20 @@ export default function addLocaleChinese(locales) {
             "messages-processed": "消息处理",
             "errors-occurred": "错误发生"
         },
-        "fullscreen" : {
+        "fullscreen": {
             "expand": "展开到全屏",
             "exit": "退出全屏",
             "toggle": "切换全屏模式",
             "fullscreen": "全屏"
         },
-        "function" : {
-            "function" : "函数"
+        "function": {
+            "function": "函数"
         },
-        "grid" : {
+        "grid": {
             "delete-item-title": "您确定要删除此项吗?",
             "delete-item-text": "注意,确认后此项及其所有相关数据将变得不可恢复。",
-            "delete-items-title" : "你确定你要删除 { count, select, 1 {1 item} other {# items} }吗?",
-            "delete-items-action-title" : "删除 { count, select, 1 {1 item} other {# items} }",
+            "delete-items-title": "你确定你要删除 { count, select, 1 {1 项} other {# 项} }吗?",
+            "delete-items-action-title": "删除 { count, select, 1 {1 项} other {# 项} }",
             "delete-items-text": "注意,确认后所有选择的项目将被删除,所有相关数据将不可恢复。",
             "add-item-text": "添加新项目",
             "no-items-text": "没有找到项目",
@@ -450,10 +745,10 @@ export default function addLocaleChinese(locales) {
             "delete-items": "删除项目",
             "scroll-to-top": "滚动到顶部"
         },
-        "help" : {
-            "goto-help-page" : "转到帮助页面"
+        "help": {
+            "goto-help-page": "转到帮助页面"
         },
-        "home" : {
+        "home": {
             "home": "首页",
             "profile": "属性",
             "logout": "注销",
@@ -461,30 +756,39 @@ export default function addLocaleChinese(locales) {
             "avatar": "头像",
             "open-user-menu": "打开用户菜单"
         },
-        "import" : {
-            "no-file" : "没有选择文件",
-            "drop-file" : "拖动一个JSON文件或者单击以选择要上传的文件。"
+        "import": {
+            "no-file": "没有选择文件",
+            "drop-file": "拖动一个JSON文件或者单击以选择要上传的文件。"
         },
-        "item" : {
-            "selected" : "选择"
+        "item": {
+            "selected": "选择"
         },
-        "js-func" : {
+        "js-func": {
             "no-return-error": "函数必须返回值!",
             "return-type-mismatch": "函数必须返回 '{{type}}' 类型的值!"
         },
-        "legend" : {
-            "position" : "图例位置",
-            "show-max" : "显示最大值",
-            "show-min" : "显示最小值",
-            "show-avg" : "显示平均值",
-            "show-total" : "显示总数",
-            "settings" : "图例设置",
-            "min" : "最小值",
-            "max" : "最大值",
-            "avg" : "平均值",
-            "total" : "总数"
-        },
-        "login" : {
+        "layout": {
+            "layout": "布局",
+            "manage": "布局管理",
+            "settings": "布局设置",
+            "color": "颜色",
+            "main": "主体",
+            "right": "右侧",
+            "select": "选择目标布局"
+        },
+        "legend": {
+            "position": "图例位置",
+            "show-max": "显示最大值",
+            "show-min": "显示最小值",
+            "show-avg": "显示平均值",
+            "show-total": "显示总数",
+            "settings": "图例设置",
+            "min": "最小值",
+            "max": "最大值",
+            "avg": "平均值",
+            "total": "总数"
+        },
+        "login": {
             "login": "登录",
             "request-password-reset": "请求密码重置",
             "reset-password": "重置密码",
@@ -501,319 +805,428 @@ export default function addLocaleChinese(locales) {
             "password-link-sent-message": "密码重置链接已成功发送!",
             "email": "电子邮件"
         },
-        "plugin" : {
-            "plugins" : "插件",
-            "delete" : "删除插件",
-            "activate" : "激活插件",
-            "suspend" : "暂停插件",
-            "active" : "激活",
-            "suspended" : "暂停",
-            "name" : "名称",
-            "name-required" : "名称是必填项。",
-            "description" : "描述",
-            "add" : "添加插件",
-            "delete-plugin-title" : "你确定要删除插件 '{{pluginName}}' 吗?",
-            "delete-plugin-text" : "小心!确认后,插件和所有相关数据将不可恢复。",
-            "delete-plugins-title" : "你确定你要删除 { count, select, 1 {1 plugin} other {# plugins} } 吗?",
-            "delete-plugins-action-title" : "删除 { count, select, 1 {1 plugin} other {# plugins} }",
-            "delete-plugins-text" : "小心!确认后,所有选定的插件将被删除,所有相关数据将不可恢复。",
-            "add-plugin-text" : "添加新的插件",
-            "no-plugins-text" : "没有找到插件",
-            "plugin-details" : "插件详细信息",
-            "api-token" : "API令牌",
-            "api-token-required" : "API令牌是必需的。",
-            "type" : "插件类型",
-            "type-required" : "插件类型是必需的。",
-            "configuration" : "插件配置",
-            "system" : "系统",
-            "select-plugin" : "选择插件",
-            "plugin" : "插件",
-            "no-plugins-matching" : "没有找到匹配'{{entity}}'的插件。",
-            "plugin-required" : "插件是必需的。",
-            "plugin-require-match" : "请选择一个现有的插件。",
-            "events" : "事件",
-            "details" : "详情",
-            "import" : "导入插件",
-            "export" : "导出插件",
-            "export-failed-error" : "无法导出插件:{{error}}",
-            "create-new-plugin" : "创建新的插件",
-            "plugin-file" : "插件文件",
-            "invalid-plugin-file-error" : "无法导入插件:插件数据结构无效。"
-        },
-        "position" : {
-            "top" : "顶部",
-            "bottom" : "底部",
-            "left" : "左侧",
-            "right" : "右侧"
-        },
-        "profile" : {
+        "plugin": {
+            "plugins": "插件",
+            "delete": "删除插件",
+            "activate": "激活插件",
+            "suspend": "暂停插件",
+            "active": "激活",
+            "suspended": "暂停",
+            "name": "名称",
+            "name-required": "名称必填。",
+            "description": "描述",
+            "add": "添加插件",
+            "delete-plugin-title": "你确定要删除插件 '{{pluginName}}' 吗?",
+            "delete-plugin-text": "小心!确认后,插件和所有相关数据将不可恢复。",
+            "delete-plugins-title": "你确定你要删除 { count, select, 1 {1 插件} other {# 插件} } 吗?",
+            "delete-plugins-action-title": "删除 { count, select, 1 {1 插件} other {# 插件} }",
+            "delete-plugins-text": "小心!确认后,所有选定的插件将被删除,所有相关数据将不可恢复。",
+            "add-plugin-text": "添加新的插件",
+            "no-plugins-text": "没有找到插件",
+            "plugin-details": "插件详细信息",
+            "api-token": "API令牌",
+            "api-token-required": "API令牌必填。",
+            "type": "插件类型",
+            "type-required": "插件类型必填。",
+            "configuration": "插件配置",
+            "system": "系统",
+            "select-plugin": "选择插件",
+            "plugin": "插件",
+            "no-plugins-matching": "没有找到匹配'{{entity}}'的插件。",
+            "plugin-required": "插件必填。",
+            "plugin-require-match": "请选择一个现有的插件。",
+            "events": "事件",
+            "details": "详情",
+            "import": "导入插件",
+            "export": "导出插件",
+            "export-failed-error": "无法导出插件:{{error}}",
+            "create-new-plugin": "创建新的插件",
+            "plugin-file": "插件文件",
+            "invalid-plugin-file-error": "无法导入插件:插件数据结构无效。",
+            "copyId": "复制插件ID",
+            "idCopiedMessage": "插件ID已经复制到粘贴板"
+        },
+        "position": {
+            "top": "顶部",
+            "bottom": "底部",
+            "left": "左侧",
+            "right": "右侧"
+        },
+        "profile": {
             "profile": "属性",
             "change-password": "更改密码",
             "current-password": "当前密码"
         },
-        "rule" : {
-            "rules" : "规则",
-            "delete" : "删除规则",
-            "activate" : "激活规则",
-            "suspend" : "暂停规则",
-            "active" : "激活",
-            "suspended" : "暂停",
-            "name" : "名称",
-            "name-required" : "名称是必填项。",
-            "description" : "描述",
-            "add" : "添加规则",
-            "delete-rule-title" : "您确定要删除规则'{{ruleName}}'吗?",
-            "delete-rule-text" : "小心!确认后,规则和所有相关数据将不可恢复。",
-            "delete-rules-title" : "你确定要删除 {count, select, 1 {1 rule} other {# rules}} 吗?",
-            "delete-rules-action-title" : "删除 { count, select, 1 {1 rule} other {# rules} }",
-            "delete-rules-text" : "小心!确认后,所有选定的规则将被删除,所有相关数据将不可恢复。",
-            "add-rule-text" : "添加新规则",
-            "no-rules-text" : "没有找到规则",
-            "rule-details" : "规则详情",
-            "filters" : "过滤器",
-            "filter" : "过滤器",
-            "add-filter-prompt" : "请添加过滤器",
-            "remove-filter" : "删除过滤器",
-            "add-filter" : "添加过滤器",
-            "filter-name" : "过滤器名称",
-            "filter-type" : "过滤器类型",
-            "edit-filter" : "编辑过滤器",
-            "view-filter" : "查看过滤器",
-            "component-name" : "名称",
-            "component-name-required" : "名称是必填项。",
-            "component-type" : "类型",
-            "component-type-required" : "类型是必填项。",
-            "processor" : "处理器",
-            "no-processor-configured" : "未配置处理器",
-            "create-processor" : "创建处理器",
-            "processor-name" : "处理器名称",
-            "processor-type" : "处理器类型",
-            "plugin-action" : "插件动作",
-            "action-name" : "动作名称",
-            "action-type" : "动作类型",
-            "create-action-prompt" : "请创建动作",
-            "create-action" : "创建动作",
-            "details" : "详情",
-            "events" : "事件",
-            "system" : "系统",
-            "import" : "导入规则",
-            "export" : "导出规则",
-            "export-failed-error" : "无法导出规则:{{error}}",
-            "create-new-rule" : "创建新规则",
-            "rule-file" : "规则文件",
-            "invalid-rule-file-error" : "无法导入规则:规则数据结构无效。"
-        },
-        "rule-plugin" : {
-            "management" : "规则和插件管理"
-        },
-        "tenant" : {
-            "tenants" : "租户",
-            "management" : "租户管理",
-            "add" : "添加租户",
-            "admins" : "管理员",
-            "manage-tenant-admins" : "管理租户管理员",
-            "delete" : "删除租户",
-            "add-tenant-text" : "添加新租户",
-            "no-tenants-text" : "没有找到租户",
-            "tenant-details" : "租客详情",
-            "delete-tenant-title" : "您确定要删除租户'{{tenantTitle}}'吗?",
-            "delete-tenant-text" : "小心!确认后,租户和所有相关数据将不可恢复。",
-            "delete-tenants-title" : "您确定要删除 {count,select,1 {1 tenant} other {# tenants}} 吗?",
-            "delete-tenants-action-title" : "删除 { count, select, 1 {1 tenant} other {# tenants} }",
-            "delete-tenants-text" : "小心!确认后,所有选定的租户将被删除,所有相关数据将不可恢复。",
-            "title" : "标题",
-            "title-required" : "标题是必填项。",
-            "description" : "描述"
-        },
-        "timeinterval" : {
-            "seconds-interval" : "{ seconds, select, 1 {1 second} other {# seconds} }",
-            "minutes-interval" : "{ minutes, select, 1 {1 minute} other {# minutes} }",
-            "hours-interval" : "{ hours, select, 1 {1 hour} other {# hours} }",
-            "days-interval" : "{ days, select, 1 {1 day} other {# days} }",
-            "days" : "天",
-            "hours" : "时",
-            "minutes" : "分",
-            "seconds" : "秒",
-            "advanced" : "高级"
-        },
-        "timewindow" : {
-            "days" : "{ days, select, 1 { day } other {# days } }",
-            "hours" : "{ hours, select, 0 { hour } 1 {1 hour } other {# hours } }",
-            "minutes" : "{ minutes, select, 0 { minute } 1 {1 minute } other {# minutes } }",
-            "seconds" : "{ seconds, select, 0 { second } 1 {1 second } other {# seconds } }",
-            "realtime" : "实时",
-            "history" : "历史",
-            "last-prefix" : "最后",
-            "period" : "从 {{ startTime }} 到 {{ endTime }}",
-            "edit" : "编辑时间窗口",
-            "date-range" : "日期范围",
-            "last" : "最后",
-            "time-period" : "时间段"
-        },
-        "user" : {
-            "users" : "用户",
-            "customer-users" : "客户用户",
-            "tenant-admins" : "租户管理员",
-            "sys-admin" : "系统管理员",
-            "tenant-admin" : "租户管理员",
-            "customer" : "客户",
-            "anonymous" : "匿名",
-            "add" : "添加用户",
-            "delete" : "删除用户",
-            "add-user-text" : "添加新用户",
-            "no-users-text" : "找不到用户",
-            "user-details" : "用户详细信息",
-            "delete-user-title" : "您确定要删除用户 '{{userEmail}}' 吗?",
-            "delete-user-text" : "小心!确认后,用户和所有相关数据将不可恢复。",
-            "delete-users-title" : "你确定你要删除 { count, select, 1 {1 user} other {# users} } 吗?",
-            "delete-users-action-title" : "删除  { count, select, 1 {1 user} other {# users} }",
-            "delete-users-text" : "小心!确认后,所有选定的用户将被删除,所有相关数据将不可恢复。",
-            "activation-email-sent-message" : "激活电子邮件已成功发送!",
-            "resend-activation" : "重新发送激活",
-            "email" : "电子邮件",
-            "email-required" : "电子邮件是必需的。",
-            "first-name" : "名字",
-            "last-name" : "姓",
-            "description" : "描述",
-            "default-dashboard" : "默认面板",
-            "always-fullscreen" : "始终全屏"
-        },
-        "value" : {
-            "type" : "值类型",
-            "string" : "字符串",
-            "string-value" : "字符串值",
-            "integer" : "数字",
-            "integer-value" : "数字值",
-            "invalid-integer-value" : "整数值无效",
-            "double" : "双精度小数",
-            "double-value" : "双精度小数值",
-            "boolean" : "布尔",
-            "boolean-value" : "布尔值",
-            "false" : "假",
-            "true" : "真"
-        },
-        "widget" : {
-            "widget-library" : "部件库",
-            "widget-bundle" : "部件包",
-            "select-widgets-bundle" : "选择部件包",
-            "management" : "部件管理",
-            "editor" : "部件编辑器",
-            "widget-type-not-found" : "加载部件配置时出现问题。<br> 可能关联的\n 部件类型已删除。",
-            "widget-type-load-error" : "由于以下错误,部件未加载:",
-            "remove" : "删除部件",
-            "edit" : "编辑部件",
-            "remove-widget-title" : "您确定要删除部件 '{{widgetTitle}}' 吗?",
-            "remove-widget-text" : "确认后,窗口部件和所有相关数据将不可恢复。",
-            "timeseries" : "时间序列",
-            "latest-values" : "最新值",
-            "rpc" : "控件部件",
-            "static" : "静态部件",
-            "select-widget-type" : "选择窗口部件类型",
-            "missing-widget-title-error" : "部件标题必须指定!",
-            "widget-saved" : "部件已保存",
-            "unable-to-save-widget-error" : "无法保存窗口部件! 部件有错误!",
-            "save" : "保存部件",
-            "saveAs" : "将部件另存为",
-            "save-widget-type-as" : "将部件类型另存为",
-            "save-widget-type-as-text" : "请输入新的部件标题和/或选择目标部件包",
-            "toggle-fullscreen" : "切换全屏",
-            "run" : "运行部件",
-            "title" : "部件标题",
-            "title-required" : "需要部件标题。",
-            "type" : "部件类型",
-            "resources" : "资源",
-            "resource-url" : "JavaScript/CSS URL",
-            "remove-resource" : "删除资源",
-            "add-resource" : "添加资源",
-            "html" : "HTML",
-            "tidy" : "整理",
-            "css" : "CSS",
-            "settings-schema" : "设置模式",
-            "datakey-settings-schema" : "数据键设置模式",
-            "javascript" : "Javascript",
-            "remove-widget-type-title" : "您确定要删除部件类型 '{{widgetName}}'吗?",
-            "remove-widget-type-text" : "确认后,窗口部件类型和所有相关数据将不可恢复。",
-            "remove-widget-type" : "删除部件类型",
-            "add-widget-type" : "添加新的部件类型",
-            "widget-type-load-failed-error" : "无法加载部件类型!",
-            "widget-template-load-failed-error" : "无法加载部件模板!",
-            "add" : "添加部件",
-            "undo" : "撤消部件更改",
-            "export" : "导出部件"
-        },
-        "widgets-bundle" : {
-            "current" : "当前包",
-            "widgets-bundles" : "部件包",
-            "add" : "添加部件包",
-            "delete" : "删除部件包",
-            "title" : "标题",
-            "title-required" : "标题是必填项。",
-            "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, select, 1 {1 widgets bundle} other {# widgets bundles} } 吗?",
-            "delete-widgets-bundles-action-title" : "删除  { count, select, 1 {1 widgets bundle} other {# widgets bundles} }",
-            "delete-widgets-bundles-text" : "小心!确认后,所有选定的部件包将被删除,所有相关数据将不可恢复。",
-            "no-widgets-bundles-matching" : "没有找到与 '{{widgetsBundle}}' 匹配的部件包。",
-            "widgets-bundle-required" : "需要部件包。",
-            "system" : "系统",
-            "import" : "导入部件包",
-            "export" : "导出部件包",
-            "export-failed-error" : "无法导出部件包: {{error}}",
-            "create-new-widgets-bundle" : "创建新的部件包",
-            "widgets-bundle-file" : "部件包文件",
-            "invalid-widgets-bundle-file-error" : "无法导入部件包:无效的部件包数据结构。"
-        },
-        "widget-config" : {
-            "data" : "数据",
-            "settings" : "设置",
-            "advanced" : "高级",
-            "title" : "标题",
-            "general-settings" : "常规设置",
-            "display-title" : "显示标题",
-            "drop-shadow" : "阴影",
-            "enable-fullscreen" : "启用全屏",
-            "background-color" : "背景颜色",
-            "text-color" : "文字颜色",
-            "padding" : "填充",
-            "title-style" : "标题风格",
-            "mobile-mode-settings" : "移动模式设置",
-            "order" : "顺序",
-            "height" : "高度",
-            "units" : "特殊符号展示值",
-            "decimals" : "浮点数后的位数",
-            "timewindow" : "时间窗口",
-            "use-dashboard-timewindow" : "使用仪表板的时间窗口",
-            "display-legend" : "显示图例",
-            "datasources" : "数据源",
-            "datasource-type" : "类型",
-            "datasource-parameters" : "参数",
-            "remove-datasource" : "移除数据源",
-            "add-datasource" : "添加数据源",
-            "target-device" : "目标设备"
-        },
-        "widget-type" : {
-            "import" : "导入部件类型",
-            "export" : "导出部件类型",
-            "export-failed-error" : "无法导出部件类型: {{error}}",
-            "create-new-widget-type" : "创建新的部件类型",
-            "widget-type-file" : "部件类型文件",
-            "invalid-widget-type-file-error" : "无法导入部件类型:无效的部件类型数据结构。"
-        },
-        "language" : {
-            "language" : "语言",
-            "en_US" : "英语",
-            "ko_KR" : "韩语",
-            "zh_CN" : "汉语",
-            "ru_RU" : "俄语",
+        "relation": {
+            "relations": "关联",
+            "direction": "方向",
+            "search-direction": {
+                "FROM": "从",
+                "TO": "到"
+            },
+            "direction-type": {
+                "FROM": "从",
+                "TO": "到"
+            },
+            "from-relations": "向外的关联",
+            "to-relations": "向内的关联",
+            "selected-relations": "{ count, select, 1 {1 关联} other {# 关联} } 被选中",
+            "type": "类型",
+            "to-entity-type": "到实体类型",
+            "to-entity-name": "到实体名称",
+            "from-entity-type": "从实体类型",
+            "from-entity-name": "从实体类型",
+            "to-entity": "到实体",
+            "from-entity": "从实体",
+            "delete": "删除关联",
+            "relation-type": "关联类型",
+            "relation-type-required": "关联类型必填",
+            "any-relation-type": "任意类型",
+            "add": "添加关联",
+            "edit": "编辑关联",
+            "delete-to-relation-title": "确定要删除实体 '{{entityName}}' 的关联吗?",
+            "delete-to-relation-text": "确定删除后实体 '{{entityName}}' 将取消与当前实体的关联关系。",
+            "delete-to-relations-title": "确定要删除 { count, select, 1 {1 关联} other {# 关联} }?",
+            "delete-to-relations-text": "确定删除所有选择的关联关系后,与当前实体对应的所有关联关系将被移除。",
+            "delete-from-relation-title": "确定要从实体 '{{entityName}}' 删除关联吗?",
+            "delete-from-relation-text": "确定删除后,当前实体将与实体 '{{entityName}}' 取消关联",
+            "delete-from-relations-title": "确定删除 { count, select, 1 {1 关联} other {# 关联} } 吗?",
+            "delete-from-relations-text": "确定删除所有选择的关联关系后,当前实体将与对应的实体取消关联",
+            "remove-relation-filter": "移除关联过滤器",
+            "add-relation-filter": "添加关联过滤器",
+            "any-relation": "任意关联",
+            "relation-filters": "关联过滤器",
+            "additional-info": "附加信息 (JSON)",
+            "invalid-additional-info": "无法解析附加信息json。"
+        },
+        "rule": {
+            "rule": "规则",
+            "rules": "规则",
+            "delete": "删除规则",
+            "activate": "激活规则",
+            "suspend": "暂停规则",
+            "active": "激活",
+            "suspended": "暂停",
+            "name": "名称",
+            "name-required": "名称必填。",
+            "description": "描述",
+            "add": "添加规则",
+            "delete-rule-title": "您确定要删除规则'{{ruleName}}'吗?",
+            "delete-rule-text": "小心!确认后,规则和所有相关数据将不可恢复。",
+            "delete-rules-title": "你确定要删除 {count, select, 1 {1 规则} other {# 规则}} 吗?",
+            "delete-rules-action-title": "删除 { count, select, 1 {1 规则} other {# 规则} }",
+            "delete-rules-text": "小心!确认后,所有选定的规则将被删除,所有相关数据将不可恢复。",
+            "add-rule-text": "添加新规则",
+            "no-rules-text": "没有找到规则",
+            "rule-details": "规则详情",
+            "filters": "过滤器",
+            "filter": "过滤器",
+            "add-filter-prompt": "请添加过滤器",
+            "remove-filter": "删除过滤器",
+            "add-filter": "添加过滤器",
+            "filter-name": "过滤器名称",
+            "filter-type": "过滤器类型",
+            "edit-filter": "编辑过滤器",
+            "view-filter": "查看过滤器",
+            "component-name": "名称",
+            "component-name-required": "名称必填。",
+            "component-type": "类型",
+            "component-type-required": "类型必填。",
+            "processor": "处理器",
+            "no-processor-configured": "未配置处理器",
+            "create-processor": "创建处理器",
+            "processor-name": "处理器名称",
+            "processor-type": "处理器类型",
+            "plugin-action": "插件动作",
+            "action-name": "动作名称",
+            "action-type": "动作类型",
+            "create-action-prompt": "请创建动作",
+            "create-action": "创建动作",
+            "details": "详情",
+            "events": "事件",
+            "system": "系统",
+            "import": "导入规则",
+            "export": "导出规则",
+            "export-failed-error": "无法导出规则:{{error}}",
+            "create-new-rule": "创建新规则",
+            "rule-file": "规则文件",
+            "invalid-rule-file-error": "无法导入规则:规则数据结构无效。",
+            "copyId": "Copy rule Id",
+            "idCopiedMessage": "规则ID已经复制到粘贴板",
+            "select-rule": "选择规则",
+            "no-rules-matching": "没有找到符合 '{{entity}}' 的规则。",
+            "rule-required": "规则必填"
+        },
+        "rule-plugin": {
+            "management": "规则和插件管理"
+        },
+        "tenant": {
+            "tenant": "租户",
+            "tenants": "租户",
+            "management": "租户管理",
+            "add": "添加租户",
+            "admins": "管理员",
+            "manage-tenant-admins": "管理租户管理员",
+            "delete": "删除租户",
+            "add-tenant-text": "添加新租户",
+            "no-tenants-text": "没有找到租户",
+            "tenant-details": "租客详情",
+            "delete-tenant-title": "您确定要删除租户'{{tenantTitle}}'吗?",
+            "delete-tenant-text": "小心!确认后,租户和所有相关数据将不可恢复。",
+            "delete-tenants-title": "您确定要删除 {count,select,1 {1 租户} other {# 租户}} 吗?",
+            "delete-tenants-action-title": "删除 { count, select, 1 {1 租户} other {# 租户} }",
+            "delete-tenants-text": "小心!确认后,所有选定的租户将被删除,所有相关数据将不可恢复。",
+            "title": "标题",
+            "title-required": "标题必填。",
+            "description": "描述",
+            "details": "详情",
+            "events": "事件",
+            "copyId": "复制租户ID",
+            "idCopiedMessage": "租户ID已经复制到粘贴板",
+            "select-tenant": "选择租户",
+            "no-tenants-matching": "没有找到符合 '{{entity}}' 的租户",
+            "tenant-required": "租户必填"
+        },
+        "timeinterval": {
+            "seconds-interval": "{ seconds, select, 1 {1 秒} other {# 秒} }",
+            "minutes-interval": "{ minutes, select, 1 {1 分} other {# 分} }",
+            "hours-interval": "{ hours, select, 1 {1 小时} other {# 小时} }",
+            "days-interval": "{ days, select, 1 {1 天} other {# 天} }",
+            "days": "天",
+            "hours": "时",
+            "minutes": "分",
+            "seconds": "秒",
+            "advanced": "高级"
+        },
+        "timewindow": {
+            "days": "{ days, select, 1 { 天 } other {# 天 } }",
+            "hours": "{ hours, select, 0 { 小时 } 1 {1 小时 } other {# 小时 } }",
+            "minutes": "{ minutes, select, 0 { 分 } 1 {1 分 } other {# 分 } }",
+            "seconds": "{ seconds, select, 0 { 秒 } 1 {1 秒 } other {# 秒 } }",
+            "realtime": "实时",
+            "history": "历史",
+            "last-prefix": "最后",
+            "period": "从 {{ startTime }} 到 {{ endTime }}",
+            "edit": "编辑时间窗口",
+            "date-range": "日期范围",
+            "last": "最后",
+            "time-period": "时间段"
+        },
+        "user": {
+            "user": "用户",
+            "users": "用户",
+            "customer-users": "客户用户",
+            "tenant-admins": "租户管理员",
+            "sys-admin": "系统管理员",
+            "tenant-admin": "租户管理员",
+            "customer": "客户",
+            "anonymous": "匿名",
+            "add": "添加用户",
+            "delete": "删除用户",
+            "add-user-text": "添加新用户",
+            "no-users-text": "找不到用户",
+            "user-details": "用户详细信息",
+            "delete-user-title": "您确定要删除用户 '{{userEmail}}' 吗?",
+            "delete-user-text": "小心!确认后,用户和所有相关数据将不可恢复。",
+            "delete-users-title": "你确定你要删除 { count, select, 1 {1 用户} other {# 用户} } 吗?",
+            "delete-users-action-title": "删除  { count, select, 1 {1 用户} other {# 用户} }",
+            "delete-users-text": "小心!确认后,所有选定的用户将被删除,所有相关数据将不可恢复。",
+            "activation-email-sent-message": "激活电子邮件已成功发送!",
+            "resend-activation": "重新发送激活",
+            "email": "电子邮件",
+            "email-required": "电子邮件必填。",
+            "invalid-email-format": "无效的邮件格式。",
+            "first-name": "名字",
+            "last-name": "姓",
+            "description": "描述",
+            "default-dashboard": "默认面板",
+            "always-fullscreen": "始终全屏",
+            "select-user": "选择用户",
+            "no-users-matching": "没有找到符合 '{{entity}}' 的用户。",
+            "user-required": "用户必填",
+            "activation-method": "激活方式",
+            "display-activation-link": "显示激活链接",
+            "send-activation-mail": "发送激活邮件",
+            "activation-link": "用户激活链接",
+            "activation-link-text": "使用该链接 <a href='{{activationLink}}' target='_blank'>激活</a> 激活用户:",
+            "copy-activation-link": "复制用户激活链接",
+            "activation-link-copied-message": "用户激活链接已经复制到粘贴板"
+        },
+        "value": {
+            "type": "值类型",
+            "string": "字符串",
+            "string-value": "字符串值",
+            "integer": "数字",
+            "integer-value": "数字值",
+            "invalid-integer-value": "整数值无效",
+            "double": "双精度小数",
+            "double-value": "双精度小数值",
+            "boolean": "布尔",
+            "boolean-value": "布尔值",
+            "false": "假",
+            "true": "真"
+        },
+        "widget": {
+            "widget-library": "部件库",
+            "widget-bundle": "部件包",
+            "select-widgets-bundle": "选择部件包",
+            "management": "部件管理",
+            "editor": "部件编辑器",
+            "widget-type-not-found": "加载部件配置时出现问题。<br> 可能关联的\n 部件类型已删除。",
+            "widget-type-load-error": "由于以下错误,部件未加载:",
+            "remove": "删除部件",
+            "edit": "编辑部件",
+            "remove-widget-title": "您确定要删除部件 '{{widgetTitle}}' 吗?",
+            "remove-widget-text": "确认后,窗口部件和所有相关数据将不可恢复。",
+            "timeseries": "时间序列",
+            "latest-values": "最新值",
+            "rpc": "控件部件",
+            "alarm": "警告部件",
+            "static": "静态部件",
+            "select-widget-type": "选择窗口部件类型",
+            "missing-widget-title-error": "部件标题必须指定!",
+            "widget-saved": "部件已保存",
+            "unable-to-save-widget-error": "无法保存窗口部件! 部件有错误!",
+            "save": "保存部件",
+            "saveAs": "将部件另存为",
+            "save-widget-type-as": "将部件类型另存为",
+            "save-widget-type-as-text": "请输入新的部件标题和/或选择目标部件包",
+            "toggle-fullscreen": "切换全屏",
+            "run": "运行部件",
+            "title": "部件标题",
+            "title-required": "需要部件标题。",
+            "type": "部件类型",
+            "resources": "资源",
+            "resource-url": "JavaScript/CSS URL",
+            "remove-resource": "删除资源",
+            "add-resource": "添加资源",
+            "html": "HTML",
+            "tidy": "整理",
+            "css": "CSS",
+            "settings-schema": "设置模式",
+            "datakey-settings-schema": "数据键设置模式",
+            "javascript": "Javascript",
+            "remove-widget-type-title": "您确定要删除部件类型 '{{widgetName}}'吗?",
+            "remove-widget-type-text": "确认后,窗口部件类型和所有相关数据将不可恢复。",
+            "remove-widget-type": "删除部件类型",
+            "add-widget-type": "添加新的部件类型",
+            "widget-type-load-failed-error": "无法加载部件类型!",
+            "widget-template-load-failed-error": "无法加载部件模板!",
+            "add": "添加部件",
+            "undo": "撤消部件更改",
+            "export": "导出部件"
+        },
+        "widget-action": {
+            "header-button": "部件顶部按钮",
+            "open-dashboard-state": "切换到新仪表板状态",
+            "update-dashboard-state": "更新当前仪表板状态",
+            "open-dashboard": "切换到另一个仪表板",
+            "custom": "自定义动作",
+            "target-dashboard-state": "目标仪表板状态",
+            "target-dashboard-state-required": "目标仪表板状态必填",
+            "set-entity-from-widget": "从部件中设置实体",
+            "target-dashboard": "目标仪表板",
+            "open-right-layout": "打开右侧布局 (移动端视图)"
+        },
+        "widgets-bundle": {
+            "current": "当前包",
+            "widgets-bundles": "部件包",
+            "add": "添加部件包",
+            "delete": "删除部件包",
+            "title": "标题",
+            "title-required": "标题必填。",
+            "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, select, 1 {1 部件包} other {# 部件包} } 吗?",
+            "delete-widgets-bundles-action-title": "删除  { count, select, 1 {1 部件包} other {# 部件包} }",
+            "delete-widgets-bundles-text": "小心!确认后,所有选定的部件包将被删除,所有相关数据将不可恢复。",
+            "no-widgets-bundles-matching": "没有找到与 '{{widgetsBundle}}' 匹配的部件包。",
+            "widgets-bundle-required": "需要部件包。",
+            "system": "系统",
+            "import": "导入部件包",
+            "export": "导出部件包",
+            "export-failed-error": "无法导出部件包: {{error}}",
+            "create-new-widgets-bundle": "创建新的部件包",
+            "widgets-bundle-file": "部件包文件",
+            "invalid-widgets-bundle-file-error": "无法导入部件包:无效的部件包数据结构。"
+        },
+        "widget-config": {
+            "data": "数据",
+            "settings": "设置",
+            "advanced": "高级",
+            "title": "标题",
+            "general-settings": "常规设置",
+            "display-title": "显示标题",
+            "drop-shadow": "阴影",
+            "enable-fullscreen": "启用全屏",
+            "background-color": "背景颜色",
+            "text-color": "文字颜色",
+            "padding": "填充",
+            "margin": "Margin",
+            "widget-style": "部件风格",
+            "title-style": "标题风格",
+            "mobile-mode-settings": "移动端设置",
+            "order": "顺序",
+            "height": "高度",
+            "units": "特殊符号展示值",
+            "decimals": "浮点数后的位数",
+            "timewindow": "时间窗口",
+            "use-dashboard-timewindow": "使用仪表板的时间窗口",
+            "display-legend": "显示图例",
+            "datasources": "数据源",
+            "maximum-datasources": "最大允许 { count, select, 1 {1 数据} other {# 数据} }",
+            "datasource-type": "类型",
+            "datasource-parameters": "参数",
+            "remove-datasource": "移除数据源",
+            "add-datasource": "添加数据源",
+            "target-device": "目标设备",
+            "alarm-source": "警告源",
+            "actions": "动作",
+            "action": "动作",
+            "add-action": "添加动作",
+            "search-actions": "动作检索",
+            "action-source": "动作源",
+            "action-source-required": "动作源必填",
+            "action-name": "动作名称",
+            "action-name-required": "动作名称必填。",
+            "action-name-not-unique": "动作名称已经存在。<br/>统一动作源的动作名称必须唯一。",
+            "action-icon": "图标",
+            "action-type": "类型",
+            "action-type-required": "类型必填",
+            "edit-action": "编辑动作",
+            "delete-action": "删除动作",
+            "delete-action-title": "删除部件动作",
+            "delete-action-text": "确定要删除部件动作 '{{actionName}}' 吗?"
+        },
+        "widget-type": {
+            "import": "导入部件类型",
+            "export": "导出部件类型",
+            "export-failed-error": "无法导出部件类型: {{error}}",
+            "create-new-widget-type": "创建新的部件类型",
+            "widget-type-file": "部件类型文件",
+            "invalid-widget-type-file-error": "无法导入部件类型:无效的部件类型数据结构。"
+        },
+        "icon": {
+            "icon": "图标",
+            "select-icon": "选择图标",
+            "material-icons": "素材图标",
+            "show-all": "显示所有图标"
+        },
+        "language": {
+            "language": "语言",
+            "en_US": "英语",
+            "ko_KR": "韩语",
+            "zh_CN": "汉语",
+            "ru_RU": "俄语",
             "es_ES": "西班牙语"
         }
     };
     angular.extend(locales, {
-        'zh_CN' : zh_CN
+        'zh_CN': zh_CN
     });
 }