@c8y/ng1-modules 1023.90.1 → 1023.96.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/locales/de.po +170 -10
- package/core/locales/es.po +170 -10
- package/core/locales/fr.po +170 -10
- package/core/locales/ja_JP.po +162 -9
- package/core/locales/ko.po +170 -10
- package/core/locales/nl.po +170 -10
- package/core/locales/pl.po +170 -10
- package/core/locales/pt_BR.po +170 -10
- package/core/locales/zh_CN.po +170 -10
- package/core/locales/zh_TW.po +170 -10
- package/htmlWidget/htmlWidget.controller.js +1 -1
- package/package.json +1 -1
- package/scada/index.js +1 -1
- package/users/userListView/userListView.component.js +1 -1
- package/users/userListView/userListView.html +85 -44
package/core/locales/zh_TW.po
CHANGED
|
@@ -1127,6 +1127,9 @@ msgstr "添加固件补丁"
|
|
|
1127
1127
|
msgid "Add first asset property mapping."
|
|
1128
1128
|
msgstr "添加第一個资产属性映射。"
|
|
1129
1129
|
|
|
1130
|
+
msgid "Add first placeholder in the preview or code."
|
|
1131
|
+
msgstr "在预览或程式码中添加第一个占位符。"
|
|
1132
|
+
|
|
1130
1133
|
msgid "Add fragment"
|
|
1131
1134
|
msgstr "添加片段"
|
|
1132
1135
|
|
|
@@ -1268,6 +1271,9 @@ msgstr "添加或选择说明。"
|
|
|
1268
1271
|
msgid "Add pattern"
|
|
1269
1272
|
msgstr "添加模式"
|
|
1270
1273
|
|
|
1274
|
+
msgid "Add placeholder"
|
|
1275
|
+
msgstr "添加占位符"
|
|
1276
|
+
|
|
1271
1277
|
msgid "Add policy"
|
|
1272
1278
|
msgstr "添加策略"
|
|
1273
1279
|
|
|
@@ -1493,6 +1499,9 @@ msgstr "高級品牌"
|
|
|
1493
1499
|
msgid "Advanced developer mode"
|
|
1494
1500
|
msgstr "高级开发人员模式"
|
|
1495
1501
|
|
|
1502
|
+
msgid "Advanced editor"
|
|
1503
|
+
msgstr "高级编辑器"
|
|
1504
|
+
|
|
1496
1505
|
msgid "Advanced settings"
|
|
1497
1506
|
msgstr "高级设置"
|
|
1498
1507
|
|
|
@@ -1942,6 +1951,9 @@ msgstr "发生内部错误,请重试上传。"
|
|
|
1942
1951
|
msgid "An object identifier value, typically an address identifying a device and its status."
|
|
1943
1952
|
msgstr "对象标识符值,通常是标识设备及其状态的地址。"
|
|
1944
1953
|
|
|
1954
|
+
msgid "Analyze and suggest"
|
|
1955
|
+
msgstr "分析並提出建議"
|
|
1956
|
+
|
|
1945
1957
|
msgid "Analyzing query…"
|
|
1946
1958
|
msgstr "分析查詢…"
|
|
1947
1959
|
|
|
@@ -2628,6 +2640,9 @@ msgstr "之前"
|
|
|
2628
2640
|
msgid "Below you can configure one or more OPC UA servers. The OPC UA agent will connect to these servers if they are enabled and the connection state is set to connected."
|
|
2629
2641
|
msgstr "您可以在下方配置一台或多台 OPC UA 服务器。如果启用了这些服务器并将连接状态设置为已连接,则 OPC UA 代理将连接到这些服务器。"
|
|
2630
2642
|
|
|
2643
|
+
msgid "Best guess"
|
|
2644
|
+
msgstr "最合理的推測"
|
|
2645
|
+
|
|
2631
2646
|
msgid "Billing mode"
|
|
2632
2647
|
msgstr "开单模式"
|
|
2633
2648
|
|
|
@@ -2769,6 +2784,9 @@ msgstr "麵包屑扩展,强化群组间导航体验。"
|
|
|
2769
2784
|
msgid "Browse"
|
|
2770
2785
|
msgstr "瀏覽"
|
|
2771
2786
|
|
|
2787
|
+
msgid "Browse or drop file here…"
|
|
2788
|
+
msgstr "在此浏览或拖放文件…"
|
|
2789
|
+
|
|
2772
2790
|
msgid "Browse path"
|
|
2773
2791
|
msgstr "浏览路径"
|
|
2774
2792
|
|
|
@@ -3130,6 +3148,9 @@ msgstr "居中"
|
|
|
3130
3148
|
msgid "Certificate"
|
|
3131
3149
|
msgstr "证书"
|
|
3132
3150
|
|
|
3151
|
+
msgid "Certificate (PEM)"
|
|
3152
|
+
msgstr "证书 (PEM)"
|
|
3153
|
+
|
|
3133
3154
|
msgid "Certificate ID field"
|
|
3134
3155
|
msgstr "证书 ID 字段"
|
|
3135
3156
|
|
|
@@ -4351,6 +4372,9 @@ msgstr "无法添加证书。带 {{fingerprint}} 指纹的证书已存在。"
|
|
|
4351
4372
|
msgid "Could not add identity. External ID \"{{externalId}}\" of the type \"{{type}}\" already exists."
|
|
4352
4373
|
msgstr "无法添加标识。\"{{type}}\" 类型的外部 ID \"{{externalId}}\" 已存在。"
|
|
4353
4374
|
|
|
4375
|
+
msgid "Could not apply the pasted SVG code."
|
|
4376
|
+
msgstr "无法应用贴上的 SVG 程式码。"
|
|
4377
|
+
|
|
4354
4378
|
msgid "Could not assign child devices."
|
|
4355
4379
|
msgstr "無法分配子設備。"
|
|
4356
4380
|
|
|
@@ -4573,6 +4597,9 @@ msgstr "无法删除租户 \"{{tenant}}\"。请首先删除其子租户。"
|
|
|
4573
4597
|
msgid "Could not set device protocol."
|
|
4574
4598
|
msgstr "无法设置设备协议。"
|
|
4575
4599
|
|
|
4600
|
+
msgid "Could not subscribe to mapped data."
|
|
4601
|
+
msgstr "无法订阅已映射的数据。"
|
|
4602
|
+
|
|
4576
4603
|
msgid "Could not subscribe to the microservice because another application with the same context path is already subscribed."
|
|
4577
4604
|
msgstr "无法订阅微服务,因为已订阅具有同一上下文路径的另一个应用程序。"
|
|
4578
4605
|
|
|
@@ -4591,6 +4618,9 @@ msgstr "无法更新用户 \"{{username}}\"。"
|
|
|
4591
4618
|
msgid "Could not upload the files."
|
|
4592
4619
|
msgstr "无法上传文件。"
|
|
4593
4620
|
|
|
4621
|
+
msgid "Could not upload the selected SVG file."
|
|
4622
|
+
msgstr "无法上传选择的 SVG 文件。"
|
|
4623
|
+
|
|
4594
4624
|
msgid "Could not use a reserved SQL keyword \"{{tenantId}}\" as a domain name."
|
|
4595
4625
|
msgstr "无法使用保留的 SQL 关键字 \"{{tenantId}}\" 作为域名。"
|
|
4596
4626
|
|
|
@@ -4900,6 +4930,12 @@ msgstr "當前"
|
|
|
4900
4930
|
msgid "Currently installed"
|
|
4901
4931
|
msgstr "当前已安装"
|
|
4902
4932
|
|
|
4933
|
+
msgid "Currently saved certificate"
|
|
4934
|
+
msgstr "当前保存的证书"
|
|
4935
|
+
|
|
4936
|
+
msgid "Currently saved private key"
|
|
4937
|
+
msgstr "当前已保存的私钥"
|
|
4938
|
+
|
|
4903
4939
|
msgid "Custom"
|
|
4904
4940
|
msgstr "自定义"
|
|
4905
4941
|
|
|
@@ -6278,6 +6314,9 @@ msgstr "在组导航器菜单下显示顶层组。"
|
|
|
6278
6314
|
msgid "Displays a customizable quick links widget"
|
|
6279
6315
|
msgstr "显示可自定义的快速链接小组件"
|
|
6280
6316
|
|
|
6317
|
+
msgid "Displays a dynamically updated SVG image for real-time device monitoring."
|
|
6318
|
+
msgstr "显示一张会动态更新的 SVG 图像,用於实时监控设备。"
|
|
6319
|
+
|
|
6281
6320
|
msgid "Displays a graph of selected data points"
|
|
6282
6321
|
msgstr "顯示所選擇數據點的圖形"
|
|
6283
6322
|
|
|
@@ -6496,6 +6535,12 @@ msgstr "在表格儲存格周圍繪製邊框"
|
|
|
6496
6535
|
msgid "Drop"
|
|
6497
6536
|
msgstr "放置"
|
|
6498
6537
|
|
|
6538
|
+
msgid "Drop a new certificate to replace"
|
|
6539
|
+
msgstr "发行一张新证书以替换"
|
|
6540
|
+
|
|
6541
|
+
msgid "Drop a new private key to replace"
|
|
6542
|
+
msgstr "放置一個新的私钥以替换"
|
|
6543
|
+
|
|
6499
6544
|
msgid "Drop file here"
|
|
6500
6545
|
msgstr "将文件放在此处"
|
|
6501
6546
|
|
|
@@ -6508,6 +6553,12 @@ msgstr "将文件放在此处"
|
|
|
6508
6553
|
msgid "Drop files here or click to browse"
|
|
6509
6554
|
msgstr "將檔案放置在此處或按一下以瀏覽"
|
|
6510
6555
|
|
|
6556
|
+
msgid "Drop the certificate in PEM format."
|
|
6557
|
+
msgstr "請上傳 PEM 格式的证书。"
|
|
6558
|
+
|
|
6559
|
+
msgid "Drop the private key in PEM format."
|
|
6560
|
+
msgstr "請提供 PEM 格式的私钥。"
|
|
6561
|
+
|
|
6511
6562
|
msgid "Due to the large number, only a subset of alarms are displayed. Use search to narrow down the number of results."
|
|
6512
6563
|
msgstr "由於數量眾多,僅顯示報警的子集。請使用搜尋縮小結果數量。"
|
|
6513
6564
|
|
|
@@ -6784,6 +6835,9 @@ msgstr "啟用深色主題支援"
|
|
|
6784
6835
|
msgid "Enable in-product information & communication"
|
|
6785
6836
|
msgstr "啟用產品中資訊和通信"
|
|
6786
6837
|
|
|
6838
|
+
msgid "Enable mTLS authentication"
|
|
6839
|
+
msgstr "启用 mTLS 身份验证"
|
|
6840
|
+
|
|
6787
6841
|
msgid "Enable message banner"
|
|
6788
6842
|
msgstr "啟用消息橫幅"
|
|
6789
6843
|
|
|
@@ -6915,6 +6969,9 @@ msgstr "查询序列号"
|
|
|
6915
6969
|
msgid "Enter address"
|
|
6916
6970
|
msgstr "输入地址"
|
|
6917
6971
|
|
|
6972
|
+
msgid "Enter at least 3 characters to search."
|
|
6973
|
+
msgstr "請輸入至少 3 個字元進行搜尋。"
|
|
6974
|
+
|
|
6918
6975
|
msgid "Enter one or more valid email addresses, separated with a comma."
|
|
6919
6976
|
msgstr "输入一个或多个以逗号分隔的有效电子邮件地址。"
|
|
6920
6977
|
|
|
@@ -8028,11 +8085,11 @@ msgstr "若要连接模拟设备,请在已安装 `\n"
|
|
|
8028
8085
|
" <a href=\"https://github.com/thin-edge/tedge-demo-container\" target=\"_blank\" rel=\"noopener noreferrer\">tedge-demo-container</a>`。"
|
|
8029
8086
|
|
|
8030
8087
|
msgid "For correct application behavior you can use only \"{{ host }}\" or \"{{\n"
|
|
8031
|
-
"
|
|
8032
|
-
"
|
|
8033
|
-
msgstr "
|
|
8034
|
-
"
|
|
8035
|
-
"
|
|
8088
|
+
" defaultRedirectUrl\n"
|
|
8089
|
+
" }}\", the latter one is recommended."
|
|
8090
|
+
msgstr "為確保应用程序能正確運作,您只能使用「{{ host }}」或「{{\n"
|
|
8091
|
+
" defaultRedirectUrl\n"
|
|
8092
|
+
" }}」,建議使用後者。"
|
|
8036
8093
|
|
|
8037
8094
|
msgid "For details refer to the\n"
|
|
8038
8095
|
" <a c8y-guide-href=\"/docs/standard-tenant/standard-tenant-introduction\">\n"
|
|
@@ -8240,6 +8297,9 @@ msgstr "產生匯出"
|
|
|
8240
8297
|
msgid "Generate public and private keys"
|
|
8241
8298
|
msgstr "生成公钥和私钥"
|
|
8242
8299
|
|
|
8300
|
+
msgid "Generate with AI"
|
|
8301
|
+
msgstr "透過 AI 生成"
|
|
8302
|
+
|
|
8243
8303
|
msgid "Generating report"
|
|
8244
8304
|
msgstr "正在生成报告"
|
|
8245
8305
|
|
|
@@ -10298,11 +10358,21 @@ msgstr "主要警报"
|
|
|
10298
10358
|
msgid "Major`alarm`"
|
|
10299
10359
|
msgstr "主要"
|
|
10300
10360
|
|
|
10301
|
-
msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{
|
|
10302
|
-
|
|
10303
|
-
|
|
10304
|
-
|
|
10305
|
-
msgstr "
|
|
10361
|
+
msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{\n"
|
|
10362
|
+
" redirectURI\n"
|
|
10363
|
+
" }}\" or to the full URIs of the used applications if the authorization server\n"
|
|
10364
|
+
" does not support patterns."
|
|
10365
|
+
msgstr "请确保授权服务器中的「有效重定向 URI」已设置为「{{\n"
|
|
10366
|
+
" redirectURI\n"
|
|
10367
|
+
" }}」,或若授权服务器\n"
|
|
10368
|
+
" 不支援模式,则应设置为所使用的应用程序的完整 URI。"
|
|
10369
|
+
|
|
10370
|
+
msgid "Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{\n"
|
|
10371
|
+
" redirectURI\n"
|
|
10372
|
+
" }}\"."
|
|
10373
|
+
msgstr "請確認授權伺服器中的「有效重定向 URI」已設定為「{{\n"
|
|
10374
|
+
" redirectURI\n"
|
|
10375
|
+
" }}」。"
|
|
10306
10376
|
|
|
10307
10377
|
msgid "Make sure that:"
|
|
10308
10378
|
msgstr "確保:"
|
|
@@ -10866,9 +10936,15 @@ msgstr "此名稱已被使用。請使用其他名稱。"
|
|
|
10866
10936
|
msgid "Name and email"
|
|
10867
10937
|
msgstr "名稱和电子邮件"
|
|
10868
10938
|
|
|
10939
|
+
msgid "Name does not match the required format."
|
|
10940
|
+
msgstr "名稱不符合必需格式。"
|
|
10941
|
+
|
|
10869
10942
|
msgid "Name is mandatory but has no restricted format or semantics."
|
|
10870
10943
|
msgstr "必須填寫名稱,對格式或語義沒有限制。"
|
|
10871
10944
|
|
|
10945
|
+
msgid "Name must be a valid identifier (only letters, digits, underscores, or dollar signs allowed, cannot start with a digit)."
|
|
10946
|
+
msgstr "名稱必須為有效的識別碼(僅允許使用字母、數字、底線或美元符號,且不能以數字開頭)。"
|
|
10947
|
+
|
|
10872
10948
|
msgid "Name must be unique among coils and discrete inputs."
|
|
10873
10949
|
msgstr "线圈和离散输入中的名称必须是唯一的。"
|
|
10874
10950
|
|
|
@@ -11635,6 +11711,9 @@ msgstr "没有此范围的权限。"
|
|
|
11635
11711
|
msgid "No permissions required."
|
|
11636
11712
|
msgstr "不需要授权。"
|
|
11637
11713
|
|
|
11714
|
+
msgid "No placeholder mappings"
|
|
11715
|
+
msgstr "沒有占位符映射"
|
|
11716
|
+
|
|
11638
11717
|
msgid "No plugin selected"
|
|
11639
11718
|
msgstr "未選擇插件"
|
|
11640
11719
|
|
|
@@ -12724,12 +12803,18 @@ msgstr "密碼"
|
|
|
12724
12803
|
msgid "Passwords do not match."
|
|
12725
12804
|
msgstr "密碼不匹配。"
|
|
12726
12805
|
|
|
12806
|
+
msgid "Paste SVG code here"
|
|
12807
|
+
msgstr "請將 SVG 程式碼貼在此處"
|
|
12808
|
+
|
|
12727
12809
|
msgid "Paste dashboard"
|
|
12728
12810
|
msgstr "粘贴面板"
|
|
12729
12811
|
|
|
12730
12812
|
msgid "Paste dashboard \"{{ dashboardName }}\""
|
|
12731
12813
|
msgstr "粘貼儀錶板 \"{{ dashboardName }}\""
|
|
12732
12814
|
|
|
12815
|
+
msgid "Paste text"
|
|
12816
|
+
msgstr "貼上文字"
|
|
12817
|
+
|
|
12733
12818
|
msgid "Paste the certificate in PEM format."
|
|
12734
12819
|
msgstr "以 PEM 格式粘贴证书。"
|
|
12735
12820
|
|
|
@@ -12864,6 +12949,15 @@ msgstr "圓餅圖选项"
|
|
|
12864
12949
|
msgid "Placeholder"
|
|
12865
12950
|
msgstr "占位符"
|
|
12866
12951
|
|
|
12952
|
+
msgid "Placeholder mappings"
|
|
12953
|
+
msgstr "占位符映射"
|
|
12954
|
+
|
|
12955
|
+
msgid "Placeholder name"
|
|
12956
|
+
msgstr "占位符名稱"
|
|
12957
|
+
|
|
12958
|
+
msgid "Placeholder name is required."
|
|
12959
|
+
msgstr "必需填寫占位符名稱。"
|
|
12960
|
+
|
|
12867
12961
|
msgid "Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain"
|
|
12868
12962
|
msgstr "占位符:{tenant} - 已暂停租户的 ID;{tenant-domain} - 租户的域"
|
|
12869
12963
|
|
|
@@ -12903,6 +12997,9 @@ msgstr "请联系平台管理员。"
|
|
|
12903
12997
|
msgid "Please note that this action is irreversible. Do you want to save your changes?"
|
|
12904
12998
|
msgstr "请注意,此操作无法恢复。您确定要保存更改吗?"
|
|
12905
12999
|
|
|
13000
|
+
msgid "Please paste SVG code before applying."
|
|
13001
|
+
msgstr "請在应用前貼上 SVG 程式碼。"
|
|
13002
|
+
|
|
12906
13003
|
msgid "Plugin installation"
|
|
12907
13004
|
msgstr "外掛程式安裝"
|
|
12908
13005
|
|
|
@@ -13098,9 +13195,15 @@ msgstr "面板的打印屏幕"
|
|
|
13098
13195
|
msgid "Private key"
|
|
13099
13196
|
msgstr "私钥"
|
|
13100
13197
|
|
|
13198
|
+
msgid "Private key (PEM)"
|
|
13199
|
+
msgstr "私钥 (PEM)"
|
|
13200
|
+
|
|
13101
13201
|
msgid "Private key cipher does not match"
|
|
13102
13202
|
msgstr "私钥密码不匹配"
|
|
13103
13203
|
|
|
13204
|
+
msgid "Private key matching the client certificate, in PEM format (PKCS#8). The platform encrypts the key at rest after the first save and will return only an encrypted value on subsequent loads. Accepted file extensions: .pem, .key."
|
|
13205
|
+
msgstr "與客戶端证书相符的私钥,格式為 PEM(PKCS#8)。平台會在首次保存後對靜態私钥進行加密,並在後續加载時僅返回加密後的值。可接受的檔案副檔名:.pem、.key。"
|
|
13206
|
+
|
|
13104
13207
|
msgid "Private key must be provided when \"Public/private keys\" option is selected."
|
|
13105
13208
|
msgstr "选择 \"公钥/私钥\" 选项时,必须提供私钥。"
|
|
13106
13209
|
|
|
@@ -13239,6 +13342,9 @@ msgstr "提供的憑證"
|
|
|
13239
13342
|
msgid "Provisioned certificates removed from user object: \"{{ userName }}\""
|
|
13240
13343
|
msgstr "已從使用者物件移除預先配置的憑證:\"{{ userName }}\""
|
|
13241
13344
|
|
|
13345
|
+
msgid "Public X.509 client certificate in PEM format, issued for this tenant by a CA trusted by your authorization server. Accepted file extension: .pem."
|
|
13346
|
+
msgstr "由您的授權伺服器所信任的憑證授權機構(CA)為此租戶簽發的、採用 PEM 格式的公開 X.509 客戶端憑證。接受的檔案副檔名:.pem。"
|
|
13347
|
+
|
|
13242
13348
|
msgid "Public key"
|
|
13243
13349
|
msgstr "公钥"
|
|
13244
13350
|
|
|
@@ -13323,6 +13429,9 @@ msgstr "查询 WLAN 状态"
|
|
|
13323
13429
|
msgid "Query analyzed"
|
|
13324
13430
|
msgstr "查詢已分析"
|
|
13325
13431
|
|
|
13432
|
+
msgid "Query analyzed."
|
|
13433
|
+
msgstr "查詢已分析。"
|
|
13434
|
+
|
|
13326
13435
|
msgid "Queue size"
|
|
13327
13436
|
msgstr "队列大小"
|
|
13328
13437
|
|
|
@@ -13872,6 +13981,9 @@ msgstr "已刪除小組件:{{ widgetList }}。"
|
|
|
13872
13981
|
msgid "Renamed asset property and updated references in HTML code."
|
|
13873
13982
|
msgstr "已重新命名资产属性,並更新 HTML 程式碼中的引用。"
|
|
13874
13983
|
|
|
13984
|
+
msgid "Renamed placeholder and updated references in code."
|
|
13985
|
+
msgstr "已重新命名占位符,並更新程式碼中的參照。"
|
|
13986
|
+
|
|
13875
13987
|
msgid "Render the first column (excluding computed and alarm types) as a link to the asset details."
|
|
13876
13988
|
msgstr "將第一欄(不包含計算值與警報類型)呈現為资产详细信息的链接。"
|
|
13877
13989
|
|
|
@@ -14244,6 +14356,12 @@ msgstr "运行连线命令"
|
|
|
14244
14356
|
msgid "S/N"
|
|
14245
14357
|
msgstr "序列号"
|
|
14246
14358
|
|
|
14359
|
+
msgid "SCADA"
|
|
14360
|
+
msgstr "SCADA"
|
|
14361
|
+
|
|
14362
|
+
msgid "SCADA SVG agent"
|
|
14363
|
+
msgstr "SCADA SVG 代理程式"
|
|
14364
|
+
|
|
14247
14365
|
msgid "SCHEDULED"
|
|
14248
14366
|
msgstr "已安排"
|
|
14249
14367
|
|
|
@@ -14376,9 +14494,21 @@ msgstr "已暂停"
|
|
|
14376
14494
|
msgid "SVG"
|
|
14377
14495
|
msgstr "SVG"
|
|
14378
14496
|
|
|
14497
|
+
msgid "SVG and mappings updated."
|
|
14498
|
+
msgstr "已更新 SVG 檔案及映射。"
|
|
14499
|
+
|
|
14500
|
+
msgid "SVG code applied."
|
|
14501
|
+
msgstr "已应用 SVG 程式码。"
|
|
14502
|
+
|
|
14503
|
+
msgid "SVG configuration"
|
|
14504
|
+
msgstr "SVG 設定"
|
|
14505
|
+
|
|
14379
14506
|
msgid "SVG content will be sanitized."
|
|
14380
14507
|
msgstr "SVG 内容将清除。"
|
|
14381
14508
|
|
|
14509
|
+
msgid "SVG file uploaded."
|
|
14510
|
+
msgstr "已上传 SVG 文件。"
|
|
14511
|
+
|
|
14382
14512
|
msgid "Sampling interval"
|
|
14383
14513
|
msgstr "采样间隔时间"
|
|
14384
14514
|
|
|
@@ -14535,6 +14665,9 @@ msgstr "搜索重置。全文搜索不支持过滤。"
|
|
|
14535
14665
|
msgid "Search results"
|
|
14536
14666
|
msgstr "搜索结果"
|
|
14537
14667
|
|
|
14668
|
+
msgid "Search users"
|
|
14669
|
+
msgstr "搜尋用户"
|
|
14670
|
+
|
|
14538
14671
|
msgid "Searching by exact match. Click for other search options:"
|
|
14539
14672
|
msgstr "正在按精确匹配搜索。单击可获取其他搜索选项:"
|
|
14540
14673
|
|
|
@@ -17410,6 +17543,12 @@ msgstr "预览显示来自单一来源的原始文件结构。"
|
|
|
17410
17543
|
msgid "The preview shows the structure of the raw file from all sources."
|
|
17411
17544
|
msgstr "预览画面显示了来自全部来源的原始文件结构。"
|
|
17412
17545
|
|
|
17546
|
+
msgid "The private key is encrypted for security reasons."
|
|
17547
|
+
msgstr "基於安全考量,私钥已進行加密。"
|
|
17548
|
+
|
|
17549
|
+
msgid "The private key will be encrypted on the server after saving."
|
|
17550
|
+
msgstr "私钥在保存後將於伺服器上進行加密。"
|
|
17551
|
+
|
|
17413
17552
|
msgid "The provided name is already taken."
|
|
17414
17553
|
msgstr "提供的名稱已被使用。"
|
|
17415
17554
|
|
|
@@ -18632,6 +18771,9 @@ msgstr "已更新包可用性。"
|
|
|
18632
18771
|
msgid "Updated widgets: {{ widgetList }}."
|
|
18633
18772
|
msgstr "已更新小組件:{{ widgetList }}。"
|
|
18634
18773
|
|
|
18774
|
+
msgid "Updating SVG and mappings…"
|
|
18775
|
+
msgstr "更新 SVG 及映射…"
|
|
18776
|
+
|
|
18635
18777
|
msgid "Updating global roles will force you to log out. Do you want to proceed?"
|
|
18636
18778
|
msgstr "更新全局角色将强制您注销。是否要继续?"
|
|
18637
18779
|
|
|
@@ -18742,6 +18884,9 @@ msgstr "使用 * 以允许任意值。"
|
|
|
18742
18884
|
msgid "Use [Enter] or <br> tag to add a new line"
|
|
18743
18885
|
msgstr "使用 [Enter] 或 <br> 標籤添加新行"
|
|
18744
18886
|
|
|
18887
|
+
msgid "Use a client certificate (mTLS) instead of a client secret to authenticate the platform with the authorization server. Use this option only if the authorization server enforces certificate-based client authentication."
|
|
18888
|
+
msgstr "请使用客户端证书(mTLS)而非客户端密码,来让平台向授权伺服器进行身份验证。仅当授权伺服器强制执行基于证书的客户端身份验证时,才应使用此选项。"
|
|
18889
|
+
|
|
18745
18890
|
msgid "Use alarms to create smart rules for microservice availability."
|
|
18746
18891
|
msgstr "使用警报为微服务可用性创建智能规则。"
|
|
18747
18892
|
|
|
@@ -18966,6 +19111,9 @@ msgstr "用戶名和登录别名必须不同。"
|
|
|
18966
19111
|
msgid "Username and password"
|
|
18967
19112
|
msgstr "用戶名和密码"
|
|
18968
19113
|
|
|
19114
|
+
msgid "Username must contain at least 3 characters."
|
|
19115
|
+
msgstr "用户名必须至少包含 3 个字元。"
|
|
19116
|
+
|
|
18969
19117
|
msgid "Username must not contain spaces nor slashes (\"/\", \"\\\") nor (\"+\"), (\":\"), (\"$\") signs."
|
|
18970
19118
|
msgstr "用戶名不得包含空格、斜线(\"/\"、\"\\\")以及 (\"+\")、(\":\")、(\"$\") 符号。"
|
|
18971
19119
|
|
|
@@ -19369,6 +19517,9 @@ msgstr "歡迎!"
|
|
|
19369
19517
|
msgid "What can I help you with?"
|
|
19370
19518
|
msgstr "有什麼可以幫您嗎?"
|
|
19371
19519
|
|
|
19520
|
+
msgid "What would you like to visualize in this SCADA widget?"
|
|
19521
|
+
msgstr "您希望在此 SCADA 小小组件中視覺化哪些內容?"
|
|
19522
|
+
|
|
19372
19523
|
msgid "When"
|
|
19373
19524
|
msgstr "当"
|
|
19374
19525
|
|
|
@@ -19528,6 +19679,9 @@ msgstr "小组件:最近的警报"
|
|
|
19528
19679
|
msgid "Widgets: Rotation"
|
|
19529
19680
|
msgstr "小组件:旋转"
|
|
19530
19681
|
|
|
19682
|
+
msgid "Widgets: SCADA"
|
|
19683
|
+
msgstr "小组件:SCADA"
|
|
19684
|
+
|
|
19531
19685
|
msgid "Widgets: Silo"
|
|
19532
19686
|
msgstr "小组件:接收器"
|
|
19533
19687
|
|
|
@@ -20689,6 +20843,9 @@ msgstr "例如,my-tenant"
|
|
|
20689
20843
|
msgid "e.g. myCustomOperation"
|
|
20690
20844
|
msgstr "例如,myCustomOperation"
|
|
20691
20845
|
|
|
20846
|
+
msgid "e.g. myPlaceholder"
|
|
20847
|
+
msgstr "例如:myPlaceholder"
|
|
20848
|
+
|
|
20692
20849
|
msgid "e.g. myProperty"
|
|
20693
20850
|
msgstr "例如,myProperty"
|
|
20694
20851
|
|
|
@@ -21241,6 +21398,9 @@ msgstr "{{ count }} 個月前"
|
|
|
21241
21398
|
msgid "{{ count }} patches"
|
|
21242
21399
|
msgstr "{{ count }} 个补丁"
|
|
21243
21400
|
|
|
21401
|
+
msgid "{{ count }} placeholders"
|
|
21402
|
+
msgstr "{{ count }} 占位符"
|
|
21403
|
+
|
|
21244
21404
|
msgid "{{ count }} selected"
|
|
21245
21405
|
msgstr "{{ count }} 已选择"
|
|
21246
21406
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{function e(t,i,c,n,s,a,d,u,
|
|
1
|
+
(()=>{function e(t,i,c,n,s,a,d,o,u,l){function r(e){t.device=e.device,t.devices={},t.variables=[],t.devices[e.device.id]=e.device,_.forEach(e.children,function(e){t.devices[e.id]=e}),t.variables.push(t.device),t.variables.push(t.devices)}function v(){t.reloading=!0;var e,i=y("devices");return y("device")||i?(e=t.child.config.device.id,i=i,d.all({device:s.detail(e).then(o.getResData),children:i?c.listChildren(e):[]}).then(r).then(function(){t.reloading=!1})):(t.reloading=!1,d.when())}function h(e,i){var c;!t.reloading&&t.device&&(t.device.id===i.id?(c=i,_.isEqual(c.childDevices,t.device.childDevices)&&_.isEqual(c.childAssets,t.device.childAssets)?(t.device=c,t.devices[c.id]=c):v()):(c=i,t.devices[c.id]&&(t.devices[c.id]=c)))}function f(e){return"/managedobjects/".concat(e)}function g(e){u.addListener(t.$id,f(e),u.realtimeActions().UPDATE,h),u.start(t.$id,f(e))}function p(){t.devices&&Object.keys(t.devices).forEach(function(e){u.stop(t.$id,f(e))}),t.device=null,t.devices=null}function y(e){var e=e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),i=new RegExp("\\{\\{[^\\}]*\\b".concat(e,"\\b[^\\}]*}}")),e=new RegExp('ng[\\w-]*="[^"]*\\b'.concat(e,'\\b[^"]*'));return i.test(t.child.config.html)||e.test(t.child.config.html)}function C(){var e=[];t.countersLoaded=!1,y("devicesCount")&&e.push(l.getSummary().then(function(e){t.devicesCount=e.data.deviceWithChildrenCount,t.variables.push(t.devicesCount)})),y("deviceGroupsCount")&&e.push(s.getCount({fragmentType:"c8y_IsDeviceGroup"}).then(function(e){t.deviceGroupsCount=e,t.variables.push(t.deviceGroupsCount)})),y("usersCount")&&e.push(a.mustHaveAnyRole(["ROLE_USER_MANAGEMENT_READ"]).then(i.list).then(function(e){t.usersCount=e.length,t.variables.push(t.usersCount)})),y("criticalDevicesCount")&&e.push(s.list({fragmentType:"c8y_ActiveAlarmsStatus"}).then(function(e){t.criticalDevicesCount=_.filter(e,function(e){return e.c8y_ActiveAlarmsStatus&&e.c8y_ActiveAlarmsStatus.critical}).length,t.variables.push(t.criticalDevicesCount)})),y("onlineCount")&&e.push(c.list({pageSize:1e3}).then(function(e){t.onlineCount=_.filter(e,function(e){return n.isDeviceAvailable(e)}).length})),d.all(e).then(function(){t.countersLoaded=!0}),p(),v().then(function(){t.devices&&Object.keys(t.devices).forEach(g)})}_.assign(this,{$scope:t,isVariableUsed:y}),t.$watch("child.config.device",function(e,i){e&&!_.isEqual(e,i)&&C()},!0),t.$watch("child.config.html",function(e,i){void 0===e||_.isEqual(e,i)||C()}),t.$on("$destroy",p),t.variables=[],C()}e.$inject=["$scope","c8yUser","c8yDevices","c8yDeviceStatus","c8yInventory","c8yPermissions","$q","c8yBase","c8yRealtime","c8yStatistics"],angular.module("c8y.parts.htmlwidget").controller("HtmlWidgetCtrl",e)})();
|
package/package.json
CHANGED
package/scada/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}(()=>{function e(e,t){function c(n){n&&"object"===_typeof(n)&&(Array.isArray(n)?n.forEach(c):Object.keys(n).forEach(function(e){var t,o;"__target"===e&&n[e]&&"object"===_typeof(n[e])?(o=(t=n[e]).id,n[e]={id:o,name:t.name,c8y_IsDevice:t.c8y_IsDevice}):c(n[e])}))}e.add({name:"SCADA",description:t("Display a configurable SVG."),templateUrl:":::PLUGIN_PATH:::/views/component.html",configTemplateUrl:":::PLUGIN_PATH:::/views/componentConfig.html",previewImage:":::PLUGIN_PATH:::/img/scada-widget-pr.png",transformConfigWithContext:["config","context","dashboard",function(e,t,o){return o.deviceType&&e.deviceIds&&(e.deviceIds=_.mapValues(e.deviceIds,_.constant(t.id)),c(e)),e}],options:{groupsSelectable:!0}})}e.$inject=["c8yComponentsProvider","gettext"],angular.module("c8y.parts.scadaWidget",[]).config(e)})();
|
|
1
|
+
function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}(()=>{function e(e,t){function c(n){n&&"object"===_typeof(n)&&(Array.isArray(n)?n.forEach(c):Object.keys(n).forEach(function(e){var t,o;"__target"===e&&n[e]&&"object"===_typeof(n[e])?(o=(t=n[e]).id,n[e]={id:o,name:t.name,c8y_IsDevice:t.c8y_IsDevice}):c(n[e])}))}function o(e){return e.getFeatureStatePromise("ui.scada-widget.v2").then(function(e){return!e})}o.$inject=["c8yFeatureCacheService"],e.add({name:"SCADA",description:t("Display a configurable SVG."),templateUrl:":::PLUGIN_PATH:::/views/component.html",configTemplateUrl:":::PLUGIN_PATH:::/views/componentConfig.html",previewImage:":::PLUGIN_PATH:::/img/scada-widget-pr.png",transformConfigWithContext:["config","context","dashboard",function(e,t,o){return o.deviceType&&e.deviceIds&&(e.deviceIds=_.mapValues(e.deviceIds,_.constant(t.id)),c(e)),e}],options:{groupsSelectable:!0},showIf:o})}e.$inject=["c8yComponentsProvider","gettext"],angular.module("c8y.parts.scadaWidget",[]).config(e)})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{function e(s,n,o,r,
|
|
1
|
+
(()=>{function e(s,t,n,o,r,i,e,u,l,a,c,g,f){var d,h=this,p=(_.assign(h,{ROUTE_NEW_USER:i.ROUTE_NEW_USER,$onInit:function(){s.all([E(),e.global.list({pageSize:1e4}).then(v)]).then(function(){return _.forEach(h.users,y)}),i.userHierarchyActive().then(function(e){h.FEATURE_USER_HIERARCHY=e}).then(U),t.$watch("vm.filters.text",function(e,n){e!==n&&(h.showSearchHint=e&&0<e.length&&e.length<3,!e||3<=e.length?p(!0):n&&3<=n.length&&p(!0,!0))})},loadMore:function(){h.users.paging.loading=!0,h.users.paging.next().then(R).finally(function(){h.users.paging.loading=!1})},loadUsers:E,loadSubusers:S,changeUser:function(s,e){var n="changeGlobalRoles"===e.name;return i.warnAboutUserLogOutIfNeeded(s,{rolesChanged:n}).then(function(){return i.changeUser(s,e)}).then(function(e){var n,t,r=s;return(e=e||{}).removeUser&&(h.users=_.reject(h.users,{id:r.id}),t=_.get(r,"_owner.id"),h.users=_.map(h.users,function(e){return t&&t===e.id?(e.subusersCount--,angular.copy(e)):e})),e.refresh||e.removeUser||(n=o.list({username:r.id,withSubusersCount:!0}).then(_.first).then(function(t){var r=t.id,e=_.map(h.users,function(e){var n=r===e.id;return n&&(t._expanded=e._expanded),n?y(t):e});_.assign(e,_.pick(h.users,["statistics","paging"])),h.users=e})),n=e.refresh?E():n})},showExpandCollapse:function(){return h.FEATURE_USER_HIERARCHY&&_.some(h.users,function(e){return 0<e.subusersCount||_.get(e,"_owns.length")})},collapseAll:function(){i.collapseAll(h.users)},expandAll:function(){i.expandAll(h.users),s.all(_.map(h.users,function(e){return e.subusersCount>e._owns.length?S(e).then(function(){return!0}):s.resolve(!1)})).then(function(e){_.some(e)&&n(h.expandAll)})},filters:{},applyFilters:function(){E(!0)},clearFilters:function(){h.filters.globalRoles=[],E(!0)},isAnyFilterSelected:function(){return 0<_.get(h.filters,"globalRoles.length",0)},refresh:function(){return E(!0).then(function(){return _.forEach(h.users,y)})},revokeTokens:function(){function e(){return o.current().then(function(e){return t(e)}).then(function(e){return e?r.logoutAndReloadPage():s.resolve()})}var n=f.get("c8yAuthBridgeService").getPreferredLoginOption(),t=function(e){return!(!o.hasExternalOrigin(e)&&"BASIC"===n.type)};u({title:c("Confirm log out all users?"),body:g.getString('You are about to log out all users currently logged with "OAI-Secure" or "Single sign-on redirect". The JWT tokens retrieved by all devices in the current tenant will also be invalidated. Do you want to proceed?'),status:"warning",size:"sm",labels:{ok:c("Confirm")}}).then(function(){return o.revokeTokens()}).then(e).then(function(){return l.success(c("Logged out all users and invalidated tokens."))}).catch(function(e){e&&l.danger(a.getResErrorMessage(e))})},onSearchKeydown:function(e){"Enter"===e.key&&(e.preventDefault(),p.cancel(),E(!0))},clearSearch:function(){h.filters.text="",p.cancel(),E(!0)}}),_.debounce(function(e,n){E(e,n),t.$applyAsync()},300));function E(e){var n=1<arguments.length&&void 0!==arguments[1]&&arguments[1];return d=e?[]:h.users,h.users=[],o.list(n?{}:(e=_.get(h.filters,"text"),n=(n=_.map(_.get(h.filters,"globalRoles"),"id")).length?n.join(","):void 0,{withSubusersCount:!0,usernameContains:e,groups:n,withApps:!1,withGroups:!1,withRoles:!1,onlyRoots:_.isEmpty(e)})).then(R)}function R(e){A(e),h.users.paging=e.paging}function A(e){var n=h.users,t=n.paging,r=o.getTfaStrategy();_.forEach(e,function(t){var e=_.find(d,{id:t.id});t.twoFactorAuthenticationEnabled||s.all({enforced:o.isTfaActive(t),strategy:r}).then(function(e){var n=e.enforced,e=e.strategy;"SMS"!==e&&e||n&&(t.twoFactorAuthenticationEnabled=n)}),e&&(t._expanded=e._expanded),_.some(n,{id:t.id})||(n=n.concat([t]))}),n.paging=t,h.users=n}function v(e){h.globalRoles=e}function y(e){return e._globalRoles=_.map(_.get(e,"groups.references"),function(e){return _.find(h.globalRoles,{id:e.group.id})}),e}function U(){o.current().then(function(e){h.canAddUser=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")||h.FEATURE_USER_HIERARCHY&&o.hasRole(e,"ROLE_USER_MANAGEMENT_CREATE"),h.canRevokeTokens=o.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN")})}function S(e){return d=h.users,o.listAll({owner:e.id,withSubusersCount:!0}).then(A)}}e.$inject=["$q","$scope","$timeout","c8yUser","c8yUserUtil","c8yUsersUi","c8yRoles","c8yModal","c8yAlert","c8yBase","gettext","gettextCatalog","$injector"],angular.module("c8y.users").component("c8yUserListView",{templateUrl:":::PLUGIN_PATH:::/userListView/userListView.html",controller:e,controllerAs:"vm"})})();
|