@object-ui/i18n 17.3.0 → 17.5.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/CHANGELOG.md +1295 -1
- package/README.md +0 -13
- package/dist/index.d.ts +3 -1
- package/dist/index.js +11 -1
- package/dist/locales/ar.d.ts +466 -107
- package/dist/locales/ar.js +559 -153
- package/dist/locales/de.d.ts +466 -107
- package/dist/locales/de.js +574 -175
- package/dist/locales/en.d.ts +502 -143
- package/dist/locales/en.js +678 -145
- package/dist/locales/es.d.ts +466 -107
- package/dist/locales/es.js +553 -155
- package/dist/locales/fr.d.ts +466 -107
- package/dist/locales/fr.js +553 -152
- package/dist/locales/index.d.ts +4734 -1144
- package/dist/locales/ja.d.ts +466 -107
- package/dist/locales/ja.js +545 -146
- package/dist/locales/ko.d.ts +466 -107
- package/dist/locales/ko.js +551 -153
- package/dist/locales/pt.d.ts +466 -107
- package/dist/locales/pt.js +552 -154
- package/dist/locales/ru.d.ts +466 -107
- package/dist/locales/ru.js +563 -153
- package/dist/locales/zh.d.ts +501 -142
- package/dist/locales/zh.js +542 -142
- package/dist/pickLocalized.d.ts +21 -0
- package/dist/pickLocalized.js +40 -7
- package/dist/provider.d.ts +83 -1
- package/dist/provider.js +303 -29
- package/dist/useDisplayLocale.d.ts +49 -0
- package/dist/useDisplayLocale.js +55 -0
- package/dist/useObjectLabel.d.ts +8 -2
- package/dist/useObjectLabel.js +28 -8
- package/dist/useSafeTranslation.js +50 -2
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/number-display.d.ts +32 -0
- package/dist/utils/number-display.js +32 -0
- package/dist/utils/spec-formatters.d.ts +39 -13
- package/dist/utils/spec-formatters.js +3 -3
- package/package.json +4 -3
package/dist/locales/zh.js
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
* 中文 (zh) - Chinese language pack for Object UI
|
|
3
3
|
*/
|
|
4
4
|
const zh = {
|
|
5
|
+
// objectui#4467 — the impersonation banner (app-shell ImpersonationBanner).
|
|
6
|
+
// Raised by `session.impersonatedBy`, so it survives SPA reboots; it names
|
|
7
|
+
// BOTH parties because the audit trail attributes the work to the impersonated
|
|
8
|
+
// user, and the exit states its own failure rather than appearing to succeed.
|
|
9
|
+
impersonation: {
|
|
10
|
+
banner: {
|
|
11
|
+
message: '您正在以 {{user}} 的身份操作 —— 所有操作都会记录为该用户。',
|
|
12
|
+
startedBy: '由管理员 {{admin}} 发起。',
|
|
13
|
+
stop: '结束模拟登录',
|
|
14
|
+
stopping: '正在结束…',
|
|
15
|
+
stopFailed: '无法结束模拟登录:{{reason}}',
|
|
16
|
+
notRestored: '服务器接受了请求,但没有恢复您的管理员会话 —— 您仍在以 {{user}} 的身份操作。请退出登录后重新登录以结束。',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
5
19
|
// objectui#2600 B5 — 能力选择器的作用域分组标题(能力标签本身来自
|
|
6
20
|
// sys_capability 注册表,这里只本地化分组标题这类 UI 字符串)。
|
|
7
21
|
capability: {
|
|
@@ -21,6 +35,28 @@ const zh = {
|
|
|
21
35
|
studio_access: '访问 Studio',
|
|
22
36
|
},
|
|
23
37
|
},
|
|
38
|
+
// objectui#3546 切片六 —— 权限集记录上六个授权面的只读摘要与 Studio 深链
|
|
39
|
+
// (ADR-0056 P1,plugin-detail 的 PermissionFacetLink)。
|
|
40
|
+
// 用词取自本仓权限集设计器(metadata-admin i18n 表):个对象 / 行级策略 /
|
|
41
|
+
// 标签页 / 委派管理范围 —— 与点进去的那个界面一致。
|
|
42
|
+
// 中文无单复数,四个计数 key 的 `_one` 与基础 key 同值(设计如此,不是漏改)。
|
|
43
|
+
perm: {
|
|
44
|
+
facet: {
|
|
45
|
+
none: '无',
|
|
46
|
+
more: '+{{count}} 更多',
|
|
47
|
+
objects: '{{count}} 个对象',
|
|
48
|
+
objects_one: '{{count}} 个对象',
|
|
49
|
+
fields: '{{count}} 条字段规则',
|
|
50
|
+
fields_one: '{{count}} 条字段规则',
|
|
51
|
+
rls: '{{count}} 条 RLS 策略',
|
|
52
|
+
rls_one: '{{count}} 条 RLS 策略',
|
|
53
|
+
tabs: '{{count}} 条标签页规则',
|
|
54
|
+
tabs_one: '{{count}} 条标签页规则',
|
|
55
|
+
adminScope: '已配置委派管理范围',
|
|
56
|
+
designInStudio: '在 Studio 中设计 →',
|
|
57
|
+
designInStudioHint: '在 Studio 中设计',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
24
60
|
lookup: {
|
|
25
61
|
recentlyUsed: '最近使用',
|
|
26
62
|
allResults: '全部结果',
|
|
@@ -49,13 +85,12 @@ const zh = {
|
|
|
49
85
|
retry: '重试',
|
|
50
86
|
},
|
|
51
87
|
common: {
|
|
52
|
-
loading: '
|
|
88
|
+
loading: '加载中…',
|
|
53
89
|
save: '保存',
|
|
54
90
|
cancel: '取消',
|
|
55
91
|
delete: '删除',
|
|
56
92
|
edit: '编辑',
|
|
57
93
|
create: '新建',
|
|
58
|
-
search: '搜索',
|
|
59
94
|
filter: '筛选',
|
|
60
95
|
reset: '重置',
|
|
61
96
|
confirm: '确认',
|
|
@@ -81,7 +116,7 @@ const zh = {
|
|
|
81
116
|
required: '必填',
|
|
82
117
|
optional: '选填',
|
|
83
118
|
selectOption: '请选择',
|
|
84
|
-
select: '
|
|
119
|
+
select: '选择…',
|
|
85
120
|
openChat: '打开聊天',
|
|
86
121
|
closeChat: '关闭聊天',
|
|
87
122
|
closePanel: '关闭面板',
|
|
@@ -90,6 +125,11 @@ const zh = {
|
|
|
90
125
|
itemCountOne: '{{count}} 项',
|
|
91
126
|
toggleSidebar: '切换侧边栏',
|
|
92
127
|
package: '软件包',
|
|
128
|
+
done: '完成',
|
|
129
|
+
editInStudio: '在 Studio 中编辑',
|
|
130
|
+
record: '记录',
|
|
131
|
+
retry: '重试',
|
|
132
|
+
printDialogHint: '打开浏览器打印对话框(不是导出 PDF)',
|
|
93
133
|
},
|
|
94
134
|
actions: {
|
|
95
135
|
decisionOutput: {
|
|
@@ -128,6 +168,9 @@ const zh = {
|
|
|
128
168
|
unsavedChanges: '您有未保存的更改,确定要离开吗?',
|
|
129
169
|
discardTitle: '放弃更改?',
|
|
130
170
|
discardMessage: '您有未保存的更改。如果现在关闭此表单,您的编辑将会丢失。',
|
|
171
|
+
// objectui#4024 — the create/edit dialog's `sr-only` accessible
|
|
172
|
+
// description, used when the form declares no `description` of its own.
|
|
173
|
+
dialogDescriptionFallback: '填写表单字段,然后提交或取消。',
|
|
131
174
|
keepEditing: '继续编辑',
|
|
132
175
|
discard: '放弃',
|
|
133
176
|
conflictTitle: '保存冲突',
|
|
@@ -189,7 +232,7 @@ const zh = {
|
|
|
189
232
|
richText: {
|
|
190
233
|
format: '格式: {{format}}',
|
|
191
234
|
basicEditorHint: '富文本编辑器(基础)',
|
|
192
|
-
placeholder: '
|
|
235
|
+
placeholder: '请输入文字…',
|
|
193
236
|
},
|
|
194
237
|
options: {
|
|
195
238
|
empty: '暂无可选项',
|
|
@@ -255,7 +298,7 @@ const zh = {
|
|
|
255
298
|
saveAll: '全部保存 ({{count}})',
|
|
256
299
|
addRecord: '添加记录',
|
|
257
300
|
open: '打开',
|
|
258
|
-
search: '
|
|
301
|
+
search: '搜索…',
|
|
259
302
|
modified: '{{count}} 行已修改',
|
|
260
303
|
saveFailed: '保存失败',
|
|
261
304
|
selected: '已选择 {{count}} 项',
|
|
@@ -268,7 +311,7 @@ const zh = {
|
|
|
268
311
|
delete: '删除',
|
|
269
312
|
export: '导出',
|
|
270
313
|
exportAs: '导出为 {{format}}',
|
|
271
|
-
loading: '
|
|
314
|
+
loading: '加载数据中…',
|
|
272
315
|
errorLoading: '数据加载失败',
|
|
273
316
|
pullToRefresh: '下拉刷新',
|
|
274
317
|
refreshing: '刷新中…',
|
|
@@ -285,6 +328,22 @@ const zh = {
|
|
|
285
328
|
yes: '是',
|
|
286
329
|
no: '否',
|
|
287
330
|
systemFields: '系统字段',
|
|
331
|
+
// objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
|
|
332
|
+
// `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
|
|
333
|
+
// pack controls its own separator and word order.
|
|
334
|
+
summary: {
|
|
335
|
+
pattern: '{{label}}:{{value}}',
|
|
336
|
+
count: '计数',
|
|
337
|
+
countEmpty: '空值',
|
|
338
|
+
countFilled: '非空',
|
|
339
|
+
countUnique: '去重',
|
|
340
|
+
percentEmpty: '空值',
|
|
341
|
+
percentFilled: '非空',
|
|
342
|
+
sum: '合计',
|
|
343
|
+
avg: '平均值',
|
|
344
|
+
min: '最小值',
|
|
345
|
+
max: '最大值',
|
|
346
|
+
},
|
|
288
347
|
toolbar: {
|
|
289
348
|
densityMode: '密度',
|
|
290
349
|
densityCompact: '紧凑',
|
|
@@ -485,7 +544,7 @@ const zh = {
|
|
|
485
544
|
moreEvents: '+{{count}} 更多',
|
|
486
545
|
},
|
|
487
546
|
list: {
|
|
488
|
-
loading: '
|
|
547
|
+
loading: '正在加载记录…',
|
|
489
548
|
recordCount: '{{count}} 条记录',
|
|
490
549
|
recordCountOne: '{{count}} 条记录',
|
|
491
550
|
addRecord: '添加记录',
|
|
@@ -497,7 +556,8 @@ const zh = {
|
|
|
497
556
|
sort: '排序',
|
|
498
557
|
sortRecords: '排序记录',
|
|
499
558
|
sortByIdSuffix: '(按 ID)',
|
|
500
|
-
sortRelationalHint: '指向其他记录的列未列出:它们只能按存储的 ID
|
|
559
|
+
sortRelationalHint: '指向其他记录的列未列出:它们只能按存储的 ID 排序,而不是单元格中显示的名称。若要按该名称排序,请把该名称反规范化到本对象上,做成一个在来源变更时写入的存储字段,再按它排序。不要用公式字段:公式字段是虚拟的,不会为它存储任何列,服务端会拒绝按它排序。',
|
|
560
|
+
resetSortToDefault: '恢复视图默认排序',
|
|
501
561
|
group: '分组',
|
|
502
562
|
groupBy: '分组依据',
|
|
503
563
|
export: '导出',
|
|
@@ -522,6 +582,8 @@ const zh = {
|
|
|
522
582
|
loadErrorUnauthorizedMessage: '登录状态已过期或已退出。请重新登录后查看这些记录。',
|
|
523
583
|
loadErrorRejectedTitle: '该视图的查询被拒绝',
|
|
524
584
|
loadErrorRejectedMessage: '服务器无法处理该视图的筛选条件或查询参数。清除筛选条件通常即可恢复;如果视图本身就是这样保存的,需要管理员修正。',
|
|
585
|
+
loadErrorApiDisabledTitle: '该对象未开放 API 访问',
|
|
586
|
+
loadErrorApiDisabledMessage: '此页面无法加载记录,因为该对象未通过 API 开放。这是对象自身的设置,而不是权限问题 —— 需要管理员为其启用 API 访问,此页面才能正常工作。',
|
|
525
587
|
retry: '重试',
|
|
526
588
|
managedBy: {
|
|
527
589
|
system: {
|
|
@@ -596,8 +658,11 @@ const zh = {
|
|
|
596
658
|
deleteCard: '删除卡片',
|
|
597
659
|
deleteColumn: '删除列',
|
|
598
660
|
noCards: '暂无卡片',
|
|
599
|
-
cardTitlePlaceholder: '
|
|
661
|
+
cardTitlePlaceholder: '输入卡片标题…',
|
|
600
662
|
uncategorized: '未分类',
|
|
663
|
+
columns: '列',
|
|
664
|
+
requiredFieldsTitle: '填写必填字段',
|
|
665
|
+
requiredFieldsDescription: '此次移动会使以下字段成为必填项。填写后即可继续。',
|
|
601
666
|
},
|
|
602
667
|
timeline: {
|
|
603
668
|
bucket: {
|
|
@@ -610,6 +675,13 @@ const zh = {
|
|
|
610
675
|
noDate: '无日期',
|
|
611
676
|
unassigned: '未分配',
|
|
612
677
|
},
|
|
678
|
+
scale: {
|
|
679
|
+
week: '第 {{n}} 周',
|
|
680
|
+
quarter: '{{year}}年第{{quarter}}季度',
|
|
681
|
+
},
|
|
682
|
+
gantt: {
|
|
683
|
+
rowLabel: '条目',
|
|
684
|
+
},
|
|
613
685
|
},
|
|
614
686
|
gantt: {
|
|
615
687
|
column: {
|
|
@@ -636,6 +708,7 @@ const zh = {
|
|
|
636
708
|
exportPng: '导出 PNG',
|
|
637
709
|
exportPdf: '导出 PDF',
|
|
638
710
|
saveLayout: '保存布局',
|
|
711
|
+
refresh: '刷新',
|
|
639
712
|
undo: '撤销',
|
|
640
713
|
redo: '重做',
|
|
641
714
|
},
|
|
@@ -683,6 +756,18 @@ const zh = {
|
|
|
683
756
|
ff: '完成 → 完成',
|
|
684
757
|
sf: '开始 → 完成',
|
|
685
758
|
},
|
|
759
|
+
linkEnd: {
|
|
760
|
+
start: '开始',
|
|
761
|
+
end: '结束',
|
|
762
|
+
},
|
|
763
|
+
link: {
|
|
764
|
+
rejected: {
|
|
765
|
+
self: "任务不能依赖自身。",
|
|
766
|
+
locked: "该行已锁定,无法新增依赖。",
|
|
767
|
+
group: "汇总行不能作为依赖目标,请改为连接其下的具体任务。",
|
|
768
|
+
cycle: "该连接会形成循环依赖。",
|
|
769
|
+
},
|
|
770
|
+
},
|
|
686
771
|
conflict: {
|
|
687
772
|
title: '排程冲突',
|
|
688
773
|
body: '此次移动与依赖约束冲突。是否自动重新排程 {{count}} 个受影响的任务?',
|
|
@@ -691,8 +776,8 @@ const zh = {
|
|
|
691
776
|
},
|
|
692
777
|
autoScheduleDlg: {
|
|
693
778
|
title: '自动排程',
|
|
694
|
-
body: '将顺延 {count} 个任务以满足依赖约束,是否执行?',
|
|
695
|
-
skipped: '另有 {count} 项因锁定/无权限跳过。',
|
|
779
|
+
body: '将顺延 {{count}} 个任务以满足依赖约束,是否执行?',
|
|
780
|
+
skipped: '另有 {{count}} 项因锁定/无权限跳过。',
|
|
696
781
|
confirm: '执行',
|
|
697
782
|
cancel: '取消',
|
|
698
783
|
none: '依赖均满足,无需排程',
|
|
@@ -745,8 +830,8 @@ const zh = {
|
|
|
745
830
|
readonlyTooltip: '系统视图 — 由代码定义,只读。',
|
|
746
831
|
},
|
|
747
832
|
designer: {
|
|
748
|
-
undo: '
|
|
749
|
-
redo: '
|
|
833
|
+
undo: '撤销',
|
|
834
|
+
redo: '重做',
|
|
750
835
|
},
|
|
751
836
|
detail: {
|
|
752
837
|
back: '返回',
|
|
@@ -789,6 +874,7 @@ const zh = {
|
|
|
789
874
|
concurrentUpdateReload: '加载最新',
|
|
790
875
|
concurrentUpdateOverwrite: '仍然覆盖',
|
|
791
876
|
concurrentUpdateCancel: '取消',
|
|
877
|
+
concurrentUpdateRecordLabel: '此记录',
|
|
792
878
|
openInNewTab: '在新标签页打开',
|
|
793
879
|
share: '分享',
|
|
794
880
|
duplicate: '复制',
|
|
@@ -818,16 +904,19 @@ const zh = {
|
|
|
818
904
|
relatedRecords: '{{count}} 条记录',
|
|
819
905
|
relatedRecordOne: '{{count}} 条记录',
|
|
820
906
|
noRelatedRecords: '暂无相关记录',
|
|
821
|
-
loading: '
|
|
907
|
+
loading: '加载中…',
|
|
822
908
|
copyToClipboard: '复制到剪贴板',
|
|
823
909
|
copied: '已复制!',
|
|
824
910
|
deleteConfirmation: '确定要删除此记录吗?',
|
|
911
|
+
deleted: '记录已删除',
|
|
825
912
|
editRecord: '编辑记录',
|
|
826
913
|
viewAll: '查看全部',
|
|
827
914
|
new: '新建',
|
|
915
|
+
add: '添加',
|
|
828
916
|
emptyValue: '—',
|
|
829
917
|
activity: '活动',
|
|
830
918
|
history: '历史',
|
|
919
|
+
historyEmpty: '暂无历史记录',
|
|
831
920
|
editRow: '编辑',
|
|
832
921
|
deleteRow: '删除',
|
|
833
922
|
deleteRowConfirmation: '确定要删除此记录吗?',
|
|
@@ -837,7 +926,7 @@ const zh = {
|
|
|
837
926
|
nextPage: '下一页',
|
|
838
927
|
pageOf: '第 {{current}} 页,共 {{total}} 页',
|
|
839
928
|
sortBy: '排序',
|
|
840
|
-
filterPlaceholder: '
|
|
929
|
+
filterPlaceholder: '筛选…',
|
|
841
930
|
highlightFields: '关键字段',
|
|
842
931
|
// Comments
|
|
843
932
|
comments: '评论',
|
|
@@ -908,6 +997,9 @@ const zh = {
|
|
|
908
997
|
nextRecordKey: '下一条记录 (→)',
|
|
909
998
|
lastRecord: '最后一条记录 (End)',
|
|
910
999
|
noRecords: '无记录',
|
|
1000
|
+
// objectui#3863 — base key. zh has a single plural category (`other`), so this
|
|
1001
|
+
// slot is unreachable here and equals `_other` for key-set parity.
|
|
1002
|
+
showEmptyRelated: '+ {{count}} 个为空',
|
|
911
1003
|
showEmptyRelated_one: '+ {{count}} 个为空',
|
|
912
1004
|
showEmptyRelated_other: '+ {{count}} 个为空',
|
|
913
1005
|
searchWhileNavigating: '导航时搜索',
|
|
@@ -922,6 +1014,7 @@ const zh = {
|
|
|
922
1014
|
loadMore: '加载更多',
|
|
923
1015
|
edited: '(已编辑)',
|
|
924
1016
|
via: '通过 {{source}}',
|
|
1017
|
+
viewSource: '查看来源',
|
|
925
1018
|
// Replies
|
|
926
1019
|
replyCount: '{{count}} 条回复',
|
|
927
1020
|
replyCountPlural: '{{count}} 条回复',
|
|
@@ -942,7 +1035,8 @@ const zh = {
|
|
|
942
1035
|
},
|
|
943
1036
|
chart: {
|
|
944
1037
|
noData: '暂无图表数据',
|
|
945
|
-
loading: '
|
|
1038
|
+
loading: '图表加载中…',
|
|
1039
|
+
nullCategory: '(未指定)',
|
|
946
1040
|
},
|
|
947
1041
|
report: {
|
|
948
1042
|
total: '总计',
|
|
@@ -967,111 +1061,7 @@ const zh = {
|
|
|
967
1061
|
first: '首个',
|
|
968
1062
|
},
|
|
969
1063
|
editor: {
|
|
970
|
-
|
|
971
|
-
basic: '基础',
|
|
972
|
-
title: '标题',
|
|
973
|
-
titlePlaceholder: '例如:按季度的销售管道',
|
|
974
|
-
description: '描述',
|
|
975
|
-
descriptionPlaceholder: '此报表展示什么?',
|
|
976
|
-
type: '报表类型',
|
|
977
|
-
typeTabular: '表格 — 平铺列表',
|
|
978
|
-
typeSummary: '汇总 — 分组带合计',
|
|
979
|
-
typeMatrix: '矩阵 — 行列透视',
|
|
980
|
-
typeJoined: '拼接 — 多块组合',
|
|
981
|
-
typeHelp: '选择最贴合需求的布局方式。',
|
|
982
|
-
data: '数据',
|
|
983
|
-
objectName: '数据源',
|
|
984
|
-
objectNamePlaceholder: '例如:opportunity',
|
|
985
|
-
objectNameHelp: '此报表应查询哪个对象?',
|
|
986
|
-
limit: '行数上限',
|
|
987
|
-
limitPlaceholder: '例如:100',
|
|
988
|
-
columns: '列',
|
|
989
|
-
columnsHint: '选择要展示的字段。汇总或矩阵报表可添加聚合(求和、计数…)。',
|
|
990
|
-
filters: '筛选',
|
|
991
|
-
filtersHint: '限定参与报表的数据行。',
|
|
992
|
-
filtersComplex: '此报表使用了高级筛选条件,此处无法编辑。保存时将原样保留。',
|
|
993
|
-
groupBy: '分组',
|
|
994
|
-
groupByHint: '按字段分组并计算小计。',
|
|
995
|
-
rows: '行',
|
|
996
|
-
rowsHint: '按这些字段对行分组。',
|
|
997
|
-
columnsAxis: '列',
|
|
998
|
-
columnsAxisHint: '将这些字段透视到顶部。',
|
|
999
|
-
values: '度量',
|
|
1000
|
-
valuesHint: '每个单元格里展示的数字。选择一个或多个字段并设置聚合方式(求和、计数…)。',
|
|
1001
|
-
grouping: '分组',
|
|
1002
|
-
addGrouping: '添加分组',
|
|
1003
|
-
dateGranularity: '日期粒度',
|
|
1004
|
-
dateGranularityNone: '(使用原始值)',
|
|
1005
|
-
day: '日',
|
|
1006
|
-
week: '周',
|
|
1007
|
-
month: '月',
|
|
1008
|
-
quarter: '季度',
|
|
1009
|
-
year: '年',
|
|
1010
|
-
sortAsc: '升序',
|
|
1011
|
-
sortDesc: '降序',
|
|
1012
|
-
chart: '图表',
|
|
1013
|
-
chartHint: '在表格旁可选展示的可视化。',
|
|
1014
|
-
chartType: '图表类型',
|
|
1015
|
-
chartTitle: '图表标题',
|
|
1016
|
-
chartTitlePlaceholder: '默认使用报表标题',
|
|
1017
|
-
chartXAxis: 'X 轴(类别)',
|
|
1018
|
-
chartYAxis: 'Y 轴(数值)',
|
|
1019
|
-
chartShowLegend: '显示图例',
|
|
1020
|
-
chartShowDataLabels: '显示数据标签',
|
|
1021
|
-
chartNone: '(无图表)',
|
|
1022
|
-
chartBar: '柱状图',
|
|
1023
|
-
chartLine: '折线图',
|
|
1024
|
-
chartArea: '面积图',
|
|
1025
|
-
chartPie: '饼图',
|
|
1026
|
-
chartDonut: '环形图',
|
|
1027
|
-
chartFunnel: '漏斗图',
|
|
1028
|
-
validationNeedsObject: '请先选择数据源,再添加列。',
|
|
1029
|
-
validationMatrixNeedsRowsCols: '矩阵报表至少需要一个行字段和一个列字段。',
|
|
1030
|
-
validationSummaryNeedsRows: '汇总报表至少需要一个分组字段。',
|
|
1031
|
-
blocks: '区块',
|
|
1032
|
-
blocksHint: '每个区块都是独立的表格或图表。区块筛选会与报表筛选合并(AND)。',
|
|
1033
|
-
addBlock: '添加区块',
|
|
1034
|
-
removeBlock: '删除区块',
|
|
1035
|
-
blockName: '区块名称',
|
|
1036
|
-
blockNamePlaceholder: '唯一的区块名',
|
|
1037
|
-
blockLabel: '显示标题',
|
|
1038
|
-
blockLabelPlaceholder: '显示在区块上方',
|
|
1039
|
-
blockDescription: '说明',
|
|
1040
|
-
blockDescriptionPlaceholder: '该区块的可选说明',
|
|
1041
|
-
validationJoinedNeedsBlocks: '组合报表至少需要一个区块。',
|
|
1042
|
-
validationBlockNameRequired: '每个区块都必须有非空的名称。',
|
|
1043
|
-
validationBlockNameDuplicate: '区块名称在报表内必须唯一。',
|
|
1044
|
-
validationBlockNeedsColumns: '每个区块至少需要一列。',
|
|
1045
|
-
noneOption: '(无)',
|
|
1046
|
-
addCondition: '添加条件',
|
|
1047
|
-
combineLogic: '组合方式',
|
|
1048
|
-
opContains: '包含',
|
|
1049
|
-
opIsEmpty: '为空',
|
|
1050
|
-
opIsNotEmpty: '不为空',
|
|
1051
|
-
formatAuto: '自动',
|
|
1052
|
-
formatCurrency: '货币',
|
|
1053
|
-
formatPercent: '百分比',
|
|
1054
|
-
formatInteger: '整数',
|
|
1055
|
-
formatDate: '日期',
|
|
1056
|
-
formatDatetime: '日期 + 时间',
|
|
1057
|
-
columnLabelPlaceholder: '自定义标签',
|
|
1058
|
-
aggregateColumn: '聚合',
|
|
1059
|
-
formatColumn: '格式',
|
|
1060
|
-
addColumns: '添加字段',
|
|
1061
|
-
searchFields: '搜索字段…',
|
|
1062
|
-
noMatchingFields: '没有匹配的字段。',
|
|
1063
|
-
noFieldsAvailable: '暂无可用字段。',
|
|
1064
|
-
columnsCount: '已选择 {n} 个列',
|
|
1065
|
-
columnsEmpty: '尚未选择任何列。',
|
|
1066
|
-
fieldPickerTitle: '选择字段',
|
|
1067
|
-
fieldPickerDescription: '可选择一个或多个字段添加到报表,输入关键字可快速筛选。',
|
|
1068
|
-
fieldPickerChangeTitle: '更换字段',
|
|
1069
|
-
fieldPickerAddGroupingTitle: '添加分组',
|
|
1070
|
-
fieldPickerEmpty: '(请选择字段)',
|
|
1071
|
-
fieldPickerSelected: '已选 {n} 个',
|
|
1072
|
-
fieldPickerClear: '清空选择',
|
|
1073
|
-
fieldPickerAdd: '添加',
|
|
1074
|
-
fieldPickerAddN: '添加 {n} 个',
|
|
1064
|
+
panelTitle: '编辑报表',
|
|
1075
1065
|
},
|
|
1076
1066
|
},
|
|
1077
1067
|
map: {
|
|
@@ -1094,8 +1084,8 @@ const zh = {
|
|
|
1094
1084
|
properties: '属性',
|
|
1095
1085
|
connections: '连接',
|
|
1096
1086
|
quickConnect: '快速连接',
|
|
1097
|
-
fromPlaceholder: '
|
|
1098
|
-
toPlaceholder: '
|
|
1087
|
+
fromPlaceholder: '从…',
|
|
1088
|
+
toPlaceholder: '到…',
|
|
1099
1089
|
connect: '连接',
|
|
1100
1090
|
label: '标签',
|
|
1101
1091
|
type: '类型',
|
|
@@ -1151,6 +1141,7 @@ const zh = {
|
|
|
1151
1141
|
noDataAvailable: '暂无数据',
|
|
1152
1142
|
noDataSourceFor: '没有可用的数据源:',
|
|
1153
1143
|
noRows: '暂无数据行',
|
|
1144
|
+
loading: '加载中…',
|
|
1154
1145
|
pickMeasures: '请为该数据集组件选择度量(值)。',
|
|
1155
1146
|
datasetUnsupported: '当前数据源不支持数据集查询。',
|
|
1156
1147
|
details: '明细',
|
|
@@ -1400,8 +1391,9 @@ const zh = {
|
|
|
1400
1391
|
},
|
|
1401
1392
|
},
|
|
1402
1393
|
console: {
|
|
1394
|
+
saveAdvisoryTitle: '已保存 — 编辑检查提出了 {{count}} 条建议',
|
|
1403
1395
|
title: 'ObjectStack 控制台',
|
|
1404
|
-
initializing: '
|
|
1396
|
+
initializing: '正在初始化应用程序…',
|
|
1405
1397
|
search: '搜索…',
|
|
1406
1398
|
breadcrumb: {
|
|
1407
1399
|
dashboards: '仪表盘',
|
|
@@ -1432,6 +1424,31 @@ const zh = {
|
|
|
1432
1424
|
Other: '其他',
|
|
1433
1425
|
},
|
|
1434
1426
|
},
|
|
1427
|
+
// objectui#4024 — the single-namespace settings screen. Its sibling
|
|
1428
|
+
// `settingsHub` above already resolved through this pack; the view was the
|
|
1429
|
+
// one file still carrying English literals.
|
|
1430
|
+
settingsView: {
|
|
1431
|
+
backToHub: '全部设置',
|
|
1432
|
+
back: '返回',
|
|
1433
|
+
noNamespace: '未选择命名空间。',
|
|
1434
|
+
loadError: '加载设置失败',
|
|
1435
|
+
saved: '设置已保存',
|
|
1436
|
+
saveFailed: '保存失败',
|
|
1437
|
+
lockedByEnv: '已被环境变量锁定:{{key}}',
|
|
1438
|
+
lockedByEnvNoKey: '已被环境变量锁定',
|
|
1439
|
+
actionSucceeded: '操作成功',
|
|
1440
|
+
actionFailed: '操作失败',
|
|
1441
|
+
discard: '放弃',
|
|
1442
|
+
saveChanges: '保存更改',
|
|
1443
|
+
unsavedCount: '{{count}} 项未保存的更改',
|
|
1444
|
+
unsavedCount_one: '{{count}} 项未保存的更改',
|
|
1445
|
+
unsavedCount_other: '{{count}} 项未保存的更改',
|
|
1446
|
+
cryptoRefusalTitle: '此部署无法加密机密信息',
|
|
1447
|
+
cryptoRefusalSubjectSuffix: '被声明为加密字段,因此未写入任何内容。',
|
|
1448
|
+
cryptoRefusalNoSubject: '声明为加密的值被拒绝,因此未写入任何内容。',
|
|
1449
|
+
cryptoRefusalToast: '无法加密机密信息:{{subject}}',
|
|
1450
|
+
cryptoRefusalToastNoSubject: '无法加密机密信息',
|
|
1451
|
+
},
|
|
1435
1452
|
loadingSteps: {
|
|
1436
1453
|
connecting: '正在连接数据源',
|
|
1437
1454
|
loadingConfig: '正在加载配置',
|
|
@@ -1462,6 +1479,7 @@ const zh = {
|
|
|
1462
1479
|
general: '通用',
|
|
1463
1480
|
navigation: '导航',
|
|
1464
1481
|
dataViews: '数据视图',
|
|
1482
|
+
aiChat: 'AI 助手',
|
|
1465
1483
|
preferences: '偏好设置',
|
|
1466
1484
|
},
|
|
1467
1485
|
openCommandPalette: '打开命令面板',
|
|
@@ -1472,11 +1490,13 @@ const zh = {
|
|
|
1472
1490
|
createRecord: '新建记录',
|
|
1473
1491
|
refreshData: '刷新数据',
|
|
1474
1492
|
editRecord: '编辑选中记录',
|
|
1493
|
+
newChat: '新建对话',
|
|
1494
|
+
toggleChatsList: '切换对话列表',
|
|
1475
1495
|
toggleDarkMode: '切换深色模式',
|
|
1476
1496
|
},
|
|
1477
1497
|
commandPalette: {
|
|
1478
1498
|
title: '命令面板',
|
|
1479
|
-
placeholder: '
|
|
1499
|
+
placeholder: '输入命令或搜索…',
|
|
1480
1500
|
noResults: '未找到结果。',
|
|
1481
1501
|
searching: '搜索中…',
|
|
1482
1502
|
records: '记录',
|
|
@@ -1518,7 +1538,7 @@ const zh = {
|
|
|
1518
1538
|
shareTitle: '分享此对话',
|
|
1519
1539
|
shareDisabledTitle: '开始对话后即可分享',
|
|
1520
1540
|
newChat: '新对话',
|
|
1521
|
-
searchChats: '
|
|
1541
|
+
searchChats: '搜索对话…',
|
|
1522
1542
|
noChatsYet: '暂无对话',
|
|
1523
1543
|
noChatsDescription: '开始新的对话后会显示在这里。',
|
|
1524
1544
|
noMatchingChats: '没有匹配的对话。',
|
|
@@ -1527,18 +1547,18 @@ const zh = {
|
|
|
1527
1547
|
deleteConversation: '删除对话',
|
|
1528
1548
|
saveRename: '保存重命名',
|
|
1529
1549
|
cancelRename: '取消重命名',
|
|
1530
|
-
loadingHistory: '
|
|
1550
|
+
loadingHistory: '正在加载对话历史…',
|
|
1531
1551
|
conversationReady: '对话已就绪',
|
|
1532
1552
|
preparingConversation: '正在准备新对话',
|
|
1533
1553
|
offlineDemoMode: '离线演示模式 — 无法获取助手列表',
|
|
1534
1554
|
sendFailedRateLimited: '发送过于频繁,请稍候再试。你的消息已保留在输入框中。',
|
|
1535
1555
|
sendFailedGeneric: '消息发送失败,请重试。你的消息已保留在输入框中。',
|
|
1536
|
-
askAgent: '向 {{agent}}
|
|
1556
|
+
askAgent: '向 {{agent}} 提问…',
|
|
1537
1557
|
assistant: '助手',
|
|
1538
1558
|
liveCanvas: '草稿预览 · {{app}}',
|
|
1539
1559
|
liveCanvasUnlisted: '运行预览 · {{app}}(未发布 · 仅自己可见)',
|
|
1540
|
-
loadingAgents: '
|
|
1541
|
-
askAnything: '
|
|
1560
|
+
loadingAgents: '正在加载助手…',
|
|
1561
|
+
askAnything: '输入你的问题…',
|
|
1542
1562
|
emptyTitle: '开始对话',
|
|
1543
1563
|
emptyDescription: '可以直接提问,助手会结合当前应用上下文提供帮助。',
|
|
1544
1564
|
switchAssistant: '切换助手',
|
|
@@ -1653,6 +1673,57 @@ const zh = {
|
|
|
1653
1673
|
addAutomation: '加一个自动化 —— 审批、状态流转或通知。',
|
|
1654
1674
|
},
|
|
1655
1675
|
},
|
|
1676
|
+
// objectui#3546 slice four — the AI console surfaces: the /ai chat page's app switcher,
|
|
1677
|
+
// connection banner and plan/publish cards, the ChatDock chrome, and the
|
|
1678
|
+
// conversation-list date buckets. `group.*` is the template-key family
|
|
1679
|
+
// `console.ai.group.${key}` (ConversationsSidebar), enumerated from the
|
|
1680
|
+
// ConversationGroupKey union — all five members, no wildcard.
|
|
1681
|
+
collapseToDock: '收起到侧边栏',
|
|
1682
|
+
switchApp: '切换应用',
|
|
1683
|
+
switchAppLabel: '按应用查看搭建对话',
|
|
1684
|
+
newApp: '新建应用',
|
|
1685
|
+
connectionWaiting: '正在等待服务器…',
|
|
1686
|
+
connectionStalled: '仍在处理…',
|
|
1687
|
+
connectionOffline: '连接已断开 — 正在重新连接…',
|
|
1688
|
+
designingPlan: '正在设计你的应用…',
|
|
1689
|
+
designingPlanHint: {
|
|
1690
|
+
data: '正在梳理你要跟踪的数据…',
|
|
1691
|
+
objects: '正在设计对象及其字段…',
|
|
1692
|
+
relations: '正在关联相关记录…',
|
|
1693
|
+
lookups: '正在设置关系与关联查找…',
|
|
1694
|
+
views: '正在规划界面与视图…',
|
|
1695
|
+
forms: '正在排布表单与列表…',
|
|
1696
|
+
defaults: '正在添加合理的默认值与校验…',
|
|
1697
|
+
dashboard: '正在勾画用于跟踪的仪表盘…',
|
|
1698
|
+
review: '正在复核整体结构是否自洽…',
|
|
1699
|
+
finalize: '正在汇总方案…',
|
|
1700
|
+
},
|
|
1701
|
+
planBuilding: '正在搭建…',
|
|
1702
|
+
planBuilt: '已搭建',
|
|
1703
|
+
planDeferred: '尚未搭建',
|
|
1704
|
+
planReady: '方案已就绪。现在就开始搭建,或者告诉我需要调整什么。',
|
|
1705
|
+
published: '已发布',
|
|
1706
|
+
publishFailed: '发布失败',
|
|
1707
|
+
unavailableTitle: 'AI 助手不可用',
|
|
1708
|
+
unavailableDescription: '当前部署未启用 AI 助手。其他功能一切正常。',
|
|
1709
|
+
unavailableError: '无法连接 AI 服务。它可能暂时离线 — 请重试,或返回首页。',
|
|
1710
|
+
unavailableRetry: '重试',
|
|
1711
|
+
unavailableHome: '返回首页',
|
|
1712
|
+
dock: {
|
|
1713
|
+
title: '助手',
|
|
1714
|
+
description: 'AI 助手对话',
|
|
1715
|
+
resize: '调整对话宽度',
|
|
1716
|
+
collapse: '收起对话',
|
|
1717
|
+
maximize: '以完整页面打开',
|
|
1718
|
+
open: '打开助手',
|
|
1719
|
+
},
|
|
1720
|
+
group: {
|
|
1721
|
+
today: '今天',
|
|
1722
|
+
yesterday: '昨天',
|
|
1723
|
+
previous7Days: '过去 7 天',
|
|
1724
|
+
previous30Days: '过去 30 天',
|
|
1725
|
+
older: '更早',
|
|
1726
|
+
},
|
|
1656
1727
|
},
|
|
1657
1728
|
errors: {
|
|
1658
1729
|
somethingWentWrong: '出错了',
|
|
@@ -1661,6 +1732,12 @@ const zh = {
|
|
|
1661
1732
|
goHome: '返回首页',
|
|
1662
1733
|
errorDetails: '错误详情(仅开发模式)',
|
|
1663
1734
|
},
|
|
1735
|
+
// objectui#3546 slice four — the console's catch-all route (AppContent `RouteNotFound`).
|
|
1736
|
+
notFound: {
|
|
1737
|
+
title: '页面不存在',
|
|
1738
|
+
description: '你访问的链接与该应用中的任何视图都不匹配。',
|
|
1739
|
+
back: '返回',
|
|
1740
|
+
},
|
|
1664
1741
|
theme: {
|
|
1665
1742
|
toggle: '切换主题',
|
|
1666
1743
|
light: '浅色',
|
|
@@ -1696,6 +1773,8 @@ const zh = {
|
|
|
1696
1773
|
},
|
|
1697
1774
|
objectView: {
|
|
1698
1775
|
systemViewReadonly: '系统视图由代码定义,只读。',
|
|
1776
|
+
cannotEditMetaView: '该视图为内置视图,由代码定义,无法修改。',
|
|
1777
|
+
cannotDeleteMetaView: '该视图为内置视图,由代码定义,无法删除。',
|
|
1699
1778
|
expandToPage: '以完整页面打开',
|
|
1700
1779
|
objectNotFound: '未找到对象',
|
|
1701
1780
|
objectNotFoundDescription: '对象"{{objectName}}"在当前配置中不存在。',
|
|
@@ -1734,7 +1813,7 @@ const zh = {
|
|
|
1734
1813
|
exportPrintHint: '导出格式、打印和记录数显示',
|
|
1735
1814
|
showAllFields: '全部显示',
|
|
1736
1815
|
hideAllFields: '全部隐藏',
|
|
1737
|
-
searchFields: '
|
|
1816
|
+
searchFields: '搜索字段…',
|
|
1738
1817
|
title: '标题',
|
|
1739
1818
|
description: '描述',
|
|
1740
1819
|
data: '数据',
|
|
@@ -1813,8 +1892,8 @@ const zh = {
|
|
|
1813
1892
|
imageField: '图片字段',
|
|
1814
1893
|
imageFieldHelp: '画廊封面来自该图片或附件字段。',
|
|
1815
1894
|
dateField: '日期字段',
|
|
1816
|
-
selectField: '
|
|
1817
|
-
selectOption: '
|
|
1895
|
+
selectField: '选择字段…',
|
|
1896
|
+
selectOption: '选择…',
|
|
1818
1897
|
noEligibleFieldForType: '没有符合条件的字段。请先在对象上添加该类型字段。',
|
|
1819
1898
|
viewTypeUnavailable: '该对象缺少所需的“{{field}}”字段。',
|
|
1820
1899
|
viewTypeUnavailableShort: '当前对象不支持。',
|
|
@@ -1888,7 +1967,7 @@ const zh = {
|
|
|
1888
1967
|
ufDropdown: '下拉菜单',
|
|
1889
1968
|
ufTabs: '标签页',
|
|
1890
1969
|
ufToggle: '开关',
|
|
1891
|
-
ufAddField: '+
|
|
1970
|
+
ufAddField: '+ 添加筛选字段…',
|
|
1892
1971
|
ufNoFields: '无可用字段',
|
|
1893
1972
|
ufAddTab: '+ 添加标签页',
|
|
1894
1973
|
ufTabLabel: '标签',
|
|
@@ -1920,7 +1999,7 @@ const zh = {
|
|
|
1920
1999
|
passwordPlaceholder: '输入您的密码',
|
|
1921
2000
|
forgotPasswordText: '忘记密码?',
|
|
1922
2001
|
submitButton: '登录',
|
|
1923
|
-
submittingButton: '
|
|
2002
|
+
submittingButton: '登录中…',
|
|
1924
2003
|
noAccountText: '还没有账户?',
|
|
1925
2004
|
signUpText: '注册',
|
|
1926
2005
|
signingIn: '正在登录…',
|
|
@@ -1935,6 +2014,18 @@ const zh = {
|
|
|
1935
2014
|
emailNotVerified: '请先验证您的邮箱后再登录。',
|
|
1936
2015
|
oauthCallbackFailed: '单点登录未能完成——登录链接已过期或已被使用,请重新发起登录。',
|
|
1937
2016
|
},
|
|
2017
|
+
// objectui#3546 slice three — phone/OTP sign-in. `{seconds}` is LoginForm's own
|
|
2018
|
+
// literal `.replace()` hole, not i18next interpolation: keep the single braces.
|
|
2019
|
+
emailOrPhoneLabel: '邮箱或手机号',
|
|
2020
|
+
emailOrPhonePlaceholder: 'name@example.com 或 +1 555 000 0000',
|
|
2021
|
+
phoneLabel: '手机号',
|
|
2022
|
+
phonePlaceholder: '+1 555 000 0000',
|
|
2023
|
+
otpCodeLabel: '验证码',
|
|
2024
|
+
otpCodePlaceholder: '6 位验证码',
|
|
2025
|
+
sendOtpButton: '获取验证码',
|
|
2026
|
+
resendOtpCountdownText: '{seconds} 秒后可重新发送',
|
|
2027
|
+
usePhoneOtpText: '使用验证码登录',
|
|
2028
|
+
usePasswordSignInText: '改用密码登录',
|
|
1938
2029
|
},
|
|
1939
2030
|
register: {
|
|
1940
2031
|
title: '创建账户',
|
|
@@ -1950,7 +2041,7 @@ const zh = {
|
|
|
1950
2041
|
passwordMismatchError: '两次输入的密码不一致',
|
|
1951
2042
|
passwordTooShortError: '密码至少需要8个字符',
|
|
1952
2043
|
submitButton: '创建账户',
|
|
1953
|
-
submittingButton: '
|
|
2044
|
+
submittingButton: '创建中…',
|
|
1954
2045
|
hasAccountText: '已有账户?',
|
|
1955
2046
|
signInText: '登录',
|
|
1956
2047
|
errors: {
|
|
@@ -1971,12 +2062,26 @@ const zh = {
|
|
|
1971
2062
|
emailLabel: '邮箱',
|
|
1972
2063
|
emailPlaceholder: 'name@example.com',
|
|
1973
2064
|
submitButton: '发送重置链接',
|
|
1974
|
-
submittingButton: '
|
|
2065
|
+
submittingButton: '发送中…',
|
|
1975
2066
|
successTitle: '请查看您的邮箱',
|
|
1976
2067
|
successDescription: '我们已将密码重置链接发送至 {{email}},请检查您的收件箱。',
|
|
1977
2068
|
backToSignInText: '返回登录',
|
|
1978
2069
|
rememberPasswordText: '记住密码了?',
|
|
1979
2070
|
signInText: '登录',
|
|
2071
|
+
// objectui#3546 slice three — the SMS reset branch of the same form.
|
|
2072
|
+
phoneLabel: '手机号',
|
|
2073
|
+
phonePlaceholder: '+1 555 000 0000',
|
|
2074
|
+
otpCodeLabel: '验证码',
|
|
2075
|
+
otpCodePlaceholder: '6 位验证码',
|
|
2076
|
+
sendOtpButton: '获取验证码',
|
|
2077
|
+
resendOtpCountdownText: '{seconds} 秒后可重新发送',
|
|
2078
|
+
newPasswordLabel: '新密码',
|
|
2079
|
+
newPasswordPlaceholder: '输入新密码',
|
|
2080
|
+
resetButton: '重置密码',
|
|
2081
|
+
usePhoneResetText: '通过短信验证码重置',
|
|
2082
|
+
useEmailResetText: '改用邮箱重置',
|
|
2083
|
+
phoneSuccessTitle: '密码已重置',
|
|
2084
|
+
phoneSuccessDescription: '您的密码已重置,现在可以使用新密码登录了。',
|
|
1980
2085
|
},
|
|
1981
2086
|
setPassword: {
|
|
1982
2087
|
title: '设置一个备用密码',
|
|
@@ -2029,6 +2134,8 @@ const zh = {
|
|
|
2029
2134
|
backToLogin: '返回登录',
|
|
2030
2135
|
checkSpam: '没有收到邮件?请检查垃圾邮件文件夹或联系支持。',
|
|
2031
2136
|
or: '或',
|
|
2137
|
+
// objectui#3546 slice three.
|
|
2138
|
+
resendUnavailable: '此环境可能未配置邮件发送服务。如果问题持续存在,请联系支持。',
|
|
2032
2139
|
},
|
|
2033
2140
|
setup: {
|
|
2034
2141
|
welcomeTitle: '欢迎使用 ObjectStack',
|
|
@@ -2067,6 +2174,9 @@ const zh = {
|
|
|
2067
2174
|
invalidDescription: 'URL 中未提供设备代码。',
|
|
2068
2175
|
loading: '加载中…',
|
|
2069
2176
|
cancel: '取消',
|
|
2177
|
+
// objectui#3546 slice three — device-authorization plugin switched off.
|
|
2178
|
+
disabledTitle: '未启用设备授权',
|
|
2179
|
+
disabledDescription: '此部署未启用设备授权,因此无法在此批准该设备。',
|
|
2070
2180
|
},
|
|
2071
2181
|
shell: {
|
|
2072
2182
|
tenantHostHint: '您正在登录此工作区',
|
|
@@ -2106,6 +2216,29 @@ const zh = {
|
|
|
2106
2216
|
},
|
|
2107
2217
|
},
|
|
2108
2218
|
},
|
|
2219
|
+
// objectui#3546 slice three — the /oauth/consent screen.
|
|
2220
|
+
oauth: {
|
|
2221
|
+
consent: {
|
|
2222
|
+
title: '{{appName}} 请求访问您的账户',
|
|
2223
|
+
request: '{{appName}} 正在请求授权{{suffix}}。',
|
|
2224
|
+
unknownApp: '某个应用',
|
|
2225
|
+
willAllow: '此应用将能够:',
|
|
2226
|
+
scope: {
|
|
2227
|
+
openid: '确认您的身份',
|
|
2228
|
+
profile: '读取您的基本资料(姓名、头像)',
|
|
2229
|
+
email: '读取您的邮箱地址',
|
|
2230
|
+
offlineAccess: '保持登录状态(刷新访问权限)',
|
|
2231
|
+
},
|
|
2232
|
+
deny: '拒绝',
|
|
2233
|
+
authorize: '授权',
|
|
2234
|
+
submitting: '授权中…',
|
|
2235
|
+
granted: '已授予访问权限',
|
|
2236
|
+
denied: '访问被拒绝',
|
|
2237
|
+
noRedirect: '服务器未返回跳转地址。',
|
|
2238
|
+
failed: '授权失败',
|
|
2239
|
+
footer: '您可以随时在账户设置中撤销访问权限。',
|
|
2240
|
+
},
|
|
2241
|
+
},
|
|
2109
2242
|
profile: {
|
|
2110
2243
|
title: '个人资料',
|
|
2111
2244
|
subtitle: '管理您的账户设置',
|
|
@@ -2167,6 +2300,8 @@ const zh = {
|
|
|
2167
2300
|
invite: '邀请成员',
|
|
2168
2301
|
members: '成员',
|
|
2169
2302
|
settings: '工作区设置',
|
|
2303
|
+
multiOrgDisabled: '此实例已禁用创建新组织。',
|
|
2304
|
+
createFailed: '创建工作区失败',
|
|
2170
2305
|
},
|
|
2171
2306
|
help: {
|
|
2172
2307
|
keyboardShortcuts: '键盘快捷键',
|
|
@@ -2187,7 +2322,7 @@ const zh = {
|
|
|
2187
2322
|
area: '区域',
|
|
2188
2323
|
scope: '范围',
|
|
2189
2324
|
packageManagement: '软件包管理',
|
|
2190
|
-
searchNavigation: '
|
|
2325
|
+
searchNavigation: '搜索导航…',
|
|
2191
2326
|
recent: '最近使用',
|
|
2192
2327
|
favorites: '收藏',
|
|
2193
2328
|
starred: '已收藏',
|
|
@@ -2203,8 +2338,8 @@ const zh = {
|
|
|
2203
2338
|
switchObject: '切换对象',
|
|
2204
2339
|
connection: {
|
|
2205
2340
|
connected: '已连接',
|
|
2206
|
-
connecting: '
|
|
2207
|
-
reconnecting: '
|
|
2341
|
+
connecting: '连接中…',
|
|
2342
|
+
reconnecting: '正在重新连接…',
|
|
2208
2343
|
disconnected: '已断开连接',
|
|
2209
2344
|
error: '连接错误',
|
|
2210
2345
|
},
|
|
@@ -2247,7 +2382,7 @@ const zh = {
|
|
|
2247
2382
|
starred: '收藏',
|
|
2248
2383
|
recent: '最近访问',
|
|
2249
2384
|
},
|
|
2250
|
-
loading: '
|
|
2385
|
+
loading: '正在加载工作区…',
|
|
2251
2386
|
recent: '最近使用',
|
|
2252
2387
|
starred: '收藏',
|
|
2253
2388
|
welcome: '用 AI 搭建你的业务系统',
|
|
@@ -2270,6 +2405,13 @@ const zh = {
|
|
|
2270
2405
|
publishing: '发布中…',
|
|
2271
2406
|
published: '已发布!更改已生效。',
|
|
2272
2407
|
publishFailed: '发布失败',
|
|
2408
|
+
// objectui#3546 切片六 —— usePublishAllDrafts 其余几条 toast。
|
|
2409
|
+
// seedWarn 与 console.ai.seedWarn 同串,直接沿用该键既有译文。
|
|
2410
|
+
nothing: '没有需要发布的内容。',
|
|
2411
|
+
probeWarn: '已发布,但验证发现了问题。',
|
|
2412
|
+
seedWarn: '已发布,但部分示例数据未能载入。',
|
|
2413
|
+
publishedVerified: '已发布并验证 —— {{count}} 行示例数据已生效。',
|
|
2414
|
+
capabilityWarn: '编写检查:{{count}} 个能力引用无法解析。',
|
|
2273
2415
|
},
|
|
2274
2416
|
createFirstApp: '手动创建应用',
|
|
2275
2417
|
systemSettings: '系统设置',
|
|
@@ -2327,6 +2469,9 @@ const zh = {
|
|
|
2327
2469
|
roles: '角色',
|
|
2328
2470
|
configuration: '配置',
|
|
2329
2471
|
createApp: '创建应用',
|
|
2472
|
+
administration: '管理',
|
|
2473
|
+
datasources: '数据源',
|
|
2474
|
+
documentation: '文档',
|
|
2330
2475
|
},
|
|
2331
2476
|
activityFeed: {
|
|
2332
2477
|
title: '最近动态',
|
|
@@ -2374,6 +2519,7 @@ const zh = {
|
|
|
2374
2519
|
empty: {
|
|
2375
2520
|
objectNotFound: '未找到对象',
|
|
2376
2521
|
objectNotFoundDescription: '对象 “{{name}}” 的定义不存在。请检查配置或返回选择有效的对象。',
|
|
2522
|
+
interfacePageSourceMissing: '此界面页引用了 “{{name}}”,但该来源不可用。',
|
|
2377
2523
|
recordNotFound: '未找到记录',
|
|
2378
2524
|
recordNotFoundDescription: '您查找的记录不存在或已被删除。',
|
|
2379
2525
|
pageNotFound: '未找到页面',
|
|
@@ -2384,6 +2530,11 @@ const zh = {
|
|
|
2384
2530
|
reportNotFoundDescription: '未找到报表 “{{name}}”,可能已被删除或重命名。',
|
|
2385
2531
|
noAppsConfigured: '尚未配置应用',
|
|
2386
2532
|
noAppsConfiguredDescription: '当前没有任何已注册的应用。请创建您的第一个应用,或前往系统设置进行配置。',
|
|
2533
|
+
appNotAvailable: '应用不可用',
|
|
2534
|
+
appNotAvailableDescription: '此应用尚不可用 —— 可能仍在发布中。请稍后重试。',
|
|
2535
|
+
appAccessDenied: '你没有访问此应用的权限',
|
|
2536
|
+
appAccessDeniedDescription: '此应用存在,但你的账号未获授权打开它。请联系管理员为你开通访问权限。',
|
|
2537
|
+
appAccessDeniedHome: '返回首页',
|
|
2387
2538
|
createFirstApp: '创建您的第一个应用',
|
|
2388
2539
|
systemSettings: '系统设置',
|
|
2389
2540
|
back: '返回',
|
|
@@ -2425,6 +2576,34 @@ const zh = {
|
|
|
2425
2576
|
confirmNote: '发布将一次性(原子地)发布此包全部 {{count}} 个待发布草稿。',
|
|
2426
2577
|
publishConfirm: '全部发布',
|
|
2427
2578
|
},
|
|
2579
|
+
// ADR-0045 — the materialized-but-unlisted app banner
|
|
2580
|
+
// (UnpublishedAppBar.tsx), sibling of draftBar above.
|
|
2581
|
+
unpublishedBar: {
|
|
2582
|
+
message: '未发布的应用 —— 功能完整,但只有构建者能看到。发布后即可让您的用户看到。',
|
|
2583
|
+
publish: '发布',
|
|
2584
|
+
publishing: '发布中…',
|
|
2585
|
+
published: '已发布!应用现在对您的用户可见。',
|
|
2586
|
+
publishFailed: '发布失败',
|
|
2587
|
+
},
|
|
2588
|
+
// ADR-0067 — the append-only build/revert timeline (CommitTimeline.tsx);
|
|
2589
|
+
// `button` is the banner's entry point into it.
|
|
2590
|
+
history: {
|
|
2591
|
+
button: '历史',
|
|
2592
|
+
title: '构建历史',
|
|
2593
|
+
description: '此应用的每一次变更,最新的在最前。撤销任一步骤即可回退 —— 无需确认发布。',
|
|
2594
|
+
loadFailed: '无法加载历史记录:',
|
|
2595
|
+
loadFailedUnavailable: '提交存储暂时不可达 —— 本次读取并未发生,因此不显示任何历史记录。请稍后重试。',
|
|
2596
|
+
loading: '正在加载历史记录…',
|
|
2597
|
+
empty: '此应用暂无历史记录。',
|
|
2598
|
+
revertLabel: '已撤销一处变更',
|
|
2599
|
+
applyLabel: '构建变更',
|
|
2600
|
+
revert: '撤销',
|
|
2601
|
+
items: '项',
|
|
2602
|
+
revertAction: '撤销',
|
|
2603
|
+
reverted: '已撤销 —— 该变更已还原。',
|
|
2604
|
+
revertFailed: '撤销失败',
|
|
2605
|
+
revertUnavailable: '提交存储暂时不可达 —— 此次撤销可能尚未生效。请重新打开历史记录确认后再重试。',
|
|
2606
|
+
},
|
|
2428
2607
|
},
|
|
2429
2608
|
renderer: {
|
|
2430
2609
|
noPageSchema: '未提供页面 schema',
|
|
@@ -2491,7 +2670,7 @@ const zh = {
|
|
|
2491
2670
|
deleteFailed: '删除视图失败',
|
|
2492
2671
|
},
|
|
2493
2672
|
dashboardActions: {
|
|
2494
|
-
|
|
2673
|
+
printDialogOpening: '正在打开浏览器打印对话框(不是导出 PDF)',
|
|
2495
2674
|
exportFailed: '导出失败:{{message}}',
|
|
2496
2675
|
forecastSoon: '预测视图即将上线',
|
|
2497
2676
|
},
|
|
@@ -2526,6 +2705,140 @@ const zh = {
|
|
|
2526
2705
|
emptyDescription: '创建您的第一个工作区以开始使用。',
|
|
2527
2706
|
noMatches: '没有匹配的工作区。',
|
|
2528
2707
|
},
|
|
2708
|
+
organization: {
|
|
2709
|
+
roles: {
|
|
2710
|
+
owner: '所有者',
|
|
2711
|
+
admin: '管理员',
|
|
2712
|
+
delegatedAdmin: '受托管理员',
|
|
2713
|
+
member: '成员',
|
|
2714
|
+
},
|
|
2715
|
+
errors: {
|
|
2716
|
+
notAllowedToInvite: '您无权邀请用户加入该组织。',
|
|
2717
|
+
notAllowedToInviteWithRole: '您无权以该角色邀请用户。',
|
|
2718
|
+
alreadyInvited: '该用户已被邀请加入本组织。',
|
|
2719
|
+
organizationExists: '该组织已存在。',
|
|
2720
|
+
slugTaken: '该标识已被占用。',
|
|
2721
|
+
notAllowedToCreate: '您无权创建新组织。',
|
|
2722
|
+
notTheRecipient: '您不是该邀请的收件人。',
|
|
2723
|
+
invitationNotFound: '该邀请已失效或已过期。',
|
|
2724
|
+
unknown: '出了点问题,请重试。',
|
|
2725
|
+
},
|
|
2726
|
+
backToList: '返回组织列表',
|
|
2727
|
+
notFound: '未找到组织',
|
|
2728
|
+
notFoundDescription: '该组织不存在,或您没有访问权限。',
|
|
2729
|
+
tabs: {
|
|
2730
|
+
members: '成员',
|
|
2731
|
+
invitations: '邀请',
|
|
2732
|
+
settings: '设置',
|
|
2733
|
+
},
|
|
2734
|
+
members: {
|
|
2735
|
+
title: '成员',
|
|
2736
|
+
inviteMember: '邀请成员',
|
|
2737
|
+
inviteRestrictedNote: '只有组织管理员可以邀请成员。',
|
|
2738
|
+
removeMember: '移除成员',
|
|
2739
|
+
removeConfirmTitle: '移除成员?',
|
|
2740
|
+
removeConfirmDescription: '将把 {{name}} 从该组织中移除,其访问权限会立即失效。',
|
|
2741
|
+
removeConfirmAction: '移除',
|
|
2742
|
+
memberRemoved: '成员已移除',
|
|
2743
|
+
removeFailed: '移除成员失败',
|
|
2744
|
+
roleUpdated: '角色已更新',
|
|
2745
|
+
roleUpdateFailed: '更新角色失败',
|
|
2746
|
+
memberActions: '成员操作',
|
|
2747
|
+
loadFailed: '加载成员失败',
|
|
2748
|
+
},
|
|
2749
|
+
invitations: {
|
|
2750
|
+
title: '邀请',
|
|
2751
|
+
empty: '暂无邀请。',
|
|
2752
|
+
expiresAt: '过期时间',
|
|
2753
|
+
linkCopied: '邀请链接已复制',
|
|
2754
|
+
copyFailed: '复制链接失败',
|
|
2755
|
+
canceled: '邀请已取消',
|
|
2756
|
+
cancelFailed: '取消邀请失败',
|
|
2757
|
+
cancelTitle: '取消邀请?',
|
|
2758
|
+
cancelDescription: '将撤销发给 {{email}} 的邀请。',
|
|
2759
|
+
cancelAction: '取消邀请',
|
|
2760
|
+
inviteTitle: '邀请成员',
|
|
2761
|
+
inviteDescription: '对方将收到加入该组织的邀请。',
|
|
2762
|
+
emailLabel: '邮箱',
|
|
2763
|
+
roleLabel: '角色',
|
|
2764
|
+
placementLabel: '任职安排(可选)',
|
|
2765
|
+
placementDescription: '在邀请被接受时生效。仅列出您有权分派的业务单元和岗位。',
|
|
2766
|
+
businessUnitLabel: '业务单元',
|
|
2767
|
+
businessUnitPlaceholder: '不指定任职',
|
|
2768
|
+
positionsLabel: '岗位',
|
|
2769
|
+
sendInvite: '发送邀请',
|
|
2770
|
+
sentTitle: '邀请已创建',
|
|
2771
|
+
sentDescription: '请将下方链接发送给受邀人。对方需要登录后才能接受。',
|
|
2772
|
+
linkLabel: '接受链接',
|
|
2773
|
+
invitedAs: '{{email}} 已以 {{role}} 身份受邀',
|
|
2774
|
+
copyLinkLabel: '复制邀请链接',
|
|
2775
|
+
loadFailed: '加载邀请失败',
|
|
2776
|
+
inviteFailed: '邀请成员失败',
|
|
2777
|
+
status: {
|
|
2778
|
+
all: '全部',
|
|
2779
|
+
pending: '等待中',
|
|
2780
|
+
accepted: '已接受',
|
|
2781
|
+
rejected: '已拒绝',
|
|
2782
|
+
canceled: '已取消',
|
|
2783
|
+
},
|
|
2784
|
+
},
|
|
2785
|
+
settings: {
|
|
2786
|
+
generalTitle: '常规',
|
|
2787
|
+
generalDescription: '更新组织信息。',
|
|
2788
|
+
readOnlyNote: '只有所有者可以修改设置。',
|
|
2789
|
+
nameLabel: '组织名称',
|
|
2790
|
+
slugLabel: '标识',
|
|
2791
|
+
logoLabel: 'Logo',
|
|
2792
|
+
logoUpload: '上传',
|
|
2793
|
+
logoReplace: '更换',
|
|
2794
|
+
logoClear: '移除',
|
|
2795
|
+
logoUploaded: 'Logo 已上传,保存后生效',
|
|
2796
|
+
logoUploadFailed: '上传 Logo 失败',
|
|
2797
|
+
save: '保存更改',
|
|
2798
|
+
saved: '设置已保存',
|
|
2799
|
+
saveFailed: '保存设置失败',
|
|
2800
|
+
leaveTitle: '退出组织',
|
|
2801
|
+
leaveDescription: '退出后您将失去对该组织的访问权限。',
|
|
2802
|
+
leaveAction: '退出',
|
|
2803
|
+
leaveConfirmTitle: '退出组织?',
|
|
2804
|
+
leaveConfirmDescription: '确定要退出 {{name}} 吗?您的访问权限会立即失效。',
|
|
2805
|
+
leaveConfirmAction: '退出',
|
|
2806
|
+
leftOrg: '您已退出该组织',
|
|
2807
|
+
leaveFailed: '退出组织失败',
|
|
2808
|
+
dangerZone: '危险操作',
|
|
2809
|
+
deleteTitle: '删除组织',
|
|
2810
|
+
deleteDescription: '永久删除该组织及其全部数据。',
|
|
2811
|
+
deleteAction: '删除',
|
|
2812
|
+
deleteConfirmTitle: '删除组织?',
|
|
2813
|
+
deleteConfirmDescription: '此操作不可撤销,所有数据将被永久删除。请输入组织标识以确认。',
|
|
2814
|
+
deleteConfirmSlugLabel: '输入“{{slug}}”以确认',
|
|
2815
|
+
deleteConfirmAction: '删除组织',
|
|
2816
|
+
deleted: '组织已删除',
|
|
2817
|
+
deleteFailed: '删除组织失败',
|
|
2818
|
+
},
|
|
2819
|
+
accept: {
|
|
2820
|
+
title: '您收到一份邀请',
|
|
2821
|
+
description: '您受邀以 {{role}} 身份加入 {{orgName}}。',
|
|
2822
|
+
errorTitle: '邀请不可用',
|
|
2823
|
+
goToOrgs: '前往组织列表',
|
|
2824
|
+
loading: '正在加载邀请…',
|
|
2825
|
+
organization: '组织',
|
|
2826
|
+
role: '角色',
|
|
2827
|
+
expiresAt: '过期时间',
|
|
2828
|
+
accept: '接受邀请',
|
|
2829
|
+
accepted: '邀请已接受',
|
|
2830
|
+
acceptFailed: '接受邀请失败',
|
|
2831
|
+
decline: '拒绝',
|
|
2832
|
+
declined: '邀请已拒绝',
|
|
2833
|
+
declineFailed: '拒绝邀请失败',
|
|
2834
|
+
},
|
|
2835
|
+
switcher: {
|
|
2836
|
+
label: '切换组织',
|
|
2837
|
+
groupLabel: '当前工作组织',
|
|
2838
|
+
groupHint: '新建记录将归属该组织。视图会显示您所有组织的数据。',
|
|
2839
|
+
manageMembers: '管理成员',
|
|
2840
|
+
},
|
|
2841
|
+
},
|
|
2529
2842
|
notifications: {
|
|
2530
2843
|
regionLabel: '通知',
|
|
2531
2844
|
empty: '暂无通知',
|
|
@@ -2542,6 +2855,9 @@ const zh = {
|
|
|
2542
2855
|
viewApprovals: '查看审批',
|
|
2543
2856
|
noPendingApprovals: '暂无待审批事项',
|
|
2544
2857
|
openApprovalsInbox: '打开审批中心',
|
|
2858
|
+
badgeTotal: '共 {{total}} 项',
|
|
2859
|
+
badgeNotifications: '{{unread}} 条通知',
|
|
2860
|
+
badgeApprovals: '{{approvals}} 条待审批',
|
|
2545
2861
|
},
|
|
2546
2862
|
publicForm: {
|
|
2547
2863
|
submit: '提交',
|
|
@@ -2815,6 +3131,7 @@ const zh = {
|
|
|
2815
3131
|
dismiss: '关闭',
|
|
2816
3132
|
openOnCloud: '在云端打开',
|
|
2817
3133
|
backHome: '返回首页',
|
|
3134
|
+
updateTo: '更新',
|
|
2818
3135
|
},
|
|
2819
3136
|
install: {
|
|
2820
3137
|
dialogTitle: '安装 {{name}}',
|
|
@@ -2831,6 +3148,37 @@ const zh = {
|
|
|
2831
3148
|
localManifestConflict: '{{message}}\n提示:本地已有应用占用此 manifest_id,请先从 objectstack.config.ts 中移除。',
|
|
2832
3149
|
localUnauthorized: '请先登录本运行时再试。',
|
|
2833
3150
|
localMarketplaceUnavailable: '本运行时未配置 OS_CLOUD_URL,无法访问应用市场目录。',
|
|
3151
|
+
updateTo: '更新 → v{{version}}',
|
|
3152
|
+
installedVersion: '已安装 v{{version}}',
|
|
3153
|
+
},
|
|
3154
|
+
// objectui#3546 — the MarketplacePage "Your organization" strip.
|
|
3155
|
+
org: {
|
|
3156
|
+
heading: '你的组织',
|
|
3157
|
+
install: '安装',
|
|
3158
|
+
installed: '已安装 {{name}}',
|
|
3159
|
+
installedBadge: '已安装',
|
|
3160
|
+
installing: '安装中…',
|
|
3161
|
+
},
|
|
3162
|
+
// ADR-0025 PD4 §3.5/§3.11 — the pre-install consent panel
|
|
3163
|
+
// (PluginDisclosure.tsx). `runtime` is a CLOSED enum: spec
|
|
3164
|
+
// PluginRuntimeSchema = z.enum(['node', 'sandbox', 'worker']).
|
|
3165
|
+
disclosure: {
|
|
3166
|
+
containsCode: '此软件包包含代码',
|
|
3167
|
+
reviewed: '已审核并批准',
|
|
3168
|
+
unreviewed: '尚未审核',
|
|
3169
|
+
signed: '已签名',
|
|
3170
|
+
grantsIntro: '安装后,此软件包将获得以下权限:',
|
|
3171
|
+
services: '平台服务',
|
|
3172
|
+
hooks: '生命周期钩子',
|
|
3173
|
+
network: '网络访问',
|
|
3174
|
+
fs: '文件系统访问',
|
|
3175
|
+
noPermissions: '不请求任何特殊权限。',
|
|
3176
|
+
acknowledge: '我了解此软件包会运行代码,并将获得上述权限。',
|
|
3177
|
+
runtime: {
|
|
3178
|
+
node: '进程内 · 完全信任',
|
|
3179
|
+
sandbox: '沙箱隔离',
|
|
3180
|
+
worker: '进程外',
|
|
3181
|
+
},
|
|
2834
3182
|
},
|
|
2835
3183
|
// ADR-0090 D5/D9 — 安装时建议:包声明 isDefault 的权限集建议绑定到
|
|
2836
3184
|
// everyone/guest 岗位,由管理员在此确认,服务端绝不自动绑定。
|
|
@@ -3133,5 +3481,57 @@ const zh = {
|
|
|
3133
3481
|
statusIdle: '空闲',
|
|
3134
3482
|
statusAway: '离开',
|
|
3135
3483
|
},
|
|
3484
|
+
wizard: {
|
|
3485
|
+
missingRequired: '请填写以下必填字段:{{fields}}',
|
|
3486
|
+
},
|
|
3487
|
+
appManagement: {
|
|
3488
|
+
title: '应用',
|
|
3489
|
+
subtitle: '管理所有已配置的应用',
|
|
3490
|
+
newApp: '新建应用',
|
|
3491
|
+
searchLabel: '搜索应用',
|
|
3492
|
+
searchPlaceholder: '搜索应用…',
|
|
3493
|
+
selectedCount: '已选择 {{n}} 个',
|
|
3494
|
+
bulkEnable: '启用',
|
|
3495
|
+
bulkDisable: '停用',
|
|
3496
|
+
selectAll: '全选({{n}})',
|
|
3497
|
+
empty: '未找到应用。',
|
|
3498
|
+
defaultBadge: '默认',
|
|
3499
|
+
active: '已启用',
|
|
3500
|
+
inactive: '已停用',
|
|
3501
|
+
selectApp: '选择 {{name}}',
|
|
3502
|
+
openApp: '打开应用',
|
|
3503
|
+
openAppNamed: '打开 {{name}}',
|
|
3504
|
+
editApp: '编辑应用',
|
|
3505
|
+
editAppNamed: '编辑 {{name}}',
|
|
3506
|
+
editWithAi: '用 AI 编辑',
|
|
3507
|
+
editWithAiNamed: '用 AI 编辑 {{name}}',
|
|
3508
|
+
enableApp: '启用应用',
|
|
3509
|
+
disableApp: '停用应用',
|
|
3510
|
+
enableAppNamed: '启用 {{name}}',
|
|
3511
|
+
disableAppNamed: '停用 {{name}}',
|
|
3512
|
+
setDefault: '设为默认',
|
|
3513
|
+
setDefaultNamed: '将 {{name}} 设为默认',
|
|
3514
|
+
deleteApp: '删除应用',
|
|
3515
|
+
deleteAppNamed: '删除 {{name}}',
|
|
3516
|
+
confirmDelete: '再次点击以确认删除',
|
|
3517
|
+
confirmDeleteNamed: '确认删除 {{name}}',
|
|
3518
|
+
toast: {
|
|
3519
|
+
noClient: '无法连接到元数据服务',
|
|
3520
|
+
unknownError: '未知错误',
|
|
3521
|
+
appEnabled: '{{name}} 已启用',
|
|
3522
|
+
appDisabled: '{{name}} 已停用',
|
|
3523
|
+
toggleFailed: '切换应用状态失败:{{reason}}',
|
|
3524
|
+
setDefaultDone: '{{name}} 已设为默认',
|
|
3525
|
+
setDefaultFailed: '设置默认应用失败:{{reason}}',
|
|
3526
|
+
appDeleted: '{{name}} 已删除',
|
|
3527
|
+
deleteFailed: '删除应用失败:{{reason}}',
|
|
3528
|
+
bulkEnabled: '已启用 {{n}} 个应用',
|
|
3529
|
+
bulkDisabled: '已停用 {{n}} 个应用',
|
|
3530
|
+
bulkFailed: '{{n}} 个失败:{{details}}',
|
|
3531
|
+
bulkFailureEntry: '{{name}}({{reason}})',
|
|
3532
|
+
bulkFailureJoiner: ';',
|
|
3533
|
+
bulkOperationFailed: '批量操作失败:{{reason}}',
|
|
3534
|
+
},
|
|
3535
|
+
},
|
|
3136
3536
|
};
|
|
3137
3537
|
export default zh;
|