@object-ui/i18n 17.5.0 → 17.6.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 +634 -0
- package/README.md +42 -0
- package/dist/i18n.d.ts +1 -1
- package/dist/i18n.js +1 -2
- package/dist/index.d.ts +23 -23
- package/dist/index.js +23 -23
- package/dist/locales/ar.d.ts +172 -262
- package/dist/locales/ar.js +187 -273
- package/dist/locales/de.d.ts +172 -262
- package/dist/locales/de.js +187 -273
- package/dist/locales/en.d.ts +173 -263
- package/dist/locales/en.js +223 -263
- package/dist/locales/es.d.ts +172 -262
- package/dist/locales/es.js +188 -274
- package/dist/locales/fr.d.ts +172 -262
- package/dist/locales/fr.js +187 -273
- package/dist/locales/index.d.ts +1740 -2640
- package/dist/locales/index.js +20 -20
- package/dist/locales/ja.d.ts +172 -262
- package/dist/locales/ja.js +189 -273
- package/dist/locales/ko.d.ts +172 -262
- package/dist/locales/ko.js +187 -273
- package/dist/locales/pt.d.ts +172 -262
- package/dist/locales/pt.js +187 -273
- package/dist/locales/ru.d.ts +172 -262
- package/dist/locales/ru.js +189 -273
- package/dist/locales/zh.d.ts +173 -263
- package/dist/locales/zh.js +180 -263
- package/dist/pickLocalized.d.ts +37 -0
- package/dist/pickLocalized.js +75 -0
- package/dist/provider.d.ts +1 -1
- package/dist/provider.js +2 -2
- package/dist/useDisplayLocale.js +2 -2
- package/dist/useObjectLabel.d.ts +86 -12
- package/dist/useObjectLabel.js +106 -13
- package/dist/useSafeTranslation.js +1 -1
- package/dist/utils/index.d.ts +4 -4
- package/dist/utils/index.js +4 -4
- package/package.json +2 -2
package/dist/locales/en.js
CHANGED
|
@@ -94,6 +94,15 @@ const en = {
|
|
|
94
94
|
common: {
|
|
95
95
|
loading: 'Loading…',
|
|
96
96
|
save: 'Save',
|
|
97
|
+
// The SHARED "throw away the unsaved draft" verb, read by
|
|
98
|
+
// `@object-ui/components`' `ConfigPanelRenderer` footer (objectui#4750).
|
|
99
|
+
// The three older spellings stay where they are because each belongs to one
|
|
100
|
+
// surface's wording: `form.discard` is the confirm button of plugin-form's
|
|
101
|
+
// "Discard changes?" alert dialog, `console.settingsView.discard` and
|
|
102
|
+
// `console.objectView.discard` are two console view footers — and the last
|
|
103
|
+
// of those already disagrees with the other two in zh/ko/fr. This one is
|
|
104
|
+
// the shared component's, and its ten values are the majority spelling.
|
|
105
|
+
discard: 'Discard',
|
|
97
106
|
cancel: 'Cancel',
|
|
98
107
|
delete: 'Delete',
|
|
99
108
|
edit: 'Edit',
|
|
@@ -291,6 +300,30 @@ const en = {
|
|
|
291
300
|
tags: {
|
|
292
301
|
placeholder: 'Type and press Enter to add…',
|
|
293
302
|
},
|
|
303
|
+
// objectui#4028 — `AddressField`'s five sub-labels, previously English
|
|
304
|
+
// string literals with no key at all: on a Chinese console every address
|
|
305
|
+
// field showed five English words in the middle of an otherwise fully
|
|
306
|
+
// translated form, and an app had NO way to reach them. The parts are not
|
|
307
|
+
// fields on the object (`billing_address` is a single `address` column),
|
|
308
|
+
// so there was nothing for a translation bundle to key on and no
|
|
309
|
+
// `subLabels` property to declare — the only workaround left was to stop
|
|
310
|
+
// using `Field.address()` and author five text fields, losing the
|
|
311
|
+
// structured value, geocoding and map view.
|
|
312
|
+
//
|
|
313
|
+
// Values are byte-identical to the literals they replace, so English and
|
|
314
|
+
// provider-less rendering are unchanged (`FIELD_DEFAULTS` in
|
|
315
|
+
// `packages/fields/src/widgets/useFieldTranslation.ts` carries the same
|
|
316
|
+
// five, which is what a host with no `I18nProvider` renders).
|
|
317
|
+
//
|
|
318
|
+
// The five INPUT PLACEHOLDERS that sat next to these labels are gone
|
|
319
|
+
// rather than keyed — see the widget for that measurement.
|
|
320
|
+
address: {
|
|
321
|
+
street: 'Street Address',
|
|
322
|
+
city: 'City',
|
|
323
|
+
state: 'State / Province',
|
|
324
|
+
postalCode: 'ZIP / Postal Code',
|
|
325
|
+
country: 'Country',
|
|
326
|
+
},
|
|
294
327
|
// objectui#3406 — the accessible sentence of the textarea character
|
|
295
328
|
// counter, rendered only when the field declares `maxLength`. The visible
|
|
296
329
|
// text is `{count}/{max}` digits and needs no locale. ONE interpolated key
|
|
@@ -890,6 +923,8 @@ const en = {
|
|
|
890
923
|
writeStrippedTitle: 'Saved — but some fields did not take effect',
|
|
891
924
|
writeStrippedReadonly: 'Read-only, so it did not take effect: {{fields}}',
|
|
892
925
|
writeStrippedByState: "Not editable in this record's current state, so it did not take effect: {{fields}}",
|
|
926
|
+
writeStrippedPrimaryKey: "The record's identifier cannot be changed by a save, so it did not take effect: {{fields}}",
|
|
927
|
+
writeStrippedUnknownReason: 'Not applied by the server: {{fields}}',
|
|
893
928
|
approvalPendingEditable: 'In approval · editable',
|
|
894
929
|
approvalPendingTooltip: 'This record has a pending approval request; this step still allows editing',
|
|
895
930
|
approvalProgress: 'Approvals — {{got}} of {{need}}',
|
|
@@ -902,6 +937,18 @@ const en = {
|
|
|
902
937
|
cancelApprovalTooltipUnlocked: 'Recall the pending approval request',
|
|
903
938
|
cancelApprovalFailed: 'Failed to recall approval',
|
|
904
939
|
cancelApprovalUnavailable: 'Recalling approvals is not supported on this data source',
|
|
940
|
+
// objectui#5916 — `record:path` stage state in the ACCESSIBLE NAME.
|
|
941
|
+
// Each stage is a `role="listitem"`, which is name-from-AUTHOR only, so
|
|
942
|
+
// visually-hidden text inside it computes to an EMPTY name; these compose
|
|
943
|
+
// the stage's own (already picklist-localized) label with its state into the
|
|
944
|
+
// `aria-label`. The ✓/✗ glyphs stay `aria-hidden` decoration.
|
|
945
|
+
pathLabel: 'Record path',
|
|
946
|
+
pathStageCompleted: '{{stage}}, completed',
|
|
947
|
+
pathStageCurrent: '{{stage}}, current stage',
|
|
948
|
+
pathStageUpcoming: '{{stage}}, upcoming',
|
|
949
|
+
pathStageLostCurrent: '{{stage}}, closed lost, current stage',
|
|
950
|
+
pathStageLostUpcoming: '{{stage}}, closed lost, not reached',
|
|
951
|
+
pathStageWonUpcoming: '{{stage}}, goal stage, not reached',
|
|
905
952
|
linkCopied: 'Link copied to clipboard',
|
|
906
953
|
linkCopyFailed: 'Failed to copy link',
|
|
907
954
|
cancel: 'Cancel',
|
|
@@ -1024,6 +1071,10 @@ const en = {
|
|
|
1024
1071
|
attachmentDownloadDenied: "You don't have access to download this attachment.",
|
|
1025
1072
|
attachmentAuthRequired: 'Please sign in to download this attachment.',
|
|
1026
1073
|
attachmentPermissionDenied: "You don't have permission to do that.",
|
|
1074
|
+
attachmentsAccessDenied: "You don't have access to these attachments.",
|
|
1075
|
+
attachmentsLoadFailed: "We couldn't load the attachments for this record.",
|
|
1076
|
+
attachmentsApiUnavailable: 'The attachments list is not available on this object.',
|
|
1077
|
+
retryLoadAttachments: 'Retry',
|
|
1027
1078
|
// Diff
|
|
1028
1079
|
unifiedDiff: 'Unified diff',
|
|
1029
1080
|
sideBySideDiff: 'Side-by-side diff',
|
|
@@ -1145,66 +1196,6 @@ const en = {
|
|
|
1145
1196
|
invalidCoordinates: '{{count}} record with missing or invalid coordinates excluded from the map.',
|
|
1146
1197
|
invalidCoordinatesPlural: '{{count}} records with missing or invalid coordinates excluded from the map.',
|
|
1147
1198
|
},
|
|
1148
|
-
workflow: {
|
|
1149
|
-
draft: 'Draft',
|
|
1150
|
-
active: 'Active',
|
|
1151
|
-
paused: 'Paused',
|
|
1152
|
-
completed: 'Completed',
|
|
1153
|
-
cancelled: 'Cancelled',
|
|
1154
|
-
save: 'Save',
|
|
1155
|
-
publish: 'Publish',
|
|
1156
|
-
addNode: 'Add Node',
|
|
1157
|
-
workflowFlow: 'Workflow Flow',
|
|
1158
|
-
properties: 'Properties',
|
|
1159
|
-
connections: 'Connections',
|
|
1160
|
-
quickConnect: 'Quick Connect',
|
|
1161
|
-
fromPlaceholder: 'From…',
|
|
1162
|
-
toPlaceholder: 'To…',
|
|
1163
|
-
connect: 'Connect',
|
|
1164
|
-
label: 'Label',
|
|
1165
|
-
type: 'Type',
|
|
1166
|
-
description: 'Description',
|
|
1167
|
-
assignee: 'Assignee',
|
|
1168
|
-
assigneeType: 'Assignee Type',
|
|
1169
|
-
user: 'User',
|
|
1170
|
-
role: 'Role',
|
|
1171
|
-
group: 'Group',
|
|
1172
|
-
expression: 'Expression',
|
|
1173
|
-
timeoutMinutes: 'Timeout (minutes)',
|
|
1174
|
-
selectNodeToEdit: 'Select a node to edit its properties',
|
|
1175
|
-
workflowTitle: 'Workflow Title',
|
|
1176
|
-
newWorkflow: 'New Workflow',
|
|
1177
|
-
outConnections: '{{count}} out',
|
|
1178
|
-
start: 'Start',
|
|
1179
|
-
end: 'End',
|
|
1180
|
-
task: 'Task',
|
|
1181
|
-
userTask: 'User Task',
|
|
1182
|
-
serviceTask: 'Service Task',
|
|
1183
|
-
scriptTask: 'Script Task',
|
|
1184
|
-
approval: 'Approval',
|
|
1185
|
-
condition: 'Condition',
|
|
1186
|
-
parallelGateway: 'Parallel Gateway',
|
|
1187
|
-
joinGateway: 'Join Gateway',
|
|
1188
|
-
boundaryEvent: 'Boundary Event',
|
|
1189
|
-
delay: 'Delay',
|
|
1190
|
-
notification: 'Notification',
|
|
1191
|
-
webhook: 'Webhook',
|
|
1192
|
-
allowConcurrency: 'Allow (run concurrently)',
|
|
1193
|
-
forbidConcurrency: 'Forbid (skip new)',
|
|
1194
|
-
replaceConcurrency: 'Replace (cancel existing)',
|
|
1195
|
-
queueConcurrency: 'Queue (run after current)',
|
|
1196
|
-
conditionEvent: 'Condition',
|
|
1197
|
-
manualEvent: 'Manual',
|
|
1198
|
-
webhookEvent: 'Webhook',
|
|
1199
|
-
timerEvent: 'Timer',
|
|
1200
|
-
signalEvent: 'Signal',
|
|
1201
|
-
versionHistory: 'Version History',
|
|
1202
|
-
importBpmn: 'Import BPMN',
|
|
1203
|
-
exportBpmn: 'Export BPMN',
|
|
1204
|
-
undo: 'Undo',
|
|
1205
|
-
redo: 'Redo',
|
|
1206
|
-
resetZoom: 'Reset zoom',
|
|
1207
|
-
},
|
|
1208
1199
|
designer: {
|
|
1209
1200
|
undo: 'Undo',
|
|
1210
1201
|
redo: 'Redo',
|
|
@@ -1225,6 +1216,105 @@ const en = {
|
|
|
1225
1216
|
details: 'Details',
|
|
1226
1217
|
exportCsv: 'Export CSV',
|
|
1227
1218
|
openInList: 'Open in list',
|
|
1219
|
+
config: {
|
|
1220
|
+
breadcrumb: {
|
|
1221
|
+
dashboard: 'Dashboard',
|
|
1222
|
+
configuration: 'Configuration',
|
|
1223
|
+
widget: 'Widget',
|
|
1224
|
+
chart: 'Chart',
|
|
1225
|
+
table: 'Table',
|
|
1226
|
+
pivotTable: 'Pivot table',
|
|
1227
|
+
},
|
|
1228
|
+
section: {
|
|
1229
|
+
general: 'General',
|
|
1230
|
+
layout: 'Layout',
|
|
1231
|
+
data: 'Data',
|
|
1232
|
+
dataBinding: 'Data Binding',
|
|
1233
|
+
appearance: 'Appearance',
|
|
1234
|
+
},
|
|
1235
|
+
field: {
|
|
1236
|
+
title: 'Title',
|
|
1237
|
+
description: 'Description',
|
|
1238
|
+
columns: 'Columns',
|
|
1239
|
+
gap: 'Gap',
|
|
1240
|
+
rowHeight: 'Row height (px)',
|
|
1241
|
+
autoRefresh: 'Auto refresh',
|
|
1242
|
+
showDescription: 'Show description',
|
|
1243
|
+
theme: 'Theme',
|
|
1244
|
+
widgetType: 'Widget type',
|
|
1245
|
+
colorVariant: 'Color variant',
|
|
1246
|
+
dataset: 'Dataset',
|
|
1247
|
+
dimensions: 'Dimensions',
|
|
1248
|
+
values: 'Values',
|
|
1249
|
+
width: 'Width (columns)',
|
|
1250
|
+
height: 'Height (rows)',
|
|
1251
|
+
},
|
|
1252
|
+
placeholder: {
|
|
1253
|
+
dashboardTitle: 'Dashboard title',
|
|
1254
|
+
dashboardDescription: 'Short summary shown under the title',
|
|
1255
|
+
widgetTitle: 'Widget title',
|
|
1256
|
+
widgetDescription: 'Widget description',
|
|
1257
|
+
datasetName: 'Dataset name',
|
|
1258
|
+
selectDataset: 'Select dataset…',
|
|
1259
|
+
searchDatasets: 'Search datasets…',
|
|
1260
|
+
addDimension: 'Add dimension…',
|
|
1261
|
+
addMeasure: 'Add measure…',
|
|
1262
|
+
searchMembers: 'Search…',
|
|
1263
|
+
},
|
|
1264
|
+
empty: {
|
|
1265
|
+
datasets: 'No datasets found.',
|
|
1266
|
+
dimensions: 'No dimensions selected.',
|
|
1267
|
+
measures: 'No measures selected.',
|
|
1268
|
+
nothingToAdd: 'Nothing left to add.',
|
|
1269
|
+
},
|
|
1270
|
+
help: {
|
|
1271
|
+
dataset: 'The semantic-layer dataset this widget binds to (ADR-0021).',
|
|
1272
|
+
dimensions: 'Group/split the values by these dataset dimensions.',
|
|
1273
|
+
dimensionsPivot: 'Group/split fields. The last dimension spreads across as columns.',
|
|
1274
|
+
values: 'Measure(s) from the dataset to display (at least one).',
|
|
1275
|
+
},
|
|
1276
|
+
action: {
|
|
1277
|
+
add: 'Add',
|
|
1278
|
+
remove: 'Remove {{name}}',
|
|
1279
|
+
},
|
|
1280
|
+
refresh: {
|
|
1281
|
+
off: 'Off',
|
|
1282
|
+
every30s: 'Every 30s',
|
|
1283
|
+
every1m: 'Every 1 min',
|
|
1284
|
+
every5m: 'Every 5 min',
|
|
1285
|
+
every15m: 'Every 15 min',
|
|
1286
|
+
every30m: 'Every 30 min',
|
|
1287
|
+
every1h: 'Every 1 hour',
|
|
1288
|
+
},
|
|
1289
|
+
themeOption: {
|
|
1290
|
+
light: 'Light',
|
|
1291
|
+
dark: 'Dark',
|
|
1292
|
+
auto: 'Auto',
|
|
1293
|
+
},
|
|
1294
|
+
widgetType: {
|
|
1295
|
+
metric: 'Metric',
|
|
1296
|
+
bar: 'Bar Chart',
|
|
1297
|
+
horizontalBar: 'Horizontal Bar',
|
|
1298
|
+
line: 'Line Chart',
|
|
1299
|
+
pie: 'Pie Chart',
|
|
1300
|
+
donut: 'Donut Chart',
|
|
1301
|
+
area: 'Area Chart',
|
|
1302
|
+
scatter: 'Scatter Plot',
|
|
1303
|
+
funnel: 'Funnel',
|
|
1304
|
+
table: 'Table',
|
|
1305
|
+
pivot: 'Pivot Table',
|
|
1306
|
+
},
|
|
1307
|
+
color: {
|
|
1308
|
+
default: 'Default',
|
|
1309
|
+
blue: 'Blue',
|
|
1310
|
+
teal: 'Teal',
|
|
1311
|
+
orange: 'Orange',
|
|
1312
|
+
purple: 'Purple',
|
|
1313
|
+
success: 'Success',
|
|
1314
|
+
warning: 'Warning',
|
|
1315
|
+
danger: 'Danger',
|
|
1316
|
+
},
|
|
1317
|
+
},
|
|
1228
1318
|
trend: {
|
|
1229
1319
|
vsLastQuarter: 'vs last quarter',
|
|
1230
1320
|
vsLastMonth: 'vs last month',
|
|
@@ -1257,24 +1347,6 @@ const en = {
|
|
|
1257
1347
|
},
|
|
1258
1348
|
},
|
|
1259
1349
|
},
|
|
1260
|
-
configPanel: {
|
|
1261
|
-
save: 'Save',
|
|
1262
|
-
discard: 'Discard',
|
|
1263
|
-
close: 'Close',
|
|
1264
|
-
layout: 'Layout',
|
|
1265
|
-
columns: 'Columns',
|
|
1266
|
-
gap: 'Gap',
|
|
1267
|
-
rowHeight: 'Row height',
|
|
1268
|
-
data: 'Data',
|
|
1269
|
-
refreshInterval: 'Refresh interval',
|
|
1270
|
-
appearance: 'Appearance',
|
|
1271
|
-
title: 'Title',
|
|
1272
|
-
showDescription: 'Show description',
|
|
1273
|
-
theme: 'Theme',
|
|
1274
|
-
configuration: 'Configuration',
|
|
1275
|
-
general: 'General',
|
|
1276
|
-
advanced: 'Advanced',
|
|
1277
|
-
},
|
|
1278
1350
|
appDesigner: {
|
|
1279
1351
|
createApp: 'Create Application',
|
|
1280
1352
|
editApp: 'Edit Application',
|
|
@@ -1325,8 +1397,6 @@ const en = {
|
|
|
1325
1397
|
showSort: 'Show Sort',
|
|
1326
1398
|
appearance: 'Appearance',
|
|
1327
1399
|
rowHeight: 'Row Height',
|
|
1328
|
-
stripedRows: 'Striped Rows',
|
|
1329
|
-
bordered: 'Bordered',
|
|
1330
1400
|
livePreview: 'Live Preview',
|
|
1331
1401
|
stepBasicDesc: 'Name, title, and layout',
|
|
1332
1402
|
stepObjectsDesc: 'Select business objects',
|
|
@@ -1440,7 +1510,6 @@ const en = {
|
|
|
1440
1510
|
unique: 'Unique',
|
|
1441
1511
|
readOnly: 'Read Only',
|
|
1442
1512
|
hidden: 'Hidden',
|
|
1443
|
-
indexed: 'Indexed',
|
|
1444
1513
|
externalId: 'External ID',
|
|
1445
1514
|
trackHistory: 'Track History',
|
|
1446
1515
|
defaultValue: 'Default Value',
|
|
@@ -1624,6 +1693,13 @@ const en = {
|
|
|
1624
1693
|
createApp: 'Create New App',
|
|
1625
1694
|
},
|
|
1626
1695
|
ai: {
|
|
1696
|
+
pendingDrafts: {
|
|
1697
|
+
count: '{{count}} change(s) are not published yet — users cannot see them.',
|
|
1698
|
+
publish: 'Publish',
|
|
1699
|
+
published: 'All pending changes are live.',
|
|
1700
|
+
failed: 'Publish failed.',
|
|
1701
|
+
publishedWithFindings: 'Published, but the runtime probes reported problems: {{detail}}',
|
|
1702
|
+
},
|
|
1627
1703
|
usage: {
|
|
1628
1704
|
title: 'AI usage',
|
|
1629
1705
|
meterBuild: 'Build',
|
|
@@ -1729,6 +1805,11 @@ const en = {
|
|
|
1729
1805
|
changesConfirmed: 'Confirmed',
|
|
1730
1806
|
changesConfirm: 'Confirm',
|
|
1731
1807
|
changesConfirmHint: 'Reply to confirm or adjust this change.',
|
|
1808
|
+
changesApplying: 'Applying…',
|
|
1809
|
+
changesApplied: 'Applied',
|
|
1810
|
+
changesDrafted: 'Saved as draft',
|
|
1811
|
+
changesFailed: 'Not applied',
|
|
1812
|
+
discussing: 'Discussing: {{target}}',
|
|
1732
1813
|
// Wording is load-bearing: this is SENT to the agent and must satisfy the
|
|
1733
1814
|
// cloud confirm gate's English clause `apply (this|the) change`
|
|
1734
1815
|
// (service-ai-studio confirm-gate.ts APPROVAL_RE). "apply what you just
|
|
@@ -1893,64 +1974,18 @@ const en = {
|
|
|
1893
1974
|
cannotDeleteMetaView: 'This view is built in and defined in code — it cannot be deleted.',
|
|
1894
1975
|
expandToPage: 'Open as full page',
|
|
1895
1976
|
allRecords: 'All Records',
|
|
1896
|
-
exitDesignMode: 'Exit Design Mode',
|
|
1897
|
-
enterDesignMode: 'Enter Design Mode',
|
|
1898
|
-
metadataInspector: 'Metadata Inspector',
|
|
1899
|
-
editView: 'Edit View',
|
|
1900
|
-
addView: 'Add View',
|
|
1901
|
-
designTools: 'Design tools',
|
|
1902
1977
|
new: 'New',
|
|
1903
1978
|
import: 'Import',
|
|
1904
1979
|
importTitle: 'Import from CSV',
|
|
1905
1980
|
importedToast: 'Imported {{count}} row(s).',
|
|
1906
1981
|
importedWithSkipped: 'Imported {{ok}} row(s); skipped {{skipped}}.',
|
|
1907
1982
|
configureView: 'Configure View',
|
|
1908
|
-
closePanel: 'Close panel',
|
|
1909
|
-
showAdvancedSettings: 'Show advanced settings',
|
|
1910
|
-
showFewerSettings: 'Show fewer settings',
|
|
1911
|
-
page: 'Page',
|
|
1912
|
-
pageConfigHint: 'Toolbar, navigation & view shell settings',
|
|
1913
|
-
listConfigHint: 'Data rendering, columns & appearance for this list type',
|
|
1914
|
-
general: 'General',
|
|
1915
|
-
generalHint: 'View title, description, and type',
|
|
1916
1983
|
toolbar: 'Toolbar',
|
|
1917
|
-
toolbarHint: 'Search, filter, sort, group, and density toggles',
|
|
1918
1984
|
toolbarEnabledCount: '{{count}} of {{total}} enabled',
|
|
1919
|
-
navigationSection: 'Navigation',
|
|
1920
|
-
navigationHint: 'Row click behavior and detail view settings',
|
|
1921
|
-
records: 'Records',
|
|
1922
|
-
recordsHint: 'Selection mode, add record, and inline editing',
|
|
1923
|
-
exportPrint: 'Export & Print',
|
|
1924
|
-
exportPrintHint: 'Export formats, printing, and record count display',
|
|
1925
|
-
showAllFields: 'Show All',
|
|
1926
|
-
hideAllFields: 'Hide All',
|
|
1927
1985
|
searchFields: 'Search fields…',
|
|
1928
1986
|
title: 'Title',
|
|
1929
|
-
description: 'Description',
|
|
1930
|
-
data: 'Data',
|
|
1931
|
-
source: 'Source',
|
|
1932
|
-
columns: 'Columns',
|
|
1933
|
-
filterBy: 'Filter by',
|
|
1934
|
-
sortBy: 'Sort by',
|
|
1935
|
-
appearance: 'Appearance',
|
|
1936
|
-
showDescription: 'Show description',
|
|
1937
1987
|
viewType: 'View type',
|
|
1938
|
-
userFilters: 'User filters',
|
|
1939
|
-
enableSearch: 'Enable search',
|
|
1940
|
-
enableFilter: 'Enable filter',
|
|
1941
|
-
enableSort: 'Enable sort',
|
|
1942
|
-
enableHideFields: 'Enable hide fields',
|
|
1943
|
-
enableGroup: 'Enable group',
|
|
1944
|
-
enableColor: 'Enable color',
|
|
1945
|
-
enableDensity: 'Enable density',
|
|
1946
|
-
userActions: 'User actions',
|
|
1947
|
-
addRecordViaForm: 'Add records through a form',
|
|
1948
|
-
advanced: 'Advanced',
|
|
1949
|
-
allowExport: 'Allow export',
|
|
1950
1988
|
recordCount: '{{count}} records',
|
|
1951
|
-
noDescription: 'No description',
|
|
1952
|
-
none: 'None',
|
|
1953
|
-
columnsConfigured: '{{count}} columns',
|
|
1954
1989
|
save: 'Save',
|
|
1955
1990
|
discard: 'Discard',
|
|
1956
1991
|
createView: 'Create View',
|
|
@@ -1987,7 +2022,6 @@ const en = {
|
|
|
1987
2022
|
viewNameHelp: 'Machine key (snake_case). Auto-filled from the title — edit if you like.',
|
|
1988
2023
|
viewNameRequired: 'Enter a key (lowercase letters, numbers, underscore). Not auto-filled for non-Latin titles.',
|
|
1989
2024
|
viewNameInvalid: 'Use lowercase letters, numbers and underscores; start with a letter or underscore.',
|
|
1990
|
-
typeOptions: 'Type Options',
|
|
1991
2025
|
groupByField: 'Group by field',
|
|
1992
2026
|
groupByFieldHelp: 'The kanban groups records into columns by this field\'s values.',
|
|
1993
2027
|
startDateField: 'Start date field',
|
|
@@ -2002,7 +2036,6 @@ const en = {
|
|
|
2002
2036
|
longitudeFieldHelp: 'Field providing the longitude coordinate (geo fields only).',
|
|
2003
2037
|
imageField: 'Image field',
|
|
2004
2038
|
imageFieldHelp: 'The gallery cover comes from this image or attachment field.',
|
|
2005
|
-
dateField: 'Date field',
|
|
2006
2039
|
selectField: 'Select field…',
|
|
2007
2040
|
selectOption: 'Select…',
|
|
2008
2041
|
noEligibleFieldForType: 'No eligible field of this type. Add one to the object first.',
|
|
@@ -2019,82 +2052,11 @@ const en = {
|
|
|
2019
2052
|
xAxisFieldHelp: 'The categorical or time dimension.',
|
|
2020
2053
|
yAxisField: 'Y-axis field',
|
|
2021
2054
|
yAxisFieldHelp: 'The numeric field to aggregate.',
|
|
2022
|
-
gridOptionsHint: 'Grid view uses the columns configured above.',
|
|
2023
2055
|
groupBy: 'Group by',
|
|
2024
|
-
prefixField: 'Prefix field',
|
|
2025
|
-
fields: 'Fields',
|
|
2026
|
-
fieldsVisible: '{{count}} visible',
|
|
2027
|
-
sortsCount: '{{count}} sorts',
|
|
2028
|
-
filtersCount: '{{count}} filters',
|
|
2029
2056
|
endDateField: 'End date field',
|
|
2030
|
-
color: 'Color',
|
|
2031
|
-
fieldTextColor: 'Field text color',
|
|
2032
|
-
rowHeight: 'Row height',
|
|
2033
|
-
wrapHeaders: 'Wrap headers',
|
|
2034
|
-
showFieldDescriptions: 'Show field descriptions',
|
|
2035
|
-
collapseAllByDefault: 'Collapse all by default',
|
|
2036
|
-
striped: 'Striped rows',
|
|
2037
|
-
bordered: 'Bordered cells',
|
|
2038
|
-
inlineEdit: 'Edit records inline',
|
|
2039
|
-
addDeleteRecordsInline: 'Add/delete records inline',
|
|
2040
|
-
clickIntoRecordDetails: 'Click into record details',
|
|
2041
|
-
navigationMode: 'Navigation mode',
|
|
2042
|
-
navigationWidth: 'Navigation width',
|
|
2043
|
-
navigationWidthHint: 'Available for drawer, modal, and split navigation modes',
|
|
2044
|
-
openNewTab: 'Open in new tab',
|
|
2045
|
-
openNewTabHint: 'Available for page and new window navigation modes',
|
|
2046
|
-
selectionMode: 'Selection mode',
|
|
2047
|
-
selectionNone: 'None',
|
|
2048
|
-
selectionSingle: 'Single',
|
|
2049
|
-
selectionMultiple: 'Multiple',
|
|
2050
|
-
pageSize: 'Page size',
|
|
2051
|
-
pageSizeOptions: 'Page size options',
|
|
2052
|
-
exportFormats: 'Export formats',
|
|
2053
|
-
exportMaxRecords: 'Max records',
|
|
2054
|
-
exportIncludeHeaders: 'Include headers',
|
|
2055
|
-
exportFileNamePrefix: 'File name prefix',
|
|
2056
|
-
searchableFields: 'Searchable fields',
|
|
2057
|
-
filterableFields: 'Filterable fields',
|
|
2058
|
-
resizableColumns: 'Resizable columns',
|
|
2059
|
-
densityCompact: 'Compact',
|
|
2060
|
-
densityComfortable: 'Comfortable',
|
|
2061
|
-
densitySpacious: 'Spacious',
|
|
2062
|
-
densityMode: 'Density mode',
|
|
2063
|
-
hiddenFields: 'Hidden fields',
|
|
2064
|
-
rowActions: 'Row actions',
|
|
2065
|
-
bulkActions: 'Bulk actions',
|
|
2066
|
-
sharing: 'Sharing',
|
|
2067
|
-
sharingEnabled: 'Enable sharing',
|
|
2068
|
-
sharingVisibility: 'Visibility',
|
|
2069
|
-
addRecordEnabled: 'Enable add record',
|
|
2070
|
-
addRecordPosition: 'Position',
|
|
2071
|
-
addRecordMode: 'Mode',
|
|
2072
|
-
addRecordFormView: 'Form view',
|
|
2073
|
-
conditionalFormatting: 'Conditional formatting',
|
|
2074
|
-
addRule: 'Add rule',
|
|
2075
|
-
quickFilters: 'Quick filters',
|
|
2076
|
-
addQuickFilter: 'Add quick filter',
|
|
2077
|
-
ufElements: 'Elements',
|
|
2078
|
-
ufDropdown: 'Dropdown',
|
|
2079
2057
|
ufTabs: 'Tabs',
|
|
2080
|
-
ufToggle: 'Toggle',
|
|
2081
2058
|
ufAddField: '+ Add filter field…',
|
|
2082
|
-
ufNoFields: 'No fields available',
|
|
2083
|
-
ufAddTab: '+ Add tab',
|
|
2084
|
-
ufTabLabel: 'Label',
|
|
2085
2059
|
ufShowAllRecords: 'Show "All records" tab',
|
|
2086
|
-
ufAllowAddTab: 'Allow adding tabs',
|
|
2087
|
-
showRecordCount: 'Show record count',
|
|
2088
|
-
allowPrinting: 'Allow printing',
|
|
2089
|
-
virtualScroll: 'Virtual scroll',
|
|
2090
|
-
emptyStateTitle: 'Empty state title',
|
|
2091
|
-
emptyStateMessage: 'Empty state message',
|
|
2092
|
-
emptyStateIcon: 'Empty state icon',
|
|
2093
|
-
ariaLabel: 'ARIA label',
|
|
2094
|
-
ariaDescribedBy: 'ARIA described by',
|
|
2095
|
-
ariaLive: 'ARIA live',
|
|
2096
|
-
accessibility: 'Accessibility',
|
|
2097
|
-
viewTabs: 'View Tabs',
|
|
2098
2060
|
},
|
|
2099
2061
|
localeSwitcher: {
|
|
2100
2062
|
label: 'Language',
|
|
@@ -2177,7 +2139,7 @@ const en = {
|
|
|
2177
2139
|
submitButton: 'Send Reset Link',
|
|
2178
2140
|
submittingButton: 'Sending…',
|
|
2179
2141
|
successTitle: 'Check your email',
|
|
2180
|
-
successDescription: "We've sent a password reset link to {
|
|
2142
|
+
successDescription: "We've sent a password reset link to {email}. Please check your inbox.",
|
|
2181
2143
|
backToSignInText: 'Back to sign in',
|
|
2182
2144
|
rememberPasswordText: 'Remember your password?',
|
|
2183
2145
|
signInText: 'Sign in',
|
|
@@ -2500,10 +2462,12 @@ const en = {
|
|
|
2500
2462
|
build: {
|
|
2501
2463
|
title: 'Build an app',
|
|
2502
2464
|
subtitle: 'Start from scratch — design objects, forms, automations and interfaces.',
|
|
2465
|
+
noCapability: 'Building apps isn\'t available in this workspace — it requires the “Manage Metadata” permission, which your account doesn\'t have.',
|
|
2503
2466
|
},
|
|
2504
2467
|
template: {
|
|
2505
2468
|
title: 'Start with a template',
|
|
2506
2469
|
subtitle: 'Install a template app from the marketplace and customize it.',
|
|
2470
|
+
marketplaceDisabled: 'This runtime has no app marketplace configured, so there are no templates to install here.',
|
|
2507
2471
|
},
|
|
2508
2472
|
open: 'Open',
|
|
2509
2473
|
stats: {
|
|
@@ -2707,6 +2671,11 @@ const en = {
|
|
|
2707
2671
|
detailChangedKeys: 'Also changed:',
|
|
2708
2672
|
confirmNote: 'Publishing releases all {{count}} pending drafts of this package atomically.',
|
|
2709
2673
|
publishConfirm: 'Publish all',
|
|
2674
|
+
// [objectui#5418] Pre-publish security-posture findings, shown next to
|
|
2675
|
+
// the confirm button so a refusal the door would issue is read BEFORE
|
|
2676
|
+
// the click rather than as a toast after the batch rolled back.
|
|
2677
|
+
securityBlockTitle: 'Publishing will be refused — {{count}} item(s) need a decision first',
|
|
2678
|
+
securityBlockWhere: 'Fix it on the object under Settings → Record sharing, then publish again.',
|
|
2710
2679
|
},
|
|
2711
2680
|
// ADR-0045 — the materialized-but-unlisted app banner
|
|
2712
2681
|
// (UnpublishedAppBar.tsx), sibling of draftBar above.
|
|
@@ -2742,21 +2711,6 @@ const en = {
|
|
|
2742
2711
|
revertUnavailable: 'Commit store temporarily unreachable — the revert may not have been applied. Reopen this history to check before retrying.',
|
|
2743
2712
|
},
|
|
2744
2713
|
},
|
|
2745
|
-
renderer: {
|
|
2746
|
-
noPageSchema: 'No page schema provided',
|
|
2747
|
-
noFormSchema: 'No form schema provided',
|
|
2748
|
-
noDashboardSchema: 'No dashboard schema provided',
|
|
2749
|
-
pageRendering: 'Page rendering: {{name}}',
|
|
2750
|
-
dashboardRendering: 'Dashboard rendering: {{name}}',
|
|
2751
|
-
formRenderingMode: 'Form rendering in {{mode}} mode',
|
|
2752
|
-
formRenderingFor: 'for record {{id}}',
|
|
2753
|
-
createRecord: 'Create Record',
|
|
2754
|
-
editRecord: 'Edit Record',
|
|
2755
|
-
page: 'Page',
|
|
2756
|
-
dashboard: 'Dashboard',
|
|
2757
|
-
save: 'Save',
|
|
2758
|
-
cancel: 'Cancel',
|
|
2759
|
-
},
|
|
2760
2714
|
actionDialog: {
|
|
2761
2715
|
title: 'Action Parameters',
|
|
2762
2716
|
description: 'Please provide the required information to continue.',
|
|
@@ -2979,6 +2933,9 @@ const en = {
|
|
|
2979
2933
|
declined: 'Invitation declined',
|
|
2980
2934
|
declineFailed: 'Failed to decline invitation',
|
|
2981
2935
|
},
|
|
2936
|
+
current: {
|
|
2937
|
+
label: 'Current organization',
|
|
2938
|
+
},
|
|
2982
2939
|
switcher: {
|
|
2983
2940
|
label: 'Switch organization',
|
|
2984
2941
|
groupLabel: 'Working organization',
|
|
@@ -3029,52 +2986,6 @@ const en = {
|
|
|
3029
2986
|
consentRequired: 'Please accept the privacy policy to continue.',
|
|
3030
2987
|
rateLimited: 'Please take a moment to review your answers before submitting.',
|
|
3031
2988
|
redirectBlocked: 'Submission accepted, but the redirect URL was blocked for security.',
|
|
3032
|
-
demo: {
|
|
3033
|
-
contactTitle: 'Contact us',
|
|
3034
|
-
contactDescription: 'Tell us about your project and a sales representative will get back to you within one business day.',
|
|
3035
|
-
supportTitle: 'Submit a support request',
|
|
3036
|
-
supportDescription: 'Tell us what is going wrong — our team responds within one business day.',
|
|
3037
|
-
thankYouSalesTitle: 'Thanks — we received your message!',
|
|
3038
|
-
thankYouSalesMessage: 'A sales representative will be in touch within one business day.',
|
|
3039
|
-
thankYouSupportTitle: 'Got it — your request is in the queue.',
|
|
3040
|
-
thankYouSupportMessage: 'A support engineer will follow up shortly. Save this page if you have more screenshots to add.',
|
|
3041
|
-
field: {
|
|
3042
|
-
firstName: 'First name',
|
|
3043
|
-
lastName: 'Last name',
|
|
3044
|
-
email: 'Work email',
|
|
3045
|
-
phone: 'Phone',
|
|
3046
|
-
jobTitle: 'Job title',
|
|
3047
|
-
company: 'Company',
|
|
3048
|
-
website: 'Website',
|
|
3049
|
-
industry: 'Industry',
|
|
3050
|
-
companySize: 'Company size',
|
|
3051
|
-
howCanWeHelp: 'How can we help?',
|
|
3052
|
-
subject: 'Subject',
|
|
3053
|
-
description: 'Description',
|
|
3054
|
-
issueType: 'Issue type',
|
|
3055
|
-
priority: 'Priority',
|
|
3056
|
-
},
|
|
3057
|
-
industry: {
|
|
3058
|
-
technology: 'Technology',
|
|
3059
|
-
software: 'Software / SaaS',
|
|
3060
|
-
finance: 'Finance',
|
|
3061
|
-
healthcare: 'Healthcare',
|
|
3062
|
-
retail: 'Retail',
|
|
3063
|
-
other: 'Other',
|
|
3064
|
-
},
|
|
3065
|
-
issueType: {
|
|
3066
|
-
question: 'Question',
|
|
3067
|
-
problem: 'Problem',
|
|
3068
|
-
bug: 'Bug',
|
|
3069
|
-
feature_request: 'Feature request',
|
|
3070
|
-
},
|
|
3071
|
-
priority: {
|
|
3072
|
-
low: 'Low',
|
|
3073
|
-
medium: 'Medium',
|
|
3074
|
-
high: 'High',
|
|
3075
|
-
critical: 'Critical',
|
|
3076
|
-
},
|
|
3077
|
-
},
|
|
3078
2989
|
},
|
|
3079
2990
|
connectAgent: {
|
|
3080
2991
|
disabled: {
|
|
@@ -3188,6 +3099,7 @@ const en = {
|
|
|
3188
3099
|
retry: 'Try again',
|
|
3189
3100
|
errors: {
|
|
3190
3101
|
expired: 'The request expired before it was approved. Start again.',
|
|
3102
|
+
accessDenied: 'The connection request was denied. Start again.',
|
|
3191
3103
|
bindFailed: 'Binding failed.',
|
|
3192
3104
|
deviceCodeFailed: 'Device code request failed.',
|
|
3193
3105
|
},
|
|
@@ -3244,10 +3156,16 @@ const en = {
|
|
|
3244
3156
|
installedBadge: 'Installed v{{version}}',
|
|
3245
3157
|
load: {
|
|
3246
3158
|
failed: 'Failed to load marketplace',
|
|
3247
|
-
|
|
3159
|
+
failedHintConfigured: 'This runtime reaches the marketplace through the control plane at {{url}}. Check that it is online and reachable from here.',
|
|
3160
|
+
failedHintSameOrigin: 'This runtime serves the marketplace catalog itself. Check that the runtime is online.',
|
|
3248
3161
|
packageFailed: 'Failed to load package',
|
|
3249
3162
|
notFound: 'Not found.',
|
|
3250
3163
|
},
|
|
3164
|
+
disabled: {
|
|
3165
|
+
title: 'App Marketplace is turned off',
|
|
3166
|
+
description: 'This runtime has no marketplace configured, so there is nothing to browse or install from here.',
|
|
3167
|
+
hint: 'That is the expected state when the runtime is started with <code>OS_CLOUD_URL=off</code> (or <code>none</code>, <code>local</code>, <code>disabled</code>). To turn the marketplace on, point <code>OS_CLOUD_URL</code> at a control plane and restart the runtime.',
|
|
3168
|
+
},
|
|
3251
3169
|
detail: {
|
|
3252
3170
|
homepage: 'Homepage',
|
|
3253
3171
|
installedV: 'Installed · v{{version}}',
|
|
@@ -3499,12 +3417,19 @@ const en = {
|
|
|
3499
3417
|
submittedAgo: 'Submitted {{when}}',
|
|
3500
3418
|
completedAt: 'Completed {{when}}',
|
|
3501
3419
|
waitingOn: 'Waiting on',
|
|
3420
|
+
approverNameSeparator: ', ',
|
|
3421
|
+
approverUnstaffed: '{{seat}} (no current holder)',
|
|
3502
3422
|
history: 'Activity',
|
|
3503
3423
|
noActions: 'No actions yet.',
|
|
3504
3424
|
actSubmit: 'Submitted',
|
|
3505
3425
|
actApprove: 'Approved',
|
|
3506
3426
|
actReject: 'Rejected',
|
|
3507
3427
|
actRecall: 'Recalled',
|
|
3428
|
+
overrideActionLabel: 'Override {{action}}',
|
|
3429
|
+
overrideNotice: 'You hold no approver slot on this step. Continuing uses your admin override: it finalises the step immediately, bypassing any approver who has not acted. The decision is recorded as an admin override.',
|
|
3430
|
+
overrideNoticeWho: 'You hold no approver slot on this step. Continuing uses your admin override: it finalises the step immediately and bypasses the approvers who have not acted — {{who}}. The decision is recorded as an admin override.',
|
|
3431
|
+
viaOverrideChip: 'Admin override',
|
|
3432
|
+
viaOverrideHint: 'The actor held no approver slot on this step — admitted by the admin-override path.',
|
|
3508
3433
|
rawData: 'Raw data (JSON)',
|
|
3509
3434
|
copy: 'Copy',
|
|
3510
3435
|
copied: 'Copied',
|
|
@@ -3573,10 +3498,15 @@ const en = {
|
|
|
3573
3498
|
noResults: 'No results',
|
|
3574
3499
|
searchField: 'Search {{label}}…',
|
|
3575
3500
|
enterId: 'Enter {{label}} id',
|
|
3501
|
+
addValue: 'Type a value, press Enter',
|
|
3502
|
+
removeValue: 'Remove {{value}}',
|
|
3503
|
+
rangeStart: 'From',
|
|
3504
|
+
rangeEnd: 'To',
|
|
3576
3505
|
operators: {
|
|
3577
3506
|
equals: 'Equals',
|
|
3578
3507
|
notEquals: 'Does not equal',
|
|
3579
3508
|
contains: 'Contains',
|
|
3509
|
+
containsCaseInsensitive: 'Contains (ignore case)',
|
|
3580
3510
|
notContains: 'Does not contain',
|
|
3581
3511
|
isEmpty: 'Is empty',
|
|
3582
3512
|
isNotEmpty: 'Is not empty',
|
|
@@ -3589,6 +3519,12 @@ const en = {
|
|
|
3589
3519
|
between: 'Between',
|
|
3590
3520
|
in: 'In',
|
|
3591
3521
|
notIn: 'Not in',
|
|
3522
|
+
startsWith: 'Starts with',
|
|
3523
|
+
endsWith: 'Ends with',
|
|
3524
|
+
isNull: 'Is null',
|
|
3525
|
+
isNotNull: 'Is not null',
|
|
3526
|
+
exists: 'Is set',
|
|
3527
|
+
notExists: 'Is not set',
|
|
3592
3528
|
},
|
|
3593
3529
|
},
|
|
3594
3530
|
sortBuilder: {
|
|
@@ -3682,6 +3618,30 @@ const en = {
|
|
|
3682
3618
|
wizard: {
|
|
3683
3619
|
missingRequired: 'Please complete the required fields: {{fields}}',
|
|
3684
3620
|
},
|
|
3621
|
+
// The screen-flow runner dialog (`app-shell/views/FlowRunner`) — the modal a
|
|
3622
|
+
// `type: 'flow'` action opens when its run pauses at a `screen` node.
|
|
3623
|
+
//
|
|
3624
|
+
// What is deliberately NOT here: the sentence a refused resume shows. That is
|
|
3625
|
+
// the ADR-0112 envelope's own `error.message`, prose the automation engine
|
|
3626
|
+
// composed for a human ("Node 'create_quote' failed: … at most 2 decimal
|
|
3627
|
+
// places"), so it has no fixed catalogue to key against and is passed through
|
|
3628
|
+
// untranslated — the same division `appManagement` states above. The runner
|
|
3629
|
+
// borrows `common.{loading,cancel,close,submit}` for its chrome and
|
|
3630
|
+
// `wizard.missingRequired` for the pre-submit check, which is the same
|
|
3631
|
+
// sentence `plugin-form`'s WizardForm raises.
|
|
3632
|
+
flowRunner: {
|
|
3633
|
+
// Fallback dialog title, used only when the `screen` node declares none.
|
|
3634
|
+
title: 'Input',
|
|
3635
|
+
submitting: 'Submitting…',
|
|
3636
|
+
// The submit label of an `object-form` step: it saves a record AND advances
|
|
3637
|
+
// the run, so it is not the plain `common.submit`.
|
|
3638
|
+
saveAndContinue: 'Save & Continue',
|
|
3639
|
+
// A multi-screen wizard advanced to the next step (not the end of the run).
|
|
3640
|
+
nextStep: 'Saved — next step',
|
|
3641
|
+
// Terminal success, used only when the flow declares no `successMessage`
|
|
3642
|
+
// of its own.
|
|
3643
|
+
completed: 'Flow "{{flow}}" completed',
|
|
3644
|
+
},
|
|
3685
3645
|
// Console › System › Applications (objectui#4307). The page's OWN chrome —
|
|
3686
3646
|
// headings, controls, badges and the frames of its toasts.
|
|
3687
3647
|
//
|