@object-ui/i18n 17.7.0 → 18.0.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.
@@ -17,7 +17,7 @@ const zh = {
17
17
  },
18
18
  },
19
19
  // objectui#2600 B5 — 能力选择器的作用域分组标题(能力标签本身来自
20
- // sys_capability 注册表,这里只本地化分组标题这类 UI 字符串)。
20
+ // capability 注册表,这里只本地化分组标题这类 UI 字符串)。
21
21
  capability: {
22
22
  group: {
23
23
  platform: '平台',
@@ -29,38 +29,13 @@ const zh = {
29
29
  manage_users: '管理用户',
30
30
  manage_org_users: '管理组织用户',
31
31
  manage_metadata: '管理元数据',
32
- manage_org_presentation: '管理组织展示',
32
+ manage_mailboxes: '管理邮箱',
33
33
  manage_platform_settings: '管理平台设置',
34
34
  setup_access: '访问 Setup',
35
35
  setup_write: '保存设置',
36
36
  studio_access: '访问 Studio',
37
37
  manage_sharing: '管理共享',
38
- },
39
- },
40
- // objectui#3546 切片六 —— 权限集记录上六个授权面的只读摘要与 Studio 深链
41
- // (ADR-0056 P1,plugin-detail 的 PermissionFacetLink)。
42
- // 用词取自本仓权限集设计器(metadata-admin i18n 表):个对象 / 行级策略 /
43
- // 标签页 / 委派管理范围 —— 与点进去的那个界面一致。
44
- // 中文无单复数,四个计数 key 的 `_one` 与基础 key 同值(设计如此,不是漏改)。
45
- perm: {
46
- facet: {
47
- none: '无',
48
- more: '+{{count}} 更多',
49
- objects: '{{count}} 个对象',
50
- objects_one: '{{count}} 个对象',
51
- objects_other: '{{count}} 个对象',
52
- fields: '{{count}} 条字段规则',
53
- fields_one: '{{count}} 条字段规则',
54
- fields_other: '{{count}} 条字段规则',
55
- rls: '{{count}} 条 RLS 策略',
56
- rls_one: '{{count}} 条 RLS 策略',
57
- rls_other: '{{count}} 条 RLS 策略',
58
- tabs: '{{count}} 条标签页规则',
59
- tabs_one: '{{count}} 条标签页规则',
60
- tabs_other: '{{count}} 条标签页规则',
61
- adminScope: '已配置委派管理范围',
62
- designInStudio: '在 Studio 中设计 →',
63
- designInStudioHint: '在 Studio 中设计',
38
+ view_all_audit_log: '查看全部审计日志',
64
39
  },
65
40
  },
66
41
  lookup: {
@@ -133,6 +108,7 @@ const zh = {
133
108
  itemCount_one: '{{count}} 项',
134
109
  itemCount_other: '{{count}} 项',
135
110
  toggleSidebar: '切换侧边栏',
111
+ breadcrumb: '面包屑导航',
136
112
  package: '软件包',
137
113
  done: '完成',
138
114
  editInStudio: '在 Studio 中编辑',
@@ -161,6 +137,7 @@ const zh = {
161
137
  copyAll: '全部复制',
162
138
  },
163
139
  notAvailableHere: '「{{action}}」在当前页面不可用。',
140
+ notAvailableForRecord: '对此记录不可用',
164
141
  completedSuccessfully: '操作已成功完成',
165
142
  failed: '操作失败',
166
143
  parallelFailed: '一个或多个并行操作失败',
@@ -203,6 +180,8 @@ const zh = {
203
180
  // description, used when the form declares no `description` of its own.
204
181
  dialogDescriptionFallback: '填写表单字段,然后提交或取消。',
205
182
  deniedDescription: '您没有此字段的编辑权限。',
183
+ serverDefaultHint: '保存时自动设置。',
184
+ maxFileSize: '最大文件大小:{{size}}',
206
185
  masterDetail: {
207
186
  loadingColumns: '正在加载列…',
208
187
  subtotal: '小计',
@@ -278,6 +257,8 @@ const zh = {
278
257
  exceedsMaxSize: '“{{name}}” 超过大小上限({{max}} MB)',
279
258
  uploadFailed: '上传 “{{name}}” 失败:{{error}}',
280
259
  uploadIncomplete: '“{{name}}” 上传未完成:未返回文件 ID,未保存任何内容',
260
+ restricted: '受限文件',
261
+ restrictedHint: '你无权查看此文件的详细信息',
281
262
  },
282
263
  image: {
283
264
  upload: '上传图片',
@@ -288,10 +269,14 @@ const zh = {
288
269
  remove: '移除图片 {{index}}',
289
270
  enlarge: '放大 {{name}}',
290
271
  preview: '图片预览',
272
+ cropPreview: '图片裁剪预览',
291
273
  previous: '上一张',
292
274
  next: '下一张',
293
275
  counter: '{{current}} / {{total}}',
294
276
  },
277
+ percent: {
278
+ slider: '百分比',
279
+ },
295
280
  richText: {
296
281
  format: '格式: {{format}}',
297
282
  basicEditorHint: '富文本编辑器(基础)',
@@ -307,6 +292,10 @@ const zh = {
307
292
  search: '搜索对象…',
308
293
  empty: '未找到对象',
309
294
  },
295
+ registryRef: {
296
+ loadFailed: '列表加载失败。仍可直接输入名称。',
297
+ notFound: '{{name}}(未找到)',
298
+ },
310
299
  recipient: {
311
300
  selectTypeFirst: '请先选择接收方类型。',
312
301
  loading: '加载中…',
@@ -348,6 +337,13 @@ const zh = {
348
337
  dateTime: {
349
338
  impossibleDay: '存储的值“{{value}}”不是真实存在的日期。请选择日期和时间以替换它。',
350
339
  },
340
+ datePicker: {
341
+ today: '今天',
342
+ tomorrow: '明天',
343
+ clear: '清除日期',
344
+ openCalendar: '打开日历',
345
+ invalid: '未保存:“{{value}}”不是有效日期。请按 {{format}} 格式输入,或从日历中选择。',
346
+ },
351
347
  number: {
352
348
  badInput: '未保存:此输入框中的文本不是数字。请输入普通小数(例如 {{example}})。',
353
349
  },
@@ -365,6 +361,11 @@ const zh = {
365
361
  postalCode: '邮政编码',
366
362
  country: '国家 / 地区',
367
363
  },
364
+ boolean: {
365
+ offBadge: '{{label}} — 已关闭',
366
+ completed: '已完成',
367
+ notCompleted: '未完成',
368
+ },
368
369
  textarea: {
369
370
  characterCount: '已输入 {{count}} 个字符,最多 {{max}} 个',
370
371
  charactersRemaining: '还可输入 {{count}} 个字符',
@@ -394,10 +395,15 @@ const zh = {
394
395
  selectAllRows: '选择所有行',
395
396
  expandRow: '展开行',
396
397
  collapseRow: '折叠行',
398
+ rowActions: '行操作',
397
399
  hideColumn: '隐藏列',
398
400
  freezeColumn: '冻结列',
399
401
  unfreezeColumn: '取消冻结列',
400
402
  pageInfo: '第 {{current}} 页,共 {{total}} 页',
403
+ firstPage: '第一页',
404
+ previousPage: '上一页',
405
+ nextPage: '下一页',
406
+ lastPage: '最后一页',
401
407
  totalRecords: '共 {{count}} 条',
402
408
  noResults: '未找到结果',
403
409
  noResultsHint: '请尝试调整筛选条件或搜索关键词。',
@@ -409,6 +415,9 @@ const zh = {
409
415
  modified: '{{count}} 行已修改',
410
416
  modified_one: '{{count}} 行已修改',
411
417
  modified_other: '{{count}} 行已修改',
418
+ saved: '{{count}} 行已保存',
419
+ saved_one: '{{count}} 行已保存',
420
+ saved_other: '{{count}} 行已保存',
412
421
  saveFailed: '保存失败',
413
422
  selected: '已选择 {{count}} 项',
414
423
  selected_one: '已选择 {{count}} 项',
@@ -427,6 +436,7 @@ const zh = {
427
436
  pullToRefresh: '下拉刷新',
428
437
  refreshing: '刷新中…',
429
438
  openRecord: '打开记录',
439
+ recordUnavailable: '{{object}} · 记录不可用',
430
440
  openMenu: '更多操作',
431
441
  bulkSelected: '已选择 {{count}} 项',
432
442
  bulkSelected_one: '已选择 {{count}} 项',
@@ -438,6 +448,7 @@ const zh = {
438
448
  bulkAllOnPage_other: '本页 {{count}} 项已全选。',
439
449
  bulkSelectAllMatching: '选择全部 {{count}} 项匹配记录',
440
450
  bulkAllMatchingSelected: '已选择全部 {{count}} 项匹配记录。',
451
+ bulkActions: '批量操作',
441
452
  rowHeight: '行高: {{mode}}',
442
453
  empty: '空',
443
454
  yes: '是',
@@ -456,6 +467,7 @@ const zh = {
456
467
  // pack controls its own separator and word order.
457
468
  summary: {
458
469
  pattern: '{{label}}:{{value}}',
470
+ pagePattern: '{{label}}(本页):{{value}}',
459
471
  count: '计数',
460
472
  countEmpty: '空值',
461
473
  countFilled: '非空',
@@ -531,6 +543,8 @@ const zh = {
531
543
  showingRows: '显示第 {{shown}} 行,共 {{total}} 行',
532
544
  importing: '导入中… {{progress}}%',
533
545
  importComplete: '导入完成',
546
+ importPartial: '导入完成,但有错误',
547
+ importFailed: '导入失败',
534
548
  imported: '已导入 {{count}} 条',
535
549
  skippedCount: '已跳过 {{count}} 条',
536
550
  moreErrors: '…还有 {{count}} 个错误',
@@ -545,8 +559,6 @@ const zh = {
545
559
  importNRows_other: '导入 {{count}} 行',
546
560
  importingProgress: '导入中…',
547
561
  requiredMark: '*',
548
- optTreatHistorical: '作为历史数据导入',
549
- optTreatHistoricalHint: '(按原样导入已完结的记录——跳过状态机校验,保留原始时间戳与作者,而不是记为当前时间)',
550
562
  missingRequiredHint: '无法继续——以下必填字段未映射:{{fields}}。请在文件中添加对应的列,或返回上一步重新上传包含该列的文件。',
551
563
  legacyFallbackNotice: '已通过兼容模式导入:当前连接不支持服务端导入接口,因此所有值均以文本写入,未做服务端类型转换。请升级后端/客户端以获得完整的导入支持(类型转换与关联查找)。',
552
564
  required: '必填',
@@ -584,6 +596,7 @@ const zh = {
584
596
  invalidBoolean: '"{{value}}" 不是有效的是/否值',
585
597
  invalidNumber: '"{{value}}" 不是有效的数字',
586
598
  invalidDate: '"{{value}}" 不是有效的日期',
599
+ invalidTime: '"{{value}}" 不是有效的时间',
587
600
  invalidOption: '"{{value}}" 不在允许的选项范围内',
588
601
  requiredValue: '此字段为必填项',
589
602
  matchAmbiguous: '匹配到多条已有记录,请使用唯一值或记录 ID',
@@ -600,7 +613,6 @@ const zh = {
600
613
  matchFieldsHint: '按这些字段将行匹配到已有记录。',
601
614
  needMatchFields: '请至少选择一个匹配字段。',
602
615
  matchOnlyField: '(仅匹配)',
603
- optRunAutomations: '运行自动化与触发器',
604
616
  optCreateOptions: '保留未知选项值',
605
617
  optSkipBlankKey: '跳过匹配值为空的行',
606
618
  optBackground: '后台导入',
@@ -647,6 +659,9 @@ const zh = {
647
659
  undoImport: '撤销导入',
648
660
  undoing: '撤销中…',
649
661
  reverted: '已撤销',
662
+ undoPartial: '{{count}} 行未能撤销。再次撤销只会重试这些行。',
663
+ undoPartial_one: '{{count}} 行未能撤销。再次撤销只会重试这一行。',
664
+ undoPartial_other: '{{count}} 行未能撤销。再次撤销只会重试这些行。',
650
665
  undoConfirm: '撤销此次导入?它新建的记录将被删除,它更新的记录将恢复为之前的值。',
651
666
  },
652
667
  bulk: {
@@ -721,15 +736,21 @@ const zh = {
721
736
  recordCount_one: '{{count}} 条记录',
722
737
  recordCount_other: '{{count}} 条记录',
723
738
  addRecord: '添加记录',
739
+ // objectui#12703 — the compact list's footer link to the object's list or the block's view.
740
+ viewAll: '查看全部',
724
741
  tabs: '标签页',
725
742
  allRecords: '全部记录',
726
743
  search: '搜索',
727
744
  filter: '筛选',
728
745
  filterRecords: '筛选记录',
746
+ filterActive: '筛选,{{count}} 个生效',
747
+ filterActive_one: '筛选,{{count}} 个生效',
748
+ filterActive_other: '筛选,{{count}} 个生效',
729
749
  sort: '排序',
730
750
  sortRecords: '排序记录',
731
751
  sortByIdSuffix: '(按 ID)',
732
752
  sortRelationalHint: '指向其他记录的列未列出:它们只能按存储的 ID 排序,而不是单元格中显示的名称。若要按该名称排序,请把该名称反规范化到本对象上,做成一个在来源变更时写入的存储字段,再按它排序。不要用公式字段:公式字段是虚拟的,不会为它存储任何列,服务端会拒绝按它排序。',
753
+ sortRelationalPicked: '关联列按存储的 ID 排序,而不是显示的名称。',
733
754
  resetSortToDefault: '恢复视图默认排序',
734
755
  group: '分组',
735
756
  groupBy: '分组依据',
@@ -747,6 +768,7 @@ const zh = {
747
768
  firstRunMessage: '创建第一条记录即可开始。',
748
769
  noMatches: '没有匹配的记录',
749
770
  noMatchesMessage: '没有符合当前筛选或搜索条件的记录,试试调整或清除它们。',
771
+ viewFilterNoMatchesMessage: '没有符合该视图筛选条件的记录。',
750
772
  loadErrorTitle: '无法加载记录',
751
773
  loadErrorMessage: '加载数据时出错。请检查网络连接后重试。',
752
774
  loadErrorForbiddenTitle: '无权访问',
@@ -788,14 +810,15 @@ const zh = {
788
810
  print: '打印',
789
811
  hideFieldsTitle: '隐藏字段',
790
812
  dataLimitReached: '显示前 {{limit}} 条记录。可能有更多数据。',
791
- viewSettings: '视图设置',
792
- viewSettingsHint: '分组、行颜色、密度与可见字段。对所有使用该视图的用户生效。',
813
+ display: '显示',
814
+ layout: '布局',
815
+ rowNumbers: '行号',
816
+ resetToViewDefault: '恢复视图默认设置',
793
817
  addGroup: '添加分组字段',
794
818
  collapsedByDefault: '默认折叠',
795
819
  removeGroup: '删除',
796
820
  inlineEditShort: '行内编辑',
797
821
  inlineEditLabel: '行内编辑记录(点击单元格进行编辑)',
798
- recordEditingTitle: '记录编辑',
799
822
  },
800
823
  managedByBadge: {
801
824
  config: {
@@ -831,15 +854,31 @@ const zh = {
831
854
  deleteCard: '删除卡片',
832
855
  deleteColumn: '删除列',
833
856
  noCards: '暂无卡片',
857
+ columnCards: '{{column}} 的卡片',
858
+ laneCards: '{{column}} - {{lane}} 的卡片',
834
859
  cardTitlePlaceholder: '输入卡片标题…',
835
860
  uncategorized: '未分类',
861
+ loadMore: '加载更多',
836
862
  columns: '列',
837
863
  requiredFieldsTitle: '填写必填字段',
838
864
  requiredFieldsDescription: '此次移动会使以下字段成为必填项。填写后即可继续。',
865
+ dnd: {
866
+ start: '已拿起 {{card}},当前在 {{column}}。',
867
+ overCard: '{{card}} 正移到 {{column}} 中的 {{target}} 上。',
868
+ overColumn: '{{card}} 正移到 {{column}}。',
869
+ overNone: '{{card}} 不在任何列上。',
870
+ moved: '{{card}} 已移到 {{column}}。',
871
+ dropped: '已放下 {{card}},仍在 {{column}}。',
872
+ cancelled: '已取消拖动。{{card}} 仍在 {{column}}。',
873
+ untitledCard: '未命名卡片',
874
+ unnamedColumn: '未命名列',
875
+ instructions: '如需将此卡片移到其他列,请用鼠标或触控拖动它。',
876
+ dragging: '正在拖动 {{card}}',
877
+ },
839
878
  },
840
879
  timeline: {
841
880
  bucket: {
842
- overdue: '已逾期',
881
+ earlier: '更早',
843
882
  today: '今天',
844
883
  tomorrow: '明天',
845
884
  thisWeek: '本周',
@@ -1020,10 +1059,13 @@ const zh = {
1020
1059
  readonlyAriaLabel: '只读视图',
1021
1060
  readonlyTooltip: '系统视图 — 由代码定义,只读。',
1022
1061
  malformedFilter: '此视图的筛选条件有误,因此不显示任何记录:无法应用 {{subject}} 条件。',
1062
+ noObject: '未指定对象:请设置 {{property}} 或 dataSource.object。',
1023
1063
  },
1024
1064
  designer: {
1025
1065
  undo: '撤销',
1026
1066
  redo: '重做',
1067
+ canvasMinimap: '画布缩略图',
1068
+ versionHistory: '版本历史',
1027
1069
  },
1028
1070
  detail: {
1029
1071
  back: '返回',
@@ -1037,10 +1079,12 @@ const zh = {
1037
1079
  lockedByApproval: '审批中已锁定',
1038
1080
  lockedTooltip: '该记录有待审批的请求,编辑已被锁定',
1039
1081
  writeStrippedTitle: '已保存,但部分字段未生效',
1082
+ writeWarningsTitle: '已保存,但有警告',
1040
1083
  writeStrippedReadonly: '以下字段为只读,未生效:{{fields}}',
1041
1084
  writeStrippedByState: '以下字段在记录当前状态下不可编辑,未生效:{{fields}}',
1042
1085
  writeStrippedPrimaryKey: '以下字段是记录的标识符,保存时无法修改,未生效:{{fields}}',
1043
1086
  writeStrippedComputed: '以下字段由服务端按公式计算,提交的值未生效:{{fields}}',
1087
+ writeStrippedStoredExpression: '以下字段的值由记录计算得出,已保存计算值而非提交的值:{{fields}}',
1044
1088
  writeStrippedUnknownReason: '以下字段未被服务端写入:{{fields}}',
1045
1089
  approvalPendingEditable: '审批中 · 可编辑',
1046
1090
  approvalPendingTooltip: '该记录有待审批的请求,但当前审批节点仍允许编辑',
@@ -1064,6 +1108,11 @@ const zh = {
1064
1108
  linkCopied: '链接已复制到剪贴板',
1065
1109
  commentFailed: '评论未发布,内容没有保存,请重试。',
1066
1110
  reactionFailed: '表情回应未保存,请重试。',
1111
+ editComment: '编辑评论',
1112
+ deleteComment: '删除评论',
1113
+ deleteCommentConfirm: '确定要删除这条评论吗?',
1114
+ commentEditFailed: '您的修改未保存,评论保留原有内容。',
1115
+ commentDeleteFailed: '评论未删除,请重试。',
1067
1116
  linkCopyFailed: '复制链接失败',
1068
1117
  cancel: '取消',
1069
1118
  cancelEdit: '放弃更改',
@@ -1175,6 +1224,7 @@ const zh = {
1175
1224
  noAttachments: '暂无附件。上传一个文件开始吧。',
1176
1225
  downloadAttachment: '下载',
1177
1226
  deleteAttachment: '删除附件',
1227
+ deleteAttachmentConfirm: '确定要删除附件“{{name}}”吗?',
1178
1228
  attachmentDeleteDenied: '只有上传者或可编辑此记录的用户才能删除此附件。',
1179
1229
  attachmentParentAccessDenied: '您无权为此记录添加附件。',
1180
1230
  attachmentDownloadDenied: '您无权下载此附件。',
@@ -1286,6 +1336,7 @@ const zh = {
1286
1336
  loading: '加载中…',
1287
1337
  failedToLoad: '矩阵报表加载失败:{{message}}',
1288
1338
  needsAcross: '矩阵报表至少需要一个 `groupingsAcross` 字段。',
1339
+ forbiddenMessage: '你没有查看该报表数据的权限。',
1289
1340
  aggregate: {
1290
1341
  count: '计数',
1291
1342
  countDistinct: '去重计数',
@@ -1645,7 +1696,8 @@ const zh = {
1645
1696
  },
1646
1697
  console: {
1647
1698
  studio: {
1648
- backToHome: '返回首页',
1699
+ title: 'Studio',
1700
+ accessRequired: '你需要 Studio 访问权限才能打开 Studio。',
1649
1701
  },
1650
1702
  saveAdvisoryTitle: '已保存 — 编辑检查提出了 {{count}} 条建议',
1651
1703
  saveAdvisoryTitle_one: '已保存 — 编辑检查提出了 {{count}} 条建议',
@@ -1660,24 +1712,10 @@ const zh = {
1660
1712
  savedViewsRefused: "服务器拒绝了此请求,因此该列表为空是因为读取失败,而不是因为该对象没有已保存的视图。请重新登录,或联系管理员申请访问权限。",
1661
1713
  savedViewsUnreadable: "该列表为空是因为读取失败,而不是因为该对象没有已保存的视图。请重试;如果反复出现,请反馈此问题。",
1662
1714
  title: 'ObjectStack 控制台',
1663
- initializing: '正在初始化应用程序…',
1715
+ initializing: '正在打开你的控制台…',
1716
+ skipToContent: '跳到主要内容',
1664
1717
  search: '搜索…',
1665
1718
  breadcrumb: {
1666
- dashboards: '仪表盘',
1667
- pages: '页面',
1668
- // objectui#6166 — 报表 here is a maintainer RULING (2026-08-25), not a
1669
- // majority count. 报表 (tabular/data report) and 报告 (written/narrative
1670
- // report) are NOT interchangeable, so this key holding 报告 against the
1671
- // rest of the pack was read as evidence of a majority and never, on its
1672
- // own, as evidence of a mistake; the call was made on what renders. This
1673
- // segment labels the `routeType === 'report'` LIST route (app-shell
1674
- // AppHeader) — a structural sibling of dashboards/pages that drills into
1675
- // metadata report definitions, i.e. the same feature that
1676
- // `console.commandPalette.reports`, `console.nav.navReport` and
1677
- // `search.badgeReport` already call 报表. Nothing narrative renders
1678
- // beneath it. Don't re-file this as a pack inconsistency, and don't
1679
- // restore 报告 without a new ruling.
1680
- reports: '报表',
1681
1719
  system: '系统',
1682
1720
  marketplace: '应用市场',
1683
1721
  settings: '设置',
@@ -1690,22 +1728,27 @@ const zh = {
1690
1728
  nav: {
1691
1729
  pinItem: '固定 {{name}}',
1692
1730
  unpinItem: '取消固定 {{name}}',
1693
- dragToReorder: '拖动以重新排序',
1694
1731
  favorites: '收藏',
1695
1732
  launcherLabel: '应用启动台',
1696
1733
  menuLabel: '应用导航',
1697
1734
  menuEmpty: '此应用没有你可以打开的导航项。',
1735
+ itemMenu: '{{name}} 的更多操作',
1736
+ openInNewTab: '在新标签页打开',
1737
+ copyLink: '复制链接',
1738
+ linkCopied: '链接已复制到剪贴板',
1739
+ linkCopyFailed: '复制链接失败',
1740
+ design: '设计',
1698
1741
  },
1699
1742
  settingsHub: {
1700
1743
  title: '设置',
1701
- subtitle: '配置工作区、集成与功能开关。',
1744
+ subtitle: '配置系统、集成与功能开关。',
1702
1745
  loadError: '加载设置失败',
1703
1746
  empty: '尚未注册任何设置。插件可通过 SettingsService 注册设置清单。',
1704
1747
  settingsCount: '{{n}} 项设置',
1705
1748
  beta: 'Beta',
1706
1749
  // 分类小标题,按 manifest 的 `category` 值取键;未知(插件自定义)分类回退到原始字符串。
1707
1750
  categories: {
1708
- Workspace: '工作区',
1751
+ Workspace: '常规',
1709
1752
  Communication: '通讯',
1710
1753
  Security: '安全',
1711
1754
  Infrastructure: '基础设施',
@@ -1732,18 +1775,31 @@ const zh = {
1732
1775
  unsavedCount: '{{count}} 项未保存的更改',
1733
1776
  unsavedCount_one: '{{count}} 项未保存的更改',
1734
1777
  unsavedCount_other: '{{count}} 项未保存的更改',
1778
+ fieldErrorsToast: '{{count}} 项设置需要处理:{{settings}}',
1779
+ fieldErrorsToast_one: '{{count}} 项设置需要处理:{{settings}}',
1780
+ fieldErrorsToast_other: '{{count}} 项设置需要处理:{{settings}}',
1735
1781
  cryptoRefusalTitle: '此部署无法加密机密信息',
1736
1782
  cryptoRefusalSubjectSuffix: '被声明为加密字段,因此未写入任何内容。',
1737
1783
  cryptoRefusalNoSubject: '声明为加密的值被拒绝,因此未写入任何内容。',
1738
1784
  cryptoRefusalToast: '无法加密机密信息:{{subject}}',
1739
1785
  cryptoRefusalToastNoSubject: '无法加密机密信息',
1786
+ sourceBadgeInherited: '继承自{{source}}',
1787
+ sourceBadgeOverrides: '覆盖{{source}}',
1788
+ resetToDefault: '恢复默认',
1789
+ envLockBadge: '环境变量锁定',
1790
+ envLockBadgeTitle: '由环境变量固定,无法在界面中编辑。',
1791
+ deprecatedBadge: '已弃用',
1792
+ deprecatedBadgeReplacedBy: '已弃用 → {{replacedBy}}',
1793
+ unsupportedSpecifierType: '不支持的设置项类型:{{type}}',
1794
+ },
1795
+ workspaceTimezonePrompt: {
1796
+ title: '设置系统时区',
1797
+ description: '本系统仍在使用平台默认时区 {{current}}。系统时区决定公式中“今天”的含义、报表如何按日期分组,以及日期和时间如何显示,对系统内所有人生效。下方已填入你的浏览器时区。',
1798
+ laterHint: '之后可随时在“设置”页面中修改。',
1799
+ decline: '保持默认',
1800
+ confirm: '设置时区',
1801
+ saved: '系统时区已设置为 {{zone}}',
1740
1802
  },
1741
- loadingSteps: {
1742
- connecting: '正在连接数据源',
1743
- loadingConfig: '正在加载配置',
1744
- preparingWorkspace: '正在准备工作区',
1745
- },
1746
- loadingHint: '初始化新环境可能需要几秒钟。',
1747
1803
  error: {
1748
1804
  connectionFailed: '无法连接到服务器',
1749
1805
  serverUnreachable: '无法访问服务器 {{url}}。',
@@ -1767,21 +1823,20 @@ const zh = {
1767
1823
  groups: {
1768
1824
  general: '通用',
1769
1825
  navigation: '导航',
1770
- dataViews: '数据视图',
1771
1826
  aiChat: 'AI 助手',
1772
- preferences: '偏好设置',
1773
1827
  },
1774
1828
  openCommandPalette: '打开命令面板',
1775
1829
  showShortcuts: '显示键盘快捷键',
1776
1830
  closeDialog: '关闭对话框/面板',
1777
1831
  toggleSidebar: '切换侧边栏',
1778
- focusSearch: '聚焦搜索',
1779
- createRecord: '新建记录',
1780
- refreshData: '刷新数据',
1781
- editRecord: '编辑选中记录',
1782
1832
  newChat: '新建对话',
1783
1833
  toggleChatsList: '切换对话列表',
1784
- toggleDarkMode: '切换深色模式',
1834
+ goHome: '返回首页',
1835
+ },
1836
+ reportIndex: {
1837
+ title: '报表',
1838
+ emptyTitle: '暂无报表',
1839
+ emptyDescription: '此应用没有你可以打开的报表。',
1785
1840
  },
1786
1841
  commandPalette: {
1787
1842
  title: '命令面板',
@@ -1791,6 +1846,8 @@ const zh = {
1791
1846
  records: '记录',
1792
1847
  recentRecords: '最近访问',
1793
1848
  objects: '对象',
1849
+ packages: '软件包',
1850
+ flows: '流程',
1794
1851
  dashboards: '仪表盘',
1795
1852
  pages: '页面',
1796
1853
  reports: '报表',
@@ -1814,8 +1871,7 @@ const zh = {
1814
1871
  },
1815
1872
  usage: {
1816
1873
  title: 'AI 用量',
1817
- meterBuild: 'AI 搭建',
1818
- meterAsk: '数据问询',
1874
+ poolUsed: '已用 {{percent}}',
1819
1875
  statusOk: '额度充足',
1820
1876
  statusLow: '即将用完',
1821
1877
  statusFull: '额度已用完',
@@ -1830,7 +1886,6 @@ const zh = {
1830
1886
  ctaUpgrade: '升级以继续使用',
1831
1887
  ctaTopUp: '购买额度包以继续',
1832
1888
  ariaLabel: 'AI 用量:{{status}}',
1833
- breakdownTitle: '已用额度构成',
1834
1889
  },
1835
1890
  workspaceTitle: 'AI 工作区',
1836
1891
  workspaceSubtitle: '提问、查看并继续历史对话',
@@ -1887,6 +1942,8 @@ const zh = {
1887
1942
  liveCanvasUnlisted: '运行预览 · {{app}}(未发布 · 仅自己可见)',
1888
1943
  loadingAgents: '正在加载助手…',
1889
1944
  askAnything: '输入你的问题…',
1945
+ askOrChangeApp: '问问数据,或让我改改这个应用…',
1946
+ describeAppToBuild: '描述你想搭建的应用,或要改的地方…',
1890
1947
  emptyTitle: '开始对话',
1891
1948
  emptyDescription: '可以直接提问,助手会结合当前应用上下文提供帮助。',
1892
1949
  switchAssistant: '切换助手',
@@ -1908,12 +1965,17 @@ const zh = {
1908
1965
  },
1909
1966
  clearConversation: '清空',
1910
1967
  sendHint: '发送',
1968
+ newlineHint: '换行',
1911
1969
  agentActivity: '执行过程',
1912
1970
  toolCompleted: '已完成',
1913
1971
  toolRunning: '运行中',
1914
1972
  toolAwaitingApproval: '等待确认',
1915
1973
  toolFailed: '失败',
1916
1974
  toolDetailsHidden: '已隐藏工具参数和原始结果,仅保留过程摘要。',
1975
+ toolDenyReason: '操作员已在对话中拒绝',
1976
+ builderHandoffTitle: '在构建器中搭建',
1977
+ builderHandoffOpen: '在构建器中打开 →',
1978
+ builderHandoffSuperseded: '已有更新的请求',
1917
1979
  copy: '复制',
1918
1980
  copied: '已复制',
1919
1981
  regenerate: '重新生成',
@@ -1930,7 +1992,7 @@ const zh = {
1930
1992
  publishOk: '已发布,对象已生效。',
1931
1993
  seedWarn: '已发布,但部分示例数据未能载入。',
1932
1994
  openBuiltApp: '打开应用',
1933
- designBuiltApp: '进入 Studio 继续完善',
1995
+ viewBuiltAppInStudio: '在 Studio 中查看',
1934
1996
  previewDraft: '预览',
1935
1997
  previewApp: '预览应用',
1936
1998
  resizeSplit: '调整对话与预览的宽度',
@@ -2067,6 +2129,7 @@ const zh = {
2067
2129
  collapse: '收起对话',
2068
2130
  maximize: '以完整页面打开',
2069
2131
  open: '打开助手',
2132
+ planAwaitingApproval: '有一个方案等待确认',
2070
2133
  },
2071
2134
  group: {
2072
2135
  today: '今天',
@@ -2078,9 +2141,9 @@ const zh = {
2078
2141
  },
2079
2142
  // objectui#9954 — see the `en` pack for what raises each case.
2080
2143
  readRate: {
2081
- ratioTitle: '本环境读取量异常',
2144
+ ratioTitle: '本系统读取量异常',
2082
2145
  ratio: '每写入 1 行就读取 {{ratio}} 行。平台会标记高于 {{threshold}} 的比率。没有任何东西被限制或阻断;这只是一份报告,便于检查读取方式。',
2083
- noWritesTitle: '本环境只有读取、完全没有写入',
2146
+ noWritesTitle: '本系统只有读取、完全没有写入',
2084
2147
  noWrites: '有行被读取,却完全没有任何写入,因此读取比率没有上限。这是最严重的读数。平台会标记高于 {{threshold}} 的比率。没有任何东西被限制或阻断;这只是一份报告,便于检查读取方式。',
2085
2148
  },
2086
2149
  // objectui#10439 — see the `en` pack for what raises each case.
@@ -2140,12 +2203,14 @@ const zh = {
2140
2203
  objectView: {
2141
2204
  systemViewReadonly: '系统视图由代码定义,只读。',
2142
2205
  cannotEditMetaView: '该视图为内置视图,由代码定义,无法修改。',
2143
- viewConfigPermissionDenied: '视图配置对所有使用该视图的用户生效,因此修改它需要「管理元数据」权限。请联系管理员进行修改。',
2206
+ resetView: '重置视图',
2207
+ resetViewTitle: '将此视图的排序、筛选和列宽恢复为视图自身的设置。只影响你自己。',
2144
2208
  cannotDeleteMetaView: '该视图为内置视图,由代码定义,无法删除。',
2145
2209
  expandToPage: '以完整页面打开',
2146
2210
  objectNotFound: '未找到对象',
2147
2211
  objectNotFoundDescription: '对象"{{objectName}}"在当前配置中不存在。',
2148
2212
  objectNotFoundHint: '请检查您的应用导航设置或从侧边栏选择其他对象。',
2213
+ objectPackageDisabled: '对象“{{objectName}}”所属的软件包已被禁用,因此当前不提供该对象。',
2149
2214
  filterOrNotSavable: '该筛选条件之间使用「或」,保存到视图暂不支持这种结构。它仍会作用于当前列表 —— 取消「或」分组后才能保存到视图。',
2150
2215
  filterNestedNotSavable: '该筛选使用了嵌套条件分组,保存到视图不支持这种结构。请改为单层条件列表后再保存到视图。',
2151
2216
  allRecords: '所有记录',
@@ -2241,6 +2306,10 @@ const zh = {
2241
2306
  ufAddField: '+ 添加筛选字段…',
2242
2307
  ufShowAllRecords: '显示"全部记录"标签页',
2243
2308
  },
2309
+ runtimeDraft: {
2310
+ publishFailed: '发布失败',
2311
+ discardFailed: '放弃草稿失败',
2312
+ },
2244
2313
  localeSwitcher: {
2245
2314
  label: '语言',
2246
2315
  },
@@ -2261,9 +2330,8 @@ const zh = {
2261
2330
  signingIn: '正在登录…',
2262
2331
  ssoHandoff: '继续前往 {{target}}',
2263
2332
  devAdminHint: {
2264
- title: '开发实例',
2265
- body: '可使用内置的开发管理员登录:',
2266
- dismiss: '关闭',
2333
+ title: '本地开发实例',
2334
+ signIn: '以开发管理员登录',
2267
2335
  },
2268
2336
  errors: {
2269
2337
  invalidCredentials: '邮箱或密码错误,请重试。',
@@ -2284,6 +2352,20 @@ const zh = {
2284
2352
  usePasswordSignInText: '改用密码登录',
2285
2353
  socialButton: '使用 {provider} 继续',
2286
2354
  orText: '或使用邮箱继续',
2355
+ ssoButton: '使用 SSO 登录',
2356
+ ssoOnlyDescription: '使用你所在组织的单点登录进行登录',
2357
+ usePasswordText: '改用密码登录',
2358
+ backToSsoText: '返回单点登录',
2359
+ // objectui#12600 — the console login card's own header, the password
2360
+ // field's reveal toggle, and the footer's legal links.
2361
+ welcomeTitle: '欢迎回来',
2362
+ welcomeDescription: '登录后继续你的工作',
2363
+ showPasswordText: '显示密码',
2364
+ hidePasswordText: '隐藏密码',
2365
+ footer: {
2366
+ privacy: '隐私',
2367
+ terms: '条款',
2368
+ },
2287
2369
  },
2288
2370
  register: {
2289
2371
  title: '创建账户',
@@ -2306,7 +2388,7 @@ const zh = {
2306
2388
  orText: '或使用邮箱继续',
2307
2389
  errors: {
2308
2390
  userExists: '该邮箱已被注册,请直接登录或更换邮箱。',
2309
- selfRegistrationClosed: '本环境未开放自助注册,请联系管理员获取邀请。',
2391
+ selfRegistrationClosed: '本系统未开放自助注册,请联系管理员获取邀请。',
2310
2392
  emailDomainNotAllowed: '该邮箱的域名不允许在此注册,请使用组织邮箱,或联系管理员获取邀请。',
2311
2393
  },
2312
2394
  verifyInbox: {
@@ -2347,7 +2429,7 @@ const zh = {
2347
2429
  },
2348
2430
  setPassword: {
2349
2431
  title: '设置一个备用密码',
2350
- description: '您是通过单点登录进入的。设置一个本地密码,这样即使单点登录不可用,您仍能直接登录此环境。',
2432
+ description: '您是通过单点登录进入的。设置一个本地密码,这样即使单点登录不可用,您仍能直接登录。',
2351
2433
  email: '邮箱',
2352
2434
  newPassword: '新密码',
2353
2435
  confirmPassword: '确认密码',
@@ -2397,7 +2479,7 @@ const zh = {
2397
2479
  checkSpam: '没有收到邮件?请检查垃圾邮件文件夹或联系支持。',
2398
2480
  or: '或',
2399
2481
  // objectui#3546 slice three.
2400
- resendUnavailable: '此环境可能未配置邮件发送服务。如果问题持续存在,请联系支持。',
2482
+ resendUnavailable: '本系统可能未配置邮件发送服务。如果问题持续存在,请联系支持。',
2401
2483
  },
2402
2484
  setup: {
2403
2485
  welcomeTitle: '欢迎使用 ObjectStack',
@@ -2441,7 +2523,7 @@ const zh = {
2441
2523
  disabledDescription: '此部署未启用设备授权,因此无法在此批准该设备。',
2442
2524
  },
2443
2525
  shell: {
2444
- tenantHostHint: '您正在登录此工作区',
2526
+ tenantHostHint: '您正在登录本系统',
2445
2527
  },
2446
2528
  layout: {
2447
2529
  headline: '更快地构建强大的业务应用。',
@@ -2451,6 +2533,7 @@ const zh = {
2451
2533
  signOut: '改为退出登录',
2452
2534
  password: {
2453
2535
  title: '您的密码已过期',
2536
+ resetTitle: '您必须修改密码',
2454
2537
  fallbackMessage: '请设置新密码后继续。',
2455
2538
  current: '当前密码',
2456
2539
  next: '新密码',
@@ -2476,6 +2559,11 @@ const zh = {
2476
2559
  verifying: '正在验证…',
2477
2560
  invalidCode: '验证码无效,请重试。',
2478
2561
  },
2562
+ impersonation: {
2563
+ passwordTitle: '{{user}} 必须修改密码',
2564
+ mfaTitle: '{{user}} 必须设置双重验证',
2565
+ body: '您正在以 {{user}} 的身份操作,此操作只能由该用户本人完成。请结束模拟登录,返回您自己的账户。',
2566
+ },
2479
2567
  },
2480
2568
  },
2481
2569
  // objectui#3546 slice three — the /oauth/consent screen.
@@ -2484,12 +2572,17 @@ const zh = {
2484
2572
  title: '{{appName}} 请求访问您的账户',
2485
2573
  request: '{{appName}} 正在请求授权{{suffix}}。',
2486
2574
  unknownApp: '某个应用',
2575
+ unidentified: '无法识别此应用。',
2576
+ clientId: '客户端 ID',
2487
2577
  willAllow: '此应用将能够:',
2488
2578
  scope: {
2489
2579
  openid: '确认您的身份',
2490
2580
  profile: '读取您的基本资料(姓名、头像)',
2491
2581
  email: '读取您的邮箱地址',
2492
2582
  offlineAccess: '保持登录状态(刷新访问权限)',
2583
+ dataRead: '读取记录(不超出您自己的权限)',
2584
+ dataWrite: '创建、修改和删除记录(不超出您自己的权限)',
2585
+ actionsExecute: '代表您运行操作(不超出您自己的权限)',
2493
2586
  },
2494
2587
  deny: '拒绝',
2495
2588
  authorize: '授权',
@@ -2532,8 +2625,8 @@ const zh = {
2532
2625
  password: {
2533
2626
  changeTitle: '修改密码',
2534
2627
  setTitle: '设置本地密码',
2535
- changeDescription: '更新您在此环境登录所用的密码。',
2536
- setDescription: '您通过单点登录进入。设置本地密码后,也可以在此环境使用邮箱和密码登录。',
2628
+ changeDescription: '更新您登录所用的密码。',
2629
+ setDescription: '您通过单点登录进入。设置本地密码后,也可以使用邮箱和密码登录。',
2537
2630
  current: '当前密码',
2538
2631
  new: '新密码',
2539
2632
  password: '密码',
@@ -2542,7 +2635,7 @@ const zh = {
2542
2635
  mismatch: '两次输入的密码不一致',
2543
2636
  enterCurrent: '请输入当前密码',
2544
2637
  changed: '密码已修改。',
2545
- localSet: '本地密码已设置。现在您可以在此环境使用邮箱和密码登录。',
2638
+ localSet: '本地密码已设置。现在您可以使用邮箱和密码登录。',
2546
2639
  changeAction: '修改密码',
2547
2640
  setAction: '设置密码',
2548
2641
  },
@@ -2557,21 +2650,21 @@ const zh = {
2557
2650
  unknown: '发生未知错误。',
2558
2651
  },
2559
2652
  workspace: {
2560
- label: '工作区',
2561
- default: '我的工作区',
2562
- switch: '切换工作区',
2563
- createTitle: '创建工作区',
2564
- createDescription: '工作区是团队协作的共享空间。',
2565
- createButton: '创建工作区',
2566
- nameLabel: '工作区名称',
2653
+ label: '组织',
2654
+ default: '我的组织',
2655
+ switch: '切换组织',
2656
+ createTitle: '创建组织',
2657
+ createDescription: '组织是团队协作的共享空间。',
2658
+ createButton: '创建组织',
2659
+ nameLabel: '组织名称',
2567
2660
  namePlaceholder: '例如:极客科技',
2568
2661
  slugLabel: 'URL 标识',
2569
2662
  slugHint: '用于 URL 中,仅支持小写字母、数字和连字符。',
2570
2663
  invite: '邀请成员',
2571
2664
  members: '成员',
2572
- settings: '工作区设置',
2665
+ settings: '组织设置',
2573
2666
  multiOrgDisabled: '此实例已禁用创建新组织。',
2574
- createFailed: '创建工作区失败',
2667
+ createFailed: '创建组织失败',
2575
2668
  },
2576
2669
  help: {
2577
2670
  keyboardShortcuts: '键盘快捷键',
@@ -2579,6 +2672,12 @@ const zh = {
2579
2672
  appDocs: '本应用文档',
2580
2673
  allDocs: '全部文档',
2581
2674
  onlineDocs: '在线文档',
2675
+ loadingDocumentation: '正在加载文档',
2676
+ about: '关于',
2677
+ aboutTitle: '关于此控制台',
2678
+ aboutDescription: '此控制台编译所用的构建。',
2679
+ aboutBuild: '控制台构建',
2680
+ aboutBuildUnknown: '未知构建(构建此控制台时未设置版本)',
2582
2681
  },
2583
2682
  sidebar: {
2584
2683
  settings: '设置',
@@ -2593,20 +2692,19 @@ const zh = {
2593
2692
  packageManagement: '软件包管理',
2594
2693
  searchNavigation: '搜索导航…',
2595
2694
  recent: '最近使用',
2596
- favorites: '收藏',
2597
2695
  starred: '已收藏',
2598
2696
  removeFromFavorites: '从收藏中移除 {{name}}',
2697
+ allReports: '全部报表',
2599
2698
  },
2600
2699
  topbar: {
2601
2700
  aiAssistant: 'AI 助手',
2602
2701
  designInStudio: '在 Studio 中设计',
2702
+ editApp: '编辑应用',
2603
2703
  openAssistant: '打开{{name}}助手',
2604
2704
  offline: '离线',
2605
2705
  usersOnline: '当前在线用户',
2606
2706
  switchView: '切换视图',
2607
- switchObject: '切换对象',
2608
2707
  connection: {
2609
- connected: '已连接',
2610
2708
  connecting: '连接中…',
2611
2709
  reconnecting: '正在重新连接…',
2612
2710
  disconnected: '已断开连接',
@@ -2627,45 +2725,66 @@ const zh = {
2627
2725
  showMoreApps: '更多',
2628
2726
  showLess: '收起',
2629
2727
  continueEmpty: '你打开过的内容会显示在这里。',
2630
- actionCenter: {
2631
- title: '待办事项',
2632
- empty: '全部处理完毕',
2728
+ // objectui#12602 — Home's "My work" section: its heading, the link to the
2729
+ // full inbox, each column's title, "view all" link and empty line.
2730
+ myWork: {
2731
+ title: "我的工作",
2732
+ openInbox: "打开收件箱",
2733
+ viewAll: "查看全部",
2734
+ approvals: "待审批",
2735
+ approvalsEmpty: "没有待审批的事项",
2736
+ notifications: "通知",
2737
+ notificationsEmpty: "没有未读通知",
2633
2738
  },
2634
2739
  greetingMorning: '早上好',
2635
2740
  greetingAfternoon: '下午好',
2636
2741
  greetingEvening: '晚上好',
2637
2742
  greetingNight: '夜深了',
2638
- heroTagline: '从上次离开的地方继续,或者探索新的内容。',
2743
+ greetingSeparator: ',',
2744
+ greetingEnd: '。',
2745
+ search: '搜索应用、记录、页面…',
2746
+ summary: {
2747
+ approvals: '今天有 {{count}} 项待审批',
2748
+ approvals_one: '今天有 {{count}} 项待审批',
2749
+ approvals_other: '今天有 {{count}} 项待审批',
2750
+ none: '今天没有待办',
2751
+ },
2752
+ addApp: '添加应用',
2753
+ appOpened: '{{time}}打开',
2639
2754
  build: {
2640
2755
  title: '构建应用',
2641
- subtitle: '从零开始 — 设计对象、表单、自动化与界面。',
2642
- noCapability: '此工作区不提供构建应用功能 — 它需要「管理元数据」权限,而你的账号没有该权限。',
2756
+ noCapability: '本系统不提供构建应用功能 — 它需要「管理元数据」权限,而你的账号没有该权限。',
2643
2757
  },
2644
2758
  template: {
2645
2759
  title: '从模板开始',
2646
- subtitle: '从应用市场安装模板应用并按需定制。',
2647
2760
  marketplaceDisabled: '本运行时未配置应用市场,因此这里没有可安装的模板。',
2648
2761
  },
2649
2762
  open: '打开',
2650
- loading: '正在加载工作区…',
2763
+ loading: '加载中…',
2651
2764
  welcome: '用 AI 搭建你的业务系统',
2652
2765
  welcomeDescription: '用一句话描述你的业务,AI 帮你生成对象、界面、API 和 agent 工具。也可以手动从零开始。',
2653
2766
  welcomeAdminDescription: '用一句话描述你的业务,AI 会为你生成对象、界面、API 和智能体工具;也可以从左侧菜单自行搭建。',
2654
2767
  welcomeAdminDescriptionNoBuild: '从左侧的「管理」菜单创建你的第一个应用。有了数据后,AI 助手可以帮你查询和分析。',
2655
2768
  welcomeAdminDescriptionNoAi: '从左侧的「管理」菜单创建你的第一个应用。',
2656
2769
  noAppsTitle: '还没有应用',
2657
- noAppsDescription: '工作区正在准备中——管理员共享给你的应用会显示在这里。',
2770
+ noAppsDescription: '系统正在准备中——管理员共享给你的应用会显示在这里。',
2658
2771
  buildWithAI: '用 AI 搭建',
2659
2772
  askAI: '问 AI',
2660
2773
  recoveryReminder: {
2661
- message: '建议设置一个备用密码,这样即使单点登录不可用,你仍能直接登录此环境。',
2774
+ message: '建议设置一个备用密码,这样即使单点登录不可用,你仍能直接登录。',
2662
2775
  cta: '设置密码',
2663
2776
  dismiss: '关闭',
2664
2777
  },
2665
2778
  pendingDrafts: {
2666
- message: '你有 {{count}} 项未发布的更改 —— 点击发布即可生效。',
2667
- message_one: '你有 {{count}} 项未发布的更改 —— 点击发布即可生效。',
2668
- message_other: '你有 {{count}} 项未发布的更改 —— 点击发布即可生效。',
2779
+ // objectui#12602 — the drafts row in Home's "My work" section: the
2780
+ // count, then the first draft names joined by `nameSeparator`, in
2781
+ // their package when they share one.
2782
+ title: "{{count}} 项未发布更改",
2783
+ title_one: "{{count}} 项未发布更改",
2784
+ title_other: "{{count}} 项未发布更改",
2785
+ inPackage: "{{names}} 在 {{package}} 包里等待发布",
2786
+ waiting: "{{names}} 等待发布",
2787
+ nameSeparator: "、",
2669
2788
  cta: '发布',
2670
2789
  publishing: '发布中…',
2671
2790
  published: '已发布!更改已生效。',
@@ -2686,7 +2805,7 @@ const zh = {
2686
2805
  manageObjects: '管理对象',
2687
2806
  manageObjectsDesc: '配置数据模型',
2688
2807
  systemSettings: '系统设置',
2689
- systemSettingsDesc: '配置您的工作区',
2808
+ systemSettingsDesc: '配置您的系统',
2690
2809
  },
2691
2810
  recentApps: {
2692
2811
  title: '最近访问',
@@ -2695,6 +2814,8 @@ const zh = {
2695
2814
  dashboard: '仪表盘',
2696
2815
  page: '页面',
2697
2816
  report: '报表',
2817
+ package: '软件包',
2818
+ view: '列表视图',
2698
2819
  record: '记录',
2699
2820
  metadata: '元数据',
2700
2821
  },
@@ -2723,6 +2844,11 @@ const zh = {
2723
2844
  manageAllApps: '管理所有应用',
2724
2845
  systemConsole: '系统控制台',
2725
2846
  noAppsConfigured: '尚未配置任何应用',
2847
+ allApps: '所有应用',
2848
+ editAppInStudio: '在 Studio 中编辑 {{app}}',
2849
+ backToHome: '返回首页',
2850
+ settings: '系统设置',
2851
+ productHome: '{{product}} 首页',
2726
2852
  },
2727
2853
  systemNav: {
2728
2854
  systemSettings: '系统设置',
@@ -2741,6 +2867,7 @@ const zh = {
2741
2867
  title: '最近动态',
2742
2868
  filter: '筛选',
2743
2869
  empty: '暂无最近动态',
2870
+ accessDenied: '您没有查看动态的权限。',
2744
2871
  viewAll: '查看全部动态',
2745
2872
  ariaLabel: '动态消息',
2746
2873
  typeCreate: '创建',
@@ -2790,6 +2917,10 @@ const zh = {
2790
2917
  interfacePageSourceMissing: '此界面页引用了 “{{name}}”,但该来源不可用。',
2791
2918
  recordNotFound: '未找到记录',
2792
2919
  recordNotFoundDescription: '您查找的记录不存在或已被删除。',
2920
+ recordAccessDenied: '无权访问{{object}}记录',
2921
+ recordAccessDeniedDescription: '你没有查看此类记录的权限。如需访问,请联系管理员。',
2922
+ recordLoadFailed: '无法加载此记录',
2923
+ recordLoadFailedDescription: '加载时出错。请检查网络连接后重试。',
2793
2924
  pageNotFound: '未找到页面',
2794
2925
  pageNotFoundDescription: '未找到页面 “{{name}}”,可能已被删除或重命名。',
2795
2926
  dashboardNotFound: '未找到仪表板',
@@ -2807,6 +2938,10 @@ const zh = {
2807
2938
  appAccessDenied: '你没有访问此应用的权限',
2808
2939
  appAccessDeniedDescription: '此应用存在,但你的账号未获授权打开它。请联系管理员为你开通访问权限。',
2809
2940
  appAccessDeniedHome: '返回首页',
2941
+ appNothingAvailable: '{{app}} 中暂时没有你可以使用的内容',
2942
+ appNothingAvailableDescription: '此应用中没有你的账号可以打开的页面。请联系管理员为你开通访问权限。',
2943
+ appNothingAvailableGrantDescription: '此应用中没有你的账号可以打开的页面。你可以在 Setup 中授予访问权限。',
2944
+ openSetup: '打开 Setup',
2810
2945
  createFirstApp: '创建您的第一个应用',
2811
2946
  systemSettings: '系统设置',
2812
2947
  back: '返回',
@@ -2827,6 +2962,9 @@ const zh = {
2827
2962
  publishing: '发布中…',
2828
2963
  exit: '退出预览',
2829
2964
  changes: '变更',
2965
+ pendingHere: '草稿预览 · 本页 {{count}} 项未发布',
2966
+ pendingHere_one: '草稿预览 · 本页 {{count}} 项未发布',
2967
+ pendingHere_other: '草稿预览 · 本页 {{count}} 项未发布',
2830
2968
  // 魔法时刻提示:刚搭好的草稿因为种子/示例数据要发布后才载入,预览里
2831
2969
  // 仪表板显示 0、列表显示“暂无内容”。直接说明,避免把空预览误当成搭坏了。
2832
2970
  sampleDataTitle: '示例数据将在发布后出现',
@@ -2848,7 +2986,57 @@ const zh = {
2848
2986
  confirmNote: '发布将一次性(原子地)发布此包全部 {{count}} 个待发布草稿。',
2849
2987
  confirmNote_one: '发布将一次性(原子地)发布此包全部 {{count}} 个待发布草稿。',
2850
2988
  confirmNote_other: '发布将一次性(原子地)发布此包全部 {{count}} 个待发布草稿。',
2989
+ // objectui#11591 — the package-less sheet: no package to batch, so each
2990
+ // draft publishes by itself and one that fails stays pending.
2991
+ confirmNoteSeparate: '发布会逐个单独发布这 {{count}} 个待发布草稿:发布失败的草稿仍保持待发布,其余草稿照常发布。',
2992
+ confirmNoteSeparate_one: '发布会逐个单独发布这 {{count}} 个待发布草稿:发布失败的草稿仍保持待发布,其余草稿照常发布。',
2993
+ confirmNoteSeparate_other: '发布会逐个单独发布这 {{count}} 个待发布草稿:发布失败的草稿仍保持待发布,其余草稿照常发布。',
2851
2994
  publishConfirm: '全部发布',
2995
+ summaryItems: '{{count}} 项',
2996
+ summaryItems_one: '{{count}} 项',
2997
+ summaryItems_other: '{{count}} 项',
2998
+ summaryType: '{{type}} {{n}}',
2999
+ typeCount: {
3000
+ object: '对象 {{count}}',
3001
+ object_one: '对象 {{count}}',
3002
+ object_other: '对象 {{count}}',
3003
+ view: '视图 {{count}}',
3004
+ view_one: '视图 {{count}}',
3005
+ view_other: '视图 {{count}}',
3006
+ page: '页面 {{count}}',
3007
+ page_one: '页面 {{count}}',
3008
+ page_other: '页面 {{count}}',
3009
+ dashboard: '仪表盘 {{count}}',
3010
+ dashboard_one: '仪表盘 {{count}}',
3011
+ dashboard_other: '仪表盘 {{count}}',
3012
+ app: '应用 {{count}}',
3013
+ app_one: '应用 {{count}}',
3014
+ app_other: '应用 {{count}}',
3015
+ action: '动作 {{count}}',
3016
+ action_one: '动作 {{count}}',
3017
+ action_other: '动作 {{count}}',
3018
+ report: '报表 {{count}}',
3019
+ report_one: '报表 {{count}}',
3020
+ report_other: '报表 {{count}}',
3021
+ flow: '流程 {{count}}',
3022
+ flow_one: '流程 {{count}}',
3023
+ flow_other: '流程 {{count}}',
3024
+ permission: '权限集 {{count}}',
3025
+ permission_one: '权限集 {{count}}',
3026
+ permission_other: '权限集 {{count}}',
3027
+ agent: '智能体 {{count}}',
3028
+ agent_one: '智能体 {{count}}',
3029
+ agent_other: '智能体 {{count}}',
3030
+ email_template: '邮件模板 {{count}}',
3031
+ email_template_one: '邮件模板 {{count}}',
3032
+ email_template_other: '邮件模板 {{count}}',
3033
+ },
3034
+ // objectui#12929 — the unchecked choice under an added object field whose
3035
+ // literal default the batch publish can write into the existing records.
3036
+ backfillOption: '补默认值({{count}} 条已有记录)',
3037
+ backfillOption_one: '补默认值({{count}} 条已有记录)',
3038
+ backfillOption_other: '补默认值({{count}} 条已有记录)',
3039
+ backfillOptionNoCount: '补默认值',
2852
3040
  // [`7a90afdf9`] Pre-publish security-posture findings, shown next to
2853
3041
  // the confirm button so a refusal the door would issue is read BEFORE
2854
3042
  // the click rather than as a toast after the batch rolled back.
@@ -2921,8 +3109,11 @@ const zh = {
2921
3109
  deleteFailed: '删除 {{label}} 失败',
2922
3110
  noRecordId: '未提供记录 ID',
2923
3111
  deleteConfirm: '确定要删除此记录吗?',
2924
- resetPackageSetConfirm: '该权限集随已安装的软件包发布,无法删除。删除操作将丢弃环境定制并把它重置为发布基线。是否继续?',
2925
- resetPackageSetSuccess: '权限集已重置为发布基线',
3112
+ deleteConfirmTitle: '删除{{label}}“{{name}}”?',
3113
+ bulkDeleteConfirmTitle: '删除 {{count}} 条 {{label}} 记录?',
3114
+ bulkDeleteConfirmTitle_one: '删除 {{count}} 条 {{label}} 记录?',
3115
+ bulkDeleteConfirmTitle_other: '删除 {{count}} 条 {{label}} 记录?',
3116
+ deleteConfirmButton: '删除',
2926
3117
  bulkDeleteSuccess: '已删除 {{count}} 条 {{label}} 记录',
2927
3118
  bulkDeleteSuccess_one: '已删除 {{count}} 条 {{label}} 记录',
2928
3119
  bulkDeleteSuccess_other: '已删除 {{count}} 条 {{label}} 记录',
@@ -2946,18 +3137,18 @@ const zh = {
2946
3137
  language: '语言',
2947
3138
  },
2948
3139
  organizations: {
2949
- mine: '我的工作区',
2950
- create: '创建工作区',
2951
- title: '工作区',
2952
- heading: '您的工作区',
2953
- subtitle: '选择一个工作区以继续,或新建一个。',
2954
- searchPlaceholder: '搜索工作区',
2955
- new: '新建工作区',
2956
- current: '当前工作区',
3140
+ mine: '我的组织',
3141
+ create: '创建组织',
3142
+ title: '组织',
3143
+ heading: '您的组织',
3144
+ subtitle: '选择一个组织以继续,或新建一个。',
3145
+ searchPlaceholder: '搜索组织',
3146
+ new: '新建组织',
3147
+ current: '当前组织',
2957
3148
  manage: '管理',
2958
- emptyTitle: '尚无工作区',
2959
- emptyDescription: '创建您的第一个工作区以开始使用。',
2960
- noMatches: '没有匹配的工作区。',
3149
+ emptyTitle: '尚无组织',
3150
+ emptyDescription: '创建您的第一个组织以开始使用。',
3151
+ noMatches: '没有匹配的组织。',
2961
3152
  },
2962
3153
  organization: {
2963
3154
  roles: {
@@ -3042,6 +3233,7 @@ const zh = {
3042
3233
  readOnlyNote: '只有所有者可以修改设置。',
3043
3234
  nameLabel: '组织名称',
3044
3235
  slugLabel: '标识',
3236
+ slugLockedNote: '该组织还有正在使用的环境,因此无法在此修改标识:重命名会同时迁移这些环境的子域名。',
3045
3237
  logoLabel: 'Logo',
3046
3238
  logoUpload: '上传',
3047
3239
  logoReplace: '更换',
@@ -3117,8 +3309,12 @@ const zh = {
3117
3309
  noPendingApprovals: '暂无待审批事项',
3118
3310
  openApprovalsInbox: '打开审批中心',
3119
3311
  badgeTotal: '共 {{total}} 项',
3120
- badgeNotifications: '{{unread}} 条通知',
3121
- badgeApprovals: '{{approvals}} 条待审批',
3312
+ badgeNotifications: '{{count}} 条通知',
3313
+ badgeNotifications_one: '{{count}} 条通知',
3314
+ badgeNotifications_other: '{{count}} 条通知',
3315
+ badgeApprovals: '{{count}} 条待审批',
3316
+ badgeApprovals_one: '{{count}} 条待审批',
3317
+ badgeApprovals_other: '{{count}} 条待审批',
3122
3318
  arrivalMany: '{{count}} 条新消息',
3123
3319
  arrivalMany_one: '{{count}} 条新消息',
3124
3320
  arrivalMany_other: '{{count}} 条新消息',
@@ -3160,10 +3356,10 @@ const zh = {
3160
3356
  body: 'MCP 服务已关闭(OS_MCP_SERVER_ENABLED=false),暂无可连接的端点。请联系运维人员重新启用。',
3161
3357
  },
3162
3358
  url: {
3163
- title: '本环境的 MCP 端点',
3359
+ title: '本系统的 MCP 端点',
3164
3360
  body: '任何支持 MCP 的 AI 客户端都用这个 URL 连接。身份是自助的:部署自身就是 OAuth 2.1 授权服务器,交互式客户端只需在浏览器登录——以你自己的身份连接,每次调用都受你的权限和行级安全约束。',
3165
3361
  downloadSkill: '下载 SKILL.md',
3166
- skillHint: '可移植的智能体技能文件:教会任何支持技能的智能体如何使用本环境。',
3362
+ skillHint: '可移植的智能体技能文件:教会任何支持技能的智能体如何使用本系统。',
3167
3363
  },
3168
3364
  claude: {
3169
3365
  body: '设置 → 连接器 → 添加自定义连接器,粘贴此 URL,按提示在浏览器登录。',
@@ -3206,15 +3402,8 @@ const zh = {
3206
3402
  importAction: '导入',
3207
3403
  dismiss: '忽略',
3208
3404
  },
3209
- cloudOnboarding: {
3210
- hintCreate: '创建你的第一个环境——一个独立的工作区,有自己的网址、数据库和套餐。应用的搭建在里面进行。',
3211
- hintReady: '你的生产环境已就绪。打开它来搭建和运行应用——这些都在环境内部进行。',
3212
- createEnvironment: '创建你的环境',
3213
- openProduction: '打开生产环境',
3214
- manageEnvironments: '管理环境',
3215
- },
3216
- cloudPlanStatus: {
3217
- current: '当前套餐',
3405
+ cloudWorkspaceTimezoneNotice: {
3406
+ seeded: '环境时区在创建时已按你的浏览器设为 {{zone}},可在「设置 → 本地化」中修改。',
3218
3407
  },
3219
3408
  ai: {
3220
3409
  nlQuery: {
@@ -3291,8 +3480,8 @@ const zh = {
3291
3480
  rowConversational: 'Build / Ask 模型',
3292
3481
  rowStructured: '结构化(蓝图 / 种子)',
3293
3482
  rowReasoning: '推理强度',
3294
- readFailed: '无法读取有效 AI 模型。该环境可能未运行 AI 服务,或你没有 ai:read 权限。',
3295
- readFailedWithStatus: '无法读取有效 AI 模型(HTTP {{status}})。该环境可能未运行 AI 服务,或你没有 ai:read 权限。',
3483
+ readFailed: '无法读取有效 AI 模型。本系统可能未运行 AI 服务,或你没有 ai:read 权限。',
3484
+ readFailedWithStatus: '无法读取有效 AI 模型(HTTP {{status}})。本系统可能未运行 AI 服务,或你没有 ai:read 权限。',
3296
3485
  overridesInEffect: '生效的 env 覆盖:',
3297
3486
  noOverrides: '无 —— 跑的是部署代码的默认值。',
3298
3487
  adapter: '适配器:',
@@ -3310,9 +3499,13 @@ const zh = {
3310
3499
  // against). `humanizeToolName` looks each up as
3311
3500
  // `chatbot.tool.<tool_name>` and falls back to its English
3312
3501
  // title-caser for a custom / third-party tool, so a name
3313
- // missing here is degraded, never broken. The `en` values
3314
- // are deliberately EQUAL to what that title-caser produces:
3315
- // adding the key must not silently reword the English UI.
3502
+ // missing here is degraded, never broken. Every value, `en`
3503
+ // included, is a short sentence in the pack's language
3504
+ // saying what the step does (cloud#2927 Target 3, ruled
3505
+ // 「同意」; objectui#12724): never the tool id, and never
3506
+ // the title-caser's output for it, which is how the step
3507
+ // reads for a tool the pack has no entry for.
3508
+ // `toolLabels-locale-parity-7481` holds both.
3316
3509
  // `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
3317
3510
  // set for both surfaces (they used to carry separate
3318
3511
  // tables and disagreed on casing).
@@ -3330,42 +3523,48 @@ const zh = {
3330
3523
  // pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
3331
3524
  // against the registry instead of against its own hand-held list.
3332
3525
  chatbot: {
3526
+ answer: {
3527
+ showFull: '展开全文',
3528
+ collapse: '收起',
3529
+ expandTable: '展开',
3530
+ exitExpandedTable: '关闭',
3531
+ },
3333
3532
  tool: {
3334
- aggregate_data: '汇总数据',
3335
- get_record: '读取记录',
3336
- query_data: '查询数据',
3337
- query_records: '查询记录',
3338
- search_knowledge: '搜索知识库',
3339
- visualize_data: '生成图表',
3340
- add_field: '添加字段',
3341
- apply_blueprint: '搭建应用',
3342
- apply_edit: '应用修改',
3343
- create_metadata: '新建元数据',
3344
- create_object: '新建对象',
3345
- create_package: '新建应用包',
3346
- create_seed: '生成示例数据',
3347
- delete_field: '删除字段',
3348
- describe_metadata: '查看元数据',
3349
- describe_object: '查看对象结构',
3350
- get_active_package: '读取当前应用包',
3351
- get_authoring_rules: '读取编写规范',
3352
- get_metadata_schema: '读取元数据结构',
3353
- get_package: '读取应用包',
3354
- list_metadata: '列出元数据',
3355
- list_objects: '列出对象',
3356
- list_packages: '列出应用包',
3357
- load_tools: '加载工具',
3358
- modify_field: '修改字段',
3359
- open_record: '打开记录',
3360
- propose_blueprint: '设计应用方案',
3361
- set_active_package: '切换当前应用包',
3362
- suggest_builder: '推荐搭建方式',
3363
- test_flow: '测试流程',
3364
- todo_write: '记录待办',
3365
- toggle_flow: '启停流程',
3366
- update_metadata: '更新元数据',
3367
- validate_expression: '校验表达式',
3368
- verify_build: '校验搭建结果',
3533
+ aggregate_data: '汇总相关数据',
3534
+ get_record: '读取这条记录',
3535
+ query_data: '查询所需数据',
3536
+ query_records: '查找相关记录',
3537
+ search_knowledge: '在知识库中查找',
3538
+ visualize_data: '把数据画成图表',
3539
+ add_field: '给对象添加字段',
3540
+ apply_blueprint: '按方案搭建应用',
3541
+ apply_edit: '应用这次修改',
3542
+ create_metadata: '新建一项元数据',
3543
+ create_object: '新建一个对象',
3544
+ create_package: '新建一个应用包',
3545
+ create_seed: '为对象生成示例数据',
3546
+ delete_field: '删除一个字段',
3547
+ describe_metadata: '查看元数据的内容',
3548
+ describe_object: '查看对象的结构',
3549
+ get_active_package: '确认当前应用包',
3550
+ get_authoring_rules: '查阅编写规范',
3551
+ get_metadata_schema: '查阅元数据的格式',
3552
+ get_package: '查看应用包信息',
3553
+ list_metadata: '列出已有元数据',
3554
+ list_objects: '列出已有对象',
3555
+ list_packages: '列出已有应用包',
3556
+ load_tools: '加载更多工具',
3557
+ modify_field: '修改一个字段',
3558
+ open_record: '打开这条记录',
3559
+ propose_blueprint: '拟定应用方案',
3560
+ set_active_package: '切换到目标应用包',
3561
+ suggest_builder: '建议改用 AI 搭建',
3562
+ test_flow: '试运行流程',
3563
+ todo_write: '记下后续检查项',
3564
+ toggle_flow: '启用或停用流程',
3565
+ update_metadata: '更新一项元数据',
3566
+ validate_expression: '检查表达式是否有效',
3567
+ verify_build: '核对搭建结果',
3369
3568
  },
3370
3569
  toolState: {
3371
3570
  agentActivity: '智能体活动',
@@ -3378,6 +3577,15 @@ const zh = {
3378
3577
  denied: '已拒绝',
3379
3578
  failed: '失败',
3380
3579
  },
3580
+ phase: {
3581
+ build: '搭建',
3582
+ design: '设计方案',
3583
+ stepCount: '{{count}} 步',
3584
+ stepCount_one: '{{count}} 步',
3585
+ stepCount_other: '{{count}} 步',
3586
+ expand: '展开步骤',
3587
+ collapse: '收起步骤',
3588
+ },
3381
3589
  plan: {
3382
3590
  countObjects: '{{count}} 个对象',
3383
3591
  countObjects_one: '{{count}} 个对象',
@@ -3389,10 +3597,17 @@ const zh = {
3389
3597
  countDashboards_one: '{{count}} 个仪表板',
3390
3598
  countDashboards_other: '{{count}} 个仪表板',
3391
3599
  countSeedData: '示例数据',
3600
+ extendTarget: '添加到现有应用:{{app}}',
3601
+ awaitingConfirm: '等待确认',
3602
+ objectsAndFields: '对象与字段',
3603
+ views: '视图',
3604
+ suggestedField: '补充',
3605
+ nameField: '名称:{{field}}',
3392
3606
  },
3393
3607
  build: {
3394
3608
  building: '正在构建{{app}}…',
3395
3609
  built: '已构建{{app}}',
3610
+ builtAndLive: '已搭建并上线 · {{app}}',
3396
3611
  appFallback: '你的应用',
3397
3612
  addingSampleData: '正在添加示例数据',
3398
3613
  group: {
@@ -3403,6 +3618,43 @@ const zh = {
3403
3618
  seed: '示例数据',
3404
3619
  },
3405
3620
  moreArtifacts: '+{{n}} 个',
3621
+ verifying: '正在检查改动…',
3622
+ verifyStep: '第 {{n}} 步',
3623
+ verified: '已检查改动',
3624
+ unknownPhase: '未知的构建阶段',
3625
+ nextStepsLead: '接下来可以说:{{steps}}',
3626
+ nextStepQuote: '「{{step}}」',
3627
+ draftPosture: '之后的修改先存草稿,由你在 Studio 发布。',
3628
+ checksPassed: '核对通过 {{passed}}/{{total}}',
3629
+ },
3630
+ changes: {
3631
+ planTitle: '修改方案 · {{count}} 项',
3632
+ planTitle_one: '修改方案 · {{count}} 项',
3633
+ planTitle_other: '修改方案 · {{count}} 项',
3634
+ saveDraft: '存为草稿',
3635
+ reviewAndPublish: '查看变更并发布',
3636
+ undo: '撤销',
3637
+ undoWithOthers: '撤销(连同另外 {{count}} 项草稿)',
3638
+ undoWithOthers_one: '撤销(连同另外 {{count}} 项草稿)',
3639
+ undoWithOthers_other: '撤销(连同另外 {{count}} 项草稿)',
3640
+ undoConfirm: '撤销会丢弃这个应用包全部 {{total}} 项未发布的草稿,其中 {{count}} 项不属于这次修改。',
3641
+ undoConfirm_one: '撤销会丢弃这个应用包全部 {{total}} 项未发布的草稿,其中 {{count}} 项不属于这次修改。',
3642
+ undoConfirm_other: '撤销会丢弃这个应用包全部 {{total}} 项未发布的草稿,其中 {{count}} 项不属于这次修改。',
3643
+ undoConfirmUnknown: '撤销会丢弃这个应用包里全部未发布的草稿,不只是这次修改。',
3644
+ undoConfirmAction: '全部撤销',
3645
+ undoCancel: '取消',
3646
+ undoing: '正在撤销…',
3647
+ undone: '已撤销',
3648
+ undoFailed: '撤销失败',
3649
+ kind: {
3650
+ field: '字段',
3651
+ object: '对象',
3652
+ view: '视图',
3653
+ dashboard: '仪表板',
3654
+ app: '应用',
3655
+ seed: '示例数据',
3656
+ package: '应用包',
3657
+ },
3406
3658
  },
3407
3659
  },
3408
3660
  chatbotError: {
@@ -3418,10 +3670,13 @@ const zh = {
3418
3670
  buyCredits: '购买额度包',
3419
3671
  upgradePlan: '升级方案',
3420
3672
  },
3673
+ planTier: {
3674
+ teamAndUp: '团队版起',
3675
+ },
3421
3676
  environment: {
3422
- addEnvironment: '新建环境',
3423
3677
  setUpProduction: '创建你的生产环境',
3424
3678
  addDevelopment: '新建开发环境',
3679
+ developmentLocked: '开发环境 · {{tier}}',
3425
3680
  entitlement: {
3426
3681
  productionLimitTitle: '你已经有生产环境了',
3427
3682
  productionLimitBody: '每个组织只包含一个生产环境。如果还需要,可以新建一个组织,或者联系我们了解企业版方案。',
@@ -3468,7 +3723,7 @@ const zh = {
3468
3723
  },
3469
3724
  unbound: {
3470
3725
  title: '未连接',
3471
- body: '将此运行时连接到 ObjectStack 控制平面,即可浏览并安装组织的私有包。只需在云账户中点击一次批准——无需在本页面输入任何 ID 或凭据。',
3726
+ body: '此运行时尚未连接到控制平面。点击「连接」会在新窗口中打开你的云账户,只需点击一次即可批准连接——无需在本页面输入任何 ID 或凭据。',
3472
3727
  connect: '连接',
3473
3728
  },
3474
3729
  },
@@ -3485,21 +3740,26 @@ const zh = {
3485
3740
  noMatchFilters: '没有应用匹配当前筛选条件。',
3486
3741
  noDescription: '未提供描述。',
3487
3742
  back: '返回应用市场',
3488
- installedTitle: '已安装的应用',
3489
- installedSubtitle: '当前已安装到本运行时内核的应用市场软件包。缓存的清单文件位于 <code>.objectstack/installed-packages/</code>,重启后仍然保留。',
3490
- installedEmpty: '本运行时尚未安装任何应用市场应用。',
3491
3743
  browseLink: '去应用市场看看 →',
3492
- installedAdditiveNote: '<strong>说明:</strong>内核 API 仅支持新增 — 卸载会移除磁盘上的清单,下次启动时不再加载;但运行中的内核仍会保留该应用,直到下次重启运行时才会真正卸载。',
3493
- installedAt: '安装于 {{when}}',
3494
- installedBy: '由 {{user}}',
3495
- installedPackageId: '包',
3496
- cachedAs: '缓存为 <code>{{path}}</code>',
3744
+ installedAdditiveNote: '卸载会立即将该应用从运行中的内核中移除,其权限集及相应授权也一并移除;同时删除缓存的清单,下次启动时不再加载该包。其对象中已存储的记录仍保留在数据库中。',
3497
3745
  versionBadge: 'v{{version}}',
3498
3746
  installedBadge: '已安装 v{{version}}',
3747
+ // objectui#11645 — an install-local entry this runtime refused to load at
3748
+ // startup (the listing's `notLoaded` marker), read on Installed Apps.
3749
+ notLoaded: {
3750
+ badge: '未加载',
3751
+ protocolIncompatible: '本运行时未加载此包:它面向协议 {{requiredRange}},而本运行时不支持该协议。',
3752
+ otherReason: '本运行时未加载此包({{code}})。',
3753
+ },
3499
3754
  load: {
3500
3755
  failed: '应用市场加载失败',
3501
3756
  failedHintConfigured: '本运行时通过 {{url}} 上的控制面访问应用市场。请检查该地址是否在线、能否从本运行时访问。',
3502
- failedHintSameOrigin: '本运行时自己提供应用市场目录。请检查运行时是否在线。',
3757
+ failedHintSameOrigin: '应用市场目录通过本运行时访问。请检查运行时是否在线、能否访问该目录。',
3758
+ loading: '正在加载应用市场目录…',
3759
+ slow: '仍在加载 —— 应用市场目录响应缓慢。',
3760
+ retry: '重试',
3761
+ unreachable: '无法访问应用市场目录。',
3762
+ answeredError: '应用市场目录返回了错误(HTTP {{status}})。',
3503
3763
  packageFailed: '应用加载失败',
3504
3764
  notFound: '未找到。',
3505
3765
  },
@@ -3541,6 +3801,7 @@ const zh = {
3541
3801
  installToCloud: '安装到云端…',
3542
3802
  installed: '已安装',
3543
3803
  installing: '安装中…',
3804
+ updating: '更新中…',
3544
3805
  uninstall: '卸载',
3545
3806
  uninstalling: '卸载中…',
3546
3807
  details: '详情',
@@ -3558,15 +3819,45 @@ const zh = {
3558
3819
  environmentPlaceholder: '选择一个环境',
3559
3820
  includeSampleData: '包含示例数据',
3560
3821
  noEnvs: '当前组织没有可用的环境。',
3561
- noPermission: '你没有权限在任何环境中安装应用。仅组织所有者和管理员可以安装 — 请联系你的工作区管理员。',
3822
+ noPermission: '你没有权限在任何环境中安装应用。仅组织所有者和管理员可以安装 — 请联系你的组织管理员。',
3562
3823
  signInFirst: '请先登录 ObjectStack Cloud,然后点击下方"在云端打开"。',
3563
3824
  success: '安装成功。打开环境即可看到新应用。',
3564
3825
  localSuccess: '已将 v{{version}} 安装到本运行时。"{{name}}" 应该已经出现在应用切换器中。',
3826
+ localLoadsAtRestart: '已将 v{{version}} 安装到本运行时。"{{name}}" 将在运行时下次重启时加载,在此之前不会出现在应用切换器中。',
3565
3827
  localManifestConflict: '{{message}}\n提示:本地已有应用占用此 manifest_id,请先从 objectstack.config.ts 中移除。',
3566
3828
  localUnauthorized: '请先登录本运行时再试。',
3567
3829
  localMarketplaceUnavailable: '本运行时未配置 OS_CLOUD_URL,无法访问应用市场目录。',
3568
3830
  updateTo: '更新 → v{{version}}',
3569
3831
  installedVersion: '已安装 v{{version}}',
3832
+ deploying: '正在部署应用…',
3833
+ deployed: '应用已部署完成。',
3834
+ openApp: '打开 {{name}}',
3835
+ deployTimeout: '安装已记录,但当前环境尚未提供该应用。它可能仍在部署中,请稍后再次检查。如果一直没有出现,可能是软件包未能加载、不包含应用,或其应用需要你尚未拥有的权限。',
3836
+ checkAgain: '再次检查',
3837
+ // ADR-0131 D6 — the install modes a package's manifest permits, and
3838
+ // what an unmanaged install answers (MarketplacePackagePage).
3839
+ mode: {
3840
+ label: '安装方式',
3841
+ managed: '托管',
3842
+ managedHint: '软件包保持权威:以代码形式注册并接收其升级,其中的条目不在此处编辑。',
3843
+ unmanaged: '非托管副本',
3844
+ unmanagedHint: '一次性复制到本运行时,成为它自己的元数据:每个条目都可在此编辑,副本不再接收升级。',
3845
+ required: '请先选择安装方式,再安装此软件包。',
3846
+ },
3847
+ unmanagedSuccess: '已将 "{{name}}" 的 v{{version}} 复制到本运行时,成为它自己的元数据,位于基础包 {{base}} 中。副本可编辑,且不再接收升级。',
3848
+ unmanagedStrippedLocks: '软件包锁定了以下条目。副本可编辑,因此这些锁未被复制:',
3849
+ unmanagedIgnored: '本运行时不支持非托管安装,因此 "{{name}}" 以托管方式安装(以代码形式注册),而不是被复制。请先升级运行时,然后卸载该软件包,再以非托管副本重新安装。',
3850
+ },
3851
+ // objectui#12146 — the install dialog opened as an UPDATE of the copy
3852
+ // this environment holds (MarketplacePackagePage).
3853
+ update: {
3854
+ dialogTitle: '更新 {{name}}',
3855
+ dialogDescCurrent: '更新当前环境({{host}})中已安装的应用。',
3856
+ dialogDescPicker: '选择要更新已安装应用的环境。需要先登录 ObjectStack Cloud。',
3857
+ majorNotice: '这是一次主版本更新(v{{fromMajor}} → v{{toMajor}}),可能包含不兼容的变更。',
3858
+ releaseNotes: '查看 v{{version}} 的版本说明',
3859
+ success: '已更新到 v{{version}}。',
3860
+ deployTimeout: '更新已记录,但当前环境尚未提供 v{{version}}。可能仍在部署中,请稍后再次检查。',
3570
3861
  },
3571
3862
  // objectui#3546 — the MarketplacePage "Your organization" strip.
3572
3863
  org: {
@@ -3608,11 +3899,20 @@ const zh = {
3608
3899
  dismiss: '忽略',
3609
3900
  confirmedToast: '「{{set}}」已授予 {{anchor}}。',
3610
3901
  dismissedToast: '已忽略「{{set}}」的建议。',
3902
+ guestUnsupported: '此处无法授予:Guest 岗位的权限集不由已接受的建议派生。',
3903
+ acceptedState: '「{{set}}」已为所有已登录用户(Everyone 岗位)接受。',
3904
+ notInForceState: '「{{set}}」已接受,但尚未生效:本次请求未改变 Everyone 岗位。原因见服务器日志。',
3905
+ dismissedState: '「{{set}}」未授予:该建议已被忽略或撤销。',
3906
+ revoke: '撤销',
3907
+ revoking: '撤销中…',
3908
+ revokedToast: '已撤销对「{{set}}」的接受。',
3611
3909
  },
3612
3910
  uninstall: {
3613
- confirm: '从本运行时卸载 {{manifestId}} v{{version}}?\n\n磁盘上的清单缓存将被移除。运行中的内核仍会保留该应用,直到下次重启运行时才会真正卸载。',
3614
- successInList: '已移除 {{manifestId}}。重启运行时即可从内核中彻底卸载。',
3615
- successInDetail: '已移除 {{manifestId}} 的清单缓存。重启运行时即可从内核中彻底卸载该应用。',
3911
+ confirm: '从本运行时卸载 {{manifestId}} v{{version}}?\n\n该应用将立即从运行中的内核中移除,其权限集及相应授权也一并移除,缓存的清单也将被删除。其对象中已存储的记录仍保留在数据库中。',
3912
+ successInList: '已移除 {{manifestId}}:该应用已从运行中的内核中移除,其权限集及相应授权也已一并移除。其对象中已存储的记录仍保留在数据库中。',
3913
+ successInDetail: '已移除 {{manifestId}} 及其清单缓存:该应用已从运行中的内核中移除,其权限集及相应授权也已一并移除。其对象中已存储的记录仍保留在数据库中。',
3914
+ confirmNotLoaded: '从本运行时卸载 {{manifestId}} v{{version}}?\n\n磁盘上的清单缓存将被移除。本运行时并未加载该包,因此它没有任何部分在运行。',
3915
+ successNotLoaded: '已移除 {{manifestId}}。该包未被加载,无需重启运行时。',
3616
3916
  },
3617
3917
  accessDenied: {
3618
3918
  title: '应用市场仅限管理员使用',
@@ -3688,6 +3988,7 @@ const zh = {
3688
3988
  progressEligible_other: '{{count}} 位可审批人',
3689
3989
  progressBar: '决策进度',
3690
3990
  declaredActions: '操作',
3991
+ decisionPanelOffRequestPage: '审批决策面板仅在审批请求页面上可用。',
3691
3992
  attachmentChip: '附件',
3692
3993
  attachmentOpenFailed: '无法打开附件,请重试',
3693
3994
  approveOneTitle: '通过“{{title}}”?',
@@ -3753,6 +4054,9 @@ const zh = {
3753
4054
  emptyPending: '全部处理完毕,没有等待你审批的请求。',
3754
4055
  emptyOther: '这里还没有内容。',
3755
4056
  emptyViewAll: '查看全部请求',
4057
+ waitingOnOthers: '{{count}} 个申请正在等待其他审批人',
4058
+ waitingOnOthers_one: '{{count}} 个申请正在等待其他审批人',
4059
+ waitingOnOthers_other: '{{count}} 个申请正在等待其他审批人',
3756
4060
  noMatches: '没有符合当前筛选条件的请求。',
3757
4061
  keyboardHint: '快捷键:j/k 移动 · Enter 打开 · x 选择 · a 通过 · r 拒绝',
3758
4062
  drawerTitle: '审批请求',
@@ -3770,12 +4074,12 @@ const zh = {
3770
4074
  overrideActionLabel: '越权{{action}}',
3771
4075
  overrideNotice: '你在该步骤没有审批人席位。继续将使用管理员越权:该步骤会立即结案,尚未表态的审批人都会被跳过。此决定将记录为管理员越权。',
3772
4076
  overrideNoticeWho: '你在该步骤没有审批人席位。继续将使用管理员越权:该步骤会立即结案,并跳过尚未表态的审批人 —— {{who}}。此决定将记录为管理员越权。',
4077
+ overrideReassignNotice: '你在该步骤没有审批人席位。继续将使用管理员越权:该步骤会转签给你选择的新审批人,取代所有尚未表态的审批人。请求保持待审批状态,等待新审批人处理。此次转签将记录为管理员越权。',
4078
+ overrideReassignNoticeWho: '你在该步骤没有审批人席位。继续将使用管理员越权:该步骤会转签给你选择的新审批人,取代尚未表态的审批人 —— {{who}}。请求保持待审批状态,等待新审批人处理。此次转签将记录为管理员越权。',
4079
+ overrideRecallNotice: '这不是你发起的请求。继续将使用管理员越权:该请求会被撤回,尚未表态的审批人都将无法再处理它,记录随即解锁。',
4080
+ overrideRecallNoticeWho: '这不是你发起的请求。继续将使用管理员越权:该请求会被撤回,记录随即解锁,尚未表态的审批人将无法再处理它 —— {{who}}。',
3773
4081
  viaOverrideChip: '管理员越权',
3774
4082
  viaOverrideHint: '操作者在该步骤没有审批人席位 —— 经管理员越权通道进入。',
3775
- rawData: '原始数据(JSON)',
3776
- copy: '复制',
3777
- copied: '已复制',
3778
- copyFailed: '复制失败',
3779
4083
  overrideActor: '以其他身份操作(管理员)',
3780
4084
  actor: '操作身份',
3781
4085
  auto: '自动',
@@ -3882,6 +4186,10 @@ const zh = {
3882
4186
  exists: '已设置',
3883
4187
  notExists: '未设置',
3884
4188
  },
4189
+ emptyCheckHint: {
4190
+ text: '「{{isEmpty}}」也匹配空白文本;「{{isNull}}」只匹配没有值的记录。',
4191
+ list: '「{{isEmpty}}」也匹配空列表;「{{isNull}}」只匹配没有值的记录。',
4192
+ },
3885
4193
  },
3886
4194
  sortBuilder: {
3887
4195
  sortBy: '排序依据',
@@ -3992,6 +4300,8 @@ const zh = {
3992
4300
  setDefaultFailed: '设置默认应用失败:{{reason}}',
3993
4301
  appDeleted: '{{name}} 已删除',
3994
4302
  deleteFailed: '删除应用失败:{{reason}}',
4303
+ nothingToDelete: '{{name}} 无可删除:{{reason}}',
4304
+ alreadyAtDefault: '它已是其软件包的默认状态',
3995
4305
  bulkEnabled: '已启用 {{n}} 个应用',
3996
4306
  bulkDisabled: '已停用 {{n}} 个应用',
3997
4307
  bulkFailed: '{{n}} 个失败:{{details}}',
@@ -4016,6 +4326,7 @@ const zh = {
4016
4326
  toggleLabel: '{{label}} 的启用状态',
4017
4327
  on: '已启用',
4018
4328
  off: '已关闭',
4329
+ notRunning: '未在此运行',
4019
4330
  clone: '克隆',
4020
4331
  cloneTitle: '克隆打包流程',
4021
4332
  cloneBody: '副本会带上完整定义,并需要新的机器名和标签。请在 Studio 中编辑副本。',
@@ -4024,6 +4335,9 @@ const zh = {
4024
4335
  cancel: '取消',
4025
4336
  cloneConfirm: '创建克隆',
4026
4337
  cloneCreated: '已创建流程「{{name}}」。',
4338
+ cloneSwitchSourceOff: '停用「{{label}}」',
4339
+ cloneSourceOff: '打包流程「{{label}}」已停用。',
4340
+ cloneOpen: '在 Studio 中打开副本',
4027
4341
  emptyTitle: '没有打包流程',
4028
4342
  emptyBody: '本部署中没有任何已安装软件包提供自动化流程。你自己编写的流程在 Studio 中。',
4029
4343
  loadFailed: '无法加载打包自动化。',
@@ -4031,6 +4345,7 @@ const zh = {
4031
4345
  toggleFailed: '无法更改启用状态。',
4032
4346
  cloneFailedHttp: '无法克隆此流程(HTTP {{status}})。',
4033
4347
  cloneFailed: '无法克隆此流程。',
4348
+ reasonDetails: '详情',
4034
4349
  actionsSubtitle: '由已安装软件包提供的动作。在本部署中关闭后,它在所有提供它的位置都不再运行。你仍然可以在 Studio 中另行编写自己的动作。',
4035
4350
  colAction: '动作',
4036
4351
  colObject: '对象',
@@ -4041,7 +4356,84 @@ const zh = {
4041
4356
  },
4042
4357
  element: {
4043
4358
  number: {
4044
- noObject: '未指定对象:请设置 object 或 dataSource.object。',
4359
+ noObject: '未指定对象:请设置 dataSource.object。',
4360
+ sourceUnresolved: '无法解析此指标的数据源',
4361
+ },
4362
+ image: {
4363
+ noSource: '无图片来源',
4364
+ },
4365
+ recordPicker: {
4366
+ sourceUnresolved: '无法解析此记录选择器的数据源',
4367
+ },
4368
+ calendar: {
4369
+ sourceUnresolved: '无法解析此日历的数据源',
4370
+ },
4371
+ chart: {
4372
+ sourceUnresolved: '无法解析此图表的数据源',
4373
+ },
4374
+ pivotTable: {
4375
+ sourceUnresolved: '无法解析此数据透视表的数据源',
4376
+ },
4377
+ detailView: {
4378
+ sourceUnresolved: '无法解析此详情视图的数据源',
4379
+ },
4380
+ relatedList: {
4381
+ sourceUnresolved: '无法解析此相关列表的数据源',
4382
+ parentUnreadable: '无法读取此相关列表的父记录',
4383
+ },
4384
+ form: {
4385
+ sourceUnresolved: '无法解析此表单的数据源',
4386
+ },
4387
+ lineItems: {
4388
+ sourceUnresolved: '无法解析此明细行面板的数据源',
4389
+ },
4390
+ gantt: {
4391
+ sourceUnresolved: '无法解析此甘特图的数据源',
4392
+ },
4393
+ grid: {
4394
+ sourceUnresolved: '无法解析此表格的数据源',
4395
+ },
4396
+ board: {
4397
+ sourceUnresolved: '无法解析此看板的数据源',
4398
+ },
4399
+ listView: {
4400
+ sourceUnresolved: '无法解析此列表视图的数据源',
4401
+ },
4402
+ map: {
4403
+ sourceUnresolved: '无法解析此地图的数据源',
4404
+ },
4405
+ timeline: {
4406
+ sourceUnresolved: '无法解析此时间线的数据源',
4407
+ },
4408
+ component: {
4409
+ sourceUnresolved: '无法解析此组件的数据源',
4410
+ noDataSource: '未解析到数据源',
4411
+ apiRefused: '此组件的 API 数据源被拒绝',
4412
+ apiUnreadable: '无法读取此组件的 API 数据源',
4413
+ },
4414
+ metadataViewer: {
4415
+ missingKey: '此视图缺少 {{key}}。',
4416
+ loading: '正在加载 {{name}}…',
4417
+ loadFailed: '加载 {{name}} 失败:{{message}}',
4418
+ notFound: '未找到 {{name}}。',
4419
+ stateMachine: '状态机',
4420
+ flow: '流程',
4421
+ permission: '权限',
4422
+ noStateMachine: '{{object}} 上没有状态机。',
4423
+ noStateMachineNamed: '{{object}} 上没有名为“{{name}}”的状态机。',
4424
+ lifecycle: '{{object}} 的生命周期',
4425
+ field: '字段 {{field}}',
4426
+ initial: '初始',
4427
+ final: '终态',
4428
+ steps: '步骤:{{count}}',
4429
+ noSteps: '没有可显示的步骤。',
4430
+ untitledStep: '(步骤)',
4431
+ hiddenSteps: '已隐藏技术步骤:{{count}} · 设置 {{setting}} 以显示全部',
4432
+ objectAccess: '对象访问:{{count}}',
4433
+ noPermissions: '未声明对象权限。',
4434
+ object: '对象',
4435
+ unknownType: '未知的元数据视图类型。应为 {{a}}、{{b}} 或 {{c}}。',
4436
+ unknownTypeNamed: '未知的元数据视图类型“{{type}}”。应为 {{a}}、{{b}} 或 {{c}}。',
4045
4437
  },
4046
4438
  },
4047
4439
  };