@object-ui/i18n 17.6.0 → 17.7.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 +4320 -0
- package/README.md +192 -13
- package/dist/builtinAggregateLabels.d.ts +40 -0
- package/dist/builtinAggregateLabels.js +23 -0
- package/dist/currency.d.ts +27 -3
- package/dist/currency.js +28 -4
- package/dist/fallbackInterpolation.d.ts +79 -0
- package/dist/fallbackInterpolation.js +124 -0
- package/dist/i18n.d.ts +27 -1
- package/dist/i18n.js +99 -16
- package/dist/index.d.ts +7 -13
- package/dist/index.js +41 -17
- package/dist/locales/ar.d.ts +946 -113
- package/dist/locales/ar.js +1095 -161
- package/dist/locales/de.d.ts +618 -113
- package/dist/locales/de.js +715 -134
- package/dist/locales/en.d.ts +632 -127
- package/dist/locales/en.js +1044 -162
- package/dist/locales/es.d.ts +700 -113
- package/dist/locales/es.js +794 -130
- package/dist/locales/fr.d.ts +700 -113
- package/dist/locales/fr.js +795 -132
- package/dist/locales/index.d.ts +6990 -1169
- package/dist/locales/index.js +48 -9
- package/dist/locales/ja.d.ts +618 -113
- package/dist/locales/ja.js +708 -128
- package/dist/locales/ko.d.ts +618 -113
- package/dist/locales/ko.js +712 -132
- package/dist/locales/pt.d.ts +700 -113
- package/dist/locales/pt.js +794 -130
- package/dist/locales/registry.d.ts +102 -0
- package/dist/locales/registry.js +220 -0
- package/dist/locales/rtl.d.ts +24 -0
- package/dist/locales/rtl.js +26 -0
- package/dist/locales/ru.d.ts +782 -113
- package/dist/locales/ru.js +910 -152
- package/dist/locales/zh.d.ts +635 -130
- package/dist/locales/zh.js +725 -131
- package/dist/pickLocalized.d.ts +30 -0
- package/dist/pickLocalized.js +39 -0
- package/dist/provider.d.ts +101 -12
- package/dist/provider.js +335 -50
- package/dist/translateFn.d.ts +29 -0
- package/dist/translateFn.js +8 -0
- package/dist/useDisplayLocale.d.ts +11 -0
- package/dist/useDisplayLocale.js +11 -0
- package/dist/useObjectLabel.d.ts +40 -18
- package/dist/useObjectLabel.js +46 -14
- package/dist/useSafeTranslation.js +40 -42
- package/dist/utils/formatting.d.ts +16 -0
- package/dist/utils/formatting.js +23 -3
- package/dist/utils/spec-formatters.d.ts +13 -23
- package/dist/utils/spec-formatters.js +41 -2
- package/dist/utils/spec-translations.d.ts +16 -3
- package/dist/utils/spec-translations.js +52 -13
- package/package.json +12 -6
package/dist/locales/zh.js
CHANGED
|
@@ -29,10 +29,12 @@ const zh = {
|
|
|
29
29
|
manage_users: '管理用户',
|
|
30
30
|
manage_org_users: '管理组织用户',
|
|
31
31
|
manage_metadata: '管理元数据',
|
|
32
|
+
manage_org_presentation: '管理组织展示',
|
|
32
33
|
manage_platform_settings: '管理平台设置',
|
|
33
34
|
setup_access: '访问 Setup',
|
|
34
35
|
setup_write: '保存设置',
|
|
35
36
|
studio_access: '访问 Studio',
|
|
37
|
+
manage_sharing: '管理共享',
|
|
36
38
|
},
|
|
37
39
|
},
|
|
38
40
|
// objectui#3546 切片六 —— 权限集记录上六个授权面的只读摘要与 Studio 深链
|
|
@@ -46,12 +48,16 @@ const zh = {
|
|
|
46
48
|
more: '+{{count}} 更多',
|
|
47
49
|
objects: '{{count}} 个对象',
|
|
48
50
|
objects_one: '{{count}} 个对象',
|
|
51
|
+
objects_other: '{{count}} 个对象',
|
|
49
52
|
fields: '{{count}} 条字段规则',
|
|
50
53
|
fields_one: '{{count}} 条字段规则',
|
|
54
|
+
fields_other: '{{count}} 条字段规则',
|
|
51
55
|
rls: '{{count}} 条 RLS 策略',
|
|
52
56
|
rls_one: '{{count}} 条 RLS 策略',
|
|
57
|
+
rls_other: '{{count}} 条 RLS 策略',
|
|
53
58
|
tabs: '{{count}} 条标签页规则',
|
|
54
59
|
tabs_one: '{{count}} 条标签页规则',
|
|
60
|
+
tabs_other: '{{count}} 条标签页规则',
|
|
55
61
|
adminScope: '已配置委派管理范围',
|
|
56
62
|
designInStudio: '在 Studio 中设计 →',
|
|
57
63
|
designInStudioHint: '在 Studio 中设计',
|
|
@@ -73,7 +79,8 @@ const zh = {
|
|
|
73
79
|
selectFirst: '请先选择{{fields}}',
|
|
74
80
|
selectRecord: '选择记录',
|
|
75
81
|
recordCount: '{{count}} 条记录',
|
|
76
|
-
|
|
82
|
+
recordCount_one: '{{count}} 条记录',
|
|
83
|
+
recordCount_other: '{{count}} 条记录',
|
|
77
84
|
pageOf: '第 {{current}}/{{total}} 页',
|
|
78
85
|
filters: '筛选',
|
|
79
86
|
clear: '清除',
|
|
@@ -123,7 +130,8 @@ const zh = {
|
|
|
123
130
|
closePanel: '关闭面板',
|
|
124
131
|
resizeDrawer: '调整面板宽度',
|
|
125
132
|
itemCount: '{{count}} 项',
|
|
126
|
-
|
|
133
|
+
itemCount_one: '{{count}} 项',
|
|
134
|
+
itemCount_other: '{{count}} 项',
|
|
127
135
|
toggleSidebar: '切换侧边栏',
|
|
128
136
|
package: '软件包',
|
|
129
137
|
done: '完成',
|
|
@@ -131,6 +139,16 @@ const zh = {
|
|
|
131
139
|
record: '记录',
|
|
132
140
|
retry: '重试',
|
|
133
141
|
printDialogHint: '打开浏览器打印对话框(不是导出 PDF)',
|
|
142
|
+
// The non-grid row ceiling's footnote (objectui#7210). Two keys because
|
|
143
|
+
// there are two conditions: a reported `total` states the fact with BOTH
|
|
144
|
+
// numbers, a missing one cannot name how many. Kept terse deliberately —
|
|
145
|
+
// this copy is eagerly loaded, and since objectui#7399 these bytes are
|
|
146
|
+
// budgeted by the `i18n-locales` chunk, not `framework`. ⛔ That ceiling's
|
|
147
|
+
// headroom is deliberately NOT restated here — it moves on every
|
|
148
|
+
// re-baseline, and the figure that was here went stale.
|
|
149
|
+
// `pnpm check:eager-closure` prints it.
|
|
150
|
+
rowCeilingNote: '仅显示 {{total}} 条记录中的前 {{shown}} 条。请缩小筛选范围。',
|
|
151
|
+
rowCeilingNoteUnknownTotal: '仅显示前 {{shown}} 条记录。请缩小筛选范围。',
|
|
134
152
|
},
|
|
135
153
|
actions: {
|
|
136
154
|
decisionOutput: {
|
|
@@ -142,6 +160,14 @@ const zh = {
|
|
|
142
160
|
acknowledge: '我已保存',
|
|
143
161
|
copyAll: '全部复制',
|
|
144
162
|
},
|
|
163
|
+
notAvailableHere: '「{{action}}」在当前页面不可用。',
|
|
164
|
+
completedSuccessfully: '操作已成功完成',
|
|
165
|
+
failed: '操作失败',
|
|
166
|
+
parallelFailed: '一个或多个并行操作失败',
|
|
167
|
+
undo: '撤销',
|
|
168
|
+
undone: '已撤销更改',
|
|
169
|
+
undoneOperation: '撤销:{{description}}',
|
|
170
|
+
redoneOperation: '重做:{{description}}',
|
|
145
171
|
},
|
|
146
172
|
validation: {
|
|
147
173
|
required: '{{field}}不能为空',
|
|
@@ -159,8 +185,12 @@ const zh = {
|
|
|
159
185
|
},
|
|
160
186
|
form: {
|
|
161
187
|
noPermissionToSave: '您没有权限保存这条记录。',
|
|
188
|
+
noPermissionToCreate: '您没有创建{{object}}的权限,字段均为只读。',
|
|
189
|
+
noPermissionToEdit: '您没有编辑{{object}}的权限,字段均为只读。',
|
|
162
190
|
submitFailed: '保存失败,请重试。',
|
|
163
|
-
|
|
191
|
+
uploadInFlight: '请等待上传完成后再保存。',
|
|
192
|
+
clearedOnHide: '已清空不再适用于当前取值的字段:{{fields}}',
|
|
193
|
+
visibleWhenFaulted: '无法提交:{{fields}} 的 visibleWhen 规则无法求值。需先修正该规则,才能提交此表单。',
|
|
164
194
|
removeItem: '移除项目',
|
|
165
195
|
fieldRequired: '此字段为必填项',
|
|
166
196
|
invalidFormat: '格式不正确',
|
|
@@ -172,13 +202,35 @@ const zh = {
|
|
|
172
202
|
// objectui#4024 — the create/edit dialog's `sr-only` accessible
|
|
173
203
|
// description, used when the form declares no `description` of its own.
|
|
174
204
|
dialogDescriptionFallback: '填写表单字段,然后提交或取消。',
|
|
205
|
+
deniedDescription: '您没有此字段的编辑权限。',
|
|
206
|
+
masterDetail: {
|
|
207
|
+
loadingColumns: '正在加载列…',
|
|
208
|
+
subtotal: '小计',
|
|
209
|
+
tax: '税额({{rate}}%)',
|
|
210
|
+
total: '合计',
|
|
211
|
+
lineItem: '明细行',
|
|
212
|
+
rowTitle: '{{title}} — 第 {{row}} 行',
|
|
213
|
+
applyRow: '应用',
|
|
214
|
+
editorDescription: '填写记录及其明细行,然后保存。',
|
|
215
|
+
noChildObject: '此集合未配置子对象:请将 {{property}} 设为其所列行所属的对象。',
|
|
216
|
+
schemaUnavailable: '无法加载 {{object}} 的对象结构,因此此集合没有可显示的列。请检查该对象是否存在且可读,然后重新加载。',
|
|
217
|
+
noRelationshipField: '无法确定 {{object}} 如何关联到 {{parent}}:它没有引用父对象的 lookup 或 master_detail 字段。请在此集合上将 {{property}} 设为保存父记录的字段。',
|
|
218
|
+
},
|
|
219
|
+
lineItems: {
|
|
220
|
+
title: '明细行',
|
|
221
|
+
saveRecordFirst: '保存记录后才能添加明细行。',
|
|
222
|
+
notLoaded: '此记录的明细行尚未加载。',
|
|
223
|
+
loadFailed: '明细行加载失败',
|
|
224
|
+
saveFailed: '明细行保存失败',
|
|
225
|
+
noChildObject: '此面板未配置子对象:请将 {{property}} 设为其所列行所属的对象。',
|
|
226
|
+
},
|
|
175
227
|
keepEditing: '继续编辑',
|
|
176
228
|
discard: '放弃',
|
|
177
229
|
conflictTitle: '保存冲突',
|
|
178
230
|
conflictMessage: '您编辑期间,这条记录已被其他人修改。覆盖保存将用您的内容替换对方的修改。',
|
|
179
231
|
conflictLatestVersion: '对方保存时间:{{time}}',
|
|
180
232
|
conflictOverwrite: '覆盖保存',
|
|
181
|
-
stepOf: '第{{current}}步,共{{total}}步',
|
|
233
|
+
stepOf: '第 {{current}} 步,共 {{total}} 步',
|
|
182
234
|
createTitle: '新建{{object}}',
|
|
183
235
|
editTitle: '编辑{{object}}',
|
|
184
236
|
viewTitle: '查看{{object}}',
|
|
@@ -189,6 +241,13 @@ const zh = {
|
|
|
189
241
|
createSuccess: '{{object}}创建成功',
|
|
190
242
|
updateSuccess: '{{object}}更新成功',
|
|
191
243
|
deleteSuccess: '{{object}}删除成功',
|
|
244
|
+
// objectui#11039 — plugin-form feedback chrome; see the `en` pack.
|
|
245
|
+
created: '已创建',
|
|
246
|
+
saved: '已保存',
|
|
247
|
+
savedNamed: '{{title}}已保存',
|
|
248
|
+
submitted: '已提交',
|
|
249
|
+
errorLoading: '表单加载失败',
|
|
250
|
+
navigateRefused: '此表单声明的 `navigateOnSuccess` 跳转目标被拒绝,因此未执行跳转。',
|
|
192
251
|
fullscreen: {
|
|
193
252
|
title: '编辑文本',
|
|
194
253
|
description: '编辑完整的文本内容,然后保存或取消更改。',
|
|
@@ -200,6 +259,8 @@ const zh = {
|
|
|
200
259
|
fields: {
|
|
201
260
|
relativeDate: {
|
|
202
261
|
overdue: '逾期 {{count}} 天',
|
|
262
|
+
overdue_one: '逾期 {{count}} 天',
|
|
263
|
+
overdue_other: '逾期 {{count}} 天',
|
|
203
264
|
},
|
|
204
265
|
file: {
|
|
205
266
|
dragDropHere: '拖拽文件到此处',
|
|
@@ -216,6 +277,7 @@ const zh = {
|
|
|
216
277
|
remove: '移除 {{name}}',
|
|
217
278
|
exceedsMaxSize: '“{{name}}” 超过大小上限({{max}} MB)',
|
|
218
279
|
uploadFailed: '上传 “{{name}}” 失败:{{error}}',
|
|
280
|
+
uploadIncomplete: '“{{name}}” 上传未完成:未返回文件 ID,未保存任何内容',
|
|
219
281
|
},
|
|
220
282
|
image: {
|
|
221
283
|
upload: '上传图片',
|
|
@@ -256,6 +318,9 @@ const zh = {
|
|
|
256
318
|
selectBusinessUnit: '请选择业务单元',
|
|
257
319
|
selectPosition: '请选择岗位',
|
|
258
320
|
selectUnitAndSubordinates: '请选择业务单元',
|
|
321
|
+
selectField: '请选择用户字段',
|
|
322
|
+
noUserFields: '此对象没有用户字段',
|
|
323
|
+
fieldNotUserTyped: '{{name}} — 不是用户字段',
|
|
259
324
|
},
|
|
260
325
|
filterCondition: {
|
|
261
326
|
selectObjectFirst: '请先选择对象。',
|
|
@@ -266,6 +331,26 @@ const zh = {
|
|
|
266
331
|
editAsJson: '以 JSON 编辑',
|
|
267
332
|
useVisualBuilder: '使用可视化构建器',
|
|
268
333
|
},
|
|
334
|
+
object: {
|
|
335
|
+
invalidJson: 'JSON 无效',
|
|
336
|
+
},
|
|
337
|
+
location: {
|
|
338
|
+
refusedFormat: '未保存:请输入纬度, 经度坐标对(例如 30.2741, 120.1551)。',
|
|
339
|
+
refusedRange: '未保存:{{detail}}',
|
|
340
|
+
latitude: '纬度',
|
|
341
|
+
longitude: '经度',
|
|
342
|
+
refusedResidueOne: '未保存:{{name}}“{{text}}”不是数字。请输入普通小数(例如 30.2741, 120.1551)。',
|
|
343
|
+
refusedResidue: '未保存:{{name}}“{{text}}”和{{otherName}}“{{otherText}}”不是数字。请输入普通小数(例如 30.2741, 120.1551)。',
|
|
344
|
+
},
|
|
345
|
+
date: {
|
|
346
|
+
impossibleDay: '存储的值“{{value}}”不是真实存在的日期。请选择日期以替换它。',
|
|
347
|
+
},
|
|
348
|
+
dateTime: {
|
|
349
|
+
impossibleDay: '存储的值“{{value}}”不是真实存在的日期。请选择日期和时间以替换它。',
|
|
350
|
+
},
|
|
351
|
+
number: {
|
|
352
|
+
badInput: '未保存:此输入框中的文本不是数字。请输入普通小数(例如 {{example}})。',
|
|
353
|
+
},
|
|
269
354
|
tags: {
|
|
270
355
|
placeholder: '输入后回车添加…',
|
|
271
356
|
},
|
|
@@ -284,6 +369,16 @@ const zh = {
|
|
|
284
369
|
characterCount: '已输入 {{count}} 个字符,最多 {{max}} 个',
|
|
285
370
|
charactersRemaining: '还可输入 {{count}} 个字符',
|
|
286
371
|
},
|
|
372
|
+
grid: {
|
|
373
|
+
addLine: '添加行',
|
|
374
|
+
noItems: '暂无条目',
|
|
375
|
+
noItemsAddHint: '暂无条目,点击“{{label}}”开始添加。',
|
|
376
|
+
optionalColumns: '可选列',
|
|
377
|
+
computed: '自动计算',
|
|
378
|
+
openRow: '打开行',
|
|
379
|
+
duplicateRow: '复制行',
|
|
380
|
+
removeRow: '删除行',
|
|
381
|
+
},
|
|
287
382
|
},
|
|
288
383
|
table: {
|
|
289
384
|
rowsPerPage: '每页行数',
|
|
@@ -312,8 +407,12 @@ const zh = {
|
|
|
312
407
|
open: '打开',
|
|
313
408
|
search: '搜索…',
|
|
314
409
|
modified: '{{count}} 行已修改',
|
|
410
|
+
modified_one: '{{count}} 行已修改',
|
|
411
|
+
modified_other: '{{count}} 行已修改',
|
|
315
412
|
saveFailed: '保存失败',
|
|
316
413
|
selected: '已选择 {{count}} 项',
|
|
414
|
+
selected_one: '已选择 {{count}} 项',
|
|
415
|
+
selected_other: '已选择 {{count}} 项',
|
|
317
416
|
edit: '编辑',
|
|
318
417
|
delete: '删除',
|
|
319
418
|
},
|
|
@@ -330,9 +429,13 @@ const zh = {
|
|
|
330
429
|
openRecord: '打开记录',
|
|
331
430
|
openMenu: '更多操作',
|
|
332
431
|
bulkSelected: '已选择 {{count}} 项',
|
|
432
|
+
bulkSelected_one: '已选择 {{count}} 项',
|
|
433
|
+
bulkSelected_other: '已选择 {{count}} 项',
|
|
333
434
|
bulkSelectedAllMatches: '已选择全部 {{count}} 项(全部匹配)',
|
|
334
435
|
bulkClear: '清除',
|
|
335
436
|
bulkAllOnPage: '本页 {{count}} 项已全选。',
|
|
437
|
+
bulkAllOnPage_one: '本页 {{count}} 项已全选。',
|
|
438
|
+
bulkAllOnPage_other: '本页 {{count}} 项已全选。',
|
|
336
439
|
bulkSelectAllMatching: '选择全部 {{count}} 项匹配记录',
|
|
337
440
|
bulkAllMatchingSelected: '已选择全部 {{count}} 项匹配记录。',
|
|
338
441
|
rowHeight: '行高: {{mode}}',
|
|
@@ -340,6 +443,14 @@ const zh = {
|
|
|
340
443
|
yes: '是',
|
|
341
444
|
no: '否',
|
|
342
445
|
systemFields: '系统字段',
|
|
446
|
+
// objectui#10881 — the grouped grid's two refusals: over a data source
|
|
447
|
+
// that cannot answer the group header query, and over rows a host
|
|
448
|
+
// handed in while declaring them one page of more. `queryGroupHeaders`
|
|
449
|
+
// is the member's name and stays untranslated.
|
|
450
|
+
grouping: {
|
|
451
|
+
needsHeaderQuery: '此视图已分组,但其数据源未实现 queryGroupHeaders,因此无法统计分组。移除分组即可显示记录。',
|
|
452
|
+
needsWholeRows: '分组需要全部记录,但此表格只收到其中一页,因此无法统计分组。请传入全部记录,或让表格从实现了 queryGroupHeaders 的数据源获取记录。',
|
|
453
|
+
},
|
|
343
454
|
// objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
|
|
344
455
|
// `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
|
|
345
456
|
// pack controls its own separator and word order.
|
|
@@ -411,7 +522,11 @@ const zh = {
|
|
|
411
522
|
mapped: '已映射',
|
|
412
523
|
skipped: '已跳过',
|
|
413
524
|
rowsWithErrors: '{{count}} 行有错误',
|
|
525
|
+
rowsWithErrors_one: '{{count}} 行有错误',
|
|
526
|
+
rowsWithErrors_other: '{{count}} 行有错误',
|
|
414
527
|
rowsCorrected: '已修正 {{count}} 行',
|
|
528
|
+
rowsCorrected_one: '已修正 {{count}} 行',
|
|
529
|
+
rowsCorrected_other: '已修正 {{count}} 行',
|
|
415
530
|
clickToFix: '— 点击高亮单元格可直接修改。',
|
|
416
531
|
showingRows: '显示第 {{shown}} 行,共 {{total}} 行',
|
|
417
532
|
importing: '导入中… {{progress}}%',
|
|
@@ -419,11 +534,15 @@ const zh = {
|
|
|
419
534
|
imported: '已导入 {{count}} 条',
|
|
420
535
|
skippedCount: '已跳过 {{count}} 条',
|
|
421
536
|
moreErrors: '…还有 {{count}} 个错误',
|
|
537
|
+
moreErrors_one: '…还有 {{count}} 个错误',
|
|
538
|
+
moreErrors_other: '…还有 {{count}} 个错误',
|
|
422
539
|
cancel: '取消',
|
|
423
540
|
back: '上一步',
|
|
424
541
|
next: '下一步',
|
|
425
542
|
close: '关闭',
|
|
426
543
|
importNRows: '导入 {{count}} 行',
|
|
544
|
+
importNRows_one: '导入 {{count}} 行',
|
|
545
|
+
importNRows_other: '导入 {{count}} 行',
|
|
427
546
|
importingProgress: '导入中…',
|
|
428
547
|
requiredMark: '*',
|
|
429
548
|
optTreatHistorical: '作为历史数据导入',
|
|
@@ -436,6 +555,8 @@ const zh = {
|
|
|
436
555
|
// 自动匹配(Airtable 风格)
|
|
437
556
|
autoMatched: '自动匹配',
|
|
438
557
|
autoMatchedSummary: '已自动匹配 {{count}} 列 — 请在下方检查并调整。',
|
|
558
|
+
autoMatchedSummary_one: '已自动匹配 {{count}} 列 — 请在下方检查并调整。',
|
|
559
|
+
autoMatchedSummary_other: '已自动匹配 {{count}} 列 — 请在下方检查并调整。',
|
|
439
560
|
confidence: {
|
|
440
561
|
high: '高置信度',
|
|
441
562
|
medium: '中置信度',
|
|
@@ -443,8 +564,10 @@ const zh = {
|
|
|
443
564
|
},
|
|
444
565
|
// 下载模板
|
|
445
566
|
downloadTemplate: '下载模板',
|
|
446
|
-
downloadTemplateHint: '
|
|
567
|
+
downloadTemplateHint: '获取 Excel 模板:仅含可导入的列(必填字段标 *),并附填写说明。',
|
|
447
568
|
templateFileName: '{{object}}-导入模板',
|
|
569
|
+
templateDownloadFailed: '模板下载失败,请重试。',
|
|
570
|
+
templateNotPermitted: '您没有新建该对象记录的权限,无法获取其导入模板。',
|
|
448
571
|
// 校验(服务端 dryRun 预检)
|
|
449
572
|
validate: '校验数据',
|
|
450
573
|
validateHint: '导入前在服务端逐行校验。',
|
|
@@ -452,6 +575,8 @@ const zh = {
|
|
|
452
575
|
validatePassed: '全部 {{ok}} 行均有效。',
|
|
453
576
|
validateFailed: '{{ok}} 条有效,{{errors}} 条有错误。',
|
|
454
577
|
errorCount: '{{count}} 个错误',
|
|
578
|
+
errorCount_one: '{{count}} 个错误',
|
|
579
|
+
errorCount_other: '{{count}} 个错误',
|
|
455
580
|
errorRowPrefix: '第 {{row}} 行:',
|
|
456
581
|
// 服务端结构化导入错误的友好文案
|
|
457
582
|
referenceNotFound: '找不到匹配 "{{value}}" 的记录',
|
|
@@ -482,8 +607,14 @@ const zh = {
|
|
|
482
607
|
optBackgroundHint: '(作为可撤销任务运行)',
|
|
483
608
|
// 结果
|
|
484
609
|
createdCount: '新建 {{count}} 条',
|
|
610
|
+
createdCount_one: '新建 {{count}} 条',
|
|
611
|
+
createdCount_other: '新建 {{count}} 条',
|
|
485
612
|
updatedCount: '更新 {{count}} 条',
|
|
613
|
+
updatedCount_one: '更新 {{count}} 条',
|
|
614
|
+
updatedCount_other: '更新 {{count}} 条',
|
|
486
615
|
resultsTruncated: '显示前 {{count}} 行结果(共 {{total}} 行)。',
|
|
616
|
+
resultsTruncated_one: '显示前 {{count}} 行结果(共 {{total}} 行)。',
|
|
617
|
+
resultsTruncated_other: '显示前 {{count}} 行结果(共 {{total}} 行)。',
|
|
487
618
|
downloadFailed: '下载失败行',
|
|
488
619
|
cancelImport: '取消导入',
|
|
489
620
|
importCancelled: '导入已取消',
|
|
@@ -520,9 +651,13 @@ const zh = {
|
|
|
520
651
|
},
|
|
521
652
|
bulk: {
|
|
522
653
|
confirmDefault: '此操作将应用于 {{count}} 条记录。',
|
|
654
|
+
confirmDefault_one: '此操作将应用于 {{count}} 条记录。',
|
|
655
|
+
confirmDefault_other: '此操作将应用于 {{count}} 条记录。',
|
|
523
656
|
overLimit: '所选记录({{count}})超过该动作的上限({{limit}})。请减少选择后再继续。',
|
|
524
657
|
affectedRecords: '受影响的记录({{count}}):',
|
|
525
658
|
skippedIneligible: '{{count}} 条所选记录不符合该动作的条件,将被跳过。',
|
|
659
|
+
skippedIneligible_one: '{{count}} 条所选记录不符合该动作的条件,将被跳过。',
|
|
660
|
+
skippedIneligible_other: '{{count}} 条所选记录不符合该动作的条件,将被跳过。',
|
|
526
661
|
rowFallback: '第 {{index}} 行',
|
|
527
662
|
andMore: '……以及另外 {{count}} 条',
|
|
528
663
|
processed: '已处理 {{count}} / {{total}}',
|
|
@@ -540,7 +675,6 @@ const zh = {
|
|
|
540
675
|
undo: '撤销',
|
|
541
676
|
undoing: '撤销中…',
|
|
542
677
|
done: '完成',
|
|
543
|
-
selectPlaceholder: '请选择…',
|
|
544
678
|
loading: '加载中…',
|
|
545
679
|
},
|
|
546
680
|
},
|
|
@@ -549,16 +683,43 @@ const zh = {
|
|
|
549
683
|
month: '月',
|
|
550
684
|
week: '周',
|
|
551
685
|
day: '日',
|
|
552
|
-
agenda: '日程',
|
|
553
686
|
allDay: '全天',
|
|
554
|
-
noEvents: '暂无事件',
|
|
555
687
|
newEvent: '新建事件',
|
|
556
688
|
moreEvents: '+{{count}} 更多',
|
|
689
|
+
unscheduled: '未排期 ({{count}})',
|
|
690
|
+
loading: '加载日历中…',
|
|
691
|
+
loadError: '错误:{{message}}',
|
|
692
|
+
configRequired: '需要日历配置。请指定 startDateField,这是日历唯一必填的键;事件标题无需 titleField 也能解析。',
|
|
693
|
+
configRequiredHint: '它属于视图的 calendar 块。界面页面没有自己的日历插槽:请将其 sourceView 指向一个声明了日历的视图。',
|
|
694
|
+
eventDetails: '事件详情',
|
|
695
|
+
pullToRefresh: '下拉刷新',
|
|
696
|
+
refreshing: '刷新中…',
|
|
697
|
+
onDate: '{{date}}',
|
|
698
|
+
eventTitle: '标题',
|
|
699
|
+
eventTitlePlaceholder: '这个事件是关于什么的?',
|
|
700
|
+
creating: '创建中…',
|
|
701
|
+
titleRequired: '请填写标题',
|
|
702
|
+
a11y: {
|
|
703
|
+
region: '日历',
|
|
704
|
+
grid: '日历网格',
|
|
705
|
+
goToToday: '转到今天',
|
|
706
|
+
previousPeriod: '上一时段',
|
|
707
|
+
nextPeriod: '下一时段',
|
|
708
|
+
currentDate: '当前日期:{{date}}',
|
|
709
|
+
dayCell: '{{date}},{{count}} 个日程',
|
|
710
|
+
dayCell_one: '{{date}},{{count}} 个日程',
|
|
711
|
+
dayCell_other: '{{date}},{{count}} 个日程',
|
|
712
|
+
resizeEventEnd: '调整日程结束时间',
|
|
713
|
+
resizeEventEndHint: '拖动以更改结束日期',
|
|
714
|
+
resizeStart: '调整开始时间',
|
|
715
|
+
resizeEnd: '调整结束时间',
|
|
716
|
+
},
|
|
557
717
|
},
|
|
558
718
|
list: {
|
|
559
719
|
loading: '正在加载记录…',
|
|
560
720
|
recordCount: '{{count}} 条记录',
|
|
561
|
-
|
|
721
|
+
recordCount_one: '{{count}} 条记录',
|
|
722
|
+
recordCount_other: '{{count}} 条记录',
|
|
562
723
|
addRecord: '添加记录',
|
|
563
724
|
tabs: '标签页',
|
|
564
725
|
allRecords: '全部记录',
|
|
@@ -628,7 +789,7 @@ const zh = {
|
|
|
628
789
|
hideFieldsTitle: '隐藏字段',
|
|
629
790
|
dataLimitReached: '显示前 {{limit}} 条记录。可能有更多数据。',
|
|
630
791
|
viewSettings: '视图设置',
|
|
631
|
-
viewSettingsHint: '
|
|
792
|
+
viewSettingsHint: '分组、行颜色、密度与可见字段。对所有使用该视图的用户生效。',
|
|
632
793
|
addGroup: '添加分组字段',
|
|
633
794
|
collapsedByDefault: '默认折叠',
|
|
634
795
|
removeGroup: '删除',
|
|
@@ -693,6 +854,17 @@ const zh = {
|
|
|
693
854
|
},
|
|
694
855
|
gantt: {
|
|
695
856
|
rowLabel: '条目',
|
|
857
|
+
unusableRange: {
|
|
858
|
+
malformedDate: '甘特图日期区间不可用 —— {{path}} 的值是 {{value}},无法解析为日期。每个甘特图日期都必须能被解析:每行条目的 startDate 与 endDate,以及 schema 上钉住的 minDate / maxDate。',
|
|
859
|
+
malformedRow: '甘特图行不可用 —— {{path}} 的值是 {{value}},不是行的形状。甘特图把 items 读作行的列表,每一行是带 label 和自身 items 的对象,每一行的 items 是条形的列表;这些位置上出现 null、数字、字符串或普通对象都无法绘制。',
|
|
860
|
+
inverted: '甘特图日期区间不可用 —— minDate {{minDate}} 晚于 maxDate {{maxDate}}。钉住的 minDate / maxDate 会覆盖由行数据算出的区间,因此该坐标轴没有任何列,也无法放置任何条形;请对调这两个值。',
|
|
861
|
+
},
|
|
862
|
+
},
|
|
863
|
+
unsupported: {
|
|
864
|
+
objectBoundGantt: '不支持的变体 "gantt" —— 对象绑定的时间线只渲染 feed 变体({{variants}})。甘特图需要字面量行,每行自带嵌套的 items,因此此处的甘特轴(scale)不起作用。',
|
|
865
|
+
},
|
|
866
|
+
unconfigured: {
|
|
867
|
+
noDateAxis: '时间线需要日期轴 —— 该视图未声明任何日期字段,而对象绑定的时间线不会虚构一个。请声明以下之一:{{fields}}。第一个是 spec 写法,其余为遗留别名。',
|
|
696
868
|
},
|
|
697
869
|
},
|
|
698
870
|
gantt: {
|
|
@@ -738,6 +910,7 @@ const zh = {
|
|
|
738
910
|
},
|
|
739
911
|
aria: {
|
|
740
912
|
taskList: '任务列表',
|
|
913
|
+
refreshing: '刷新中…',
|
|
741
914
|
},
|
|
742
915
|
tooltip: {
|
|
743
916
|
days: '天',
|
|
@@ -783,13 +956,19 @@ const zh = {
|
|
|
783
956
|
conflict: {
|
|
784
957
|
title: '排程冲突',
|
|
785
958
|
body: '此次移动与依赖约束冲突。是否自动重新排程 {{count}} 个受影响的任务?',
|
|
959
|
+
body_one: '此次移动与依赖约束冲突。是否自动重新排程 {{count}} 个受影响的任务?',
|
|
960
|
+
body_other: '此次移动与依赖约束冲突。是否自动重新排程 {{count}} 个受影响的任务?',
|
|
786
961
|
confirm: '自动重新排程',
|
|
787
962
|
cancel: '保持不变',
|
|
788
963
|
},
|
|
789
964
|
autoScheduleDlg: {
|
|
790
965
|
title: '自动排程',
|
|
791
966
|
body: '将顺延 {{count}} 个任务以满足依赖约束,是否执行?',
|
|
967
|
+
body_one: '将顺延 {{count}} 个任务以满足依赖约束,是否执行?',
|
|
968
|
+
body_other: '将顺延 {{count}} 个任务以满足依赖约束,是否执行?',
|
|
792
969
|
skipped: '另有 {{count}} 项因锁定/无权限跳过。',
|
|
970
|
+
skipped_one: '另有 {{count}} 项因锁定/无权限跳过。',
|
|
971
|
+
skipped_other: '另有 {{count}} 项因锁定/无权限跳过。',
|
|
793
972
|
confirm: '执行',
|
|
794
973
|
cancel: '取消',
|
|
795
974
|
none: '依赖均满足,无需排程',
|
|
@@ -840,6 +1019,7 @@ const zh = {
|
|
|
840
1019
|
tabActionsFor: '{{name}} 的视图操作',
|
|
841
1020
|
readonlyAriaLabel: '只读视图',
|
|
842
1021
|
readonlyTooltip: '系统视图 — 由代码定义,只读。',
|
|
1022
|
+
malformedFilter: '此视图的筛选条件有误,因此不显示任何记录:无法应用 {{subject}} 条件。',
|
|
843
1023
|
},
|
|
844
1024
|
designer: {
|
|
845
1025
|
undo: '撤销',
|
|
@@ -860,6 +1040,7 @@ const zh = {
|
|
|
860
1040
|
writeStrippedReadonly: '以下字段为只读,未生效:{{fields}}',
|
|
861
1041
|
writeStrippedByState: '以下字段在记录当前状态下不可编辑,未生效:{{fields}}',
|
|
862
1042
|
writeStrippedPrimaryKey: '以下字段是记录的标识符,保存时无法修改,未生效:{{fields}}',
|
|
1043
|
+
writeStrippedComputed: '以下字段由服务端按公式计算,提交的值未生效:{{fields}}',
|
|
863
1044
|
writeStrippedUnknownReason: '以下字段未被服务端写入:{{fields}}',
|
|
864
1045
|
approvalPendingEditable: '审批中 · 可编辑',
|
|
865
1046
|
approvalPendingTooltip: '该记录有待审批的请求,但当前审批节点仍允许编辑',
|
|
@@ -881,6 +1062,8 @@ const zh = {
|
|
|
881
1062
|
pathStageLostUpcoming: '{{stage}},已失败,未到达',
|
|
882
1063
|
pathStageWonUpcoming: '{{stage}},目标阶段,未到达',
|
|
883
1064
|
linkCopied: '链接已复制到剪贴板',
|
|
1065
|
+
commentFailed: '评论未发布,内容没有保存,请重试。',
|
|
1066
|
+
reactionFailed: '表情回应未保存,请重试。',
|
|
884
1067
|
linkCopyFailed: '复制链接失败',
|
|
885
1068
|
cancel: '取消',
|
|
886
1069
|
cancelEdit: '放弃更改',
|
|
@@ -907,7 +1090,8 @@ const zh = {
|
|
|
907
1090
|
pageHeaderActions: '页面标题栏操作',
|
|
908
1091
|
emojiPicker: '表情选择器',
|
|
909
1092
|
reactionCount: '{{emoji}} {{count}} 个回应',
|
|
910
|
-
|
|
1093
|
+
reactionCount_one: '{{emoji}} {{count}} 个回应',
|
|
1094
|
+
reactionCount_other: '{{emoji}} {{count}} 个回应',
|
|
911
1095
|
recordDetail: '记录详情',
|
|
912
1096
|
recordDetailWithLabel: '{{label}}详情',
|
|
913
1097
|
openAsFullPage: '以完整页面打开',
|
|
@@ -934,7 +1118,6 @@ const zh = {
|
|
|
934
1118
|
viewAll: '查看全部',
|
|
935
1119
|
new: '新建',
|
|
936
1120
|
add: '添加',
|
|
937
|
-
emptyValue: '—',
|
|
938
1121
|
activity: '活动',
|
|
939
1122
|
history: '历史',
|
|
940
1123
|
historyEmpty: '暂无历史记录',
|
|
@@ -949,6 +1132,7 @@ const zh = {
|
|
|
949
1132
|
sortBy: '排序',
|
|
950
1133
|
filterPlaceholder: '筛选…',
|
|
951
1134
|
highlightFields: '关键字段',
|
|
1135
|
+
highlightsLabel: '记录关键字段',
|
|
952
1136
|
// Comments
|
|
953
1137
|
comments: '评论',
|
|
954
1138
|
searchComments: '搜索评论…',
|
|
@@ -960,8 +1144,14 @@ const zh = {
|
|
|
960
1144
|
unpin: '取消置顶',
|
|
961
1145
|
justNow: '刚刚',
|
|
962
1146
|
minutesAgo: '{{count}}分钟前',
|
|
1147
|
+
minutesAgo_one: '{{count}}分钟前',
|
|
1148
|
+
minutesAgo_other: '{{count}}分钟前',
|
|
963
1149
|
hoursAgo: '{{count}}小时前',
|
|
1150
|
+
hoursAgo_one: '{{count}}小时前',
|
|
1151
|
+
hoursAgo_other: '{{count}}小时前',
|
|
964
1152
|
daysAgo: '{{count}}天前',
|
|
1153
|
+
daysAgo_one: '{{count}}天前',
|
|
1154
|
+
daysAgo_other: '{{count}}天前',
|
|
965
1155
|
// Activity feed actors
|
|
966
1156
|
systemActor: '系统',
|
|
967
1157
|
unknownUser: '未知用户',
|
|
@@ -975,7 +1165,8 @@ const zh = {
|
|
|
975
1165
|
// Attachments
|
|
976
1166
|
dropFilesToUpload: '拖拽文件到此处或点击上传',
|
|
977
1167
|
attachmentCount: '{{count}} 个附件',
|
|
978
|
-
|
|
1168
|
+
attachmentCount_one: '{{count}} 个附件',
|
|
1169
|
+
attachmentCount_other: '{{count}} 个附件',
|
|
979
1170
|
removeAttachment: '移除附件',
|
|
980
1171
|
// Record Attachments panel (enable.files, objectstack#4358)
|
|
981
1172
|
attachments: '附件',
|
|
@@ -994,11 +1185,6 @@ const zh = {
|
|
|
994
1185
|
attachmentsApiUnavailable: '此对象上的附件列表不可用。',
|
|
995
1186
|
retryLoadAttachments: '重试',
|
|
996
1187
|
// Diff
|
|
997
|
-
unifiedDiff: '统一视图',
|
|
998
|
-
sideBySideDiff: '并排视图',
|
|
999
|
-
noChanges: '无变更',
|
|
1000
|
-
previousVersion: '旧版本',
|
|
1001
|
-
currentVersion: '新版本',
|
|
1002
1188
|
// Discussion
|
|
1003
1189
|
discussion: '讨论',
|
|
1004
1190
|
showDiscussion: '显示讨论 ({{count}})',
|
|
@@ -1017,18 +1203,12 @@ const zh = {
|
|
|
1017
1203
|
subscribedTooltip: '已订阅 — 点击取消订阅',
|
|
1018
1204
|
unsubscribedTooltip: '订阅通知',
|
|
1019
1205
|
// Navigation
|
|
1020
|
-
firstRecord: '第一条记录 (Home)',
|
|
1021
|
-
previousRecordKey: '上一条记录 (←)',
|
|
1022
|
-
nextRecordKey: '下一条记录 (→)',
|
|
1023
|
-
lastRecord: '最后一条记录 (End)',
|
|
1024
1206
|
noRecords: '无记录',
|
|
1025
1207
|
// objectui#3863 — base key. zh has a single plural category (`other`), so this
|
|
1026
1208
|
// slot is unreachable here and equals `_other` for key-set parity.
|
|
1027
1209
|
showEmptyRelated: '+ {{count}} 个为空',
|
|
1028
1210
|
showEmptyRelated_one: '+ {{count}} 个为空',
|
|
1029
1211
|
showEmptyRelated_other: '+ {{count}} 个为空',
|
|
1030
|
-
searchWhileNavigating: '导航时搜索',
|
|
1031
|
-
searchRecords: '搜索记录…',
|
|
1032
1212
|
// Activity timeline
|
|
1033
1213
|
allActivity: '全部动态',
|
|
1034
1214
|
commentsOnly: '仅评论',
|
|
@@ -1036,13 +1216,29 @@ const zh = {
|
|
|
1036
1216
|
tasksOnly: '仅任务',
|
|
1037
1217
|
leaveCommentPlaceholder: '留下评论… (Ctrl+Enter 提交)',
|
|
1038
1218
|
noActivity: '暂无活动记录',
|
|
1219
|
+
activityAccessDenied: '您没有查看此记录活动的权限。',
|
|
1220
|
+
commentsAccessDenied: '您没有查看此记录评论的权限。',
|
|
1221
|
+
// objectui#7149 — the rest of `ActivityTimeline`. The four chip labels the
|
|
1222
|
+
// `detail.*` pack did not already name, and the `formatFieldChange`
|
|
1223
|
+
// sentences, which are assembled in code and so need interpolation holes.
|
|
1224
|
+
allFilter: '全部',
|
|
1225
|
+
createsFilter: '创建',
|
|
1226
|
+
deletesFilter: '删除',
|
|
1227
|
+
statusChangesFilter: '状态变更',
|
|
1228
|
+
activityEmptyValue: '(空)',
|
|
1229
|
+
activityFieldChanged: '将 {{field}} 从“{{old}}”改为“{{new}}”',
|
|
1230
|
+
activityCreated: '创建了此记录',
|
|
1231
|
+
activityDeleted: '删除了此记录',
|
|
1232
|
+
activityStatusChanged: '将状态改为“{{value}}”',
|
|
1233
|
+
activityUpdated: '更新了记录',
|
|
1039
1234
|
loadMore: '加载更多',
|
|
1040
1235
|
edited: '(已编辑)',
|
|
1041
1236
|
via: '通过 {{source}}',
|
|
1042
1237
|
viewSource: '查看来源',
|
|
1043
1238
|
// Replies
|
|
1044
1239
|
replyCount: '{{count}} 条回复',
|
|
1045
|
-
|
|
1240
|
+
replyCount_one: '{{count}} 条回复',
|
|
1241
|
+
replyCount_other: '{{count}} 条回复',
|
|
1046
1242
|
replyPlaceholder: '回复…',
|
|
1047
1243
|
// 无障碍标签
|
|
1048
1244
|
filterActivity: '筛选活动',
|
|
@@ -1055,13 +1251,27 @@ const zh = {
|
|
|
1055
1251
|
copyPhone: '复制电话号码',
|
|
1056
1252
|
copyRecordId: '复制记录 ID',
|
|
1057
1253
|
showEmptyFields: '显示 {{count}} 个空字段',
|
|
1254
|
+
showEmptyFields_one: '显示 {{count}} 个空字段',
|
|
1255
|
+
showEmptyFields_other: '显示 {{count}} 个空字段',
|
|
1058
1256
|
hideEmptyFields: '隐藏空字段',
|
|
1059
1257
|
noValue: '无',
|
|
1258
|
+
unresolvedReference: '未解析的引用:{{value}} 未能解析为用户',
|
|
1259
|
+
unresolvedLookupReference: '未解析的引用:{{value}} 在本屏未能解析为记录',
|
|
1260
|
+
repeaterItemCount: '{{count}} 项',
|
|
1261
|
+
repeaterItemCount_one: '{{count}} 项',
|
|
1262
|
+
repeaterItemCount_other: '{{count}} 项',
|
|
1263
|
+
fileCount: '{{count}} 个文件',
|
|
1264
|
+
fileCount_one: '{{count}} 个文件',
|
|
1265
|
+
fileCount_other: '{{count}} 个文件',
|
|
1060
1266
|
},
|
|
1061
1267
|
chart: {
|
|
1062
|
-
noData: '暂无图表数据',
|
|
1063
1268
|
loading: '图表加载中…',
|
|
1269
|
+
refreshing: '刷新中…',
|
|
1064
1270
|
nullCategory: '(未指定)',
|
|
1271
|
+
scatterOneMeasure: '散点图只绘制一个度量。请只保留一个系列:',
|
|
1272
|
+
unconfigured: {
|
|
1273
|
+
noCategoryAxis: '图表需要分类轴 —— 对象绑定的图表不会虚构一个。请声明以下之一:',
|
|
1274
|
+
},
|
|
1065
1275
|
},
|
|
1066
1276
|
report: {
|
|
1067
1277
|
total: '总计',
|
|
@@ -1089,26 +1299,34 @@ const zh = {
|
|
|
1089
1299
|
panelTitle: '编辑报表',
|
|
1090
1300
|
},
|
|
1091
1301
|
},
|
|
1092
|
-
map: {
|
|
1093
|
-
searchLocations: '搜索位置…',
|
|
1094
|
-
locationDetails: '位置详情',
|
|
1095
|
-
markersCount: '{{count}} 个标记',
|
|
1096
|
-
invalidCoordinates: '{{count}} 条记录因坐标缺失或无效已从地图中排除。',
|
|
1097
|
-
invalidCoordinatesPlural: '{{count}} 条记录因坐标缺失或无效已从地图中排除。',
|
|
1098
|
-
},
|
|
1099
1302
|
dashboard: {
|
|
1100
1303
|
addWidget: '添加组件',
|
|
1101
|
-
removeWidget: '移除组件',
|
|
1102
1304
|
editLayout: '编辑布局',
|
|
1103
1305
|
saveLayout: '保存布局',
|
|
1104
1306
|
resetLayout: '重置布局',
|
|
1105
1307
|
total: '总计',
|
|
1106
|
-
noDataAvailable: '暂无数据',
|
|
1107
1308
|
noDataSourceFor: '没有可用的数据源:',
|
|
1108
|
-
|
|
1309
|
+
// objectui#7063 — the DEFAULT empty state every dashboard widget renders
|
|
1310
|
+
// when its query SUCCEEDED and returned nothing. It replaced the terse
|
|
1311
|
+
// per-widget `noRows` / `noDataAvailable` fragments at the render site;
|
|
1312
|
+
// objectui#7125 deleted those two keys from all ten packs once nothing
|
|
1313
|
+
// read them. The copy here has to read as a state rather than a failure,
|
|
1314
|
+
// which is why it says the widget loaded. `sourceLabel` carries its own
|
|
1315
|
+
// punctuation so the call site concatenates no separator (see
|
|
1316
|
+
// `WidgetEmptyState`).
|
|
1317
|
+
empty: {
|
|
1318
|
+
title: '暂时还没有数据',
|
|
1319
|
+
message: '该组件已成功加载,只是查询目前没有返回任何记录。',
|
|
1320
|
+
sourceLabel: '数据源:',
|
|
1321
|
+
},
|
|
1109
1322
|
loading: '加载中…',
|
|
1323
|
+
refreshing: '刷新中…',
|
|
1324
|
+
refreshAll: '全部刷新',
|
|
1325
|
+
refreshDashboard: '刷新仪表盘',
|
|
1110
1326
|
pickMeasures: '请为该数据集组件选择度量(值)。',
|
|
1111
1327
|
datasetUnsupported: '当前数据源不支持数据集查询。',
|
|
1328
|
+
widgetForbiddenTitle: '无权访问',
|
|
1329
|
+
widgetForbiddenMessage: '你没有查看该组件数据的权限。',
|
|
1112
1330
|
details: '明细',
|
|
1113
1331
|
exportCsv: '导出 CSV',
|
|
1114
1332
|
openInList: '在列表中打开',
|
|
@@ -1255,10 +1473,6 @@ const zh = {
|
|
|
1255
1473
|
appDescription: '描述',
|
|
1256
1474
|
appIcon: '图标',
|
|
1257
1475
|
template: '模板',
|
|
1258
|
-
layout: '布局',
|
|
1259
|
-
layoutSidebar: '侧边栏',
|
|
1260
|
-
layoutHeader: '顶部导航',
|
|
1261
|
-
layoutEmpty: '空白',
|
|
1262
1476
|
selectObjects: '选择对象',
|
|
1263
1477
|
searchObjects: '搜索对象…',
|
|
1264
1478
|
selectAll: '全选',
|
|
@@ -1267,7 +1481,6 @@ const zh = {
|
|
|
1267
1481
|
addGroup: '添加分组',
|
|
1268
1482
|
addUrl: '添加链接',
|
|
1269
1483
|
addSeparator: '添加分隔线',
|
|
1270
|
-
noNavItems: '暂无导航项。',
|
|
1271
1484
|
logoUrl: 'Logo 链接',
|
|
1272
1485
|
primaryColor: '主色调',
|
|
1273
1486
|
faviconUrl: '网站图标链接',
|
|
@@ -1294,13 +1507,12 @@ const zh = {
|
|
|
1294
1507
|
appearance: '外观',
|
|
1295
1508
|
rowHeight: '行高',
|
|
1296
1509
|
livePreview: '实时预览',
|
|
1297
|
-
stepBasicDesc: '
|
|
1510
|
+
stepBasicDesc: '名称、标题和图标',
|
|
1298
1511
|
stepObjectsDesc: '选择业务对象',
|
|
1299
1512
|
stepNavigationDesc: '构建导航树',
|
|
1300
1513
|
stepBrandingDesc: 'Logo、颜色和图标',
|
|
1301
1514
|
noObjectsFound: '未找到对象。',
|
|
1302
1515
|
noNavItemsHint: '暂无导航项。请在上一步选择对象或手动添加项目。',
|
|
1303
|
-
separator: '分隔线',
|
|
1304
1516
|
separatorLabel: '— 分隔线 —',
|
|
1305
1517
|
newGroup: '新建分组',
|
|
1306
1518
|
newLink: '新建链接',
|
|
@@ -1334,6 +1546,7 @@ const zh = {
|
|
|
1334
1546
|
navTypeSeparator: '分隔线',
|
|
1335
1547
|
navTypeAction: '操作',
|
|
1336
1548
|
navTypeComponent: '组件',
|
|
1549
|
+
navTypeDoc: '文档',
|
|
1337
1550
|
navEditIcon: '编辑图标',
|
|
1338
1551
|
navToggleVisible: '切换可见性',
|
|
1339
1552
|
navHidden: '已隐藏',
|
|
@@ -1411,11 +1624,8 @@ const zh = {
|
|
|
1411
1624
|
defaultValue: '默认值',
|
|
1412
1625
|
placeholder: '占位文本',
|
|
1413
1626
|
referenceTo: '引用对象',
|
|
1414
|
-
formula: '公式',
|
|
1415
1627
|
options: '选项',
|
|
1416
1628
|
addOption: '添加选项',
|
|
1417
|
-
validationRules: '验证规则',
|
|
1418
|
-
addRule: '添加规则',
|
|
1419
1629
|
systemBadge: '系统',
|
|
1420
1630
|
ungrouped: '通用',
|
|
1421
1631
|
deleteConfirmTitle: '删除字段?',
|
|
@@ -1434,21 +1644,57 @@ const zh = {
|
|
|
1434
1644
|
},
|
|
1435
1645
|
},
|
|
1436
1646
|
console: {
|
|
1647
|
+
studio: {
|
|
1648
|
+
backToHome: '返回首页',
|
|
1649
|
+
},
|
|
1437
1650
|
saveAdvisoryTitle: '已保存 — 编辑检查提出了 {{count}} 条建议',
|
|
1651
|
+
saveAdvisoryTitle_one: '已保存 — 编辑检查提出了 {{count}} 条建议',
|
|
1652
|
+
saveAdvisoryTitle_other: '已保存 — 编辑检查提出了 {{count}} 条建议',
|
|
1653
|
+
publishAdvisoryTitle: '已发布 — 编辑检查提出了 {{count}} 条建议',
|
|
1654
|
+
publishAdvisoryTitle_one: '已发布 — 编辑检查提出了 {{count}} 条建议',
|
|
1655
|
+
publishAdvisoryTitle_other: '已发布 — 编辑检查提出了 {{count}} 条建议',
|
|
1656
|
+
importMappingsUnavailable: "无法加载 {{object}} 的已保存导入映射",
|
|
1657
|
+
importMappingsRefused: "服务器拒绝了此请求,因此该列表为空是因为读取失败,而不是因为没有注册任何映射。请重新登录,或联系管理员申请访问权限。",
|
|
1658
|
+
importMappingsUnreadable: "该列表为空是因为读取失败,而不是因为没有注册任何映射。请重试;如果反复出现,请反馈此问题。",
|
|
1659
|
+
savedViewsUnavailable: "无法加载 {{object}} 的已保存视图",
|
|
1660
|
+
savedViewsRefused: "服务器拒绝了此请求,因此该列表为空是因为读取失败,而不是因为该对象没有已保存的视图。请重新登录,或联系管理员申请访问权限。",
|
|
1661
|
+
savedViewsUnreadable: "该列表为空是因为读取失败,而不是因为该对象没有已保存的视图。请重试;如果反复出现,请反馈此问题。",
|
|
1438
1662
|
title: 'ObjectStack 控制台',
|
|
1439
1663
|
initializing: '正在初始化应用程序…',
|
|
1440
1664
|
search: '搜索…',
|
|
1441
1665
|
breadcrumb: {
|
|
1442
1666
|
dashboards: '仪表盘',
|
|
1443
1667
|
pages: '页面',
|
|
1444
|
-
|
|
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: '报表',
|
|
1445
1681
|
system: '系统',
|
|
1682
|
+
marketplace: '应用市场',
|
|
1683
|
+
settings: '设置',
|
|
1684
|
+
apps: '应用',
|
|
1685
|
+
profile: '个人资料',
|
|
1686
|
+
approvals: '审批',
|
|
1687
|
+
aiApprovals: 'AI 审批',
|
|
1688
|
+
auditLog: '审计日志',
|
|
1446
1689
|
},
|
|
1447
1690
|
nav: {
|
|
1448
1691
|
pinItem: '固定 {{name}}',
|
|
1449
1692
|
unpinItem: '取消固定 {{name}}',
|
|
1450
1693
|
dragToReorder: '拖动以重新排序',
|
|
1451
1694
|
favorites: '收藏',
|
|
1695
|
+
launcherLabel: '应用启动台',
|
|
1696
|
+
menuLabel: '应用导航',
|
|
1697
|
+
menuEmpty: '此应用没有你可以打开的导航项。',
|
|
1452
1698
|
},
|
|
1453
1699
|
settingsHub: {
|
|
1454
1700
|
title: '设置',
|
|
@@ -1575,9 +1821,16 @@ const zh = {
|
|
|
1575
1821
|
statusFull: '额度已用完',
|
|
1576
1822
|
resetsDaily: '今晚重置',
|
|
1577
1823
|
resetsMonthly: '下个周期重置',
|
|
1824
|
+
resetsWeeklyDays: '{{count}} 天后重置',
|
|
1825
|
+
resetsWeeklyDays_one: '{{count}} 天后重置',
|
|
1826
|
+
resetsWeeklyDays_other: '{{count}} 天后重置',
|
|
1827
|
+
resetsWeeklyHours: '{{count}} 小时后重置',
|
|
1828
|
+
resetsWeeklyHours_one: '{{count}} 小时后重置',
|
|
1829
|
+
resetsWeeklyHours_other: '{{count}} 小时后重置',
|
|
1578
1830
|
ctaUpgrade: '升级以继续使用',
|
|
1579
1831
|
ctaTopUp: '购买额度包以继续',
|
|
1580
1832
|
ariaLabel: 'AI 用量:{{status}}',
|
|
1833
|
+
breakdownTitle: '已用额度构成',
|
|
1581
1834
|
},
|
|
1582
1835
|
workspaceTitle: 'AI 工作区',
|
|
1583
1836
|
workspaceSubtitle: '提问、查看并继续历史对话',
|
|
@@ -1587,6 +1840,31 @@ const zh = {
|
|
|
1587
1840
|
share: '分享',
|
|
1588
1841
|
shareTitle: '分享此对话',
|
|
1589
1842
|
shareDisabledTitle: '开始对话后即可分享',
|
|
1843
|
+
buildDoctor: '构建诊断',
|
|
1844
|
+
buildDoctorTitle: '构建诊断 — 实际生效了哪些变更?',
|
|
1845
|
+
buildDoctorDisabledTitle: '请先发送一条消息',
|
|
1846
|
+
buildDoctorDrawer: {
|
|
1847
|
+
description: '智能体声称的变更与实际已生效的内容对照。只读诊断。',
|
|
1848
|
+
reconciling: '正在核对…',
|
|
1849
|
+
notAvailable: '不可用——未找到该对话,或你没有访问权限。',
|
|
1850
|
+
untitled: '(无标题)',
|
|
1851
|
+
summary: '{{turns}} 轮 · {{messages}} 条消息 · {{tokens}} tok · LLM {{seconds}} 秒',
|
|
1852
|
+
allLive: '全部 {{count}} 项尝试的变更均已生效——没有丢失。',
|
|
1853
|
+
discrepancies: '{{count}} 处不一致——对话中所说的与实际生效的内容不符。',
|
|
1854
|
+
orphanedTitle: '已提议但从未应用',
|
|
1855
|
+
orphanedHint: '智能体提议了确认卡片,但之后没有任何一轮应用它——该变更被静默丢弃。',
|
|
1856
|
+
missingTitle: '声称已应用但缺失',
|
|
1857
|
+
missingHint: '工具结果称已应用,但该产物并未在 sys_metadata 中生效。',
|
|
1858
|
+
toolErrorsTitle: '工具错误',
|
|
1859
|
+
toolErrorsHint: '构建期间返回错误的工具调用。',
|
|
1860
|
+
verifyTitle: '构建检查(verify_build)',
|
|
1861
|
+
yourApp: '你的应用:',
|
|
1862
|
+
noIssues: '0 个问题',
|
|
1863
|
+
issueCount: '{{count}} 个问题',
|
|
1864
|
+
platformNoise: '已隐藏 {{count}} 条平台 sys_* 发现',
|
|
1865
|
+
pendingActions: '待处理操作',
|
|
1866
|
+
timeline: '时间线({{count}})',
|
|
1867
|
+
},
|
|
1590
1868
|
newChat: '新对话',
|
|
1591
1869
|
searchChats: '搜索对话…',
|
|
1592
1870
|
noChatsYet: '暂无对话',
|
|
@@ -1616,7 +1894,7 @@ const zh = {
|
|
|
1616
1894
|
empty: {
|
|
1617
1895
|
build: {
|
|
1618
1896
|
title: '用 AI 搭建',
|
|
1619
|
-
description: '
|
|
1897
|
+
description: '用自然语言描述一个应用 —— 我会起草对象、界面和示例数据,随后你审阅并发布。',
|
|
1620
1898
|
},
|
|
1621
1899
|
ask: {
|
|
1622
1900
|
title: '向你的数据提问',
|
|
@@ -1625,7 +1903,7 @@ const zh = {
|
|
|
1625
1903
|
editApp: {
|
|
1626
1904
|
title: '正在编辑「{{app}}」',
|
|
1627
1905
|
titleGeneric: '编辑此应用',
|
|
1628
|
-
description: '想改点什么?我会就地修改这个应用 ——
|
|
1906
|
+
description: '想改点什么?我会就地修改这个应用 —— 加字段、对象、视图或仪表盘,或调整已有内容。',
|
|
1629
1907
|
},
|
|
1630
1908
|
},
|
|
1631
1909
|
clearConversation: '清空',
|
|
@@ -1709,23 +1987,41 @@ const zh = {
|
|
|
1709
1987
|
recentRecords: '帮我列出最近创建的 5 条记录。',
|
|
1710
1988
|
recordCounts: '统计每个对象的记录数。',
|
|
1711
1989
|
},
|
|
1990
|
+
// cloud#1984 — these five chips are the maker's own recommendations, so
|
|
1991
|
+
// they may only ask for what ADR-0112 v1 BUILDS: objects, fields, views
|
|
1992
|
+
// (grid/kanban/calendar/gallery), pages, dashboards and sample data. No
|
|
1993
|
+
// wording that promises autonomous behaviour (alert / remind / notify /
|
|
1994
|
+
// automate / status workflow) — v1 has no flows, actions or schedules, and
|
|
1995
|
+
// the model silently degrades such a request into a board or a filtered
|
|
1996
|
+
// view, so the chip would promise an alert and deliver a page. REVERT to
|
|
1997
|
+
// the automation wording when ADR-0112 v2 re-adds flows and actions.
|
|
1712
1998
|
metadataAssistant: {
|
|
1713
|
-
buildCrm: '帮我搭建一个 CRM
|
|
1714
|
-
buildApp: '
|
|
1715
|
-
buildFlow: '
|
|
1716
|
-
buildInventory: '
|
|
1717
|
-
buildRecruiting: '
|
|
1999
|
+
buildCrm: '帮我搭建一个 CRM:客户、联系人、商机,以及一个按阶段汇总商机金额的仪表盘。',
|
|
2000
|
+
buildApp: '做一个项目管理应用:项目、任务(负责人、截止日期),按状态分组的看板,以及按截止日期的日历视图。',
|
|
2001
|
+
buildFlow: '设计一个工单系统:工单、优先级、状态(下拉),以及按状态分组的看板。',
|
|
2002
|
+
buildInventory: '做一个库存管理应用:商品、库存量、供应商,并用一个视图筛出低于安全库存的商品。',
|
|
2003
|
+
buildRecruiting: '做一个招聘跟踪应用:候选人、在招岗位、面试阶段字段,以及按阶段分组的看板。',
|
|
1718
2004
|
},
|
|
1719
2005
|
generic: {
|
|
1720
2006
|
help: '你可以帮我做什么?',
|
|
1721
2007
|
availableObjects: '列出可用的数据对象。',
|
|
1722
2008
|
recentActivity: '总结我的最近动态。',
|
|
1723
2009
|
},
|
|
2010
|
+
// objectui#7709 — the edit-mode starters, shown when the maker is bound
|
|
2011
|
+
// to an EXISTING app (`?package=`). Same rule as the five above: they
|
|
2012
|
+
// may only ask for what ADR-0112 v1 BUILDS. The fourth chip used to be
|
|
2013
|
+
// `addAutomation` ("an approval, a status flow, or a notification") and
|
|
2014
|
+
// every capability it named is refused by v1 (cloud#1956 / PR #1970), so
|
|
2015
|
+
// it now asks for sample data — `seed` IS on v1's whitelist, and having
|
|
2016
|
+
// no data is what an existing app most often lacks. REVERT: when
|
|
2017
|
+
// ADR-0112 v2 re-adds flows and actions, THIS chip's automation wording
|
|
2018
|
+
// comes back as `addAutomation`; the retired string is pinned for every
|
|
2019
|
+
// pack in `packages/i18n/src/__tests__/makerEditChips-v1-scope-7709.test.ts`.
|
|
1724
2020
|
editApp: {
|
|
1725
2021
|
addField: '给某个对象加一个字段。',
|
|
1726
2022
|
addObject: '新增一个对象,并关联到已有对象。',
|
|
1727
2023
|
addDashboard: '加一个展示关键指标的仪表盘。',
|
|
1728
|
-
|
|
2024
|
+
addSampleData: '给现有对象补一批贴近真实的示例数据,好拿去演示。',
|
|
1729
2025
|
},
|
|
1730
2026
|
},
|
|
1731
2027
|
// objectui#3546 slice four — the AI console surfaces: the /ai chat page's app switcher,
|
|
@@ -1780,6 +2076,21 @@ const zh = {
|
|
|
1780
2076
|
older: '更早',
|
|
1781
2077
|
},
|
|
1782
2078
|
},
|
|
2079
|
+
// objectui#9954 — see the `en` pack for what raises each case.
|
|
2080
|
+
readRate: {
|
|
2081
|
+
ratioTitle: '本环境读取量异常',
|
|
2082
|
+
ratio: '每写入 1 行就读取 {{ratio}} 行。平台会标记高于 {{threshold}} 的比率。没有任何东西被限制或阻断;这只是一份报告,便于检查读取方式。',
|
|
2083
|
+
noWritesTitle: '本环境只有读取、完全没有写入',
|
|
2084
|
+
noWrites: '有行被读取,却完全没有任何写入,因此读取比率没有上限。这是最严重的读数。平台会标记高于 {{threshold}} 的比率。没有任何东西被限制或阻断;这只是一份报告,便于检查读取方式。',
|
|
2085
|
+
},
|
|
2086
|
+
// objectui#10439 — see the `en` pack for what raises each case.
|
|
2087
|
+
storageUsage: {
|
|
2088
|
+
warningTitle: '存储空间即将用满',
|
|
2089
|
+
warning: '已用 {{used}} MB / {{limit}} MB。存储用满后,上传与导入将暂停。',
|
|
2090
|
+
blockedTitle: '存储已满,上传与导入已暂停',
|
|
2091
|
+
blocked: '已用 {{used}} MB / {{limit}} MB。现有数据不受影响,读取、导出与单条记录编辑照常。',
|
|
2092
|
+
upgrade: '升级以继续',
|
|
2093
|
+
},
|
|
1783
2094
|
errors: {
|
|
1784
2095
|
somethingWentWrong: '出错了',
|
|
1785
2096
|
unexpectedError: '渲染此视图时发生意外错误。',
|
|
@@ -1829,6 +2140,7 @@ const zh = {
|
|
|
1829
2140
|
objectView: {
|
|
1830
2141
|
systemViewReadonly: '系统视图由代码定义,只读。',
|
|
1831
2142
|
cannotEditMetaView: '该视图为内置视图,由代码定义,无法修改。',
|
|
2143
|
+
viewConfigPermissionDenied: '视图配置对所有使用该视图的用户生效,因此修改它需要「管理元数据」权限。请联系管理员进行修改。',
|
|
1832
2144
|
cannotDeleteMetaView: '该视图为内置视图,由代码定义,无法删除。',
|
|
1833
2145
|
expandToPage: '以完整页面打开',
|
|
1834
2146
|
objectNotFound: '未找到对象',
|
|
@@ -1841,14 +2153,17 @@ const zh = {
|
|
|
1841
2153
|
import: '导入',
|
|
1842
2154
|
importTitle: '从 CSV 文件导入',
|
|
1843
2155
|
importedToast: '成功导入 {{count}} 行。',
|
|
2156
|
+
importedToast_one: '成功导入 {{count}} 行。',
|
|
2157
|
+
importedToast_other: '成功导入 {{count}} 行。',
|
|
1844
2158
|
importedWithSkipped: '已导入 {{ok}} 行;跳过 {{skipped}} 行。',
|
|
1845
2159
|
configureView: '配置视图',
|
|
1846
|
-
toolbar: '工具栏',
|
|
1847
2160
|
toolbarEnabledCount: '已启用 {{count}}/{{total}} 项',
|
|
1848
2161
|
searchFields: '搜索字段…',
|
|
1849
2162
|
title: '标题',
|
|
1850
2163
|
viewType: '视图类型',
|
|
1851
2164
|
recordCount: '{{count}} 条记录',
|
|
2165
|
+
recordCount_one: '{{count}} 条记录',
|
|
2166
|
+
recordCount_other: '{{count}} 条记录',
|
|
1852
2167
|
save: '保存',
|
|
1853
2168
|
discard: '丢弃',
|
|
1854
2169
|
createView: '创建视图',
|
|
@@ -1859,6 +2174,8 @@ const zh = {
|
|
|
1859
2174
|
deleteViewTitle: '删除视图',
|
|
1860
2175
|
deleteViewConfirm: '确定要删除视图 "{{name}}" 吗?此操作无法撤销。',
|
|
1861
2176
|
bulkDeleteConfirm: '确定要删除选中的 {{count}} 条记录吗?此操作无法撤销。',
|
|
2177
|
+
bulkDeleteConfirm_one: '确定要删除选中的 {{count}} 条记录吗?此操作无法撤销。',
|
|
2178
|
+
bulkDeleteConfirm_other: '确定要删除选中的 {{count}} 条记录吗?此操作无法撤销。',
|
|
1862
2179
|
duplicateViewName: '已存在同名视图。',
|
|
1863
2180
|
viewTypeGrid: '表格',
|
|
1864
2181
|
viewTypeGridDesc: '电子表格风格的记录表格。',
|
|
@@ -1911,11 +2228,14 @@ const zh = {
|
|
|
1911
2228
|
chartTypePie: '饼图',
|
|
1912
2229
|
chartTypeArea: '面积图',
|
|
1913
2230
|
chartTypeScatter: '散点图',
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
2231
|
+
dataset: '数据集',
|
|
2232
|
+
datasetHelp: '图表从该对象的这个数据集读取数值。',
|
|
2233
|
+
chartMeasure: '度量',
|
|
2234
|
+
chartMeasureHelp: '在数值轴上绘制的数据集度量。',
|
|
2235
|
+
chartDimension: '维度',
|
|
2236
|
+
chartDimensionHelp: '用于对数值分组的数据集维度(可选)。',
|
|
2237
|
+
viewTypeUnavailableDataset: '该对象没有可用于图表的数据集。',
|
|
2238
|
+
noDatasetMeasure: '该数据集未声明可绘制的度量。',
|
|
1919
2239
|
endDateField: '结束日期字段',
|
|
1920
2240
|
ufTabs: '标签页',
|
|
1921
2241
|
ufAddField: '+ 添加筛选字段…',
|
|
@@ -1962,6 +2282,8 @@ const zh = {
|
|
|
1962
2282
|
resendOtpCountdownText: '{seconds} 秒后可重新发送',
|
|
1963
2283
|
usePhoneOtpText: '使用验证码登录',
|
|
1964
2284
|
usePasswordSignInText: '改用密码登录',
|
|
2285
|
+
socialButton: '使用 {provider} 继续',
|
|
2286
|
+
orText: '或使用邮箱继续',
|
|
1965
2287
|
},
|
|
1966
2288
|
register: {
|
|
1967
2289
|
title: '创建账户',
|
|
@@ -1980,8 +2302,12 @@ const zh = {
|
|
|
1980
2302
|
submittingButton: '创建中…',
|
|
1981
2303
|
hasAccountText: '已有账户?',
|
|
1982
2304
|
signInText: '登录',
|
|
2305
|
+
socialButton: '使用 {provider} 注册',
|
|
2306
|
+
orText: '或使用邮箱继续',
|
|
1983
2307
|
errors: {
|
|
1984
2308
|
userExists: '该邮箱已被注册,请直接登录或更换邮箱。',
|
|
2309
|
+
selfRegistrationClosed: '本环境未开放自助注册,请联系管理员获取邀请。',
|
|
2310
|
+
emailDomainNotAllowed: '该邮箱的域名不允许在此注册,请使用组织邮箱,或联系管理员获取邀请。',
|
|
1985
2311
|
},
|
|
1986
2312
|
verifyInbox: {
|
|
1987
2313
|
title: '请检查您的邮箱',
|
|
@@ -2194,6 +2520,15 @@ const zh = {
|
|
|
2194
2520
|
role: '角色',
|
|
2195
2521
|
save: '保存更改',
|
|
2196
2522
|
},
|
|
2523
|
+
language: {
|
|
2524
|
+
title: '语言',
|
|
2525
|
+
description: '发送给您的通知和消息所使用的语言。界面语言另行设置,在地球图标菜单中切换。',
|
|
2526
|
+
label: '首选语言',
|
|
2527
|
+
systemDefault: '使用部署默认值',
|
|
2528
|
+
save: '保存',
|
|
2529
|
+
saved: '语言偏好已更新。',
|
|
2530
|
+
readOnly: '您账户的语言由管理员管理。',
|
|
2531
|
+
},
|
|
2197
2532
|
password: {
|
|
2198
2533
|
changeTitle: '修改密码',
|
|
2199
2534
|
setTitle: '设置本地密码',
|
|
@@ -2225,7 +2560,6 @@ const zh = {
|
|
|
2225
2560
|
label: '工作区',
|
|
2226
2561
|
default: '我的工作区',
|
|
2227
2562
|
switch: '切换工作区',
|
|
2228
|
-
create: '创建工作区',
|
|
2229
2563
|
createTitle: '创建工作区',
|
|
2230
2564
|
createDescription: '工作区是团队协作的共享空间。',
|
|
2231
2565
|
createButton: '创建工作区',
|
|
@@ -2248,7 +2582,6 @@ const zh = {
|
|
|
2248
2582
|
},
|
|
2249
2583
|
sidebar: {
|
|
2250
2584
|
settings: '设置',
|
|
2251
|
-
help: '帮助',
|
|
2252
2585
|
helpTooltip: '帮助与文档',
|
|
2253
2586
|
activityFeed: '活动动态',
|
|
2254
2587
|
notifications: '通知',
|
|
@@ -2288,7 +2621,6 @@ const zh = {
|
|
|
2288
2621
|
},
|
|
2289
2622
|
home: {
|
|
2290
2623
|
title: '首页',
|
|
2291
|
-
subtitle: '您的工作区仪表盘',
|
|
2292
2624
|
nav: '首页',
|
|
2293
2625
|
allApps: '全部应用',
|
|
2294
2626
|
yourApps: '我的应用',
|
|
@@ -2315,14 +2647,7 @@ const zh = {
|
|
|
2315
2647
|
marketplaceDisabled: '本运行时未配置应用市场,因此这里没有可安装的模板。',
|
|
2316
2648
|
},
|
|
2317
2649
|
open: '打开',
|
|
2318
|
-
stats: {
|
|
2319
|
-
apps: '应用',
|
|
2320
|
-
starred: '收藏',
|
|
2321
|
-
recent: '最近访问',
|
|
2322
|
-
},
|
|
2323
2650
|
loading: '正在加载工作区…',
|
|
2324
|
-
recent: '最近使用',
|
|
2325
|
-
starred: '收藏',
|
|
2326
2651
|
welcome: '用 AI 搭建你的业务系统',
|
|
2327
2652
|
welcomeDescription: '用一句话描述你的业务,AI 帮你生成对象、界面、API 和 agent 工具。也可以手动从零开始。',
|
|
2328
2653
|
welcomeAdminDescription: '用一句话描述你的业务,AI 会为你生成对象、界面、API 和智能体工具;也可以从左侧菜单自行搭建。',
|
|
@@ -2339,6 +2664,8 @@ const zh = {
|
|
|
2339
2664
|
},
|
|
2340
2665
|
pendingDrafts: {
|
|
2341
2666
|
message: '你有 {{count}} 项未发布的更改 —— 点击发布即可生效。',
|
|
2667
|
+
message_one: '你有 {{count}} 项未发布的更改 —— 点击发布即可生效。',
|
|
2668
|
+
message_other: '你有 {{count}} 项未发布的更改 —— 点击发布即可生效。',
|
|
2342
2669
|
cta: '发布',
|
|
2343
2670
|
publishing: '发布中…',
|
|
2344
2671
|
published: '已发布!更改已生效。',
|
|
@@ -2356,8 +2683,6 @@ const zh = {
|
|
|
2356
2683
|
browseMarketplace: '浏览应用市场',
|
|
2357
2684
|
quickActions: {
|
|
2358
2685
|
title: '快捷操作',
|
|
2359
|
-
createApp: '创建应用',
|
|
2360
|
-
createAppDesc: '从新应用开始',
|
|
2361
2686
|
manageObjects: '管理对象',
|
|
2362
2687
|
manageObjectsDesc: '配置数据模型',
|
|
2363
2688
|
systemSettings: '系统设置',
|
|
@@ -2369,7 +2694,9 @@ const zh = {
|
|
|
2369
2694
|
object: '对象',
|
|
2370
2695
|
dashboard: '仪表盘',
|
|
2371
2696
|
page: '页面',
|
|
2697
|
+
report: '报表',
|
|
2372
2698
|
record: '记录',
|
|
2699
|
+
metadata: '元数据',
|
|
2373
2700
|
},
|
|
2374
2701
|
},
|
|
2375
2702
|
starredApps: {
|
|
@@ -2406,7 +2733,6 @@ const zh = {
|
|
|
2406
2733
|
organizations: '组织',
|
|
2407
2734
|
roles: '角色',
|
|
2408
2735
|
configuration: '配置',
|
|
2409
|
-
createApp: '创建应用',
|
|
2410
2736
|
administration: '管理',
|
|
2411
2737
|
datasources: '数据源',
|
|
2412
2738
|
documentation: '文档',
|
|
@@ -2421,6 +2747,7 @@ const zh = {
|
|
|
2421
2747
|
typeUpdate: '更新',
|
|
2422
2748
|
typeDelete: '删除',
|
|
2423
2749
|
typeComment: '评论',
|
|
2750
|
+
typeSystem: '系统',
|
|
2424
2751
|
relativeJustNow: '刚刚',
|
|
2425
2752
|
relativeSecondsAgo: '{{count}} 秒前',
|
|
2426
2753
|
relativeMinutesAgo: '{{count}} 分钟前',
|
|
@@ -2441,8 +2768,11 @@ const zh = {
|
|
|
2441
2768
|
placeholder: '搜索对象、仪表板、页面、报表…',
|
|
2442
2769
|
inputAriaLabel: '搜索对象、仪表板、页面、报表',
|
|
2443
2770
|
resultsCount: '找到 {{count}} 条与“{{query}}”相关的结果',
|
|
2444
|
-
|
|
2771
|
+
resultsCount_one: '找到 {{count}} 条与“{{query}}”相关的结果',
|
|
2772
|
+
resultsCount_other: '找到 {{count}} 条与“{{query}}”相关的结果',
|
|
2445
2773
|
itemsAvailable: '共 {{count}} 项可搜索',
|
|
2774
|
+
itemsAvailable_one: '共 {{count}} 项可搜索',
|
|
2775
|
+
itemsAvailable_other: '共 {{count}} 项可搜索',
|
|
2446
2776
|
noResults: '未找到结果',
|
|
2447
2777
|
noResultsHint: '请尝试调整搜索关键字',
|
|
2448
2778
|
typeObjects: '对象',
|
|
@@ -2469,7 +2799,11 @@ const zh = {
|
|
|
2469
2799
|
noAppsConfigured: '尚未配置应用',
|
|
2470
2800
|
noAppsConfiguredDescription: '当前没有任何已注册的应用。请创建您的第一个应用,或前往系统设置进行配置。',
|
|
2471
2801
|
appNotAvailable: '应用不可用',
|
|
2472
|
-
appNotAvailableDescription: '
|
|
2802
|
+
appNotAvailableDescription: '此应用不可用 —— 请稍后重试。',
|
|
2803
|
+
appNotFound: '无法打开此应用',
|
|
2804
|
+
appNotFoundDescription: '服务器未返回你的账号可访问的此应用。',
|
|
2805
|
+
appUnreachable: '无法连接到服务器',
|
|
2806
|
+
appUnreachableDescription: '无法检查此应用。请稍后重试。',
|
|
2473
2807
|
appAccessDenied: '你没有访问此应用的权限',
|
|
2474
2808
|
appAccessDeniedDescription: '此应用存在,但你的账号未获授权打开它。请联系管理员为你开通访问权限。',
|
|
2475
2809
|
appAccessDeniedHome: '返回首页',
|
|
@@ -2512,11 +2846,15 @@ const zh = {
|
|
|
2512
2846
|
detailNone: '未检测到差异 —— 草稿与已发布版本一致。',
|
|
2513
2847
|
detailChangedKeys: '其他变更:',
|
|
2514
2848
|
confirmNote: '发布将一次性(原子地)发布此包全部 {{count}} 个待发布草稿。',
|
|
2849
|
+
confirmNote_one: '发布将一次性(原子地)发布此包全部 {{count}} 个待发布草稿。',
|
|
2850
|
+
confirmNote_other: '发布将一次性(原子地)发布此包全部 {{count}} 个待发布草稿。',
|
|
2515
2851
|
publishConfirm: '全部发布',
|
|
2516
|
-
// [
|
|
2852
|
+
// [`7a90afdf9`] Pre-publish security-posture findings, shown next to
|
|
2517
2853
|
// the confirm button so a refusal the door would issue is read BEFORE
|
|
2518
2854
|
// the click rather than as a toast after the batch rolled back.
|
|
2519
2855
|
securityBlockTitle: '发布会被拒绝 —— 有 {{count}} 项需要先做出决定',
|
|
2856
|
+
securityBlockTitle_one: '发布会被拒绝 —— 有 {{count}} 项需要先做出决定',
|
|
2857
|
+
securityBlockTitle_other: '发布会被拒绝 —— 有 {{count}} 项需要先做出决定',
|
|
2520
2858
|
securityBlockWhere: '请在对象的“设置 → 记录共享模型”中修改后重新发布。',
|
|
2521
2859
|
},
|
|
2522
2860
|
// ADR-0045 — the materialized-but-unlisted app banner
|
|
@@ -2541,7 +2879,7 @@ const zh = {
|
|
|
2541
2879
|
revertLabel: '已撤销一处变更',
|
|
2542
2880
|
applyLabel: '构建变更',
|
|
2543
2881
|
revert: '撤销',
|
|
2544
|
-
items: '项',
|
|
2882
|
+
items: '{{count}} 项',
|
|
2545
2883
|
revertAction: '撤销',
|
|
2546
2884
|
reverted: '已撤销 —— 该变更已还原。',
|
|
2547
2885
|
revertFailed: '撤销失败',
|
|
@@ -2555,22 +2893,17 @@ const zh = {
|
|
|
2555
2893
|
requiredError: '{{label}} 为必填项',
|
|
2556
2894
|
lookupPlaceholder: '{{label}} 的记录 ID',
|
|
2557
2895
|
lookupHelpText: '该参数未配置引用对象,无法使用记录选择器。请直接填写记录 ID,或联系管理员修正该动作参数。',
|
|
2896
|
+
unresolvedParam: '无法显示该参数:它所依据的字段不在对象元数据中,因此无法构建它所需的控件。请联系管理员修正该动作定义。',
|
|
2897
|
+
carryOverHint: '原样带入(只读)',
|
|
2558
2898
|
cancel: '取消',
|
|
2559
2899
|
confirm: '确认',
|
|
2560
2900
|
uploading: '上传中…',
|
|
2561
|
-
defaultActionTitle: '操作',
|
|
2562
|
-
ok: '确定',
|
|
2563
2901
|
},
|
|
2564
2902
|
actionConfirm: {
|
|
2565
2903
|
title: '确认操作',
|
|
2566
2904
|
confirm: '继续',
|
|
2567
2905
|
cancel: '取消',
|
|
2568
2906
|
},
|
|
2569
|
-
rowAction: {
|
|
2570
|
-
openMenu: '更多操作',
|
|
2571
|
-
edit: '编辑',
|
|
2572
|
-
delete: '删除',
|
|
2573
|
-
},
|
|
2574
2907
|
navigationSync: {
|
|
2575
2908
|
addedPage: '导航已更新:已添加页面 “{{name}}”',
|
|
2576
2909
|
addedDashboard: '导航已更新:已添加仪表板 “{{name}}”',
|
|
@@ -2591,6 +2924,8 @@ const zh = {
|
|
|
2591
2924
|
resetPackageSetConfirm: '该权限集随已安装的软件包发布,无法删除。删除操作将丢弃环境定制并把它重置为发布基线。是否继续?',
|
|
2592
2925
|
resetPackageSetSuccess: '权限集已重置为发布基线',
|
|
2593
2926
|
bulkDeleteSuccess: '已删除 {{count}} 条 {{label}} 记录',
|
|
2927
|
+
bulkDeleteSuccess_one: '已删除 {{count}} 条 {{label}} 记录',
|
|
2928
|
+
bulkDeleteSuccess_other: '已删除 {{count}} 条 {{label}} 记录',
|
|
2594
2929
|
bulkDeletePartial: '成功 {{succeeded}} 条,失败 {{failed}} 条',
|
|
2595
2930
|
},
|
|
2596
2931
|
objectViewActions: {
|
|
@@ -2602,15 +2937,6 @@ const zh = {
|
|
|
2602
2937
|
exportFailed: '导出失败:{{message}}',
|
|
2603
2938
|
forecastSoon: '预测视图即将上线',
|
|
2604
2939
|
},
|
|
2605
|
-
recordDetail: {
|
|
2606
|
-
viewersTooltip: '正在查看此记录的用户',
|
|
2607
|
-
},
|
|
2608
|
-
cellRender: {
|
|
2609
|
-
empty: '空',
|
|
2610
|
-
yes: '是',
|
|
2611
|
-
no: '否',
|
|
2612
|
-
systemFields: '系统字段',
|
|
2613
|
-
},
|
|
2614
2940
|
user: {
|
|
2615
2941
|
profile: '个人资料',
|
|
2616
2942
|
settings: '设置',
|
|
@@ -2780,15 +3106,30 @@ const zh = {
|
|
|
2780
3106
|
viewAll: '查看全部通知',
|
|
2781
3107
|
groupCount: '{{count}} 条通知',
|
|
2782
3108
|
groupUnread: '{{count}} 条未读',
|
|
3109
|
+
groupUnread_one: '{{count}} 条未读',
|
|
3110
|
+
groupUnread_other: '{{count}} 条未读',
|
|
2783
3111
|
groupMarkRead: '标记已读',
|
|
2784
3112
|
groupMarkReadTitle: '将此类通知全部标记为已读',
|
|
2785
3113
|
approvalsPending: '{{count}} 条待审批',
|
|
3114
|
+
approvalsPending_one: '{{count}} 条待审批',
|
|
3115
|
+
approvalsPending_other: '{{count}} 条待审批',
|
|
2786
3116
|
viewApprovals: '查看审批',
|
|
2787
3117
|
noPendingApprovals: '暂无待审批事项',
|
|
2788
3118
|
openApprovalsInbox: '打开审批中心',
|
|
2789
3119
|
badgeTotal: '共 {{total}} 项',
|
|
2790
3120
|
badgeNotifications: '{{unread}} 条通知',
|
|
2791
3121
|
badgeApprovals: '{{approvals}} 条待审批',
|
|
3122
|
+
arrivalMany: '{{count}} 条新消息',
|
|
3123
|
+
arrivalMany_one: '{{count}} 条新消息',
|
|
3124
|
+
arrivalMany_other: '{{count}} 条新消息',
|
|
3125
|
+
arrivalRepeats: '该主题有 {{count}} 条新消息',
|
|
3126
|
+
arrivalRepeats_one: '该主题有 {{count}} 条新消息',
|
|
3127
|
+
arrivalRepeats_other: '该主题有 {{count}} 条新消息',
|
|
3128
|
+
arrivalOpen: '查看',
|
|
3129
|
+
toastEnabled: '站内提醒',
|
|
3130
|
+
desktopEnabled: '桌面通知',
|
|
3131
|
+
desktopBlocked: '已被拦截。请在浏览器设置中允许本站发送通知。',
|
|
3132
|
+
desktopUnsupported: '当前浏览器不支持桌面通知。',
|
|
2792
3133
|
},
|
|
2793
3134
|
publicForm: {
|
|
2794
3135
|
submit: '提交',
|
|
@@ -2796,15 +3137,17 @@ const zh = {
|
|
|
2796
3137
|
submitAnother: '再填一份',
|
|
2797
3138
|
poweredBy: '由 ObjectStack 提供技术支持',
|
|
2798
3139
|
secureNotice: '您的信息将通过安全通道传输,仅用于回复您本次请求。',
|
|
2799
|
-
thankYouTitle: '
|
|
3140
|
+
thankYouTitle: '感谢您的提交!',
|
|
2800
3141
|
thankYouMessage: '我们已成功收到您的信息。',
|
|
2801
3142
|
redirecting: '将在 {{seconds}} 秒后跳转…',
|
|
3143
|
+
redirectPending: '正在跳转…',
|
|
2802
3144
|
unavailableTitle: '表单不可用',
|
|
2803
3145
|
unavailableDescription: '该链接当前没有可用的公开表单。请确认对应视图已启用匿名分享并匹配此 slug。',
|
|
2804
3146
|
tryDemo: '试用演示',
|
|
2805
3147
|
retry: '重试',
|
|
2806
3148
|
loading: '正在加载表单…',
|
|
2807
3149
|
requiredHint: '* 为必填项',
|
|
3150
|
+
requiredFields: '必填项:{{fields}}',
|
|
2808
3151
|
consentLabelDefault: '我已阅读并同意隐私政策,授权对本次请求所提供的信息进行处理。',
|
|
2809
3152
|
consentLink: '隐私政策',
|
|
2810
3153
|
consentRequired: '请先勾选同意隐私政策。',
|
|
@@ -2855,6 +3198,8 @@ const zh = {
|
|
|
2855
3198
|
noImportableFields: '该对象没有可导入的字段。',
|
|
2856
3199
|
schemaReadFailed: '无法读取对象结构。',
|
|
2857
3200
|
imported: '已把 {{count}} 行真实数据导入「{{object}}」。',
|
|
3201
|
+
imported_one: '已把 {{count}} 行真实数据导入「{{object}}」。',
|
|
3202
|
+
imported_other: '已把 {{count}} 行真实数据导入「{{object}}」。',
|
|
2858
3203
|
importFrom: '把真实数据导入自',
|
|
2859
3204
|
into: '到',
|
|
2860
3205
|
opening: '打开中…',
|
|
@@ -2868,6 +3213,76 @@ const zh = {
|
|
|
2868
3213
|
openProduction: '打开生产环境',
|
|
2869
3214
|
manageEnvironments: '管理环境',
|
|
2870
3215
|
},
|
|
3216
|
+
cloudPlanStatus: {
|
|
3217
|
+
current: '当前套餐',
|
|
3218
|
+
},
|
|
3219
|
+
ai: {
|
|
3220
|
+
nlQuery: {
|
|
3221
|
+
placeholder: '就您的数据提问…',
|
|
3222
|
+
ask: '提问',
|
|
3223
|
+
results: '结果',
|
|
3224
|
+
match: '匹配度 {{percent}}',
|
|
3225
|
+
simulatedSummary: '查询结果:{{query}}',
|
|
3226
|
+
noResults: '未找到匹配的记录',
|
|
3227
|
+
recentQueries: '最近的查询',
|
|
3228
|
+
},
|
|
3229
|
+
formAssist: {
|
|
3230
|
+
title: 'AI 建议',
|
|
3231
|
+
suggestionCount: '{{count}} 条建议',
|
|
3232
|
+
suggestionCount_one: '{{count}} 条建议',
|
|
3233
|
+
suggestionCount_other: '{{count}} 条建议',
|
|
3234
|
+
applyAll: '全部应用',
|
|
3235
|
+
confidence: '置信度 {{percent}}',
|
|
3236
|
+
appliedCount: '已应用 {{count}} 条建议',
|
|
3237
|
+
appliedCount_one: '已应用 {{count}} 条建议',
|
|
3238
|
+
appliedCount_other: '已应用 {{count}} 条建议',
|
|
3239
|
+
},
|
|
3240
|
+
recommendations: {
|
|
3241
|
+
title: '推荐',
|
|
3242
|
+
generating: '正在生成推荐…',
|
|
3243
|
+
empty: '暂无推荐',
|
|
3244
|
+
},
|
|
3245
|
+
},
|
|
3246
|
+
aiApprovals: {
|
|
3247
|
+
title: 'AI 审批',
|
|
3248
|
+
description: 'AI 智能体提出的操作,需要人工审核后才会执行。',
|
|
3249
|
+
tabPending: '待审批',
|
|
3250
|
+
tabDecided: '已处理',
|
|
3251
|
+
tabAll: '全部',
|
|
3252
|
+
statusPending: '待审批',
|
|
3253
|
+
statusApproved: '已通过',
|
|
3254
|
+
statusExecuted: '已执行',
|
|
3255
|
+
statusFailed: '失败',
|
|
3256
|
+
statusRejected: '已拒绝',
|
|
3257
|
+
colTool: '工具',
|
|
3258
|
+
colAction: '动作',
|
|
3259
|
+
colObject: '对象',
|
|
3260
|
+
colStatus: '状态',
|
|
3261
|
+
colProposed: '提出时间',
|
|
3262
|
+
colDecision: '决定',
|
|
3263
|
+
emptyTitle: '暂无待处理操作',
|
|
3264
|
+
emptyDescription: '当 AI 提出敏感操作时,会显示在这里等待审核。',
|
|
3265
|
+
view: '查看',
|
|
3266
|
+
approve: '通过',
|
|
3267
|
+
reject: '拒绝',
|
|
3268
|
+
working: '处理中…',
|
|
3269
|
+
approveAndExecute: '通过并执行',
|
|
3270
|
+
outcomeApprove: '对 {{id}} 的通过操作:{{message}}',
|
|
3271
|
+
outcomeReject: '对 {{id}} 的拒绝操作:{{message}}',
|
|
3272
|
+
outcomeExecuteFailed: '操作执行失败',
|
|
3273
|
+
drawerFallbackTitle: '待处理操作',
|
|
3274
|
+
drawerSubtitle: '在 {{object}} 上执行工具 {{tool}}',
|
|
3275
|
+
fieldProposedBy: '提出者',
|
|
3276
|
+
fieldDecidedBy: '处理人',
|
|
3277
|
+
fieldConversation: '会话',
|
|
3278
|
+
fieldToolInput: '工具输入',
|
|
3279
|
+
fieldResult: '结果',
|
|
3280
|
+
fieldError: '错误',
|
|
3281
|
+
fieldRejectionReason: '拒绝原因',
|
|
3282
|
+
rejectTitle: '要拒绝此操作吗?',
|
|
3283
|
+
rejectBody: '该原因会回传给 AI,便于它调整下一步回复。',
|
|
3284
|
+
rejectPlaceholder: '可选原因(例如:“记录 ID 有误 — 请先与用户确认。”)',
|
|
3285
|
+
},
|
|
2871
3286
|
aiModelStatus: {
|
|
2872
3287
|
summary: '构建 / 提问使用 {{conversational}}({{conversationalSource}});结构化使用 {{structured}}({{structuredSource}})。',
|
|
2873
3288
|
summaryRouting: '路由策略:免费方案 → {{free}},付费方案 → {{paid}}。',
|
|
@@ -2885,6 +3300,111 @@ const zh = {
|
|
|
2885
3300
|
sourceInherits: '与 build/ask 相同',
|
|
2886
3301
|
sourcePinned: '被 {{source}} 钉住',
|
|
2887
3302
|
},
|
|
3303
|
+
// objectui#7254 — the AI copilot's tool cards. Three families, all of them
|
|
3304
|
+
// English-only until this landed while every other string on the same screen
|
|
3305
|
+
// was translated:
|
|
3306
|
+
//
|
|
3307
|
+
// `tool.*` — one entry per PLATFORM-PROVIDED tool name
|
|
3308
|
+
// (@objectstack/spec `PLATFORM_TOOLS_BY_PACKAGE`, the
|
|
3309
|
+
// closed registry those runtimes are conformance-tested
|
|
3310
|
+
// against). `humanizeToolName` looks each up as
|
|
3311
|
+
// `chatbot.tool.<tool_name>` and falls back to its English
|
|
3312
|
+
// 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.
|
|
3316
|
+
// `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
|
|
3317
|
+
// set for both surfaces (they used to carry separate
|
|
3318
|
+
// tables and disagreed on casing).
|
|
3319
|
+
// `plan.*` — the "N objects · N views · N dashboards" strip. Plural
|
|
3320
|
+
// FAMILIES: one slot per CLDR category the pack's language
|
|
3321
|
+
// selects (objectui#11432), plus the base key for a call
|
|
3322
|
+
// made without a count. `all-locales-key-parity.test.ts`
|
|
3323
|
+
// derives the required slots from `Intl.PluralRules`.
|
|
3324
|
+
//
|
|
3325
|
+
// objectui#7481 — five `tool.*` entries are NEWER than the registry above:
|
|
3326
|
+
// `get_authoring_rules` (cloud#1837), `load_tools`, `open_record`, `test_flow`
|
|
3327
|
+
// and `toggle_flow` are registered by cloud `service-ai-studio` but the pinned
|
|
3328
|
+
// `@objectstack/spec` snapshot does not list them yet. They are kept here on
|
|
3329
|
+
// purpose: a step label the user reads must not wait on a pin bump. When the
|
|
3330
|
+
// pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
|
|
3331
|
+
// against the registry instead of against its own hand-held list.
|
|
3332
|
+
chatbot: {
|
|
3333
|
+
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: '校验搭建结果',
|
|
3369
|
+
},
|
|
3370
|
+
toolState: {
|
|
3371
|
+
agentActivity: '智能体活动',
|
|
3372
|
+
pending: '等待中',
|
|
3373
|
+
running: '运行中',
|
|
3374
|
+
awaitingApproval: '待确认',
|
|
3375
|
+
responded: '已回复',
|
|
3376
|
+
completed: '已完成',
|
|
3377
|
+
error: '出错',
|
|
3378
|
+
denied: '已拒绝',
|
|
3379
|
+
failed: '失败',
|
|
3380
|
+
},
|
|
3381
|
+
plan: {
|
|
3382
|
+
countObjects: '{{count}} 个对象',
|
|
3383
|
+
countObjects_one: '{{count}} 个对象',
|
|
3384
|
+
countObjects_other: '{{count}} 个对象',
|
|
3385
|
+
countViews: '{{count}} 个视图',
|
|
3386
|
+
countViews_one: '{{count}} 个视图',
|
|
3387
|
+
countViews_other: '{{count}} 个视图',
|
|
3388
|
+
countDashboards: '{{count}} 个仪表板',
|
|
3389
|
+
countDashboards_one: '{{count}} 个仪表板',
|
|
3390
|
+
countDashboards_other: '{{count}} 个仪表板',
|
|
3391
|
+
countSeedData: '示例数据',
|
|
3392
|
+
},
|
|
3393
|
+
build: {
|
|
3394
|
+
building: '正在构建{{app}}…',
|
|
3395
|
+
built: '已构建{{app}}',
|
|
3396
|
+
appFallback: '你的应用',
|
|
3397
|
+
addingSampleData: '正在添加示例数据',
|
|
3398
|
+
group: {
|
|
3399
|
+
object: '对象',
|
|
3400
|
+
view: '视图',
|
|
3401
|
+
dashboard: '仪表板',
|
|
3402
|
+
app: '应用',
|
|
3403
|
+
seed: '示例数据',
|
|
3404
|
+
},
|
|
3405
|
+
moreArtifacts: '+{{n}} 个',
|
|
3406
|
+
},
|
|
3407
|
+
},
|
|
2888
3408
|
chatbotError: {
|
|
2889
3409
|
title: '响应失败',
|
|
2890
3410
|
fallbackDetail: '出了点问题,请重试。',
|
|
@@ -2955,7 +3475,7 @@ const zh = {
|
|
|
2955
3475
|
marketplace: {
|
|
2956
3476
|
title: '应用市场',
|
|
2957
3477
|
subtitle: '浏览已通过审核、发布到 ObjectStack 目录中的应用。点击应用查看详情并安装到你的某个环境中。',
|
|
2958
|
-
searchPlaceholder: '
|
|
3478
|
+
searchPlaceholder: '按名称或标识搜索应用…',
|
|
2959
3479
|
searchAria: '搜索市场应用',
|
|
2960
3480
|
installed: '已安装',
|
|
2961
3481
|
installedCount: '已安装({{count}})',
|
|
@@ -3003,10 +3523,15 @@ const zh = {
|
|
|
3003
3523
|
purgeSampleData: '清除示例数据',
|
|
3004
3524
|
purgeConfirm: '删除此应用预置的所有示例记录?用户自行添加的记录不会被删除。',
|
|
3005
3525
|
purgeSuccess: '已删除 {{count}} 条示例记录。',
|
|
3526
|
+
purgeSuccess_one: '已删除 {{count}} 条示例记录。',
|
|
3527
|
+
purgeSuccess_other: '已删除 {{count}} 条示例记录。',
|
|
3006
3528
|
purgeNoData: '没有可清除的示例记录。',
|
|
3007
3529
|
reseedQueued: '示例数据将在下次访问该环境时重新加载。',
|
|
3008
3530
|
reseedLocalSuccess: '已重新加载示例数据:新增 {{inserted}} 条,更新 {{updated}} 条。',
|
|
3009
3531
|
reseedPartialErrors: '(有 {{count}} 条记录写入失败)',
|
|
3532
|
+
reseedPartialErrors_one: '(有 {{count}} 条记录写入失败)',
|
|
3533
|
+
reseedPartialErrors_other: '(有 {{count}} 条记录写入失败)',
|
|
3534
|
+
sampleDataKernelUnavailable: '此控制面没有环境内核,因此无法在这里重新加载或清除示例数据。请在该环境自己的运行时中操作。',
|
|
3010
3535
|
updateAvailable: '有可用更新',
|
|
3011
3536
|
},
|
|
3012
3537
|
action: {
|
|
@@ -3059,7 +3584,8 @@ const zh = {
|
|
|
3059
3584
|
reviewed: '已审核并批准',
|
|
3060
3585
|
unreviewed: '尚未审核',
|
|
3061
3586
|
signed: '已签名',
|
|
3062
|
-
grantsIntro: '
|
|
3587
|
+
grantsIntro: '此软件包请求以下权限:',
|
|
3588
|
+
notEnforced: '安装时会记录这份清单,后续版本要求更多权限时会再次征求同意;但运行时目前还不会把该软件包限制在此清单内。',
|
|
3063
3589
|
services: '平台服务',
|
|
3064
3590
|
hooks: '生命周期钩子',
|
|
3065
3591
|
network: '网络访问',
|
|
@@ -3109,30 +3635,19 @@ const zh = {
|
|
|
3109
3635
|
storage: '存储',
|
|
3110
3636
|
other: '其他',
|
|
3111
3637
|
},
|
|
3112
|
-
pricing: {
|
|
3113
|
-
free: '免费',
|
|
3114
|
-
freemium: '免费增值',
|
|
3115
|
-
paid: '付费',
|
|
3116
|
-
subscription: '订阅',
|
|
3117
|
-
'usage-based': '按用量计费',
|
|
3118
|
-
'contact-sales': '联系销售',
|
|
3119
|
-
},
|
|
3120
3638
|
relativeTime: {
|
|
3121
3639
|
today: '今天',
|
|
3122
3640
|
daysAgo: '{{count}} 天前',
|
|
3123
3641
|
monthsAgo: '{{count}} 个月前',
|
|
3642
|
+
monthsAgo_one: '{{count}} 个月前',
|
|
3643
|
+
monthsAgo_other: '{{count}} 个月前',
|
|
3124
3644
|
yearsAgo: '{{count}} 年前',
|
|
3645
|
+
yearsAgo_one: '{{count}} 年前',
|
|
3646
|
+
yearsAgo_other: '{{count}} 年前',
|
|
3125
3647
|
},
|
|
3126
3648
|
},
|
|
3127
|
-
approvals: {
|
|
3128
|
-
approve: '批准',
|
|
3129
|
-
reject: '驳回',
|
|
3130
|
-
comment: '审批意见(可选)',
|
|
3131
|
-
approveSuccess: '已批准',
|
|
3132
|
-
rejectSuccess: '已驳回',
|
|
3133
|
-
rejectConfirm: '确定驳回该审批请求吗?',
|
|
3134
|
-
},
|
|
3135
3649
|
approvalsInbox: {
|
|
3650
|
+
recordUnresolvable: '无法打开此记录',
|
|
3136
3651
|
loadMore: '加载更多',
|
|
3137
3652
|
loadingMore: '加载中…',
|
|
3138
3653
|
loadedOf: '已加载 {{loaded}} / 共 {{total}} 条',
|
|
@@ -3151,6 +3666,8 @@ const zh = {
|
|
|
3151
3666
|
requestInfoSent: '已退回给申请人补充材料',
|
|
3152
3667
|
remindBtn: '催办',
|
|
3153
3668
|
remindSuccess: '已提醒 {{count}} 位审批人',
|
|
3669
|
+
remindSuccess_one: '已提醒 {{count}} 位审批人',
|
|
3670
|
+
remindSuccess_other: '已提醒 {{count}} 位审批人',
|
|
3154
3671
|
remindThrottled: '刚刚已发送过催办,请稍后再试。',
|
|
3155
3672
|
replyPlaceholder: '在此回复…',
|
|
3156
3673
|
slaRemaining: 'SLA 剩余 {{dur}}',
|
|
@@ -3167,6 +3684,8 @@ const zh = {
|
|
|
3167
3684
|
progressApprovals: '审批进度 — {{got}} / {{need}}',
|
|
3168
3685
|
progressGroups: '会签进度 — {{got}} / {{need}} 组',
|
|
3169
3686
|
progressEligible: '{{count}} 位可审批人',
|
|
3687
|
+
progressEligible_one: '{{count}} 位可审批人',
|
|
3688
|
+
progressEligible_other: '{{count}} 位可审批人',
|
|
3170
3689
|
progressBar: '决策进度',
|
|
3171
3690
|
declaredActions: '操作',
|
|
3172
3691
|
attachmentChip: '附件',
|
|
@@ -3198,6 +3717,8 @@ const zh = {
|
|
|
3198
3717
|
filterCount: '{{shown}} / {{total}} 条',
|
|
3199
3718
|
selected: '已选择',
|
|
3200
3719
|
actionableCount: '({{count}} 条可操作)',
|
|
3720
|
+
actionableCount_one: '({{count}} 条可操作)',
|
|
3721
|
+
actionableCount_other: '({{count}} 条可操作)',
|
|
3201
3722
|
selectAll: '全选',
|
|
3202
3723
|
selectRow: '选择该请求',
|
|
3203
3724
|
colRequest: '审批事项',
|
|
@@ -3271,11 +3792,19 @@ const zh = {
|
|
|
3271
3792
|
approveN: '通过 {{count}} 条',
|
|
3272
3793
|
rejectN: '拒绝 {{count}} 条',
|
|
3273
3794
|
bulkApproveTitle: '通过这 {{count}} 条请求?',
|
|
3795
|
+
bulkApproveTitle_one: '通过这 {{count}} 条请求?',
|
|
3796
|
+
bulkApproveTitle_other: '通过这 {{count}} 条请求?',
|
|
3274
3797
|
bulkApproveBody: '每条请求都将以你的身份通过,对应流程沿“通过”分支继续。',
|
|
3275
3798
|
bulkRejectTitle: '拒绝这 {{count}} 条请求?',
|
|
3799
|
+
bulkRejectTitle_one: '拒绝这 {{count}} 条请求?',
|
|
3800
|
+
bulkRejectTitle_other: '拒绝这 {{count}} 条请求?',
|
|
3276
3801
|
bulkRejectBody: '将拒绝所选请求并通知各申请人。',
|
|
3277
3802
|
bulkApproved: '已通过 {{count}} 条请求',
|
|
3803
|
+
bulkApproved_one: '已通过 {{count}} 条请求',
|
|
3804
|
+
bulkApproved_other: '已通过 {{count}} 条请求',
|
|
3278
3805
|
bulkRejected: '已拒绝 {{count}} 条请求',
|
|
3806
|
+
bulkRejected_one: '已拒绝 {{count}} 条请求',
|
|
3807
|
+
bulkRejected_other: '已拒绝 {{count}} 条请求',
|
|
3279
3808
|
bulkPartial: '{{ok}} 条成功,{{fail}} 条失败:{{which}}',
|
|
3280
3809
|
rejectOneTitle: '拒绝“{{title}}”?',
|
|
3281
3810
|
rejectOneBody: '将拒绝该请求并通知申请人。',
|
|
@@ -3300,8 +3829,14 @@ const zh = {
|
|
|
3300
3829
|
alreadyDecided: '该请求已被处理,请刷新列表。',
|
|
3301
3830
|
justNow: '刚刚',
|
|
3302
3831
|
minutesAgo: '{{count}} 分钟前',
|
|
3832
|
+
minutesAgo_one: '{{count}} 分钟前',
|
|
3833
|
+
minutesAgo_other: '{{count}} 分钟前',
|
|
3303
3834
|
hoursAgo: '{{count}} 小时前',
|
|
3835
|
+
hoursAgo_one: '{{count}} 小时前',
|
|
3836
|
+
hoursAgo_other: '{{count}} 小时前',
|
|
3304
3837
|
daysAgo: '{{count}} 天前',
|
|
3838
|
+
daysAgo_one: '{{count}} 天前',
|
|
3839
|
+
daysAgo_other: '{{count}} 天前',
|
|
3305
3840
|
},
|
|
3306
3841
|
filterBuilder: {
|
|
3307
3842
|
where: '其中',
|
|
@@ -3325,25 +3860,25 @@ const zh = {
|
|
|
3325
3860
|
rangeEnd: '结束值',
|
|
3326
3861
|
operators: {
|
|
3327
3862
|
equals: '等于',
|
|
3328
|
-
|
|
3863
|
+
not_equals: '不等于',
|
|
3329
3864
|
contains: '包含',
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3865
|
+
icontains: '包含(忽略大小写)',
|
|
3866
|
+
not_contains: '不包含',
|
|
3867
|
+
is_empty: '为空',
|
|
3868
|
+
is_not_empty: '不为空',
|
|
3869
|
+
greater_than: '大于',
|
|
3870
|
+
less_than: '小于',
|
|
3871
|
+
greater_than_or_equal: '大于或等于',
|
|
3872
|
+
less_than_or_equal: '小于或等于',
|
|
3338
3873
|
before: '早于',
|
|
3339
3874
|
after: '晚于',
|
|
3340
3875
|
between: '介于',
|
|
3341
3876
|
in: '属于',
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3877
|
+
not_in: '不属于',
|
|
3878
|
+
starts_with: '以…开头',
|
|
3879
|
+
ends_with: '以…结尾',
|
|
3880
|
+
is_null: '为 null',
|
|
3881
|
+
is_not_null: '不为 null',
|
|
3347
3882
|
exists: '已设置',
|
|
3348
3883
|
notExists: '未设置',
|
|
3349
3884
|
},
|
|
@@ -3359,7 +3894,8 @@ const zh = {
|
|
|
3359
3894
|
},
|
|
3360
3895
|
collaboration: {
|
|
3361
3896
|
commentCount: '{{count}} 条评论',
|
|
3362
|
-
|
|
3897
|
+
commentCount_one: '{{count}} 条评论',
|
|
3898
|
+
commentCount_other: '{{count}} 条评论',
|
|
3363
3899
|
resolvedSuffix: ' · 已解决',
|
|
3364
3900
|
sortComments: '评论排序',
|
|
3365
3901
|
sortOldest: '最早优先',
|
|
@@ -3368,11 +3904,18 @@ const zh = {
|
|
|
3368
3904
|
reopen: '重新打开',
|
|
3369
3905
|
justNow: '刚刚',
|
|
3370
3906
|
minutesAgo: '{{count}} 分钟前',
|
|
3907
|
+
minutesAgo_one: '{{count}} 分钟前',
|
|
3908
|
+
minutesAgo_other: '{{count}} 分钟前',
|
|
3371
3909
|
hoursAgo: '{{count}} 小时前',
|
|
3910
|
+
hoursAgo_one: '{{count}} 小时前',
|
|
3911
|
+
hoursAgo_other: '{{count}} 小时前',
|
|
3372
3912
|
daysAgo: '{{count}} 天前',
|
|
3913
|
+
daysAgo_one: '{{count}} 天前',
|
|
3914
|
+
daysAgo_other: '{{count}} 天前',
|
|
3373
3915
|
edited: '(已编辑)',
|
|
3374
3916
|
reactionCount: '{{count}} 个回应',
|
|
3375
|
-
|
|
3917
|
+
reactionCount_one: '{{count}} 个回应',
|
|
3918
|
+
reactionCount_other: '{{count}} 个回应',
|
|
3376
3919
|
addThumbsUp: '点赞',
|
|
3377
3920
|
reply: '回复',
|
|
3378
3921
|
reactThumbsUp: '以点赞回应',
|
|
@@ -3383,9 +3926,11 @@ const zh = {
|
|
|
3383
3926
|
commentPlaceholder: '添加评论…(输入 @ 提及他人)',
|
|
3384
3927
|
send: '发送',
|
|
3385
3928
|
presentUserCount: '{{count}} 人在线',
|
|
3386
|
-
|
|
3929
|
+
presentUserCount_one: '{{count}} 人在线',
|
|
3930
|
+
presentUserCount_other: '{{count}} 人在线',
|
|
3387
3931
|
moreUserCount: '另有 {{count}} 人',
|
|
3388
|
-
|
|
3932
|
+
moreUserCount_one: '另有 {{count}} 人',
|
|
3933
|
+
moreUserCount_other: '另有 {{count}} 人',
|
|
3389
3934
|
userStatusTitle: '{{name}}({{status}})',
|
|
3390
3935
|
statusActive: '活跃',
|
|
3391
3936
|
statusIdle: '空闲',
|
|
@@ -3393,6 +3938,11 @@ const zh = {
|
|
|
3393
3938
|
},
|
|
3394
3939
|
wizard: {
|
|
3395
3940
|
missingRequired: '请填写以下必填字段:{{fields}}',
|
|
3941
|
+
back: '上一步',
|
|
3942
|
+
submitting: '提交中…',
|
|
3943
|
+
stepFallback: '第 {{n}} 步',
|
|
3944
|
+
progressLabel: '进度',
|
|
3945
|
+
emptyStep: '此步骤未配置字段',
|
|
3396
3946
|
},
|
|
3397
3947
|
flowRunner: {
|
|
3398
3948
|
title: '输入',
|
|
@@ -3450,5 +4000,49 @@ const zh = {
|
|
|
3450
4000
|
bulkOperationFailed: '批量操作失败:{{reason}}',
|
|
3451
4001
|
},
|
|
3452
4002
|
},
|
|
4003
|
+
// objectui#6301 — 设置 › 打包自动化(ADR-0126 §7.4)。术语沿用本包既有译法:
|
|
4004
|
+
// `common.package` = 软件包,`flowRunner.completed` = 流程,`common.duplicate`
|
|
4005
|
+
// 一族的“复制”在这里写作“克隆”,因为服务端的 clone 是另起机器名的同级流程,
|
|
4006
|
+
// 不是一次副本粘贴。⛔ 本组不含任何血缘/漂移措辞(§9)。
|
|
4007
|
+
packagedAutomation: {
|
|
4008
|
+
title: '打包自动化',
|
|
4009
|
+
subtitle: '由已安装软件包提供的流程与动作。可在本部署中关闭其中之一,流程还可以新名称克隆后再自定义。编辑在 Studio 中进行。',
|
|
4010
|
+
refresh: '刷新',
|
|
4011
|
+
flowsHeading: '打包流程',
|
|
4012
|
+
actionsHeading: '打包动作',
|
|
4013
|
+
colFlow: '流程',
|
|
4014
|
+
colActivation: '启用状态',
|
|
4015
|
+
colActions: '操作',
|
|
4016
|
+
toggleLabel: '{{label}} 的启用状态',
|
|
4017
|
+
on: '已启用',
|
|
4018
|
+
off: '已关闭',
|
|
4019
|
+
clone: '克隆',
|
|
4020
|
+
cloneTitle: '克隆打包流程',
|
|
4021
|
+
cloneBody: '副本会带上完整定义,并需要新的机器名和标签。请在 Studio 中编辑副本。',
|
|
4022
|
+
cloneName: '新机器名',
|
|
4023
|
+
cloneLabel: '新标签',
|
|
4024
|
+
cancel: '取消',
|
|
4025
|
+
cloneConfirm: '创建克隆',
|
|
4026
|
+
cloneCreated: '已创建流程「{{name}}」。',
|
|
4027
|
+
emptyTitle: '没有打包流程',
|
|
4028
|
+
emptyBody: '本部署中没有任何已安装软件包提供自动化流程。你自己编写的流程在 Studio 中。',
|
|
4029
|
+
loadFailed: '无法加载打包自动化。',
|
|
4030
|
+
toggleFailedHttp: '无法更改启用状态(HTTP {{status}})。',
|
|
4031
|
+
toggleFailed: '无法更改启用状态。',
|
|
4032
|
+
cloneFailedHttp: '无法克隆此流程(HTTP {{status}})。',
|
|
4033
|
+
cloneFailed: '无法克隆此流程。',
|
|
4034
|
+
actionsSubtitle: '由已安装软件包提供的动作。在本部署中关闭后,它在所有提供它的位置都不再运行。你仍然可以在 Studio 中另行编写自己的动作。',
|
|
4035
|
+
colAction: '动作',
|
|
4036
|
+
colObject: '对象',
|
|
4037
|
+
actionToggleLabel: '{{object}} 上 {{label}} 的启用状态',
|
|
4038
|
+
actionsEmptyTitle: '没有打包动作',
|
|
4039
|
+
actionsEmptyBody: '本部署中没有任何已安装软件包声明动作。你自己编写的动作在 Studio 中。',
|
|
4040
|
+
actionsLoadFailed: '无法加载打包动作。',
|
|
4041
|
+
},
|
|
4042
|
+
element: {
|
|
4043
|
+
number: {
|
|
4044
|
+
noObject: '未指定对象:请设置 object 或 dataSource.object。',
|
|
4045
|
+
},
|
|
4046
|
+
},
|
|
3453
4047
|
};
|
|
3454
4048
|
export default zh;
|