@object-ui/i18n 16.0.0 → 17.1.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.
@@ -88,9 +88,14 @@ const zh = {
88
88
  package: '软件包',
89
89
  },
90
90
  actions: {
91
+ decisionOutput: {
92
+ help: '作为决策输出传递给流程。',
93
+ helpMultiValue: '作为决策输出传递给流程。多个值请用逗号分隔。',
94
+ },
91
95
  resultDialog: {
92
- defaultTitle: 'Save this value now',
93
- acknowledge: 'I have saved this',
96
+ defaultTitle: '请立即保存此值',
97
+ acknowledge: '我已保存',
98
+ copyAll: '全部复制',
94
99
  },
95
100
  },
96
101
  validation: {
@@ -107,6 +112,8 @@ const zh = {
107
112
  type: '{{field}}必须是有效的{{type}}',
108
113
  },
109
114
  form: {
115
+ noPermissionToSave: '您没有权限保存这条记录。',
116
+ submitFailed: '保存失败,请重试。',
110
117
  addItem: '添加项目',
111
118
  removeItem: '移除项目',
112
119
  fieldRequired: '此字段为必填项',
@@ -118,11 +125,13 @@ const zh = {
118
125
  discardMessage: '您有未保存的更改。如果现在关闭此表单,您的编辑将会丢失。',
119
126
  keepEditing: '继续编辑',
120
127
  discard: '放弃',
128
+ conflictTitle: '保存冲突',
129
+ conflictMessage: '您编辑期间,这条记录已被其他人修改。覆盖保存将用您的内容替换对方的修改。',
130
+ conflictLatestVersion: '对方保存时间:{{time}}',
131
+ conflictOverwrite: '覆盖保存',
121
132
  stepOf: '第{{current}}步,共{{total}}步',
122
133
  createTitle: '新建{{object}}',
123
134
  editTitle: '编辑{{object}}',
124
- createDescription: '向数据库添加新的{{object}}。',
125
- editDescription: '更新{{object}}的详情',
126
135
  saveRecord: '保存',
127
136
  create: '创建',
128
137
  update: '更新',
@@ -134,11 +143,67 @@ const zh = {
134
143
  relativeDate: {
135
144
  overdue: '逾期 {{count}} 天',
136
145
  },
146
+ file: {
147
+ dragDropHere: '拖拽文件到此处',
148
+ dropFilesHere: '松开以上传',
149
+ browseHint: '或点击浏览',
150
+ browseHintCamera: '或点击浏览 • 使用下方相机按钮',
151
+ takePhoto: '拍照',
152
+ takeSelfie: '自拍',
153
+ cameraCapture: '拍摄',
154
+ uploading: '上传中…',
155
+ uploadingPct: '上传中…({{pct}}%)',
156
+ fileFallback: '文件',
157
+ upload: '上传',
158
+ remove: '移除 {{name}}',
159
+ exceedsMaxSize: '“{{name}}” 超过大小上限({{max}} MB)',
160
+ uploadFailed: '上传 “{{name}}” 失败:{{error}}',
161
+ },
162
+ image: {
163
+ upload: '上传图片',
164
+ addMore: '添加更多图片',
165
+ uploading: '上传中…',
166
+ imageAlt: '图片 {{index}}',
167
+ crop: '裁剪图片 {{index}}',
168
+ remove: '移除图片 {{index}}',
169
+ enlarge: '放大 {{name}}',
170
+ preview: '图片预览',
171
+ previous: '上一张',
172
+ next: '下一张',
173
+ counter: '{{current}} / {{total}}',
174
+ },
137
175
  richText: {
138
176
  format: '格式: {{format}}',
139
177
  basicEditorHint: '富文本编辑器(基础)',
140
178
  placeholder: '请输入文字...',
141
179
  },
180
+ objectRef: {
181
+ loading: '正在加载对象…',
182
+ placeholder: '请选择对象',
183
+ search: '搜索对象…',
184
+ empty: '未找到对象',
185
+ },
186
+ recipient: {
187
+ selectTypeFirst: '请先选择接收方类型。',
188
+ loading: '加载中…',
189
+ search: '搜索…',
190
+ empty: '无匹配项',
191
+ select: '请选择接收方',
192
+ selectUser: '请选择用户',
193
+ selectTeam: '请选择团队',
194
+ selectBusinessUnit: '请选择业务单元',
195
+ selectPosition: '请选择岗位',
196
+ selectUnitAndSubordinates: '请选择业务单元',
197
+ },
198
+ filterCondition: {
199
+ selectObjectFirst: '请先选择对象。',
200
+ noCriteria: '未设置条件 —— 该规则不共享任何记录',
201
+ criteriaRequired: '请至少添加一个条件。没有条件的规则会共享该对象的全部记录,因此无法保存。',
202
+ invalidJson: 'JSON 无效 —— 修正之前该规则不会匹配任何记录。',
203
+ jsonOnly: '该条件只能以 JSON 方式编辑',
204
+ editAsJson: '以 JSON 编辑',
205
+ useVisualBuilder: '使用可视化构建器',
206
+ },
142
207
  },
143
208
  table: {
144
209
  rowsPerPage: '每页行数',
@@ -205,6 +270,7 @@ const zh = {
205
270
  },
206
271
  import: {
207
272
  title: '导入{{object}}',
273
+ notAllowed: '该对象未开放导入。',
208
274
  stepUpload: '上传',
209
275
  stepMapping: '字段映射',
210
276
  stepPreview: '预览',
@@ -264,6 +330,10 @@ const zh = {
264
330
  importNRows: '导入 {{count}} 行',
265
331
  importingProgress: '导入中…',
266
332
  requiredMark: '*',
333
+ optTreatHistorical: '作为历史数据导入',
334
+ optTreatHistoricalHint: '(按原样导入已完结的记录——跳过状态机校验,保留原始时间戳与作者,而不是记为当前时间)',
335
+ missingRequiredHint: '无法继续——以下必填字段未映射:{{fields}}。请在文件中添加对应的列,或返回上一步重新上传包含该列的文件。',
336
+ legacyFallbackNotice: '已通过兼容模式导入:当前连接不支持服务端导入接口,因此所有值均以文本写入,未做服务端类型转换。请升级后端/客户端以获得完整的导入支持(类型转换与关联查找)。',
267
337
  required: '必填',
268
338
  invalidType: '{{type}} 格式无效',
269
339
  legacyReferenceBlocked: '导入已阻止:{{fields}} 是关联字段,需要服务端导入接口把名称解析为记录 ID,而当前连接不支持。按纯文本导入会写坏数据。请升级后端/客户端,或取消这些列的映射后再导入。',
@@ -290,6 +360,12 @@ const zh = {
290
360
  // 服务端结构化导入错误的友好文案
291
361
  referenceNotFound: '找不到匹配 "{{value}}" 的记录',
292
362
  referenceAmbiguous: '"{{value}}" 匹配到多条记录,请使用唯一值或记录 ID',
363
+ invalidBoolean: '"{{value}}" 不是有效的是/否值',
364
+ invalidNumber: '"{{value}}" 不是有效的数字',
365
+ invalidDate: '"{{value}}" 不是有效的日期',
366
+ invalidOption: '"{{value}}" 不在允许的选项范围内',
367
+ requiredValue: '此字段为必填项',
368
+ matchAmbiguous: '匹配到多条已有记录,请使用唯一值或记录 ID',
293
369
  // 导入选项 / 写入模式
294
370
  options: '导入选项',
295
371
  writeMode: '当某行匹配到已有记录时',
@@ -302,6 +378,7 @@ const zh = {
302
378
  matchFieldsPlaceholder: '选择匹配字段…',
303
379
  matchFieldsHint: '按这些字段将行匹配到已有记录。',
304
380
  needMatchFields: '请至少选择一个匹配字段。',
381
+ matchOnlyField: '(仅匹配)',
305
382
  optRunAutomations: '运行自动化与触发器',
306
383
  optCreateOptions: '保留未知选项值',
307
384
  optSkipBlankKey: '跳过匹配值为空的行',
@@ -349,6 +426,7 @@ const zh = {
349
426
  confirmDefault: '此操作将应用于 {{count}} 条记录。',
350
427
  overLimit: '所选记录({{count}})超过该动作的上限({{limit}})。请减少选择后再继续。',
351
428
  affectedRecords: '受影响的记录({{count}}):',
429
+ skippedIneligible: '{{count}} 条所选记录不符合该动作的条件,将被跳过。',
352
430
  rowFallback: '第 {{index}} 行',
353
431
  andMore: '……以及另外 {{count}} 条',
354
432
  processed: '已处理 {{count}} / {{total}}',
@@ -393,6 +471,8 @@ const zh = {
393
471
  filterRecords: '筛选记录',
394
472
  sort: '排序',
395
473
  sortRecords: '排序记录',
474
+ sortByIdSuffix: '(按 ID)',
475
+ sortRelationalHint: '指向其他记录的列未列出:它们只能按存储的 ID 排序,而不是单元格中显示的名称。若要按该名称排序,请添加一个存放该名称的公式字段。',
396
476
  group: '分组',
397
477
  groupBy: '分组依据',
398
478
  export: '导出',
@@ -411,6 +491,12 @@ const zh = {
411
491
  noMatchesMessage: '没有符合当前筛选或搜索条件的记录,试试调整或清除它们。',
412
492
  loadErrorTitle: '无法加载记录',
413
493
  loadErrorMessage: '加载数据时出错。请检查网络连接后重试。',
494
+ loadErrorForbiddenTitle: '无权访问',
495
+ loadErrorForbiddenMessage: '你没有查看这些记录的权限。如需访问,请联系管理员。',
496
+ loadErrorUnauthorizedTitle: '需要登录',
497
+ loadErrorUnauthorizedMessage: '登录状态已过期或已退出。请重新登录后查看这些记录。',
498
+ loadErrorRejectedTitle: '该视图的查询被拒绝',
499
+ loadErrorRejectedMessage: '服务器无法处理该视图的筛选条件或查询参数。清除筛选条件通常即可恢复;如果视图本身就是这样保存的,需要管理员修正。',
414
500
  retry: '重试',
415
501
  managedBy: {
416
502
  system: {
@@ -462,6 +548,11 @@ const zh = {
462
548
  title: '由平台管理',
463
549
  body: '当源记录上的操作运行时,这里的行会自动创建。下方列表是只读监控界面——行级操作(批准、撤回、重发等)在每一行上。',
464
550
  },
551
+ systemWritable: {
552
+ short: '平台架构',
553
+ title: '平台定义,管理员可写',
554
+ body: '此对象的架构由平台定义,但其数据行可在此处创建和编辑。谁可以写入由委派管理和记录级安全控制,而非此标记。',
555
+ },
465
556
  appendOnly: {
466
557
  short: '只读 · 审计日志',
467
558
  title: '只读历史记录',
@@ -481,6 +572,7 @@ const zh = {
481
572
  deleteColumn: '删除列',
482
573
  noCards: '暂无卡片',
483
574
  cardTitlePlaceholder: '输入卡片标题...',
575
+ uncategorized: '未分类',
484
576
  },
485
577
  timeline: {
486
578
  bucket: {
@@ -549,14 +641,6 @@ const zh = {
549
641
  removeDependency: '移除依赖',
550
642
  noCandidates: '无可用任务',
551
643
  searchTasks: '搜索任务…',
552
- qrcode: '移动端二维码',
553
- },
554
- qr: {
555
- title: '在手机上打开',
556
- hint: '用手机扫码打开详情页',
557
- copy: '复制链接',
558
- copied: '已复制',
559
- close: '关闭',
560
644
  },
561
645
  delete: {
562
646
  title: '删除此任务?',
@@ -580,6 +664,14 @@ const zh = {
580
664
  confirm: '自动重新排程',
581
665
  cancel: '保持不变',
582
666
  },
667
+ autoScheduleDlg: {
668
+ title: '自动排程',
669
+ body: '将顺延 {count} 个任务以满足依赖约束,是否执行?',
670
+ skipped: '另有 {count} 项因锁定/无权限跳过。',
671
+ confirm: '执行',
672
+ cancel: '取消',
673
+ none: '依赖均满足,无需排程',
674
+ },
583
675
  resource: {
584
676
  header: '资源',
585
677
  peak: '峰值',
@@ -636,9 +728,15 @@ const zh = {
636
728
  editInlineHint: '双击编辑',
637
729
  lockedByApproval: '审批中已锁定',
638
730
  lockedTooltip: '该记录有待审批的请求,编辑已被锁定',
731
+ writeStrippedTitle: '部分字段未保存',
732
+ writeStrippedReadonly: '以下字段为只读,未保存:{{fields}}',
733
+ writeStrippedByState: '以下字段在记录当前状态下不可编辑,未保存:{{fields}}',
734
+ approvalPendingEditable: '审批中 · 可编辑',
735
+ approvalPendingTooltip: '该记录有待审批的请求,但当前审批节点仍允许编辑',
639
736
  cancelApproval: '撤回审批',
640
737
  cancelApprovalInFlight: '撤回中…',
641
738
  cancelApprovalTooltip: '撤回当前的待审批请求以解除记录锁定',
739
+ cancelApprovalTooltipUnlocked: '撤回当前的待审批请求',
642
740
  cancelApprovalFailed: '撤回审批失败',
643
741
  cancelApprovalUnavailable: '当前数据源不支持撤回审批',
644
742
  linkCopied: '链接已复制到剪贴板',
@@ -725,6 +823,18 @@ const zh = {
725
823
  attachmentCount: '{{count}} 个附件',
726
824
  attachmentCountPlural: '{{count}} 个附件',
727
825
  removeAttachment: '移除附件',
826
+ // Record Attachments panel (enable.files, objectstack#4358)
827
+ attachments: '附件',
828
+ uploadAttachment: '上传',
829
+ loadingAttachments: '正在加载附件…',
830
+ noAttachments: '暂无附件。上传一个文件开始吧。',
831
+ downloadAttachment: '下载',
832
+ deleteAttachment: '删除附件',
833
+ attachmentDeleteDenied: '只有上传者或可编辑此记录的用户才能删除此附件。',
834
+ attachmentParentAccessDenied: '您无权为此记录添加附件。',
835
+ attachmentDownloadDenied: '您无权下载此附件。',
836
+ attachmentAuthRequired: '请登录后再下载此附件。',
837
+ attachmentPermissionDenied: '您没有执行此操作的权限。',
728
838
  // Diff
729
839
  unifiedDiff: '统一视图',
730
840
  sideBySideDiff: '并排视图',
@@ -1144,6 +1254,7 @@ const zh = {
1144
1254
  navTypeGroup: '分组',
1145
1255
  navTypeSeparator: '分隔线',
1146
1256
  navTypeAction: '操作',
1257
+ navTypeComponent: '组件',
1147
1258
  navEditIcon: '编辑图标',
1148
1259
  navToggleVisible: '切换可见性',
1149
1260
  navHidden: '已隐藏',
@@ -1260,6 +1371,23 @@ const zh = {
1260
1371
  dragToReorder: '拖动以重新排序',
1261
1372
  favorites: '收藏',
1262
1373
  },
1374
+ settingsHub: {
1375
+ title: '设置',
1376
+ subtitle: '配置工作区、集成与功能开关。',
1377
+ loadError: '加载设置失败',
1378
+ empty: '尚未注册任何设置。插件可通过 SettingsService 注册设置清单。',
1379
+ settingsCount: '{{n}} 项设置',
1380
+ beta: 'Beta',
1381
+ // 分类小标题,按 manifest 的 `category` 值取键;未知(插件自定义)分类回退到原始字符串。
1382
+ categories: {
1383
+ Workspace: '工作区',
1384
+ Communication: '通讯',
1385
+ Security: '安全',
1386
+ Infrastructure: '基础设施',
1387
+ Beta: 'Beta',
1388
+ Other: '其他',
1389
+ },
1390
+ },
1263
1391
  loadingSteps: {
1264
1392
  connecting: '正在连接数据源',
1265
1393
  loadingConfig: '正在加载配置',
@@ -1296,6 +1424,7 @@ const zh = {
1296
1424
  toggleDarkMode: '切换深色模式',
1297
1425
  },
1298
1426
  commandPalette: {
1427
+ title: '命令面板',
1299
1428
  placeholder: '输入命令或搜索...',
1300
1429
  noResults: '未找到结果。',
1301
1430
  searching: '搜索中…',
@@ -1422,6 +1551,21 @@ const zh = {
1422
1551
  planApproveMessage: '确认,开始搭建。',
1423
1552
  planApproveDefaultsMessage: '确认搭建,未决问题按你的合理假设和默认处理。',
1424
1553
  planAnswerMessage: '关于「{{question}}」,我选择「{{option}}」。',
1554
+ changesTitle: '确认改动',
1555
+ changesConfirmed: '已确认',
1556
+ changesConfirm: '确认修改',
1557
+ changesConfirmHint: '回复以确认或调整该改动。',
1558
+ changesConfirmMessage: '确认修改,应用你刚才提议的改动。',
1559
+ changeVerb: {
1560
+ createObject: '新建对象',
1561
+ addField: '新增字段',
1562
+ modifyField: '修改字段',
1563
+ deleteField: '删除字段',
1564
+ createMetadata: '新建',
1565
+ updateMetadata: '修改',
1566
+ createSeed: '生成示例数据',
1567
+ createPackage: '新建应用包',
1568
+ },
1425
1569
  justNow: '刚刚',
1426
1570
  minutesAgo: '{{count}} 分钟前',
1427
1571
  hoursAgo: '{{count}} 小时前',
@@ -1443,6 +1587,8 @@ const zh = {
1443
1587
  buildCrm: '帮我搭建一个 CRM:客户、联系人、商机,并建立它们之间的关系。',
1444
1588
  buildApp: '做一个项目管理应用:项目、任务、成员。',
1445
1589
  buildFlow: '设计一个工单系统:工单、优先级、状态流转。',
1590
+ buildInventory: '做一个库存管理应用:商品、库存量、供应商,以及低库存预警。',
1591
+ buildRecruiting: '做一个招聘跟踪应用:候选人、在招岗位、面试阶段和面试记录。',
1446
1592
  },
1447
1593
  generic: {
1448
1594
  help: '你可以帮我做什么?',
@@ -1482,14 +1628,16 @@ const zh = {
1482
1628
  identityImport: {
1483
1629
  policyTitle: '导入用户的登录方式',
1484
1630
  policy: {
1485
- none: '不设密码(推荐)',
1631
+ auto: '自动(推荐)',
1486
1632
  invite: '发送邀请',
1487
1633
  temporary: '临时密码',
1634
+ none: '不设密码(仅身份)',
1488
1635
  },
1489
1636
  policyHint: {
1490
- none: '用户通过手机验证码、魔法链接或重置链接首次登录,之后自行设置密码。',
1491
- invite: '为每个新建用户发送"设置密码"邮件(仅手机号的行发送邀请短信)。需要已配置邮件/短信服务。',
1637
+ auto: '可触达的用户收到邀请(邮件或短信);无法触达的行生成一次性密码,仅在结果页显示一次。无论是否配置邮件/短信服务都可用。',
1638
+ invite: '为每个新建用户发送"设置密码"邮件(仅手机号的行发送邀请短信)。需要已配置邮件/短信服务——无法触达的行会失败。',
1492
1639
  temporary: '适用于未配置邮件/短信的部署:为每个新建用户生成一次性密码,仅在结果页显示一次,首次登录强制修改。',
1640
+ none: '用户通过手机验证码、魔法链接或重置链接首次登录,之后自行设置密码。',
1493
1641
  },
1494
1642
  passwordsNote: '临时密码——仅显示一次,不会被保存。请立即保存;用户首次登录时必须修改。',
1495
1643
  passwordsMore: '更多条目已省略——请使用下载。',
@@ -1592,6 +1740,10 @@ const zh = {
1592
1740
  parentField: '父级字段',
1593
1741
  parentFieldHelp: '指向同一对象的父级字段,决定树的层级(仅自引用字段可选)。',
1594
1742
  newView: '新视图',
1743
+ viewName: '名称',
1744
+ viewNameHelp: '机器标识(snake_case),根据标题自动生成,可自行修改。',
1745
+ viewNameRequired: '请输入标识(小写字母、数字、下划线)。非拉丁标题不会自动生成。',
1746
+ viewNameInvalid: '仅限小写字母、数字和下划线,且以字母或下划线开头。',
1595
1747
  typeOptions: '类型选项',
1596
1748
  groupByField: '分组字段',
1597
1749
  groupByFieldHelp: '看板会按该字段的不同取值分列。',
@@ -1866,6 +2018,40 @@ const zh = {
1866
2018
  shell: {
1867
2019
  tenantHostHint: '您正在登录此工作区',
1868
2020
  },
2021
+ layout: {
2022
+ headline: '更快地构建强大的业务应用。',
2023
+ subhead: '面向企业数据管理、工作流与分析的统一平台。',
2024
+ },
2025
+ remediation: {
2026
+ signOut: '改为退出登录',
2027
+ password: {
2028
+ title: '您的密码已过期',
2029
+ fallbackMessage: '请设置新密码后继续。',
2030
+ current: '当前密码',
2031
+ next: '新密码',
2032
+ confirm: '确认新密码',
2033
+ submit: '修改密码并继续',
2034
+ submitting: '正在更新…',
2035
+ mismatch: '两次输入的新密码不一致。',
2036
+ failed: '无法修改密码。',
2037
+ },
2038
+ mfa: {
2039
+ title: '设置双重验证',
2040
+ fallbackMessage: '您的组织要求使用身份验证器应用后方可继续。',
2041
+ confirmPassword: '确认您的密码',
2042
+ continue: '继续',
2043
+ preparing: '正在准备…',
2044
+ enrollFailed: '无法开始绑定。',
2045
+ scanTitle: '使用身份验证器扫码',
2046
+ scanBody: '使用 Google Authenticator、1Password、Authy 等应用扫描此二维码,然后输入 6 位验证码。',
2047
+ backupTitle: '保存您的备用码',
2048
+ backupBody: '请妥善保管——设备丢失时每个备用码可使用一次。',
2049
+ codeLabel: '6 位验证码',
2050
+ verify: '验证并继续',
2051
+ verifying: '正在验证…',
2052
+ invalidCode: '验证码无效,请重试。',
2053
+ },
2054
+ },
1869
2055
  },
1870
2056
  profile: {
1871
2057
  title: '个人资料',
@@ -1930,6 +2116,7 @@ const zh = {
1930
2116
  settings: '工作区设置',
1931
2117
  },
1932
2118
  help: {
2119
+ keyboardShortcuts: '键盘快捷键',
1933
2120
  onThisPage: '本页目录',
1934
2121
  appDocs: '本应用文档',
1935
2122
  allDocs: '全部文档',
@@ -1960,6 +2147,7 @@ const zh = {
1960
2147
  offline: '离线',
1961
2148
  usersOnline: '当前在线用户',
1962
2149
  switchView: '切换视图',
2150
+ switchObject: '切换对象',
1963
2151
  connection: {
1964
2152
  connected: '已连接',
1965
2153
  connecting: '连接中...',
@@ -1979,6 +2167,14 @@ const zh = {
1979
2167
  subtitle: '您的工作区仪表盘',
1980
2168
  nav: '首页',
1981
2169
  allApps: '全部应用',
2170
+ yourApps: '我的应用',
2171
+ showMoreApps: '更多',
2172
+ showLess: '收起',
2173
+ continueEmpty: '你打开过的内容会显示在这里。',
2174
+ actionCenter: {
2175
+ title: '待办事项',
2176
+ empty: '全部处理完毕',
2177
+ },
1982
2178
  greetingMorning: '早上好',
1983
2179
  greetingAfternoon: '下午好',
1984
2180
  greetingEvening: '晚上好',
@@ -2197,10 +2393,11 @@ const zh = {
2197
2393
  description: '请填写以下信息以继续操作。',
2198
2394
  selectPlaceholder: '请选择 {{label}}',
2199
2395
  requiredError: '{{label}} 为必填项',
2200
- lookupPlaceholder: '粘贴 {{label}} 的记录 ID(UUID)',
2201
- lookupHelpText: '请输入引用记录的 ID。可视化选择器即将上线。',
2396
+ lookupPlaceholder: '{{label}} 的记录 ID',
2397
+ lookupHelpText: '该参数未配置引用对象,无法使用记录选择器。请直接填写记录 ID,或联系管理员修正该动作参数。',
2202
2398
  cancel: '取消',
2203
2399
  confirm: '确认',
2400
+ uploading: '上传中…',
2204
2401
  defaultActionTitle: '操作',
2205
2402
  ok: '确定',
2206
2403
  },
@@ -2284,6 +2481,10 @@ const zh = {
2284
2481
  filterAll: '全部',
2285
2482
  markAllRead: '全部标记为已读',
2286
2483
  viewAll: '查看全部通知',
2484
+ groupCount: '{{count}} 条通知',
2485
+ groupUnread: '{{count}} 条未读',
2486
+ groupMarkRead: '标记已读',
2487
+ groupMarkReadTitle: '将此类通知全部标记为已读',
2287
2488
  approvalsPending: '{{count}} 条待审批',
2288
2489
  viewApprovals: '查看审批',
2289
2490
  noPendingApprovals: '暂无待审批事项',
@@ -2396,6 +2597,93 @@ const zh = {
2396
2597
  done: '完成——隐藏',
2397
2598
  },
2398
2599
  },
2600
+ excelImport: {
2601
+ noImportableFields: '该对象没有可导入的字段。',
2602
+ schemaReadFailed: '无法读取对象结构。',
2603
+ imported: '已把 {{count}} 行真实数据导入「{{object}}」。',
2604
+ importFrom: '把真实数据导入自',
2605
+ into: '到',
2606
+ opening: '打开中…',
2607
+ importAction: '导入',
2608
+ dismiss: '忽略',
2609
+ },
2610
+ cloudOnboarding: {
2611
+ hintCreate: '创建你的第一个环境——一个独立的工作区,有自己的网址、数据库和套餐。应用的搭建在里面进行。',
2612
+ hintReady: '你的生产环境已就绪。打开它来搭建和运行应用——这些都在环境内部进行。',
2613
+ createEnvironment: '创建你的环境',
2614
+ openProduction: '打开生产环境',
2615
+ manageEnvironments: '管理环境',
2616
+ },
2617
+ aiModelStatus: {
2618
+ summary: '构建 / 提问使用 {{conversational}}({{conversationalSource}});结构化使用 {{structured}}({{structuredSource}})。',
2619
+ summaryRouting: '路由策略:免费方案 → {{free}},付费方案 → {{paid}}。',
2620
+ modelUnknown: '未知',
2621
+ sourceUnknown: '适配器未上报',
2622
+ rowConversational: 'Build / Ask 模型',
2623
+ rowStructured: '结构化(蓝图 / 种子)',
2624
+ rowReasoning: '推理强度',
2625
+ readFailed: '无法读取有效 AI 模型。该环境可能未运行 AI 服务,或你没有 ai:read 权限。',
2626
+ readFailedWithStatus: '无法读取有效 AI 模型(HTTP {{status}})。该环境可能未运行 AI 服务,或你没有 ai:read 权限。',
2627
+ overridesInEffect: '生效的 env 覆盖:',
2628
+ noOverrides: '无 —— 跑的是部署代码的默认值。',
2629
+ adapter: '适配器:',
2630
+ sourceCodeDefault: '代码默认(无 env 覆盖)',
2631
+ sourceInherits: '与 build/ask 相同',
2632
+ sourcePinned: '被 {{source}} 钉住',
2633
+ },
2634
+ chatbotError: {
2635
+ title: '响应失败',
2636
+ fallbackDetail: '出了点问题,请重试。',
2637
+ details: '详情',
2638
+ hide: '隐藏',
2639
+ retry: '重试',
2640
+ },
2641
+ chatbotQuota: {
2642
+ title: '需要升级',
2643
+ fallbackMessage: 'AI 额度已用完。',
2644
+ buyCredits: '购买额度包',
2645
+ upgradePlan: '升级方案',
2646
+ },
2647
+ environment: {
2648
+ addEnvironment: '新建环境',
2649
+ setUpProduction: '创建你的生产环境',
2650
+ addDevelopment: '新建开发环境',
2651
+ },
2652
+ cloudConnection: {
2653
+ checking: '正在检查连接…',
2654
+ retry: '重试',
2655
+ errors: {
2656
+ expired: '请求在获批前已过期,请重新开始。',
2657
+ bindFailed: '绑定失败。',
2658
+ deviceCodeFailed: '设备码请求失败。',
2659
+ },
2660
+ waiting: {
2661
+ popupOpened: '请在刚打开的窗口中批准此连接——本页面会自动更新。',
2662
+ polling: '正在等待云端控制台批准…',
2663
+ openApproval: '打开批准页面',
2664
+ copy: '复制',
2665
+ copied: '已复制',
2666
+ codePrefilled: '批准页面已自动填入该代码。',
2667
+ openItHere: '窗口没有出现?点此打开',
2668
+ cancel: '取消',
2669
+ },
2670
+ bound: {
2671
+ title: '已连接到 ObjectStack 云',
2672
+ runtime: '运行时',
2673
+ organization: '组织',
2674
+ approvedBy: '批准人',
2675
+ runtimeId: '运行时 ID',
2676
+ environment: '环境',
2677
+ since: '连接于',
2678
+ privatePackages: '组织的私有包现已显示在应用市场的「你的组织」分类下。',
2679
+ disconnect: '断开连接',
2680
+ },
2681
+ unbound: {
2682
+ title: '未连接',
2683
+ body: '将此运行时连接到 ObjectStack 控制平面,即可浏览并安装组织的私有包。只需在云账户中点击一次批准——无需在本页面输入任何 ID 或凭据。',
2684
+ connect: '连接',
2685
+ },
2686
+ },
2399
2687
  marketplace: {
2400
2688
  title: '应用市场',
2401
2689
  subtitle: '浏览已通过审核、发布到 ObjectStack 目录中的应用。点击应用查看详情并安装到你的某个环境中。',
@@ -2530,6 +2818,14 @@ const zh = {
2530
2818
  yearsAgo: '{{count}} 年前',
2531
2819
  },
2532
2820
  },
2821
+ approvals: {
2822
+ approve: '批准',
2823
+ reject: '驳回',
2824
+ comment: '审批意见(可选)',
2825
+ approveSuccess: '已批准',
2826
+ rejectSuccess: '已驳回',
2827
+ rejectConfirm: '确定驳回该审批请求吗?',
2828
+ },
2533
2829
  approvalsInbox: {
2534
2830
  loadMore: '加载更多',
2535
2831
  loadingMore: '加载中…',
@@ -2554,13 +2850,28 @@ const zh = {
2554
2850
  slaRemaining: 'SLA 剩余 {{dur}}',
2555
2851
  slaOverdue: 'SLA 已超期 {{dur}}',
2556
2852
  actReassign: '转签',
2853
+ reassignFromTo: '从 {{from}} 转给 {{to}}',
2557
2854
  actRemind: '催办',
2558
2855
  actRequestInfo: '要求补充材料',
2559
2856
  actComment: '评论',
2560
2857
  stepProgress: '审批步骤',
2561
2858
  prevRequest: '上一条',
2562
2859
  nextRequest: '下一条',
2563
- positionOf: '第 {{index}} / {{total}} 条',
2860
+ positionOf: '第 {{index}} / {{total}} 条请求',
2861
+ progressApprovals: '审批进度 — {{got}} / {{need}}',
2862
+ progressGroups: '会签进度 — {{got}} / {{need}} 组',
2863
+ progressEligible: '{{count}} 位可审批人',
2864
+ progressBar: '决策进度',
2865
+ declaredActions: '操作',
2866
+ attachmentChip: '附件',
2867
+ attachmentOpenFailed: '无法打开附件,请重试',
2868
+ approveOneTitle: '通过“{{title}}”?',
2869
+ approveOneBody: '将以你的身份通过该请求。如需填写审批意见或附件,请打开该请求处理。',
2870
+ flowOrigin: '流程发起',
2871
+ sortBy: '排序',
2872
+ sortRecent: '最新优先',
2873
+ sortOldest: '最早优先',
2874
+ sortAmount: '金额(从高到低)',
2564
2875
  quickPhrase1: '同意,符合要求。',
2565
2876
  quickPhrase2: '有条件同意,请关注执行情况。',
2566
2877
  quickPhrase3: '请补充相关材料后重新提交。',