@object-ui/i18n 17.6.0 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +5408 -0
  2. package/README.md +255 -13
  3. package/dist/LocalizationContext.d.ts +32 -9
  4. package/dist/LocalizationContext.js +32 -10
  5. package/dist/builtinAggregateLabels.d.ts +40 -0
  6. package/dist/builtinAggregateLabels.js +23 -0
  7. package/dist/currency.d.ts +27 -3
  8. package/dist/currency.js +28 -4
  9. package/dist/fallbackInterpolation.d.ts +79 -0
  10. package/dist/fallbackInterpolation.js +124 -0
  11. package/dist/i18n.d.ts +27 -1
  12. package/dist/i18n.js +99 -16
  13. package/dist/index.d.ts +8 -13
  14. package/dist/index.js +45 -17
  15. package/dist/locales/ar.d.ts +1504 -188
  16. package/dist/locales/ar.js +1711 -281
  17. package/dist/locales/de.d.ts +1080 -188
  18. package/dist/locales/de.js +1248 -261
  19. package/dist/locales/en.d.ts +1141 -249
  20. package/dist/locales/en.js +1714 -295
  21. package/dist/locales/es.d.ts +1186 -188
  22. package/dist/locales/es.js +1350 -255
  23. package/dist/locales/fr.d.ts +1186 -188
  24. package/dist/locales/fr.js +1351 -258
  25. package/dist/locales/index.d.ts +11940 -2033
  26. package/dist/locales/index.js +48 -9
  27. package/dist/locales/ja.d.ts +1080 -188
  28. package/dist/locales/ja.js +1240 -254
  29. package/dist/locales/ko.d.ts +1080 -188
  30. package/dist/locales/ko.js +1244 -258
  31. package/dist/locales/pt.d.ts +1186 -188
  32. package/dist/locales/pt.js +1350 -255
  33. package/dist/locales/registry.d.ts +102 -0
  34. package/dist/locales/registry.js +220 -0
  35. package/dist/locales/rtl.d.ts +24 -0
  36. package/dist/locales/rtl.js +26 -0
  37. package/dist/locales/ru.d.ts +1292 -188
  38. package/dist/locales/ru.js +1479 -272
  39. package/dist/locales/zh.d.ts +1144 -252
  40. package/dist/locales/zh.js +1245 -259
  41. package/dist/pickLocalized.d.ts +30 -0
  42. package/dist/pickLocalized.js +39 -0
  43. package/dist/provider.d.ts +101 -12
  44. package/dist/provider.js +335 -50
  45. package/dist/translateFn.d.ts +29 -0
  46. package/dist/translateFn.js +8 -0
  47. package/dist/useDisplayLocale.d.ts +11 -0
  48. package/dist/useDisplayLocale.js +11 -0
  49. package/dist/useObjectLabel.d.ts +143 -100
  50. package/dist/useObjectLabel.js +129 -82
  51. package/dist/useSafeTranslation.js +40 -42
  52. package/dist/utils/first-day-of-week.d.ts +71 -0
  53. package/dist/utils/first-day-of-week.js +61 -0
  54. package/dist/utils/formatting.d.ts +23 -1
  55. package/dist/utils/formatting.js +34 -5
  56. package/dist/utils/index.d.ts +1 -0
  57. package/dist/utils/index.js +1 -0
  58. package/dist/utils/spec-formatters.d.ts +13 -23
  59. package/dist/utils/spec-formatters.js +41 -2
  60. package/dist/utils/spec-translations.d.ts +16 -3
  61. package/dist/utils/spec-translations.js +52 -13
  62. package/package.json +12 -6
@@ -22,27 +22,13 @@ declare const en: {
22
22
  readonly manage_users: "Manage Users";
23
23
  readonly manage_org_users: "Manage Organization Users";
24
24
  readonly manage_metadata: "Manage Metadata";
25
+ readonly manage_mailboxes: "Manage Mailboxes";
25
26
  readonly manage_platform_settings: "Manage Platform Settings";
26
27
  readonly setup_access: "Setup Access";
27
28
  readonly setup_write: "Write Settings";
28
29
  readonly studio_access: "Studio Access";
29
- };
30
- };
31
- readonly perm: {
32
- readonly facet: {
33
- readonly none: "None";
34
- readonly more: "+{{count}} more";
35
- readonly objects: "{{count}} objects";
36
- readonly objects_one: "{{count}} object";
37
- readonly fields: "{{count}} field rules";
38
- readonly fields_one: "{{count}} field rule";
39
- readonly rls: "{{count}} RLS policies";
40
- readonly rls_one: "{{count}} RLS policy";
41
- readonly tabs: "{{count}} tab rules";
42
- readonly tabs_one: "{{count}} tab rule";
43
- readonly adminScope: "Delegated admin configured";
44
- readonly designInStudio: "Design in Studio →";
45
- readonly designInStudioHint: "Design in Studio";
30
+ readonly manage_sharing: "Manage Sharing";
31
+ readonly view_all_audit_log: "View All Audit Log";
46
32
  };
47
33
  };
48
34
  readonly lookup: {
@@ -61,7 +47,8 @@ declare const en: {
61
47
  readonly selectFirst: "Select {{fields}} first";
62
48
  readonly selectRecord: "Select record";
63
49
  readonly recordCount: "{{count}} records";
64
- readonly recordCountOne: "1 record";
50
+ readonly recordCount_one: "{{count}} record";
51
+ readonly recordCount_other: "{{count}} records";
65
52
  readonly pageOf: "Page {{current}} of {{total}}";
66
53
  readonly filters: "Filters";
67
54
  readonly clear: "Clear";
@@ -111,14 +98,18 @@ declare const en: {
111
98
  readonly closePanel: "Close panel";
112
99
  readonly resizeDrawer: "Resize drawer";
113
100
  readonly itemCount: "{{count}} items";
114
- readonly itemCountOne: "{{count}} item";
101
+ readonly itemCount_one: "{{count}} item";
102
+ readonly itemCount_other: "{{count}} items";
115
103
  readonly toggleSidebar: "Toggle sidebar";
104
+ readonly breadcrumb: "Breadcrumb";
116
105
  readonly package: "Package";
117
106
  readonly done: "Done";
118
107
  readonly editInStudio: "Edit in studio";
119
108
  readonly record: "Record";
120
109
  readonly retry: "Retry";
121
110
  readonly printDialogHint: "Opens your browser’s print dialog (not a PDF export)";
111
+ readonly rowCeilingNote: "Showing the first {{shown}} of {{total}} records. Narrow the filter.";
112
+ readonly rowCeilingNoteUnknownTotal: "Showing the first {{shown}} records. Narrow the filter.";
122
113
  };
123
114
  readonly actions: {
124
115
  readonly decisionOutput: {
@@ -130,6 +121,15 @@ declare const en: {
130
121
  readonly acknowledge: "I have saved this";
131
122
  readonly copyAll: "Copy all";
132
123
  };
124
+ readonly notAvailableHere: "\"{{action}}\" is not available on the current page.";
125
+ readonly notAvailableForRecord: "Not available for this record";
126
+ readonly completedSuccessfully: "Action completed successfully";
127
+ readonly failed: "Action failed";
128
+ readonly parallelFailed: "One or more parallel actions failed";
129
+ readonly undo: "Undo";
130
+ readonly undone: "Change undone";
131
+ readonly undoneOperation: "Undo: {{description}}";
132
+ readonly redoneOperation: "Redo: {{description}}";
133
133
  };
134
134
  readonly validation: {
135
135
  readonly required: "{{field}} is required";
@@ -147,8 +147,12 @@ declare const en: {
147
147
  };
148
148
  readonly form: {
149
149
  readonly noPermissionToSave: "You don't have permission to save this record.";
150
+ readonly noPermissionToCreate: "You don't have permission to create {{object}} records. The fields are read-only.";
151
+ readonly noPermissionToEdit: "You don't have permission to edit {{object}} records. The fields are read-only.";
150
152
  readonly submitFailed: "Could not save. Please try again.";
151
- readonly addItem: "Add item";
153
+ readonly uploadInFlight: "Wait for the upload to finish before saving.";
154
+ readonly clearedOnHide: "Cleared — no longer applicable given the current values: {{fields}}";
155
+ readonly visibleWhenFaulted: "Can't submit: the visibleWhen rule of {{fields}} could not be evaluated. The rule must be fixed before this form can be submitted.";
152
156
  readonly removeItem: "Remove item";
153
157
  readonly fieldRequired: "This field is required";
154
158
  readonly invalidFormat: "Invalid format";
@@ -158,6 +162,30 @@ declare const en: {
158
162
  readonly discardTitle: "Discard changes?";
159
163
  readonly discardMessage: "You have unsaved changes. If you close this form now, your edits will be lost.";
160
164
  readonly dialogDescriptionFallback: "Complete the form fields, then submit or cancel.";
165
+ readonly deniedDescription: "You do not have edit access to this field.";
166
+ readonly serverDefaultHint: "Set automatically when saved.";
167
+ readonly maxFileSize: "Max size: {{size}}";
168
+ readonly masterDetail: {
169
+ readonly loadingColumns: "Loading columns…";
170
+ readonly subtotal: "Subtotal";
171
+ readonly tax: "Tax ({{rate}}%)";
172
+ readonly total: "Total";
173
+ readonly lineItem: "Line item";
174
+ readonly rowTitle: "{{title}} — row {{row}}";
175
+ readonly applyRow: "Apply";
176
+ readonly editorDescription: "Enter the record and its line items, then save.";
177
+ readonly noChildObject: "This collection has no child object configured: set {{property}} to the object whose rows it lists.";
178
+ readonly schemaUnavailable: "Could not load the schema of {{object}}, so this collection has no columns to show. Check that the object exists and is readable, then reload.";
179
+ readonly noRelationshipField: "Could not work out how {{object}} links to {{parent}}: no lookup or master_detail field on it references the parent. Set {{property}} on this collection to the field that holds the parent record.";
180
+ };
181
+ readonly lineItems: {
182
+ readonly title: "Line Items";
183
+ readonly saveRecordFirst: "Save the record first to add line items.";
184
+ readonly notLoaded: "This record’s line items have not been loaded.";
185
+ readonly loadFailed: "Failed to load line items";
186
+ readonly saveFailed: "Failed to save line items";
187
+ readonly noChildObject: "This panel has no child object configured: set {{property}} to the object whose rows it lists.";
188
+ };
161
189
  readonly keepEditing: "Keep editing";
162
190
  readonly discard: "Discard";
163
191
  readonly conflictTitle: "Save conflict";
@@ -175,6 +203,12 @@ declare const en: {
175
203
  readonly createSuccess: "{{object}} created successfully";
176
204
  readonly updateSuccess: "{{object}} updated successfully";
177
205
  readonly deleteSuccess: "{{object}} deleted successfully";
206
+ readonly created: "Created";
207
+ readonly saved: "Saved";
208
+ readonly savedNamed: "{{title}} saved";
209
+ readonly submitted: "Submitted";
210
+ readonly errorLoading: "Error loading form";
211
+ readonly navigateRefused: "The `navigateOnSuccess` destination declared for this form was refused, so the navigation did not happen.";
178
212
  readonly fullscreen: {
179
213
  readonly title: "Edit text";
180
214
  readonly description: "Edit the full text value, then save or cancel your changes.";
@@ -186,6 +220,8 @@ declare const en: {
186
220
  readonly fields: {
187
221
  readonly relativeDate: {
188
222
  readonly overdue: "Overdue {{count}}d";
223
+ readonly overdue_one: "Overdue {{count}}d";
224
+ readonly overdue_other: "Overdue {{count}}d";
189
225
  };
190
226
  readonly file: {
191
227
  readonly dragDropHere: "Drag & drop files here";
@@ -202,6 +238,9 @@ declare const en: {
202
238
  readonly remove: "Remove {{name}}";
203
239
  readonly exceedsMaxSize: "\"{{name}}\" exceeds max size ({{max}} MB)";
204
240
  readonly uploadFailed: "Failed to upload \"{{name}}\": {{error}}";
241
+ readonly uploadIncomplete: "Upload of \"{{name}}\" did not complete: no file id was returned, so nothing was saved";
242
+ readonly restricted: "Restricted file";
243
+ readonly restrictedHint: "You do not have access to the details of this file";
205
244
  };
206
245
  readonly image: {
207
246
  readonly upload: "Upload image";
@@ -212,10 +251,14 @@ declare const en: {
212
251
  readonly remove: "Remove image {{index}}";
213
252
  readonly enlarge: "Enlarge {{name}}";
214
253
  readonly preview: "Image preview";
254
+ readonly cropPreview: "Image crop preview";
215
255
  readonly previous: "Previous image";
216
256
  readonly next: "Next image";
217
257
  readonly counter: "{{current}} / {{total}}";
218
258
  };
259
+ readonly percent: {
260
+ readonly slider: "Percentage";
261
+ };
219
262
  readonly richText: {
220
263
  readonly format: "Format: {{format}}";
221
264
  readonly basicEditorHint: "Rich text editor (basic)";
@@ -231,6 +274,10 @@ declare const en: {
231
274
  readonly search: "Search objects…";
232
275
  readonly empty: "No objects found";
233
276
  };
277
+ readonly registryRef: {
278
+ readonly loadFailed: "The list could not be loaded. You can still type the name.";
279
+ readonly notFound: "{{name}} (not found)";
280
+ };
234
281
  readonly recipient: {
235
282
  readonly selectTypeFirst: "Select a recipient type first.";
236
283
  readonly loading: "Loading…";
@@ -242,6 +289,9 @@ declare const en: {
242
289
  readonly selectBusinessUnit: "Select a business unit";
243
290
  readonly selectPosition: "Select a position";
244
291
  readonly selectUnitAndSubordinates: "Select a business unit";
292
+ readonly selectField: "Select a user field";
293
+ readonly noUserFields: "No user fields on this object";
294
+ readonly fieldNotUserTyped: "{{name}} — not a user field";
245
295
  };
246
296
  readonly filterCondition: {
247
297
  readonly selectObjectFirst: "Select an object first.";
@@ -252,6 +302,33 @@ declare const en: {
252
302
  readonly editAsJson: "Edit as JSON";
253
303
  readonly useVisualBuilder: "Use visual builder";
254
304
  };
305
+ readonly object: {
306
+ readonly invalidJson: "Invalid JSON";
307
+ };
308
+ readonly location: {
309
+ readonly refusedFormat: "Not saved: enter a latitude, longitude pair (example: 30.2741, 120.1551).";
310
+ readonly refusedRange: "Not saved: {{detail}}";
311
+ readonly latitude: "latitude";
312
+ readonly longitude: "longitude";
313
+ readonly refusedResidueOne: "Not saved: {{name}} \"{{text}}\" is not a number. Enter plain decimals (example: 30.2741, 120.1551).";
314
+ readonly refusedResidue: "Not saved: {{name}} \"{{text}}\" and {{otherName}} \"{{otherText}}\" are not numbers. Enter plain decimals (example: 30.2741, 120.1551).";
315
+ };
316
+ readonly date: {
317
+ readonly impossibleDay: "The stored value \"{{value}}\" is not a real date. Pick a date to replace it.";
318
+ };
319
+ readonly dateTime: {
320
+ readonly impossibleDay: "The stored value \"{{value}}\" is not a real date. Pick a date and time to replace it.";
321
+ };
322
+ readonly datePicker: {
323
+ readonly today: "Today";
324
+ readonly tomorrow: "Tomorrow";
325
+ readonly clear: "Clear date";
326
+ readonly openCalendar: "Open calendar";
327
+ readonly invalid: "Not saved: \"{{value}}\" is not a date. Type it as {{format}}, or pick one from the calendar.";
328
+ };
329
+ readonly number: {
330
+ readonly badInput: "Not saved: the text in this box is not a number. Enter a plain decimal (example: {{example}}).";
331
+ };
255
332
  readonly tags: {
256
333
  readonly placeholder: "Type and press Enter to add…";
257
334
  };
@@ -262,10 +339,25 @@ declare const en: {
262
339
  readonly postalCode: "ZIP / Postal Code";
263
340
  readonly country: "Country";
264
341
  };
342
+ readonly boolean: {
343
+ readonly offBadge: "{{label}} — Off";
344
+ readonly completed: "Completed";
345
+ readonly notCompleted: "Not completed";
346
+ };
265
347
  readonly textarea: {
266
348
  readonly characterCount: "Character count: {{count}} of {{max}}";
267
349
  readonly charactersRemaining: "Characters remaining: {{count}}";
268
350
  };
351
+ readonly grid: {
352
+ readonly addLine: "Add line";
353
+ readonly noItems: "No items";
354
+ readonly noItemsAddHint: "No items yet — click “{{label}}” to begin.";
355
+ readonly optionalColumns: "Optional columns";
356
+ readonly computed: "Computed";
357
+ readonly openRow: "Open row";
358
+ readonly duplicateRow: "Duplicate row";
359
+ readonly removeRow: "Remove row";
360
+ };
269
361
  };
270
362
  readonly table: {
271
363
  readonly rowsPerPage: "Rows per page";
@@ -281,10 +373,15 @@ declare const en: {
281
373
  readonly selectAllRows: "Select all rows";
282
374
  readonly expandRow: "Expand row";
283
375
  readonly collapseRow: "Collapse row";
376
+ readonly rowActions: "Row actions";
284
377
  readonly hideColumn: "Hide column";
285
378
  readonly freezeColumn: "Freeze column";
286
379
  readonly unfreezeColumn: "Unfreeze column";
287
380
  readonly pageInfo: "Page {{current}} of {{total}}";
381
+ readonly firstPage: "First page";
382
+ readonly previousPage: "Previous page";
383
+ readonly nextPage: "Next page";
384
+ readonly lastPage: "Last page";
288
385
  readonly totalRecords: "{{count}} total";
289
386
  readonly noResults: "No results found";
290
387
  readonly noResultsHint: "Try adjusting your filters or search query.";
@@ -294,8 +391,15 @@ declare const en: {
294
391
  readonly open: "Open";
295
392
  readonly search: "Search…";
296
393
  readonly modified: "{{count}} row modified";
394
+ readonly modified_one: "{{count}} row modified";
395
+ readonly modified_other: "{{count}} rows modified";
396
+ readonly saved: "{{count}} row saved";
397
+ readonly saved_one: "{{count}} row saved";
398
+ readonly saved_other: "{{count}} rows saved";
297
399
  readonly saveFailed: "Save failed";
298
400
  readonly selected: "{{count}} selected";
401
+ readonly selected_one: "{{count}} selected";
402
+ readonly selected_other: "{{count}} selected";
299
403
  readonly edit: "Edit";
300
404
  readonly delete: "Delete";
301
405
  };
@@ -310,20 +414,31 @@ declare const en: {
310
414
  readonly pullToRefresh: "Pull to refresh";
311
415
  readonly refreshing: "Refreshing…";
312
416
  readonly openRecord: "Open record";
417
+ readonly recordUnavailable: "{{object}} · record unavailable";
313
418
  readonly openMenu: "Open menu";
314
419
  readonly bulkSelected: "{{count}} selected";
420
+ readonly bulkSelected_one: "{{count}} selected";
421
+ readonly bulkSelected_other: "{{count}} selected";
315
422
  readonly bulkSelectedAllMatches: "{{count}} selected (all matches)";
316
423
  readonly bulkClear: "Clear";
317
424
  readonly bulkAllOnPage: "All {{count}} on this page are selected.";
425
+ readonly bulkAllOnPage_one: "{{count}} record on this page is selected.";
426
+ readonly bulkAllOnPage_other: "All {{count}} on this page are selected.";
318
427
  readonly bulkSelectAllMatching: "Select all {{count}} matching";
319
428
  readonly bulkAllMatchingSelected: "All {{count}} matching records are selected.";
429
+ readonly bulkActions: "Bulk actions";
320
430
  readonly rowHeight: "Row height: {{mode}}";
321
431
  readonly empty: "Empty";
322
432
  readonly yes: "Yes";
323
433
  readonly no: "No";
324
434
  readonly systemFields: "System";
435
+ readonly grouping: {
436
+ readonly needsHeaderQuery: "This view is grouped, but its data source does not implement queryGroupHeaders, so the groups cannot be counted. Remove the grouping to show the records.";
437
+ readonly needsWholeRows: "Grouping needs every record, but this grid was handed one page of them, so the groups cannot be counted. Hand in every record, or let the grid fetch them from a data source that implements queryGroupHeaders.";
438
+ };
325
439
  readonly summary: {
326
440
  readonly pattern: "{{label}}: {{value}}";
441
+ readonly pagePattern: "{{label}} (this page): {{value}}";
327
442
  readonly count: "Count";
328
443
  readonly countEmpty: "Empty";
329
444
  readonly countFilled: "Filled";
@@ -354,8 +469,10 @@ declare const en: {
354
469
  readonly dragDrop: "Drag & drop a CSV or Excel file here, or click to browse";
355
470
  readonly browseFiles: "Browse Files";
356
471
  readonly downloadTemplate: "Download template";
357
- readonly downloadTemplateHint: "Get a CSV with the right columns (required fields marked *).";
472
+ readonly downloadTemplateHint: "Get an Excel file of the columns you can import (required fields marked *), with instructions for filling it in.";
358
473
  readonly templateFileName: "{{object}}-import-template";
474
+ readonly templateDownloadFailed: "Could not download the template. Please try again.";
475
+ readonly templateNotPermitted: "You do not have permission to create records of this object, so its import template is not available.";
359
476
  readonly parsing: "Parsing…";
360
477
  readonly pasteHint: "or paste (Ctrl/⌘+V) rows copied from Excel or Google Sheets";
361
478
  readonly legacyXls: "Legacy .xls files aren't supported — please re-save as .xlsx.";
@@ -381,6 +498,8 @@ declare const en: {
381
498
  readonly typeMismatch: "Looks like {{type}}";
382
499
  readonly autoMatched: "Auto-matched";
383
500
  readonly autoMatchedSummary: "Auto-matched {{count}} column(s) — review and adjust below.";
501
+ readonly autoMatchedSummary_one: "Auto-matched {{count}} column — review and adjust below.";
502
+ readonly autoMatchedSummary_other: "Auto-matched {{count}} columns — review and adjust below.";
384
503
  readonly confidence: {
385
504
  readonly high: "High confidence";
386
505
  readonly medium: "Medium confidence";
@@ -399,7 +518,11 @@ declare const en: {
399
518
  readonly mapped: "Mapped";
400
519
  readonly skipped: "Skipped";
401
520
  readonly rowsWithErrors: "{{count}} row(s) with errors";
521
+ readonly rowsWithErrors_one: "{{count}} row with errors";
522
+ readonly rowsWithErrors_other: "{{count}} rows with errors";
402
523
  readonly rowsCorrected: "{{count}} row(s) corrected";
524
+ readonly rowsCorrected_one: "{{count}} row corrected";
525
+ readonly rowsCorrected_other: "{{count}} rows corrected";
403
526
  readonly clickToFix: "— click a highlighted cell to fix it inline.";
404
527
  readonly showingRows: "Showing {{shown}} of {{total}} rows";
405
528
  readonly importing: "Importing… {{progress}}%";
@@ -410,12 +533,22 @@ declare const en: {
410
533
  readonly cancelImport: "Cancel import";
411
534
  readonly importCancelled: "Import cancelled";
412
535
  readonly resultsTruncated: "Showing the first {{count}} row results (of {{total}}).";
536
+ readonly resultsTruncated_one: "Showing the first {{count}} row result (of {{total}}).";
537
+ readonly resultsTruncated_other: "Showing the first {{count}} row results (of {{total}}).";
413
538
  readonly importComplete: "Import Complete";
539
+ readonly importPartial: "Import finished with errors";
540
+ readonly importFailed: "Import failed";
414
541
  readonly imported: "{{count}} imported";
415
542
  readonly createdCount: "{{count}} created";
543
+ readonly createdCount_one: "{{count}} created";
544
+ readonly createdCount_other: "{{count}} created";
416
545
  readonly updatedCount: "{{count}} updated";
546
+ readonly updatedCount_one: "{{count}} updated";
547
+ readonly updatedCount_other: "{{count}} updated";
417
548
  readonly skippedCount: "{{count}} skipped";
418
549
  readonly moreErrors: "…and {{count}} more errors";
550
+ readonly moreErrors_one: "…and {{count}} more error";
551
+ readonly moreErrors_other: "…and {{count}} more errors";
419
552
  readonly downloadFailed: "Download failed rows";
420
553
  readonly options: "Import options";
421
554
  readonly writeMode: "When a row matches an existing record";
@@ -430,9 +563,6 @@ declare const en: {
430
563
  readonly needMatchFields: "Select at least one field to match on.";
431
564
  readonly matchOnlyField: "(match only)";
432
565
  readonly optCreateOptions: "Keep unknown option values";
433
- readonly optRunAutomations: "Run automations & triggers";
434
- readonly optTreatHistorical: "Import as historical data";
435
- readonly optTreatHistoricalHint: "(import completed records as-is — skip state-machine checks and keep their original timestamps & author instead of stamping now)";
436
566
  readonly optSkipBlankKey: "Skip rows with a blank match value";
437
567
  readonly optBackground: "Import in the background";
438
568
  readonly optBackgroundHint: "(runs as an undoable job)";
@@ -447,6 +577,7 @@ declare const en: {
447
577
  readonly invalidBoolean: "\"{{value}}\" is not a valid true/false value";
448
578
  readonly invalidNumber: "\"{{value}}\" is not a valid number";
449
579
  readonly invalidDate: "\"{{value}}\" is not a valid date";
580
+ readonly invalidTime: "\"{{value}}\" is not a valid time";
450
581
  readonly invalidOption: "\"{{value}}\" is not one of the allowed options";
451
582
  readonly requiredValue: "This field is required";
452
583
  readonly matchAmbiguous: "Matches more than one existing record — use a unique value or the record id";
@@ -463,10 +594,15 @@ declare const en: {
463
594
  readonly historyColResult: "Result";
464
595
  readonly historyColTime: "When";
465
596
  readonly errorCount: "{{count}} errors";
597
+ readonly errorCount_one: "{{count}} error";
598
+ readonly errorCount_other: "{{count}} errors";
466
599
  readonly undoImport: "Undo import";
467
600
  readonly undoing: "Undoing…";
468
601
  readonly undoConfirm: "Undo this import? Records it created will be deleted and records it updated will be restored to their previous values.";
469
602
  readonly reverted: "Undone";
603
+ readonly undoPartial: "{{count}} rows were not undone. Undo again to retry only those rows.";
604
+ readonly undoPartial_one: "{{count}} row was not undone. Undo again to retry only that row.";
605
+ readonly undoPartial_other: "{{count}} rows were not undone. Undo again to retry only those rows.";
470
606
  readonly jobStatus: {
471
607
  readonly pending: "Pending";
472
608
  readonly running: "Running";
@@ -479,6 +615,8 @@ declare const en: {
479
615
  readonly next: "Next";
480
616
  readonly close: "Close";
481
617
  readonly importNRows: "Import {{count}} Rows";
618
+ readonly importNRows_one: "Import {{count}} Row";
619
+ readonly importNRows_other: "Import {{count}} Rows";
482
620
  readonly importingProgress: "Importing…";
483
621
  readonly required: "Required";
484
622
  readonly invalidType: "Invalid {{type}}";
@@ -490,9 +628,13 @@ declare const en: {
490
628
  };
491
629
  readonly bulk: {
492
630
  readonly confirmDefault: "This will apply to {{count}} record(s).";
631
+ readonly confirmDefault_one: "This will apply to {{count}} record.";
632
+ readonly confirmDefault_other: "This will apply to {{count}} records.";
493
633
  readonly overLimit: "Selection ({{count}}) exceeds the action limit ({{limit}}). Reduce the selection to proceed.";
494
634
  readonly affectedRecords: "Affected records ({{count}}):";
495
635
  readonly skippedIneligible: "{{count}} selected record(s) are not eligible for this action and will be skipped.";
636
+ readonly skippedIneligible_one: "{{count}} selected record is not eligible for this action and will be skipped.";
637
+ readonly skippedIneligible_other: "{{count}} selected records are not eligible for this action and will be skipped.";
496
638
  readonly rowFallback: "Row {{index}}";
497
639
  readonly andMore: "… and {{count}} more";
498
640
  readonly processed: "{{count}} / {{total}} processed";
@@ -510,7 +652,6 @@ declare const en: {
510
652
  readonly undo: "Undo";
511
653
  readonly undoing: "Undoing…";
512
654
  readonly done: "Done";
513
- readonly selectPlaceholder: "Select…";
514
655
  readonly loading: "Loading…";
515
656
  };
516
657
  };
@@ -519,26 +660,58 @@ declare const en: {
519
660
  readonly month: "Month";
520
661
  readonly week: "Week";
521
662
  readonly day: "Day";
522
- readonly agenda: "Agenda";
523
663
  readonly allDay: "All Day";
524
- readonly noEvents: "No events";
525
664
  readonly newEvent: "New event";
526
665
  readonly moreEvents: "+{{count}} more";
666
+ readonly unscheduled: "Unscheduled ({{count}})";
667
+ readonly loading: "Loading calendar…";
668
+ readonly loadError: "Error: {{message}}";
669
+ readonly configRequired: "Calendar configuration required. Please specify startDateField, the calendar's one required key; the event title resolves without titleField.";
670
+ readonly configRequiredHint: "It belongs on the view's calendar block. An interface page has no calendar slot of its own: point its sourceView at a view that declares one.";
671
+ readonly eventDetails: "Event Details";
672
+ readonly pullToRefresh: "Pull to refresh";
673
+ readonly refreshing: "Refreshing…";
674
+ readonly onDate: "On {{date}}";
675
+ readonly eventTitle: "Title";
676
+ readonly eventTitlePlaceholder: "What's this event about?";
677
+ readonly creating: "Creating…";
678
+ readonly titleRequired: "Title is required";
679
+ readonly a11y: {
680
+ readonly region: "Calendar";
681
+ readonly grid: "Calendar grid";
682
+ readonly goToToday: "Go to today";
683
+ readonly previousPeriod: "Previous period";
684
+ readonly nextPeriod: "Next period";
685
+ readonly currentDate: "Current date: {{date}}";
686
+ readonly dayCell: "{{date}}, {{count}} events";
687
+ readonly dayCell_one: "{{date}}, {{count}} event";
688
+ readonly dayCell_other: "{{date}}, {{count}} events";
689
+ readonly resizeEventEnd: "Resize event end";
690
+ readonly resizeEventEndHint: "Drag to change end date";
691
+ readonly resizeStart: "Resize start";
692
+ readonly resizeEnd: "Resize end";
693
+ };
527
694
  };
528
695
  readonly list: {
529
696
  readonly loading: "Loading records…";
530
697
  readonly recordCount: "{{count}} records";
531
- readonly recordCountOne: "{{count}} record";
698
+ readonly recordCount_one: "{{count}} record";
699
+ readonly recordCount_other: "{{count}} records";
532
700
  readonly addRecord: "Add record";
701
+ readonly viewAll: "View all";
533
702
  readonly tabs: "Tabs";
534
703
  readonly allRecords: "All Records";
535
704
  readonly search: "Search";
536
705
  readonly filter: "Filter";
537
706
  readonly filterRecords: "Filter Records";
707
+ readonly filterActive: "Filter, {{count}} active";
708
+ readonly filterActive_one: "Filter, {{count}} active";
709
+ readonly filterActive_other: "Filter, {{count}} active";
538
710
  readonly sort: "Sort";
539
711
  readonly sortRecords: "Sort Records";
540
712
  readonly sortByIdSuffix: "(by ID)";
541
713
  readonly sortRelationalHint: "Columns that link to another record are not listed: they can only be sorted by the stored ID, not by the name shown in the cell. To sort by that name, denormalize it onto this object as a stored field, written when the source changes, and sort by that. Not a formula field: it is virtual, so no column is stored for it and the server refuses to sort by one.";
714
+ readonly sortRelationalPicked: "A linked column sorts by the stored ID, not the name shown.";
542
715
  readonly resetSortToDefault: "Reset to view default";
543
716
  readonly group: "Group";
544
717
  readonly groupBy: "Group By";
@@ -556,6 +729,7 @@ declare const en: {
556
729
  readonly firstRunMessage: "Create your first record to get started.";
557
730
  readonly noMatches: "No matching records";
558
731
  readonly noMatchesMessage: "No records match your current filters or search. Try adjusting or clearing them.";
732
+ readonly viewFilterNoMatchesMessage: "No records match this view’s filter.";
559
733
  readonly loadErrorTitle: "Couldn’t load records";
560
734
  readonly loadErrorMessage: "Something went wrong while loading this data. Check your connection and try again.";
561
735
  readonly loadErrorForbiddenTitle: "You don’t have access";
@@ -597,14 +771,15 @@ declare const en: {
597
771
  readonly print: "Print";
598
772
  readonly hideFieldsTitle: "Hide Fields";
599
773
  readonly dataLimitReached: "Showing first {{limit}} records. More data may be available.";
600
- readonly viewSettings: "View settings";
601
- readonly viewSettingsHint: "Grouping, color, density, and visible fields.";
774
+ readonly display: "Display";
775
+ readonly layout: "Layout";
776
+ readonly rowNumbers: "Row numbers";
777
+ readonly resetToViewDefault: "Reset to view default";
602
778
  readonly addGroup: "Add group field";
603
779
  readonly collapsedByDefault: "Collapsed by default";
604
780
  readonly removeGroup: "Remove";
605
781
  readonly inlineEditShort: "Edit inline";
606
782
  readonly inlineEditLabel: "Edit records inline (click a cell to edit)";
607
- readonly recordEditingTitle: "Record editing";
608
783
  };
609
784
  readonly managedByBadge: {
610
785
  readonly config: {
@@ -640,15 +815,31 @@ declare const en: {
640
815
  readonly deleteCard: "Delete card";
641
816
  readonly deleteColumn: "Delete column";
642
817
  readonly noCards: "No cards";
818
+ readonly columnCards: "{{column}} cards";
819
+ readonly laneCards: "{{column}} - {{lane}} cards";
643
820
  readonly cardTitlePlaceholder: "Enter card title…";
644
821
  readonly uncategorized: "Uncategorized";
822
+ readonly loadMore: "Load more";
645
823
  readonly columns: "columns";
646
824
  readonly requiredFieldsTitle: "Complete required fields";
647
825
  readonly requiredFieldsDescription: "This move makes the fields below required. Fill them in to continue.";
826
+ readonly dnd: {
827
+ readonly start: "Picked up {{card}} in {{column}}.";
828
+ readonly overCard: "Moving {{card}} over {{target}} in {{column}}.";
829
+ readonly overColumn: "Moving {{card}} over {{column}}.";
830
+ readonly overNone: "Moving {{card}}. It is not over a column.";
831
+ readonly moved: "Moved {{card}} to {{column}}.";
832
+ readonly dropped: "Dropped {{card}}. It stays in {{column}}.";
833
+ readonly cancelled: "Cancelled moving {{card}}. It stays in {{column}}.";
834
+ readonly untitledCard: "an untitled card";
835
+ readonly unnamedColumn: "an unnamed column";
836
+ readonly instructions: "To move this card to another column, drag it with a pointer or by touch.";
837
+ readonly dragging: "Dragging {{card}}";
838
+ };
648
839
  };
649
840
  readonly timeline: {
650
841
  readonly bucket: {
651
- readonly overdue: "Overdue";
842
+ readonly earlier: "Earlier";
652
843
  readonly today: "Today";
653
844
  readonly tomorrow: "Tomorrow";
654
845
  readonly thisWeek: "This week";
@@ -663,6 +854,17 @@ declare const en: {
663
854
  };
664
855
  readonly gantt: {
665
856
  readonly rowLabel: "Items";
857
+ readonly unusableRange: {
858
+ readonly malformedDate: "Unusable gantt date range — {{path}} is {{value}}, which is not a valid date. Every gantt date has to parse: the startDate and endDate on every row item, plus any minDate / maxDate pinned on the schema.";
859
+ readonly malformedRow: "Unusable gantt rows — {{path}} is {{value}}, which is not a row shape. A gantt draws items as a list of rows, every row as an object with a label and its own items, and every row's items as a list of bars; a null, a number, a string or a plain object in any of those places cannot be drawn.";
860
+ readonly inverted: "Unusable gantt date range — minDate {{minDate}} is after maxDate {{maxDate}}. A pinned minDate / maxDate overrides the range computed from the rows, so this axis has no columns and no bar can be placed on it; swap the two values.";
861
+ };
862
+ };
863
+ readonly unsupported: {
864
+ readonly objectBoundGantt: "Unsupported variant \"gantt\" — an object-bound timeline renders the feed variants ({{variants}}). Gantt needs literal rows, each with its own nested items, so the gantt axis (scale) has no effect here.";
865
+ };
866
+ readonly unconfigured: {
867
+ readonly noDateAxis: "Timeline date axis required — this view declares no date field, and an object-bound timeline will not invent one. Declare one of: {{fields}}. The first is the spec spelling; the rest are legacy aliases.";
666
868
  };
667
869
  };
668
870
  readonly gantt: {
@@ -708,6 +910,7 @@ declare const en: {
708
910
  };
709
911
  readonly aria: {
710
912
  readonly taskList: "Task list";
913
+ readonly refreshing: "Refreshing…";
711
914
  };
712
915
  readonly tooltip: {
713
916
  readonly days: "d";
@@ -753,13 +956,19 @@ declare const en: {
753
956
  readonly conflict: {
754
957
  readonly title: "Schedule conflict";
755
958
  readonly body: "This move conflicts with dependency constraints. Auto-reschedule {{count}} affected task(s)?";
959
+ readonly body_one: "This move conflicts with dependency constraints. Auto-reschedule {{count}} affected task?";
960
+ readonly body_other: "This move conflicts with dependency constraints. Auto-reschedule {{count}} affected tasks?";
756
961
  readonly confirm: "Auto-reschedule";
757
962
  readonly cancel: "Keep as is";
758
963
  };
759
964
  readonly autoScheduleDlg: {
760
965
  readonly title: "Auto-schedule";
761
966
  readonly body: "Shift {{count}} task(s) later to satisfy dependency links?";
967
+ readonly body_one: "Shift {{count}} task later to satisfy dependency links?";
968
+ readonly body_other: "Shift {{count}} tasks later to satisfy dependency links?";
762
969
  readonly skipped: "{{count}} locked task(s) also violate links and were skipped.";
970
+ readonly skipped_one: "{{count}} locked task also violates links and was skipped.";
971
+ readonly skipped_other: "{{count}} locked tasks also violate links and were skipped.";
763
972
  readonly confirm: "Apply";
764
973
  readonly cancel: "Cancel";
765
974
  readonly none: "All dependencies satisfied — nothing to reschedule.";
@@ -810,6 +1019,8 @@ declare const en: {
810
1019
  readonly tabActionsFor: "View actions for {{name}}";
811
1020
  readonly readonlyAriaLabel: "Read-only view";
812
1021
  readonly readonlyTooltip: "System view — defined in code, read-only.";
1022
+ readonly malformedFilter: "This view’s filter is malformed, so no records are shown: the {{subject}} condition cannot be applied.";
1023
+ readonly noObject: "No object named: set {{property}} or dataSource.object.";
813
1024
  };
814
1025
  readonly detail: {
815
1026
  readonly back: "Back";
@@ -823,9 +1034,12 @@ declare const en: {
823
1034
  readonly lockedByApproval: "Locked for approval";
824
1035
  readonly lockedTooltip: "This record has a pending approval request; editing is locked";
825
1036
  readonly writeStrippedTitle: "Saved — but some fields did not take effect";
1037
+ readonly writeWarningsTitle: "Saved — with warnings";
826
1038
  readonly writeStrippedReadonly: "Read-only, so it did not take effect: {{fields}}";
827
1039
  readonly writeStrippedByState: "Not editable in this record's current state, so it did not take effect: {{fields}}";
828
1040
  readonly writeStrippedPrimaryKey: "The record's identifier cannot be changed by a save, so it did not take effect: {{fields}}";
1041
+ readonly writeStrippedComputed: "Calculated by the server from a formula, so the value sent did not take effect: {{fields}}";
1042
+ readonly writeStrippedStoredExpression: "Computed from the record, so the computed value was saved instead of the one sent: {{fields}}";
829
1043
  readonly writeStrippedUnknownReason: "Not applied by the server: {{fields}}";
830
1044
  readonly approvalPendingEditable: "In approval · editable";
831
1045
  readonly approvalPendingTooltip: "This record has a pending approval request; this step still allows editing";
@@ -847,6 +1061,13 @@ declare const en: {
847
1061
  readonly pathStageLostUpcoming: "{{stage}}, closed lost, not reached";
848
1062
  readonly pathStageWonUpcoming: "{{stage}}, goal stage, not reached";
849
1063
  readonly linkCopied: "Link copied to clipboard";
1064
+ readonly commentFailed: "Your comment was not posted. Nothing was saved — please try again.";
1065
+ readonly reactionFailed: "Your reaction was not saved. Please try again.";
1066
+ readonly editComment: "Edit comment";
1067
+ readonly deleteComment: "Delete comment";
1068
+ readonly deleteCommentConfirm: "Are you sure you want to delete this comment?";
1069
+ readonly commentEditFailed: "Your edit was not saved. The comment keeps its previous text.";
1070
+ readonly commentDeleteFailed: "The comment was not deleted. Please try again.";
850
1071
  readonly linkCopyFailed: "Failed to copy link";
851
1072
  readonly cancel: "Cancel";
852
1073
  readonly cancelEdit: "Discard changes";
@@ -872,7 +1093,8 @@ declare const en: {
872
1093
  readonly pageHeaderActions: "Page header actions";
873
1094
  readonly emojiPicker: "Emoji picker";
874
1095
  readonly reactionCount: "{{emoji}} {{count}} reactions";
875
- readonly reactionCountOne: "{{emoji}} {{count}} reaction";
1096
+ readonly reactionCount_one: "{{emoji}} {{count}} reaction";
1097
+ readonly reactionCount_other: "{{emoji}} {{count}} reactions";
876
1098
  readonly recordDetail: "Record Detail";
877
1099
  readonly recordDetailWithLabel: "{{label}} Detail";
878
1100
  readonly openAsFullPage: "Open as full page";
@@ -899,7 +1121,6 @@ declare const en: {
899
1121
  readonly viewAll: "View All";
900
1122
  readonly new: "New";
901
1123
  readonly add: "Add";
902
- readonly emptyValue: "—";
903
1124
  readonly activity: "Activity";
904
1125
  readonly history: "History";
905
1126
  readonly historyEmpty: "No history yet";
@@ -914,6 +1135,7 @@ declare const en: {
914
1135
  readonly sortBy: "Sort by";
915
1136
  readonly filterPlaceholder: "Filter…";
916
1137
  readonly highlightFields: "Key Fields";
1138
+ readonly highlightsLabel: "Record highlights";
917
1139
  readonly comments: "Comments";
918
1140
  readonly searchComments: "Search comments…";
919
1141
  readonly addCommentPlaceholder: "Add a comment… (Ctrl+Enter to submit)";
@@ -924,8 +1146,14 @@ declare const en: {
924
1146
  readonly unpin: "Unpin";
925
1147
  readonly justNow: "just now";
926
1148
  readonly minutesAgo: "{{count}}m ago";
1149
+ readonly minutesAgo_one: "{{count}}m ago";
1150
+ readonly minutesAgo_other: "{{count}}m ago";
927
1151
  readonly hoursAgo: "{{count}}h ago";
1152
+ readonly hoursAgo_one: "{{count}}h ago";
1153
+ readonly hoursAgo_other: "{{count}}h ago";
928
1154
  readonly daysAgo: "{{count}}d ago";
1155
+ readonly daysAgo_one: "{{count}}d ago";
1156
+ readonly daysAgo_other: "{{count}}d ago";
929
1157
  readonly systemActor: "System";
930
1158
  readonly unknownUser: "Unknown";
931
1159
  readonly createdBy: "Created by";
@@ -934,7 +1162,8 @@ declare const en: {
934
1162
  readonly updated: "Updated";
935
1163
  readonly dropFilesToUpload: "Drop files here or click to upload";
936
1164
  readonly attachmentCount: "{{count}} attachment";
937
- readonly attachmentCountPlural: "{{count}} attachments";
1165
+ readonly attachmentCount_one: "{{count}} attachment";
1166
+ readonly attachmentCount_other: "{{count}} attachments";
938
1167
  readonly removeAttachment: "Remove attachment";
939
1168
  readonly attachments: "Attachments";
940
1169
  readonly uploadAttachment: "Upload";
@@ -942,6 +1171,7 @@ declare const en: {
942
1171
  readonly noAttachments: "No attachments yet. Upload a file to get started.";
943
1172
  readonly downloadAttachment: "Download";
944
1173
  readonly deleteAttachment: "Delete attachment";
1174
+ readonly deleteAttachmentConfirm: "Are you sure you want to delete the attachment \"{{name}}\"?";
945
1175
  readonly attachmentDeleteDenied: "Only the uploader or someone who can edit this record may delete this attachment.";
946
1176
  readonly attachmentParentAccessDenied: "You don't have access to attach files to this record.";
947
1177
  readonly attachmentDownloadDenied: "You don't have access to download this attachment.";
@@ -951,11 +1181,6 @@ declare const en: {
951
1181
  readonly attachmentsLoadFailed: "We couldn't load the attachments for this record.";
952
1182
  readonly attachmentsApiUnavailable: "The attachments list is not available on this object.";
953
1183
  readonly retryLoadAttachments: "Retry";
954
- readonly unifiedDiff: "Unified diff";
955
- readonly sideBySideDiff: "Side-by-side diff";
956
- readonly noChanges: "No changes";
957
- readonly previousVersion: "Previous";
958
- readonly currentVersion: "Current";
959
1184
  readonly discussion: "Discussion";
960
1185
  readonly showDiscussion: "Show Discussion ({{count}})";
961
1186
  readonly hideDiscussion: "Hide discussion";
@@ -970,28 +1195,35 @@ declare const en: {
970
1195
  readonly writeComment: "Write a comment…";
971
1196
  readonly subscribedTooltip: "Subscribed — click to unsubscribe";
972
1197
  readonly unsubscribedTooltip: "Subscribe to notifications";
973
- readonly firstRecord: "First record (Home)";
974
- readonly previousRecordKey: "Previous record (←)";
975
- readonly nextRecordKey: "Next record (→)";
976
- readonly lastRecord: "Last record (End)";
977
1198
  readonly noRecords: "No records";
978
1199
  readonly showEmptyRelated: "+ {{count}} empty";
979
1200
  readonly showEmptyRelated_one: "+ {{count}} empty";
980
1201
  readonly showEmptyRelated_other: "+ {{count}} empty";
981
- readonly searchWhileNavigating: "Search while navigating";
982
- readonly searchRecords: "Search records…";
983
1202
  readonly allActivity: "All Activity";
984
1203
  readonly commentsOnly: "Comments Only";
985
1204
  readonly fieldChangesFilter: "Field Changes";
986
1205
  readonly tasksOnly: "Tasks Only";
987
1206
  readonly leaveCommentPlaceholder: "Leave a comment… (Ctrl+Enter to submit)";
988
1207
  readonly noActivity: "No activity recorded";
1208
+ readonly activityAccessDenied: "You don't have permission to view activity on this record.";
1209
+ readonly commentsAccessDenied: "You don't have permission to view comments on this record.";
1210
+ readonly allFilter: "All";
1211
+ readonly createsFilter: "Creates";
1212
+ readonly deletesFilter: "Deletes";
1213
+ readonly statusChangesFilter: "Status Changes";
1214
+ readonly activityEmptyValue: "(empty)";
1215
+ readonly activityFieldChanged: "Changed {{field}} from \"{{old}}\" to \"{{new}}\"";
1216
+ readonly activityCreated: "Created this record";
1217
+ readonly activityDeleted: "Deleted this record";
1218
+ readonly activityStatusChanged: "Changed status to \"{{value}}\"";
1219
+ readonly activityUpdated: "Updated record";
989
1220
  readonly loadMore: "Load more";
990
1221
  readonly edited: "(edited)";
991
1222
  readonly via: "via {{source}}";
992
1223
  readonly viewSource: "View source";
993
1224
  readonly replyCount: "{{count}} reply";
994
- readonly replyCountPlural: "{{count}} replies";
1225
+ readonly replyCount_one: "{{count}} reply";
1226
+ readonly replyCount_other: "{{count}} replies";
995
1227
  readonly replyPlaceholder: "Reply…";
996
1228
  readonly filterActivity: "Filter activity";
997
1229
  readonly openDiscussion: "Open discussion panel";
@@ -1003,13 +1235,27 @@ declare const en: {
1003
1235
  readonly copyPhone: "Copy phone number";
1004
1236
  readonly copyRecordId: "Copy record ID";
1005
1237
  readonly showEmptyFields: "Show {{count}} empty fields";
1238
+ readonly showEmptyFields_one: "Show {{count}} empty field";
1239
+ readonly showEmptyFields_other: "Show {{count}} empty fields";
1006
1240
  readonly hideEmptyFields: "Hide empty fields";
1007
1241
  readonly noValue: "No value";
1242
+ readonly unresolvedReference: "Unresolved reference: {{value}} was not resolved to a user";
1243
+ readonly unresolvedLookupReference: "Unresolved reference: {{value}} was not resolved to a record on this screen";
1244
+ readonly repeaterItemCount: "{{count}} items";
1245
+ readonly repeaterItemCount_one: "{{count}} item";
1246
+ readonly repeaterItemCount_other: "{{count}} items";
1247
+ readonly fileCount: "{{count}} files";
1248
+ readonly fileCount_one: "{{count}} file";
1249
+ readonly fileCount_other: "{{count}} files";
1008
1250
  };
1009
1251
  readonly chart: {
1010
- readonly noData: "No chart data available";
1011
1252
  readonly loading: "Loading chart…";
1253
+ readonly refreshing: "Refreshing…";
1012
1254
  readonly nullCategory: "(None)";
1255
+ readonly scatterOneMeasure: "A scatter plots one measure. Keep exactly one series:";
1256
+ readonly unconfigured: {
1257
+ readonly noCategoryAxis: "Chart category axis required — an object-bound chart will not invent one. Declare one of:";
1258
+ };
1013
1259
  };
1014
1260
  readonly report: {
1015
1261
  readonly total: "Total";
@@ -1024,6 +1270,7 @@ declare const en: {
1024
1270
  readonly loading: "Loading…";
1025
1271
  readonly failedToLoad: "Failed to load matrix: {{message}}";
1026
1272
  readonly needsAcross: "Matrix report requires at least one `groupingsAcross` field.";
1273
+ readonly forbiddenMessage: "You don’t have permission to view the data behind this report.";
1027
1274
  readonly aggregate: {
1028
1275
  readonly count: "Count";
1029
1276
  readonly countDistinct: "Distinct Count";
@@ -1037,30 +1284,32 @@ declare const en: {
1037
1284
  readonly panelTitle: "Edit report";
1038
1285
  };
1039
1286
  };
1040
- readonly map: {
1041
- readonly searchLocations: "Search locations…";
1042
- readonly locationDetails: "Location Details";
1043
- readonly markersCount: "{{count}} markers";
1044
- readonly invalidCoordinates: "{{count}} record with missing or invalid coordinates excluded from the map.";
1045
- readonly invalidCoordinatesPlural: "{{count}} records with missing or invalid coordinates excluded from the map.";
1046
- };
1047
1287
  readonly designer: {
1048
1288
  readonly undo: "Undo";
1049
1289
  readonly redo: "Redo";
1290
+ readonly canvasMinimap: "Canvas minimap";
1291
+ readonly versionHistory: "Version history";
1050
1292
  };
1051
1293
  readonly dashboard: {
1052
1294
  readonly addWidget: "Add widget";
1053
- readonly removeWidget: "Remove widget";
1054
1295
  readonly editLayout: "Edit layout";
1055
1296
  readonly saveLayout: "Save layout";
1056
1297
  readonly resetLayout: "Reset layout";
1057
1298
  readonly total: "Total";
1058
- readonly noDataAvailable: "No data available";
1059
1299
  readonly noDataSourceFor: "No data source available for";
1060
- readonly noRows: "No rows";
1300
+ readonly empty: {
1301
+ readonly title: "No data yet";
1302
+ readonly message: "This widget loaded successfully and its query returned no records yet.";
1303
+ readonly sourceLabel: "Source:";
1304
+ };
1061
1305
  readonly loading: "Loading…";
1306
+ readonly refreshing: "Refreshing…";
1307
+ readonly refreshAll: "Refresh All";
1308
+ readonly refreshDashboard: "Refresh dashboard";
1062
1309
  readonly pickMeasures: "Pick measures (values) for this dataset widget.";
1063
1310
  readonly datasetUnsupported: "This data source does not support dataset queries.";
1311
+ readonly widgetForbiddenTitle: "You don’t have access";
1312
+ readonly widgetForbiddenMessage: "You don’t have permission to view the data behind this widget.";
1064
1313
  readonly details: "Details";
1065
1314
  readonly exportCsv: "Export CSV";
1066
1315
  readonly openInList: "Open in list";
@@ -1207,10 +1456,6 @@ declare const en: {
1207
1456
  readonly appDescription: "Description";
1208
1457
  readonly appIcon: "Icon";
1209
1458
  readonly template: "Template";
1210
- readonly layout: "Layout";
1211
- readonly layoutSidebar: "Sidebar";
1212
- readonly layoutHeader: "Header";
1213
- readonly layoutEmpty: "Empty";
1214
1459
  readonly selectObjects: "Select Objects";
1215
1460
  readonly searchObjects: "Search objects…";
1216
1461
  readonly selectAll: "Select All";
@@ -1219,7 +1464,6 @@ declare const en: {
1219
1464
  readonly addGroup: "Add Group";
1220
1465
  readonly addUrl: "Add URL";
1221
1466
  readonly addSeparator: "Add Separator";
1222
- readonly noNavItems: "No navigation items yet.";
1223
1467
  readonly logoUrl: "Logo URL";
1224
1468
  readonly primaryColor: "Primary Color";
1225
1469
  readonly faviconUrl: "Favicon URL";
@@ -1246,13 +1490,12 @@ declare const en: {
1246
1490
  readonly appearance: "Appearance";
1247
1491
  readonly rowHeight: "Row Height";
1248
1492
  readonly livePreview: "Live Preview";
1249
- readonly stepBasicDesc: "Name, title, and layout";
1493
+ readonly stepBasicDesc: "Name, title, and icon";
1250
1494
  readonly stepObjectsDesc: "Select business objects";
1251
1495
  readonly stepNavigationDesc: "Build navigation tree";
1252
1496
  readonly stepBrandingDesc: "Logo, colors, and favicon";
1253
1497
  readonly noObjectsFound: "No objects found.";
1254
1498
  readonly noNavItemsHint: "No navigation items yet. Select objects in the previous step or add items manually.";
1255
- readonly separator: "Separator";
1256
1499
  readonly separatorLabel: "— Separator —";
1257
1500
  readonly newGroup: "New Group";
1258
1501
  readonly newLink: "New Link";
@@ -1286,6 +1529,7 @@ declare const en: {
1286
1529
  readonly navTypeSeparator: "Separator";
1287
1530
  readonly navTypeAction: "Action";
1288
1531
  readonly navTypeComponent: "Component";
1532
+ readonly navTypeDoc: "Doc";
1289
1533
  readonly navEditIcon: "Edit icon";
1290
1534
  readonly navToggleVisible: "Toggle visibility";
1291
1535
  readonly navHidden: "Hidden";
@@ -1363,11 +1607,8 @@ declare const en: {
1363
1607
  readonly defaultValue: "Default Value";
1364
1608
  readonly placeholder: "Placeholder";
1365
1609
  readonly referenceTo: "Reference To";
1366
- readonly formula: "Formula";
1367
1610
  readonly options: "Options";
1368
1611
  readonly addOption: "Add Option";
1369
- readonly validationRules: "Validation Rules";
1370
- readonly addRule: "Add Rule";
1371
1612
  readonly systemBadge: "System";
1372
1613
  readonly ungrouped: "General";
1373
1614
  readonly deleteConfirmTitle: "Delete Field?";
@@ -1386,31 +1627,59 @@ declare const en: {
1386
1627
  };
1387
1628
  };
1388
1629
  readonly console: {
1630
+ readonly studio: {
1631
+ readonly title: "Studio";
1632
+ readonly accessRequired: "You need Studio access to open Studio.";
1633
+ };
1389
1634
  readonly saveAdvisoryTitle: "Saved — the authoring check raised {{count}} advisory finding(s)";
1635
+ readonly saveAdvisoryTitle_one: "Saved — the authoring check raised {{count}} advisory finding";
1636
+ readonly saveAdvisoryTitle_other: "Saved — the authoring check raised {{count}} advisory findings";
1637
+ readonly publishAdvisoryTitle: "Published — the authoring check raised {{count}} advisory finding(s)";
1638
+ readonly publishAdvisoryTitle_one: "Published — the authoring check raised {{count}} advisory finding";
1639
+ readonly publishAdvisoryTitle_other: "Published — the authoring check raised {{count}} advisory findings";
1640
+ readonly importMappingsUnavailable: "Saved import mappings for {{object}} could not be loaded";
1641
+ readonly importMappingsRefused: "The server refused this request, so this list is empty because it could not be read — not because nothing is registered. Sign in again, or ask an administrator for access.";
1642
+ readonly importMappingsUnreadable: "This list is empty because it could not be read, not because nothing is registered. Try again, and report this if it keeps happening.";
1643
+ readonly savedViewsUnavailable: "Saved views for {{object}} could not be loaded";
1644
+ readonly savedViewsRefused: "The server refused this request, so this list is empty because it could not be read — not because this object has no saved views. Sign in again, or ask an administrator for access.";
1645
+ readonly savedViewsUnreadable: "This list is empty because it could not be read, not because this object has no saved views. Try again, and report this if it keeps happening.";
1390
1646
  readonly title: "ObjectOS";
1391
- readonly initializing: "Initializing application…";
1647
+ readonly initializing: "Opening your console…";
1648
+ readonly skipToContent: "Skip to content";
1392
1649
  readonly search: "Search…";
1393
1650
  readonly breadcrumb: {
1394
- readonly dashboards: "Dashboards";
1395
- readonly pages: "Pages";
1396
- readonly reports: "Reports";
1397
1651
  readonly system: "System";
1652
+ readonly marketplace: "Marketplace";
1653
+ readonly settings: "Settings";
1654
+ readonly apps: "Apps";
1655
+ readonly profile: "Profile";
1656
+ readonly approvals: "Approvals";
1657
+ readonly aiApprovals: "AI Approvals";
1658
+ readonly auditLog: "Audit Log";
1398
1659
  };
1399
1660
  readonly nav: {
1400
1661
  readonly pinItem: "Pin {{name}}";
1401
1662
  readonly unpinItem: "Unpin {{name}}";
1402
- readonly dragToReorder: "Drag to reorder";
1403
1663
  readonly favorites: "Favorites";
1664
+ readonly launcherLabel: "App launcher";
1665
+ readonly menuLabel: "App navigation";
1666
+ readonly menuEmpty: "This app has no navigation entries you can open.";
1667
+ readonly itemMenu: "More actions for {{name}}";
1668
+ readonly openInNewTab: "Open in new tab";
1669
+ readonly copyLink: "Copy link";
1670
+ readonly linkCopied: "Link copied to clipboard";
1671
+ readonly linkCopyFailed: "Failed to copy link";
1672
+ readonly design: "Design";
1404
1673
  };
1405
1674
  readonly settingsHub: {
1406
1675
  readonly title: "Settings";
1407
- readonly subtitle: "Configure your workspace, integrations, and feature flags.";
1676
+ readonly subtitle: "Configure your system, integrations, and feature flags.";
1408
1677
  readonly loadError: "Failed to load settings";
1409
1678
  readonly empty: "No settings registered. Plugins can register settings manifests via the SettingsService.";
1410
1679
  readonly settingsCount: "{{n}} settings";
1411
1680
  readonly beta: "Beta";
1412
1681
  readonly categories: {
1413
- readonly Workspace: "Workspace";
1682
+ readonly Workspace: "General";
1414
1683
  readonly Communication: "Communication";
1415
1684
  readonly Security: "Security";
1416
1685
  readonly Infrastructure: "Infrastructure";
@@ -1434,18 +1703,31 @@ declare const en: {
1434
1703
  readonly unsavedCount: "{{count}} unsaved changes";
1435
1704
  readonly unsavedCount_one: "{{count}} unsaved change";
1436
1705
  readonly unsavedCount_other: "{{count}} unsaved changes";
1706
+ readonly fieldErrorsToast: "{{count}} settings need attention: {{settings}}";
1707
+ readonly fieldErrorsToast_one: "{{count}} setting needs attention: {{settings}}";
1708
+ readonly fieldErrorsToast_other: "{{count}} settings need attention: {{settings}}";
1437
1709
  readonly cryptoRefusalTitle: "This deployment cannot encrypt secrets";
1438
1710
  readonly cryptoRefusalSubjectSuffix: "is declared encrypted, so nothing was written.";
1439
1711
  readonly cryptoRefusalNoSubject: "The declared-encrypted value was refused, so nothing was written.";
1440
1712
  readonly cryptoRefusalToast: "Cannot encrypt secrets: {{subject}}";
1441
1713
  readonly cryptoRefusalToastNoSubject: "Cannot encrypt secrets";
1714
+ readonly sourceBadgeInherited: "Inherited from {{source}}";
1715
+ readonly sourceBadgeOverrides: "Overrides {{source}}";
1716
+ readonly resetToDefault: "Reset to default";
1717
+ readonly envLockBadge: "Locked by env";
1718
+ readonly envLockBadgeTitle: "Pinned by environment variable — cannot be edited from the UI.";
1719
+ readonly deprecatedBadge: "Deprecated";
1720
+ readonly deprecatedBadgeReplacedBy: "Deprecated → {{replacedBy}}";
1721
+ readonly unsupportedSpecifierType: "Unsupported specifier type: {{type}}";
1722
+ };
1723
+ readonly workspaceTimezonePrompt: {
1724
+ readonly title: "Set the system timezone";
1725
+ readonly description: "This system still uses the platform default timezone, {{current}}. The system timezone decides what \"today\" means in formulas, how reports group dates and how dates and times are shown, for everyone in the system. Your browser timezone is filled in below.";
1726
+ readonly laterHint: "You can change it at any time on the Settings page.";
1727
+ readonly decline: "Keep the default";
1728
+ readonly confirm: "Set timezone";
1729
+ readonly saved: "System timezone set to {{zone}}";
1442
1730
  };
1443
- readonly loadingSteps: {
1444
- readonly connecting: "Connecting to data source";
1445
- readonly loadingConfig: "Loading configuration";
1446
- readonly preparingWorkspace: "Preparing workspace";
1447
- };
1448
- readonly loadingHint: "Setting up a new environment can take a few moments.";
1449
1731
  readonly error: {
1450
1732
  readonly connectionFailed: "Cannot connect to server";
1451
1733
  readonly serverUnreachable: "The server at {{url}} is unreachable.";
@@ -1469,21 +1751,20 @@ declare const en: {
1469
1751
  readonly groups: {
1470
1752
  readonly general: "General";
1471
1753
  readonly navigation: "Navigation";
1472
- readonly dataViews: "Data Views";
1473
1754
  readonly aiChat: "AI assistant";
1474
- readonly preferences: "Preferences";
1475
1755
  };
1476
1756
  readonly openCommandPalette: "Open command palette";
1477
1757
  readonly showShortcuts: "Show keyboard shortcuts";
1478
1758
  readonly closeDialog: "Close dialog / panel";
1479
1759
  readonly toggleSidebar: "Toggle sidebar";
1480
- readonly focusSearch: "Focus search";
1481
- readonly createRecord: "Create new record";
1482
- readonly refreshData: "Refresh data";
1483
- readonly editRecord: "Edit selected record";
1484
1760
  readonly newChat: "New chat";
1485
1761
  readonly toggleChatsList: "Toggle conversations list";
1486
- readonly toggleDarkMode: "Toggle dark mode";
1762
+ readonly goHome: "Back to home";
1763
+ };
1764
+ readonly reportIndex: {
1765
+ readonly title: "Reports";
1766
+ readonly emptyTitle: "No reports";
1767
+ readonly emptyDescription: "This app has no reports you can open.";
1487
1768
  };
1488
1769
  readonly commandPalette: {
1489
1770
  readonly title: "Command palette";
@@ -1493,6 +1774,8 @@ declare const en: {
1493
1774
  readonly records: "Records";
1494
1775
  readonly recentRecords: "Recently viewed";
1495
1776
  readonly objects: "Objects";
1777
+ readonly packages: "Packages";
1778
+ readonly flows: "Flows";
1496
1779
  readonly dashboards: "Dashboards";
1497
1780
  readonly pages: "Pages";
1498
1781
  readonly reports: "Reports";
@@ -1516,13 +1799,18 @@ declare const en: {
1516
1799
  };
1517
1800
  readonly usage: {
1518
1801
  readonly title: "AI usage";
1519
- readonly meterBuild: "Build";
1520
- readonly meterAsk: "Ask";
1802
+ readonly poolUsed: "{{percent}} used";
1521
1803
  readonly statusOk: "Plenty left";
1522
1804
  readonly statusLow: "Running low";
1523
1805
  readonly statusFull: "Limit reached";
1524
1806
  readonly resetsDaily: "Resets tonight";
1525
1807
  readonly resetsMonthly: "Resets next cycle";
1808
+ readonly resetsWeeklyDays: "Resets in {{count}} days";
1809
+ readonly resetsWeeklyDays_one: "Resets in {{count}} day";
1810
+ readonly resetsWeeklyDays_other: "Resets in {{count}} days";
1811
+ readonly resetsWeeklyHours: "Resets in {{count}} hours";
1812
+ readonly resetsWeeklyHours_one: "Resets in {{count}} hour";
1813
+ readonly resetsWeeklyHours_other: "Resets in {{count}} hours";
1526
1814
  readonly ctaUpgrade: "Upgrade to keep going";
1527
1815
  readonly ctaTopUp: "Add credits to continue";
1528
1816
  readonly ariaLabel: "AI usage: {{status}}";
@@ -1535,6 +1823,31 @@ declare const en: {
1535
1823
  readonly share: "Share";
1536
1824
  readonly shareTitle: "Share this conversation";
1537
1825
  readonly shareDisabledTitle: "Start chatting to enable sharing";
1826
+ readonly buildDoctor: "Build Doctor";
1827
+ readonly buildDoctorTitle: "Build Doctor — what actually landed?";
1828
+ readonly buildDoctorDisabledTitle: "Send a message first";
1829
+ readonly buildDoctorDrawer: {
1830
+ readonly description: "What the agent claimed vs what is actually live. Read-only diagnostic.";
1831
+ readonly reconciling: "Reconciling…";
1832
+ readonly notAvailable: "Not available — the conversation was not found or you are not authorized.";
1833
+ readonly untitled: "(untitled)";
1834
+ readonly summary: "{{turns}} turn(s) · {{messages}} msgs · {{tokens}} tok · {{seconds}}s LLM";
1835
+ readonly allLive: "All {{count}} attempted change(s) are live — nothing evaporated.";
1836
+ readonly discrepancies: "{{count}} discrepancy(ies) — what the chat said doesn't match what's live.";
1837
+ readonly orphanedTitle: "Proposed but never applied";
1838
+ readonly orphanedHint: "A confirm card the agent proposed but no later turn applied — the change silently evaporated.";
1839
+ readonly missingTitle: "Claimed but missing";
1840
+ readonly missingHint: "A tool result said it was applied, but the artifact isn't live in sys_metadata.";
1841
+ readonly toolErrorsTitle: "Tool errors";
1842
+ readonly toolErrorsHint: "Tool calls that returned an error during the build.";
1843
+ readonly verifyTitle: "Build check (verify_build)";
1844
+ readonly yourApp: "Your app:";
1845
+ readonly noIssues: "0 issues";
1846
+ readonly issueCount: "{{count}} issue(s)";
1847
+ readonly platformNoise: "{{count}} platform sys_* finding(s) hidden";
1848
+ readonly pendingActions: "Pending actions";
1849
+ readonly timeline: "Timeline ({{count}})";
1850
+ };
1538
1851
  readonly newChat: "New";
1539
1852
  readonly searchChats: "Search chats…";
1540
1853
  readonly noChatsYet: "No chats yet";
@@ -1557,6 +1870,8 @@ declare const en: {
1557
1870
  readonly liveCanvasUnlisted: "Live app — {{app}} (unlisted until published)";
1558
1871
  readonly loadingAgents: "Loading agents…";
1559
1872
  readonly askAnything: "Ask anything…";
1873
+ readonly askOrChangeApp: "Ask about your data, or ask me to change this app…";
1874
+ readonly describeAppToBuild: "Describe the app you want to build, or what to change…";
1560
1875
  readonly emptyTitle: "Start a conversation";
1561
1876
  readonly emptyDescription: "Ask anything — the assistant has access to your current app context.";
1562
1877
  readonly switchAssistant: "Switch assistant";
@@ -1564,7 +1879,7 @@ declare const en: {
1564
1879
  readonly empty: {
1565
1880
  readonly build: {
1566
1881
  readonly title: "Build with AI";
1567
- readonly description: "Describe an app or workflow in plain language — I draft the objects, screens and automations, then you review and publish.";
1882
+ readonly description: "Describe an app in plain language — I draft the objects, screens and sample data, then you review and publish.";
1568
1883
  };
1569
1884
  readonly ask: {
1570
1885
  readonly title: "Ask your data";
@@ -1573,17 +1888,22 @@ declare const en: {
1573
1888
  readonly editApp: {
1574
1889
  readonly title: "Editing “{{app}}”";
1575
1890
  readonly titleGeneric: "Edit this app";
1576
- readonly description: "What would you like to change? I’ll modify this app in place — add a field, object, view or automation, or adjust what’s already there.";
1891
+ readonly description: "What would you like to change? I’ll modify this app in place — add a field, object, view or dashboard, or adjust what’s already there.";
1577
1892
  };
1578
1893
  };
1579
1894
  readonly clearConversation: "Clear";
1580
1895
  readonly sendHint: "to send";
1896
+ readonly newlineHint: "for a new line";
1581
1897
  readonly agentActivity: "Agent activity";
1582
1898
  readonly toolCompleted: "Completed";
1583
1899
  readonly toolRunning: "Running";
1584
1900
  readonly toolAwaitingApproval: "Awaiting approval";
1585
1901
  readonly toolFailed: "Failed";
1586
1902
  readonly toolDetailsHidden: "Tool inputs and raw results are hidden in this view.";
1903
+ readonly toolDenyReason: "Operator rejected from chat";
1904
+ readonly builderHandoffTitle: "Build this in the Builder";
1905
+ readonly builderHandoffOpen: "Open in Builder →";
1906
+ readonly builderHandoffSuperseded: "A newer request is available";
1587
1907
  readonly copy: "Copy";
1588
1908
  readonly copied: "Copied";
1589
1909
  readonly regenerate: "Regenerate";
@@ -1598,7 +1918,7 @@ declare const en: {
1598
1918
  readonly publishOk: "Published — objects are now live.";
1599
1919
  readonly seedWarn: "Published, but some sample data failed to load.";
1600
1920
  readonly openBuiltApp: "Open app";
1601
- readonly designBuiltApp: "Design in Studio";
1921
+ readonly viewBuiltAppInStudio: "View in Studio";
1602
1922
  readonly previewDraft: "Preview";
1603
1923
  readonly previewApp: "Preview app";
1604
1924
  readonly resizeSplit: "Resize chat and preview";
@@ -1650,11 +1970,11 @@ declare const en: {
1650
1970
  readonly recordCounts: "Count records for each object.";
1651
1971
  };
1652
1972
  readonly metadataAssistant: {
1653
- readonly buildCrm: "Build a sales CRM — customers, contacts, and a deal pipeline I can total by stage.";
1654
- readonly buildApp: "Create a project tracker — projects, tasks with owners and due dates, and a board by status.";
1655
- readonly buildFlow: "Design a support desk — tickets with priority, a status workflow, and customer links.";
1656
- readonly buildInventory: "Build an inventory app — products, stock levels, suppliers, and low-stock visibility.";
1657
- readonly buildRecruiting: "Make an applicant tracker — candidates, open roles, interview stages, and notes.";
1973
+ readonly buildCrm: "Build a sales CRM — customers, contacts, and deals with a stage field, plus a dashboard that totals deal value by stage.";
1974
+ readonly buildApp: "Create a project tracker — projects, tasks with owners and due dates, a board grouped by status, and a calendar of due dates.";
1975
+ readonly buildFlow: "Design a support desk — tickets with priority and status fields, a board grouped by status, and links to customers.";
1976
+ readonly buildInventory: "Build an inventory app — products, stock levels, suppliers, and a view that filters the items below their reorder point.";
1977
+ readonly buildRecruiting: "Make an applicant tracker — candidates, open roles, an interview-stage field, and a board grouped by stage.";
1658
1978
  };
1659
1979
  readonly generic: {
1660
1980
  readonly help: "What can you help me with?";
@@ -1665,7 +1985,7 @@ declare const en: {
1665
1985
  readonly addField: "Add a field to one of the objects.";
1666
1986
  readonly addObject: "Add a new object and relate it to an existing one.";
1667
1987
  readonly addDashboard: "Add a dashboard for the key metrics.";
1668
- readonly addAutomation: "Add an automation — an approval, a status flow, or a notification.";
1988
+ readonly addSampleData: "Fill the existing objects with realistic sample records so I can demo the app.";
1669
1989
  };
1670
1990
  };
1671
1991
  readonly collapseToDock: "Collapse to side panel";
@@ -1706,6 +2026,7 @@ declare const en: {
1706
2026
  readonly collapse: "Collapse chat";
1707
2027
  readonly maximize: "Open full page";
1708
2028
  readonly open: "Open assistant";
2029
+ readonly planAwaitingApproval: "A proposed plan is waiting for your approval";
1709
2030
  };
1710
2031
  readonly group: {
1711
2032
  readonly today: "Today";
@@ -1715,6 +2036,19 @@ declare const en: {
1715
2036
  readonly older: "Older";
1716
2037
  };
1717
2038
  };
2039
+ readonly readRate: {
2040
+ readonly ratioTitle: "Unusual read volume in this system";
2041
+ readonly ratio: "Reads are running at {{ratio}} rows for every row written. The platform flags anything above {{threshold}}. Nothing is limited or blocked; this is a report so the read pattern can be reviewed.";
2042
+ readonly noWritesTitle: "Reads with no writes at all in this system";
2043
+ readonly noWrites: "Rows are being read while none at all are being written, so the read rate has no upper bound. This is the most severe reading. The platform flags anything above {{threshold}}. Nothing is limited or blocked; this is a report so the read pattern can be reviewed.";
2044
+ };
2045
+ readonly storageUsage: {
2046
+ readonly warningTitle: "Storage is filling up";
2047
+ readonly warning: "{{used}} MB of {{limit}} MB used. Uploads and imports pause once storage is full.";
2048
+ readonly blockedTitle: "Storage is full: uploads and imports are paused";
2049
+ readonly blocked: "{{used}} MB of {{limit}} MB used. Existing data is untouched, and reading, exporting and editing single records still work.";
2050
+ readonly upgrade: "Upgrade to continue";
2051
+ };
1718
2052
  readonly errors: {
1719
2053
  readonly somethingWentWrong: "Something went wrong";
1720
2054
  readonly unexpectedError: "An unexpected error occurred while rendering this view.";
@@ -1764,10 +2098,13 @@ declare const en: {
1764
2098
  readonly objectNotFound: "Object Not Found";
1765
2099
  readonly objectNotFoundDescription: "The object \"{{objectName}}\" does not exist in the current configuration.";
1766
2100
  readonly objectNotFoundHint: "Check your app navigation settings or select a different object from the sidebar.";
2101
+ readonly objectPackageDisabled: "The object \"{{objectName}}\" belongs to a package that is disabled, so it is not being served.";
1767
2102
  readonly filterOrNotSavable: "This filter uses OR between conditions, which a saved view cannot store yet. It still applies to this list — remove the OR grouping to save it to the view.";
1768
2103
  readonly filterNestedNotSavable: "This filter uses nested condition groups, which a saved view cannot store. Flatten it to a single list of conditions to save it to the view.";
1769
2104
  readonly systemViewReadonly: "System view defined in code — read-only.";
1770
2105
  readonly cannotEditMetaView: "This view is built in and defined in code — it cannot be changed.";
2106
+ readonly resetView: "Reset view";
2107
+ readonly resetViewTitle: "Set this view back to its own sort, filters and column widths. Only yours change.";
1771
2108
  readonly cannotDeleteMetaView: "This view is built in and defined in code — it cannot be deleted.";
1772
2109
  readonly expandToPage: "Open as full page";
1773
2110
  readonly allRecords: "All Records";
@@ -1775,14 +2112,17 @@ declare const en: {
1775
2112
  readonly import: "Import";
1776
2113
  readonly importTitle: "Import from CSV";
1777
2114
  readonly importedToast: "Imported {{count}} row(s).";
2115
+ readonly importedToast_one: "Imported {{count}} row.";
2116
+ readonly importedToast_other: "Imported {{count}} rows.";
1778
2117
  readonly importedWithSkipped: "Imported {{ok}} row(s); skipped {{skipped}}.";
1779
2118
  readonly configureView: "Configure View";
1780
- readonly toolbar: "Toolbar";
1781
2119
  readonly toolbarEnabledCount: "{{count}} of {{total}} enabled";
1782
2120
  readonly searchFields: "Search fields…";
1783
2121
  readonly title: "Title";
1784
2122
  readonly viewType: "View type";
1785
2123
  readonly recordCount: "{{count}} records";
2124
+ readonly recordCount_one: "{{count}} record";
2125
+ readonly recordCount_other: "{{count}} records";
1786
2126
  readonly save: "Save";
1787
2127
  readonly discard: "Discard";
1788
2128
  readonly createView: "Create View";
@@ -1793,6 +2133,8 @@ declare const en: {
1793
2133
  readonly deleteViewTitle: "Delete view";
1794
2134
  readonly deleteViewConfirm: "Are you sure you want to delete the view \"{{name}}\"? This cannot be undone.";
1795
2135
  readonly bulkDeleteConfirm: "Delete {{count}} selected records? This cannot be undone.";
2136
+ readonly bulkDeleteConfirm_one: "Delete {{count}} selected record? This cannot be undone.";
2137
+ readonly bulkDeleteConfirm_other: "Delete {{count}} selected records? This cannot be undone.";
1796
2138
  readonly duplicateViewName: "A view with this name already exists.";
1797
2139
  readonly viewTypeGrid: "Grid";
1798
2140
  readonly viewTypeGridDesc: "A spreadsheet-style table of records.";
@@ -1845,16 +2187,23 @@ declare const en: {
1845
2187
  readonly chartTypePie: "Pie chart";
1846
2188
  readonly chartTypeArea: "Area chart";
1847
2189
  readonly chartTypeScatter: "Scatter chart";
1848
- readonly xAxisField: "X-axis field";
1849
- readonly xAxisFieldHelp: "The categorical or time dimension.";
1850
- readonly yAxisField: "Y-axis field";
1851
- readonly yAxisFieldHelp: "The numeric field to aggregate.";
1852
- readonly groupBy: "Group by";
2190
+ readonly dataset: "Dataset";
2191
+ readonly datasetHelp: "The chart reads its numbers from this dataset of the object.";
2192
+ readonly chartMeasure: "Measure";
2193
+ readonly chartMeasureHelp: "The dataset measure plotted on the value axis.";
2194
+ readonly chartDimension: "Dimension";
2195
+ readonly chartDimensionHelp: "The dataset dimension the values are grouped by (optional).";
2196
+ readonly viewTypeUnavailableDataset: "This object exposes no dataset to chart.";
2197
+ readonly noDatasetMeasure: "This dataset declares no measure to chart.";
1853
2198
  readonly endDateField: "End date field";
1854
2199
  readonly ufTabs: "Tabs";
1855
2200
  readonly ufAddField: "+ Add filter field…";
1856
2201
  readonly ufShowAllRecords: "Show \"All records\" tab";
1857
2202
  };
2203
+ readonly runtimeDraft: {
2204
+ readonly publishFailed: "Publish failed";
2205
+ readonly discardFailed: "Discard failed";
2206
+ };
1858
2207
  readonly localeSwitcher: {
1859
2208
  readonly label: "Language";
1860
2209
  };
@@ -1884,10 +2233,23 @@ declare const en: {
1884
2233
  readonly resendOtpCountdownText: "Resend in {seconds}s";
1885
2234
  readonly usePhoneOtpText: "Sign in with verification code";
1886
2235
  readonly usePasswordSignInText: "Sign in with password instead";
2236
+ readonly socialButton: "Continue with {provider}";
2237
+ readonly orText: "or continue with email";
2238
+ readonly ssoButton: "Sign in with SSO";
2239
+ readonly ssoOnlyDescription: "Sign in with your organization's single sign-on";
2240
+ readonly usePasswordText: "Use a password instead";
2241
+ readonly backToSsoText: "Back to single sign-on";
2242
+ readonly welcomeTitle: "Welcome back";
2243
+ readonly welcomeDescription: "Sign in to continue your work";
2244
+ readonly showPasswordText: "Show password";
2245
+ readonly hidePasswordText: "Hide password";
2246
+ readonly footer: {
2247
+ readonly privacy: "Privacy";
2248
+ readonly terms: "Terms";
2249
+ };
1887
2250
  readonly devAdminHint: {
1888
- readonly title: "Development instance";
1889
- readonly body: "Sign in with the seeded dev admin:";
1890
- readonly dismiss: "Dismiss";
2251
+ readonly title: "Local development instance";
2252
+ readonly signIn: "Sign in as dev admin";
1891
2253
  };
1892
2254
  readonly errors: {
1893
2255
  readonly invalidCredentials: "Invalid email or password. Please try again.";
@@ -1912,8 +2274,12 @@ declare const en: {
1912
2274
  readonly submittingButton: "Creating account…";
1913
2275
  readonly hasAccountText: "Already have an account?";
1914
2276
  readonly signInText: "Sign in";
2277
+ readonly socialButton: "Sign up with {provider}";
2278
+ readonly orText: "or continue with email";
1915
2279
  readonly errors: {
1916
2280
  readonly userExists: "An account with this email already exists. Try signing in instead.";
2281
+ readonly selfRegistrationClosed: "Self-registration is not open on this system. Ask an administrator for an invitation.";
2282
+ readonly emailDomainNotAllowed: "This email's domain is not allowed to register here. Use your organization email, or ask an administrator for an invitation.";
1917
2283
  };
1918
2284
  readonly verifyInbox: {
1919
2285
  readonly title: "Check your inbox";
@@ -1982,7 +2348,7 @@ declare const en: {
1982
2348
  readonly resentSuccess: "Verification email sent!";
1983
2349
  readonly resentDescription: "Please check your inbox and click the verification link.";
1984
2350
  readonly resendFailed: "Cannot resend verification email";
1985
- readonly resendUnavailable: "Email delivery may not be configured for this environment. Contact support if this persists.";
2351
+ readonly resendUnavailable: "Email delivery may not be configured for this system. Contact support if this persists.";
1986
2352
  readonly signInLink: "Go to sign in";
1987
2353
  readonly backToSignIn: "Back to sign in";
1988
2354
  readonly backToLogin: "Back to login";
@@ -2030,11 +2396,11 @@ declare const en: {
2030
2396
  readonly cancel: "Cancel";
2031
2397
  };
2032
2398
  readonly shell: {
2033
- readonly tenantHostHint: "You are signing in to this workspace";
2399
+ readonly tenantHostHint: "You are signing in to this system";
2034
2400
  };
2035
2401
  readonly setPassword: {
2036
2402
  readonly title: "Set a recovery password";
2037
- readonly description: "You signed in via single sign-on. Set a local password so you can still sign in to this environment directly if SSO ever becomes unavailable.";
2403
+ readonly description: "You signed in via single sign-on. Set a local password so you can still sign in directly if SSO ever becomes unavailable.";
2038
2404
  readonly email: "Email";
2039
2405
  readonly newPassword: "New password";
2040
2406
  readonly confirmPassword: "Confirm password";
@@ -2054,6 +2420,7 @@ declare const en: {
2054
2420
  readonly signOut: "Sign out instead";
2055
2421
  readonly password: {
2056
2422
  readonly title: "Your password has expired";
2423
+ readonly resetTitle: "You must change your password";
2057
2424
  readonly fallbackMessage: "Please set a new password to continue.";
2058
2425
  readonly current: "Current password";
2059
2426
  readonly next: "New password";
@@ -2079,6 +2446,11 @@ declare const en: {
2079
2446
  readonly verifying: "Verifying…";
2080
2447
  readonly invalidCode: "Invalid code. Try again.";
2081
2448
  };
2449
+ readonly impersonation: {
2450
+ readonly passwordTitle: "{{user}} must change their password";
2451
+ readonly mfaTitle: "{{user}} must set up two-factor authentication";
2452
+ readonly body: "You are impersonating {{user}}, and only they can do this themselves. Stop impersonating to return to your own account.";
2453
+ };
2082
2454
  };
2083
2455
  };
2084
2456
  readonly oauth: {
@@ -2086,12 +2458,17 @@ declare const en: {
2086
2458
  readonly title: "{{appName}} wants to access your account";
2087
2459
  readonly request: "{{appName}} is requesting permission{{suffix}}.";
2088
2460
  readonly unknownApp: "an application";
2461
+ readonly unidentified: "This application could not be identified.";
2462
+ readonly clientId: "Client ID";
2089
2463
  readonly willAllow: "This app will be able to:";
2090
2464
  readonly scope: {
2091
2465
  readonly openid: "Confirm your identity";
2092
2466
  readonly profile: "Read your basic profile (name, picture)";
2093
2467
  readonly email: "Read your email address";
2094
2468
  readonly offlineAccess: "Stay signed in (refresh access)";
2469
+ readonly dataRead: "Read records, within your own permissions";
2470
+ readonly dataWrite: "Create, change and delete records, within your own permissions";
2471
+ readonly actionsExecute: "Run actions on your behalf, within your own permissions";
2095
2472
  };
2096
2473
  readonly deny: "Deny";
2097
2474
  readonly authorize: "Authorize";
@@ -2122,11 +2499,20 @@ declare const en: {
2122
2499
  readonly role: "Role";
2123
2500
  readonly save: "Save Changes";
2124
2501
  };
2502
+ readonly language: {
2503
+ readonly title: "Language";
2504
+ readonly description: "The language used for notifications and messages sent to you. The interface language is chosen separately, from the globe menu.";
2505
+ readonly label: "Preferred language";
2506
+ readonly systemDefault: "Use the deployment default";
2507
+ readonly save: "Save";
2508
+ readonly saved: "Language preference updated.";
2509
+ readonly readOnly: "Your administrator manages the language for your account.";
2510
+ };
2125
2511
  readonly password: {
2126
2512
  readonly changeTitle: "Change Password";
2127
2513
  readonly setTitle: "Set Local Password";
2128
- readonly changeDescription: "Update the password you use to sign in to this environment.";
2129
- readonly setDescription: "You signed in via single sign-on. Set a local password to also sign in with email and password on this environment.";
2514
+ readonly changeDescription: "Update the password you use to sign in.";
2515
+ readonly setDescription: "You signed in via single sign-on. Set a local password to also sign in with email and password.";
2130
2516
  readonly current: "Current password";
2131
2517
  readonly new: "New password";
2132
2518
  readonly password: "Password";
@@ -2135,7 +2521,7 @@ declare const en: {
2135
2521
  readonly mismatch: "Passwords do not match";
2136
2522
  readonly enterCurrent: "Enter your current password";
2137
2523
  readonly changed: "Password changed.";
2138
- readonly localSet: "Local password set. You can now sign in with email and password on this environment.";
2524
+ readonly localSet: "Local password set. You can now sign in with email and password.";
2139
2525
  readonly changeAction: "Change password";
2140
2526
  readonly setAction: "Set password";
2141
2527
  };
@@ -2150,22 +2536,21 @@ declare const en: {
2150
2536
  readonly unknown: "An unexpected error occurred.";
2151
2537
  };
2152
2538
  readonly workspace: {
2153
- readonly label: "Workspaces";
2154
- readonly default: "My Workspace";
2155
- readonly switch: "Switch workspace";
2156
- readonly create: "Create workspace";
2157
- readonly createTitle: "Create a workspace";
2158
- readonly createDescription: "A workspace is a shared space for your team to collaborate.";
2159
- readonly createButton: "Create workspace";
2160
- readonly nameLabel: "Workspace name";
2539
+ readonly label: "Organizations";
2540
+ readonly default: "My Organization";
2541
+ readonly switch: "Switch organization";
2542
+ readonly createTitle: "Create an organization";
2543
+ readonly createDescription: "An organization is a shared space for your team to collaborate.";
2544
+ readonly createButton: "Create organization";
2545
+ readonly nameLabel: "Organization name";
2161
2546
  readonly namePlaceholder: "e.g., Acme Inc";
2162
2547
  readonly slugLabel: "URL slug";
2163
2548
  readonly slugHint: "Used in URLs. Only lowercase letters, numbers, and hyphens.";
2164
2549
  readonly invite: "Invite member";
2165
2550
  readonly members: "Members";
2166
- readonly settings: "Workspace settings";
2551
+ readonly settings: "Organization settings";
2167
2552
  readonly multiOrgDisabled: "Creating new organizations is disabled on this instance.";
2168
- readonly createFailed: "Failed to create workspace";
2553
+ readonly createFailed: "Failed to create organization";
2169
2554
  };
2170
2555
  readonly help: {
2171
2556
  readonly onThisPage: "On this page";
@@ -2173,10 +2558,15 @@ declare const en: {
2173
2558
  readonly allDocs: "All documentation";
2174
2559
  readonly keyboardShortcuts: "Keyboard shortcuts";
2175
2560
  readonly onlineDocs: "Online documentation";
2561
+ readonly loadingDocumentation: "Loading documentation";
2562
+ readonly about: "About";
2563
+ readonly aboutTitle: "About this console";
2564
+ readonly aboutDescription: "The build this console was compiled from.";
2565
+ readonly aboutBuild: "Console build";
2566
+ readonly aboutBuildUnknown: "Unknown build (no version was set when this console was built)";
2176
2567
  };
2177
2568
  readonly sidebar: {
2178
2569
  readonly settings: "Settings";
2179
- readonly help: "Help";
2180
2570
  readonly helpTooltip: "Help & Documentation";
2181
2571
  readonly activityFeed: "Activity feed";
2182
2572
  readonly notifications: "Notifications";
@@ -2188,20 +2578,19 @@ declare const en: {
2188
2578
  readonly packageManagement: "Package management";
2189
2579
  readonly searchNavigation: "Search navigation…";
2190
2580
  readonly recent: "Recent";
2191
- readonly favorites: "Favorites";
2192
2581
  readonly starred: "Starred";
2193
2582
  readonly removeFromFavorites: "Remove {{name}} from favorites";
2583
+ readonly allReports: "All reports";
2194
2584
  };
2195
2585
  readonly topbar: {
2196
2586
  readonly aiAssistant: "AI Assistant";
2197
2587
  readonly designInStudio: "Design in Studio";
2588
+ readonly editApp: "Edit app";
2198
2589
  readonly openAssistant: "Open {{name}} assistant";
2199
2590
  readonly offline: "Offline";
2200
2591
  readonly usersOnline: "Users currently online";
2201
2592
  readonly switchView: "Switch view";
2202
- readonly switchObject: "Switch Object";
2203
2593
  readonly connection: {
2204
- readonly connected: "Connected";
2205
2594
  readonly connecting: "Connecting…";
2206
2595
  readonly reconnecting: "Reconnecting…";
2207
2596
  readonly disconnected: "Disconnected";
@@ -2215,48 +2604,53 @@ declare const en: {
2215
2604
  };
2216
2605
  readonly home: {
2217
2606
  readonly title: "Home";
2218
- readonly subtitle: "Your workspace dashboard";
2219
2607
  readonly nav: "Home";
2220
2608
  readonly allApps: "All Applications";
2221
2609
  readonly yourApps: "Your apps";
2222
2610
  readonly showMoreApps: "More";
2223
2611
  readonly showLess: "Show less";
2224
2612
  readonly continueEmpty: "Items you open will show up here.";
2225
- readonly actionCenter: {
2226
- readonly title: "Needs your attention";
2227
- readonly empty: "You're all caught up";
2613
+ readonly myWork: {
2614
+ readonly title: "My work";
2615
+ readonly openInbox: "Open inbox";
2616
+ readonly viewAll: "View all";
2617
+ readonly approvals: "Awaiting approval";
2618
+ readonly approvalsEmpty: "Nothing waiting for your approval";
2619
+ readonly notifications: "Notifications";
2620
+ readonly notificationsEmpty: "No unread notifications";
2228
2621
  };
2229
2622
  readonly greetingMorning: "Good morning";
2230
2623
  readonly greetingAfternoon: "Good afternoon";
2231
2624
  readonly greetingEvening: "Good evening";
2232
2625
  readonly greetingNight: "Working late";
2233
- readonly heroTagline: "Pick up where you left off, or explore something new.";
2626
+ readonly greetingSeparator: ", ";
2627
+ readonly greetingEnd: ".";
2628
+ readonly search: "Search apps, records, pages…";
2629
+ readonly summary: {
2630
+ readonly approvals: "You have {{count}} approval(s) waiting today";
2631
+ readonly approvals_one: "You have {{count}} approval waiting today";
2632
+ readonly approvals_other: "You have {{count}} approvals waiting today";
2633
+ readonly none: "Nothing is waiting for you today";
2634
+ };
2635
+ readonly addApp: "Add app";
2636
+ readonly appOpened: "{{time}}";
2234
2637
  readonly build: {
2235
2638
  readonly title: "Build an app";
2236
- readonly subtitle: "Start from scratch — design objects, forms, automations and interfaces.";
2237
- readonly noCapability: "Building apps isn't available in this workspace — it requires the “Manage Metadata” permission, which your account doesn't have.";
2639
+ readonly noCapability: "Building apps isn't available in this system — it requires the “Manage Metadata” permission, which your account doesn't have.";
2238
2640
  };
2239
2641
  readonly template: {
2240
2642
  readonly title: "Start with a template";
2241
- readonly subtitle: "Install a template app from the marketplace and customize it.";
2242
2643
  readonly marketplaceDisabled: "This runtime has no app marketplace configured, so there are no templates to install here.";
2243
2644
  };
2244
2645
  readonly open: "Open";
2245
- readonly stats: {
2246
- readonly apps: "Applications";
2247
- readonly starred: "Starred";
2248
- readonly recent: "Recent items";
2249
- };
2250
- readonly loading: "Loading workspace…";
2251
- readonly recent: "Recent";
2252
- readonly starred: "Starred";
2646
+ readonly loading: "Loading…";
2253
2647
  readonly welcome: "Build your business system with AI";
2254
2648
  readonly welcomeDescription: "Describe your business in one sentence — AI generates the objects, screens, APIs and agent tools. Or start from scratch.";
2255
2649
  readonly welcomeAdminDescription: "Describe your business in one sentence — AI generates the objects, screens, APIs and agent tools. Or set things up yourself from the menu on the left.";
2256
2650
  readonly welcomeAdminDescriptionNoBuild: "Set up your first application from the Administration menu on the left. Once you have data, the AI assistant can help you explore it.";
2257
2651
  readonly welcomeAdminDescriptionNoAi: "Set up your first application from the Administration menu on the left.";
2258
2652
  readonly noAppsTitle: "No applications yet";
2259
- readonly noAppsDescription: "Your workspace is being set up — apps your admin shares with you will show up here.";
2653
+ readonly noAppsDescription: "The system is being set up — apps your admin shares with you will show up here.";
2260
2654
  readonly buildWithAI: "Build with AI";
2261
2655
  readonly askAI: "Ask AI";
2262
2656
  readonly recoveryReminder: {
@@ -2265,7 +2659,12 @@ declare const en: {
2265
2659
  readonly dismiss: "Dismiss";
2266
2660
  };
2267
2661
  readonly pendingDrafts: {
2268
- readonly message: "You have {{count}} unpublished change(s) — publish to make them live.";
2662
+ readonly title: "{{count}} unpublished change(s)";
2663
+ readonly title_one: "{{count}} unpublished change";
2664
+ readonly title_other: "{{count}} unpublished changes";
2665
+ readonly inPackage: "{{names}} waiting to publish in {{package}}";
2666
+ readonly waiting: "{{names}} waiting to publish";
2667
+ readonly nameSeparator: ", ";
2269
2668
  readonly cta: "Publish";
2270
2669
  readonly publishing: "Publishing…";
2271
2670
  readonly published: "Published! Your changes are live.";
@@ -2281,12 +2680,10 @@ declare const en: {
2281
2680
  readonly browseMarketplace: "Browse App Marketplace";
2282
2681
  readonly quickActions: {
2283
2682
  readonly title: "Quick Actions";
2284
- readonly createApp: "Create App";
2285
- readonly createAppDesc: "Start with a new application";
2286
2683
  readonly manageObjects: "Manage Objects";
2287
2684
  readonly manageObjectsDesc: "Configure data models";
2288
2685
  readonly systemSettings: "System Settings";
2289
- readonly systemSettingsDesc: "Configure your workspace";
2686
+ readonly systemSettingsDesc: "Configure your system";
2290
2687
  };
2291
2688
  readonly recentApps: {
2292
2689
  readonly title: "Recently Accessed";
@@ -2294,7 +2691,11 @@ declare const en: {
2294
2691
  readonly object: "Object";
2295
2692
  readonly dashboard: "Dashboard";
2296
2693
  readonly page: "Page";
2694
+ readonly report: "Report";
2695
+ readonly package: "Package";
2696
+ readonly view: "List view";
2297
2697
  readonly record: "Record";
2698
+ readonly metadata: "Metadata";
2298
2699
  };
2299
2700
  };
2300
2701
  readonly starredApps: {
@@ -2321,6 +2722,11 @@ declare const en: {
2321
2722
  readonly manageAllApps: "Manage All Apps";
2322
2723
  readonly systemConsole: "System Console";
2323
2724
  readonly noAppsConfigured: "No apps configured";
2725
+ readonly allApps: "All apps";
2726
+ readonly editAppInStudio: "Edit {{app}} in Studio";
2727
+ readonly backToHome: "Back to home";
2728
+ readonly settings: "Settings";
2729
+ readonly productHome: "{{product}} home";
2324
2730
  };
2325
2731
  readonly systemNav: {
2326
2732
  readonly systemSettings: "System Settings";
@@ -2331,7 +2737,6 @@ declare const en: {
2331
2737
  readonly organizations: "Organizations";
2332
2738
  readonly roles: "Roles";
2333
2739
  readonly configuration: "Configuration";
2334
- readonly createApp: "Create App";
2335
2740
  readonly administration: "Administration";
2336
2741
  readonly datasources: "Datasources";
2337
2742
  readonly documentation: "Documentation";
@@ -2340,12 +2745,14 @@ declare const en: {
2340
2745
  readonly title: "Recent Activity";
2341
2746
  readonly filter: "Filter";
2342
2747
  readonly empty: "No recent activity";
2748
+ readonly accessDenied: "You don't have permission to view activity.";
2343
2749
  readonly viewAll: "View all activity";
2344
2750
  readonly ariaLabel: "Activity feed";
2345
2751
  readonly typeCreate: "Create";
2346
2752
  readonly typeUpdate: "Update";
2347
2753
  readonly typeDelete: "Delete";
2348
2754
  readonly typeComment: "Comment";
2755
+ readonly typeSystem: "System";
2349
2756
  readonly relativeJustNow: "just now";
2350
2757
  readonly relativeSecondsAgo: "{{count}}s ago";
2351
2758
  readonly relativeMinutesAgo: "{{count}}m ago";
@@ -2366,8 +2773,11 @@ declare const en: {
2366
2773
  readonly placeholder: "Search objects, dashboards, pages, reports…";
2367
2774
  readonly inputAriaLabel: "Search objects, dashboards, pages, reports";
2368
2775
  readonly resultsCount: "{{count}} result for \"{{query}}\"";
2369
- readonly resultsCountPlural: "{{count}} results for \"{{query}}\"";
2776
+ readonly resultsCount_one: "{{count}} result for \"{{query}}\"";
2777
+ readonly resultsCount_other: "{{count}} results for \"{{query}}\"";
2370
2778
  readonly itemsAvailable: "{{count}} items available";
2779
+ readonly itemsAvailable_one: "{{count}} item available";
2780
+ readonly itemsAvailable_other: "{{count}} items available";
2371
2781
  readonly noResults: "No results found";
2372
2782
  readonly noResultsHint: "Try adjusting your search terms";
2373
2783
  readonly typeObjects: "Objects";
@@ -2385,6 +2795,10 @@ declare const en: {
2385
2795
  readonly interfacePageSourceMissing: "This interface page references \"{{name}}\", which is not available.";
2386
2796
  readonly recordNotFound: "Record not found";
2387
2797
  readonly recordNotFoundDescription: "The record you are looking for does not exist or may have been deleted.";
2798
+ readonly recordAccessDenied: "You don’t have access to {{object}} records";
2799
+ readonly recordAccessDeniedDescription: "You don’t have permission to view records of this type. Contact your administrator if you think you should have access.";
2800
+ readonly recordLoadFailed: "Couldn’t load this record";
2801
+ readonly recordLoadFailedDescription: "Something went wrong while loading it. Check your connection and try again.";
2388
2802
  readonly pageNotFound: "Page Not Found";
2389
2803
  readonly pageNotFoundDescription: "The page \"{{name}}\" could not be found. It may have been removed or renamed.";
2390
2804
  readonly dashboardNotFound: "Dashboard Not Found";
@@ -2394,10 +2808,18 @@ declare const en: {
2394
2808
  readonly noAppsConfigured: "No Apps Configured";
2395
2809
  readonly noAppsConfiguredDescription: "No applications have been registered. Create your first app or visit System Settings to configure your environment.";
2396
2810
  readonly appNotAvailable: "App not available";
2397
- readonly appNotAvailableDescription: "This app is not available yet — it may still be publishing. Try again in a moment.";
2811
+ readonly appNotAvailableDescription: "This app is not available — try again in a moment.";
2812
+ readonly appNotFound: "This app can't be opened";
2813
+ readonly appNotFoundDescription: "The server did not return this app for your account.";
2814
+ readonly appUnreachable: "Couldn't reach the server";
2815
+ readonly appUnreachableDescription: "This app could not be checked. Try again in a moment.";
2398
2816
  readonly appAccessDenied: "You don't have access to this app";
2399
2817
  readonly appAccessDeniedDescription: "This app exists, but your account is not authorized to open it. Ask an administrator to grant you access.";
2400
2818
  readonly appAccessDeniedHome: "Back to home";
2819
+ readonly appNothingAvailable: "Nothing in {{app}} is available to you yet";
2820
+ readonly appNothingAvailableDescription: "This app has no pages your account can open. Ask an administrator to grant you access.";
2821
+ readonly appNothingAvailableGrantDescription: "This app has no pages your account can open. You can grant access in Setup.";
2822
+ readonly openSetup: "Open Setup";
2401
2823
  readonly createFirstApp: "Create Your First App";
2402
2824
  readonly systemSettings: "System Settings";
2403
2825
  readonly back: "Back";
@@ -2418,6 +2840,9 @@ declare const en: {
2418
2840
  readonly publishing: "Publishing…";
2419
2841
  readonly exit: "Exit preview";
2420
2842
  readonly changes: "Changes";
2843
+ readonly pendingHere: "Draft preview · {{count}} unpublished changes on this page";
2844
+ readonly pendingHere_one: "Draft preview · {{count}} unpublished change on this page";
2845
+ readonly pendingHere_other: "Draft preview · {{count}} unpublished changes on this page";
2421
2846
  readonly sampleDataTitle: "Sample data appears once you publish";
2422
2847
  readonly sampleDataBody: "You’re previewing your app’s structure. Publish to load example records and make it live.";
2423
2848
  readonly publishCta: "Publish to see it live";
@@ -2435,8 +2860,58 @@ declare const en: {
2435
2860
  readonly detailNone: "No differences detected — the draft matches the published version.";
2436
2861
  readonly detailChangedKeys: "Also changed:";
2437
2862
  readonly confirmNote: "Publishing releases all {{count}} pending drafts of this package atomically.";
2863
+ readonly confirmNote_one: "Publishing releases the {{count}} pending draft of this package atomically.";
2864
+ readonly confirmNote_other: "Publishing releases all {{count}} pending drafts of this package atomically.";
2865
+ readonly confirmNoteSeparate: "Publishing releases the {{count}} pending drafts one at a time: a draft that fails stays pending while the others go live.";
2866
+ readonly confirmNoteSeparate_one: "Publishing releases the {{count}} pending draft on its own: if it fails, it stays pending.";
2867
+ readonly confirmNoteSeparate_other: "Publishing releases the {{count}} pending drafts one at a time: a draft that fails stays pending while the others go live.";
2438
2868
  readonly publishConfirm: "Publish all";
2869
+ readonly summaryItems: "{{count}} items";
2870
+ readonly summaryItems_one: "{{count}} item";
2871
+ readonly summaryItems_other: "{{count}} items";
2872
+ readonly summaryType: "{{n}} {{type}}";
2873
+ readonly typeCount: {
2874
+ readonly object: "{{count}} objects";
2875
+ readonly object_one: "{{count}} object";
2876
+ readonly object_other: "{{count}} objects";
2877
+ readonly view: "{{count}} views";
2878
+ readonly view_one: "{{count}} view";
2879
+ readonly view_other: "{{count}} views";
2880
+ readonly page: "{{count}} pages";
2881
+ readonly page_one: "{{count}} page";
2882
+ readonly page_other: "{{count}} pages";
2883
+ readonly dashboard: "{{count}} dashboards";
2884
+ readonly dashboard_one: "{{count}} dashboard";
2885
+ readonly dashboard_other: "{{count}} dashboards";
2886
+ readonly app: "{{count}} apps";
2887
+ readonly app_one: "{{count}} app";
2888
+ readonly app_other: "{{count}} apps";
2889
+ readonly action: "{{count}} actions";
2890
+ readonly action_one: "{{count}} action";
2891
+ readonly action_other: "{{count}} actions";
2892
+ readonly report: "{{count}} reports";
2893
+ readonly report_one: "{{count}} report";
2894
+ readonly report_other: "{{count}} reports";
2895
+ readonly flow: "{{count}} flows";
2896
+ readonly flow_one: "{{count}} flow";
2897
+ readonly flow_other: "{{count}} flows";
2898
+ readonly permission: "{{count}} permission sets";
2899
+ readonly permission_one: "{{count}} permission set";
2900
+ readonly permission_other: "{{count}} permission sets";
2901
+ readonly agent: "{{count}} agents";
2902
+ readonly agent_one: "{{count}} agent";
2903
+ readonly agent_other: "{{count}} agents";
2904
+ readonly email_template: "{{count}} email templates";
2905
+ readonly email_template_one: "{{count}} email template";
2906
+ readonly email_template_other: "{{count}} email templates";
2907
+ };
2908
+ readonly backfillOption: "Backfill default ({{count}} existing records)";
2909
+ readonly backfillOption_one: "Backfill default ({{count}} existing record)";
2910
+ readonly backfillOption_other: "Backfill default ({{count}} existing records)";
2911
+ readonly backfillOptionNoCount: "Backfill default";
2439
2912
  readonly securityBlockTitle: "Publishing will be refused — {{count}} item(s) need a decision first";
2913
+ readonly securityBlockTitle_one: "Publishing will be refused — {{count}} item needs a decision first";
2914
+ readonly securityBlockTitle_other: "Publishing will be refused — {{count}} items need a decision first";
2440
2915
  readonly securityBlockWhere: "Fix it on the object under Settings → Record sharing, then publish again.";
2441
2916
  };
2442
2917
  readonly unpublishedBar: {
@@ -2457,7 +2932,7 @@ declare const en: {
2457
2932
  readonly revertLabel: "Reverted a change";
2458
2933
  readonly applyLabel: "Build change";
2459
2934
  readonly revert: "revert";
2460
- readonly items: "item(s)";
2935
+ readonly items: "{{count}} item(s)";
2461
2936
  readonly revertAction: "Revert";
2462
2937
  readonly reverted: "Reverted — the change has been undone.";
2463
2938
  readonly revertFailed: "Revert failed";
@@ -2471,22 +2946,17 @@ declare const en: {
2471
2946
  readonly requiredError: "{{label}} is required";
2472
2947
  readonly lookupPlaceholder: "Record id for {{label}}";
2473
2948
  readonly lookupHelpText: "No reference object is configured for this parameter, so the record picker is unavailable. Enter a record id, or ask an administrator to fix the action parameter.";
2949
+ readonly unresolvedParam: "This parameter cannot be shown: the field it is backed by is missing from the object metadata, so the control it needs cannot be built. Ask an administrator to fix the action definition.";
2950
+ readonly carryOverHint: "Carried over unchanged (read-only)";
2474
2951
  readonly cancel: "Cancel";
2475
2952
  readonly confirm: "Confirm";
2476
2953
  readonly uploading: "Uploading…";
2477
- readonly defaultActionTitle: "Action";
2478
- readonly ok: "OK";
2479
2954
  };
2480
2955
  readonly actionConfirm: {
2481
2956
  readonly title: "Confirm Action";
2482
2957
  readonly confirm: "Continue";
2483
2958
  readonly cancel: "Cancel";
2484
2959
  };
2485
- readonly rowAction: {
2486
- readonly openMenu: "Open menu";
2487
- readonly edit: "Edit";
2488
- readonly delete: "Delete";
2489
- };
2490
2960
  readonly navigationSync: {
2491
2961
  readonly addedPage: "Navigation updated: added page \"{{name}}\"";
2492
2962
  readonly addedDashboard: "Navigation updated: added dashboard \"{{name}}\"";
@@ -2504,9 +2974,14 @@ declare const en: {
2504
2974
  readonly deleteFailed: "Failed to delete {{label}}";
2505
2975
  readonly noRecordId: "No record ID provided";
2506
2976
  readonly deleteConfirm: "Are you sure you want to delete this record?";
2507
- readonly resetPackageSetConfirm: string;
2508
- readonly resetPackageSetSuccess: "Permission set reset to its shipped baseline";
2977
+ readonly deleteConfirmTitle: "Delete {{label}} \"{{name}}\"?";
2978
+ readonly bulkDeleteConfirmTitle: "Delete {{count}} {{label}} records?";
2979
+ readonly bulkDeleteConfirmTitle_one: "Delete {{count}} {{label}} record?";
2980
+ readonly bulkDeleteConfirmTitle_other: "Delete {{count}} {{label}} records?";
2981
+ readonly deleteConfirmButton: "Delete";
2509
2982
  readonly bulkDeleteSuccess: "Deleted {{count}} {{label}} records";
2983
+ readonly bulkDeleteSuccess_one: "Deleted {{count}} {{label}} record";
2984
+ readonly bulkDeleteSuccess_other: "Deleted {{count}} {{label}} records";
2510
2985
  readonly bulkDeletePartial: "{{succeeded}} deleted, {{failed}} failed";
2511
2986
  };
2512
2987
  readonly objectViewActions: {
@@ -2518,15 +2993,6 @@ declare const en: {
2518
2993
  readonly exportFailed: "Export failed: {{message}}";
2519
2994
  readonly forecastSoon: "Forecast view coming soon";
2520
2995
  };
2521
- readonly recordDetail: {
2522
- readonly viewersTooltip: "Users viewing this record";
2523
- };
2524
- readonly cellRender: {
2525
- readonly empty: "Empty";
2526
- readonly yes: "Yes";
2527
- readonly no: "No";
2528
- readonly systemFields: "System";
2529
- };
2530
2996
  readonly user: {
2531
2997
  readonly profile: "Profile";
2532
2998
  readonly settings: "Settings";
@@ -2536,18 +3002,18 @@ declare const en: {
2536
3002
  readonly language: "Language";
2537
3003
  };
2538
3004
  readonly organizations: {
2539
- readonly mine: "My Workspaces";
2540
- readonly create: "Create workspace";
2541
- readonly title: "Workspaces";
2542
- readonly heading: "Your Workspaces";
2543
- readonly subtitle: "Select a workspace to continue, or create a new one.";
2544
- readonly searchPlaceholder: "Search for a workspace";
2545
- readonly new: "New workspace";
2546
- readonly current: "Current workspace";
3005
+ readonly mine: "My Organizations";
3006
+ readonly create: "Create organization";
3007
+ readonly title: "Organizations";
3008
+ readonly heading: "Your Organizations";
3009
+ readonly subtitle: "Select an organization to continue, or create a new one.";
3010
+ readonly searchPlaceholder: "Search for an organization";
3011
+ readonly new: "New organization";
3012
+ readonly current: "Current organization";
2547
3013
  readonly manage: "Manage";
2548
- readonly emptyTitle: "No workspaces yet";
2549
- readonly emptyDescription: "Create your first workspace to get started.";
2550
- readonly noMatches: "No workspaces match your search.";
3014
+ readonly emptyTitle: "No organizations yet";
3015
+ readonly emptyDescription: "Create your first organization to get started.";
3016
+ readonly noMatches: "No organizations match your search.";
2551
3017
  };
2552
3018
  readonly organization: {
2553
3019
  readonly roles: {
@@ -2632,6 +3098,7 @@ declare const en: {
2632
3098
  readonly readOnlyNote: "Only owners can change settings.";
2633
3099
  readonly nameLabel: "Organization name";
2634
3100
  readonly slugLabel: "Slug";
3101
+ readonly slugLockedNote: "This organization has active environments, so its slug can’t be changed here: renaming it also moves their subdomains.";
2635
3102
  readonly logoLabel: "Logo";
2636
3103
  readonly logoUpload: "Upload";
2637
3104
  readonly logoReplace: "Replace";
@@ -2696,15 +3163,34 @@ declare const en: {
2696
3163
  readonly viewAll: "View all notifications";
2697
3164
  readonly groupCount: "{{count}} notifications";
2698
3165
  readonly groupUnread: "{{count}} unread";
3166
+ readonly groupUnread_one: "{{count}} unread";
3167
+ readonly groupUnread_other: "{{count}} unread";
2699
3168
  readonly groupMarkRead: "Mark read";
2700
3169
  readonly groupMarkReadTitle: "Mark all of this type read";
2701
3170
  readonly approvalsPending: "{{count}} pending approvals";
3171
+ readonly approvalsPending_one: "{{count}} pending approval";
3172
+ readonly approvalsPending_other: "{{count}} pending approvals";
2702
3173
  readonly viewApprovals: "View approvals";
2703
3174
  readonly noPendingApprovals: "No pending approvals";
2704
3175
  readonly openApprovalsInbox: "Open Approvals Inbox";
2705
3176
  readonly badgeTotal: "{{total}} total";
2706
- readonly badgeNotifications: "{{unread}} notifications";
2707
- readonly badgeApprovals: "{{approvals}} pending approvals";
3177
+ readonly badgeNotifications: "{{count}} notifications";
3178
+ readonly badgeNotifications_one: "{{count}} notification";
3179
+ readonly badgeNotifications_other: "{{count}} notifications";
3180
+ readonly badgeApprovals: "{{count}} pending approvals";
3181
+ readonly badgeApprovals_one: "{{count}} pending approval";
3182
+ readonly badgeApprovals_other: "{{count}} pending approvals";
3183
+ readonly arrivalMany: "{{count}} new messages";
3184
+ readonly arrivalMany_one: "{{count}} new message";
3185
+ readonly arrivalMany_other: "{{count}} new messages";
3186
+ readonly arrivalRepeats: "{{count}} new messages on this topic";
3187
+ readonly arrivalRepeats_one: "{{count}} new message on this topic";
3188
+ readonly arrivalRepeats_other: "{{count}} new messages on this topic";
3189
+ readonly arrivalOpen: "View";
3190
+ readonly toastEnabled: "In-app alerts";
3191
+ readonly desktopEnabled: "Desktop notifications";
3192
+ readonly desktopBlocked: "Blocked. Allow notifications for this site in your browser settings.";
3193
+ readonly desktopUnsupported: "This browser does not support desktop notifications.";
2708
3194
  };
2709
3195
  readonly publicForm: {
2710
3196
  readonly submit: "Submit";
@@ -2715,12 +3201,14 @@ declare const en: {
2715
3201
  readonly thankYouTitle: "Thank you!";
2716
3202
  readonly thankYouMessage: "Your submission has been received successfully.";
2717
3203
  readonly redirecting: "Redirecting in {{seconds}} seconds…";
3204
+ readonly redirectPending: "Redirecting…";
2718
3205
  readonly unavailableTitle: "Form unavailable";
2719
3206
  readonly unavailableDescription: "No public form is available at this URL. Make sure the underlying view has anonymous sharing enabled and matches this slug.";
2720
3207
  readonly tryDemo: "Try the demo";
2721
3208
  readonly retry: "Retry";
2722
3209
  readonly loading: "Loading form…";
2723
3210
  readonly requiredHint: "* Required field";
3211
+ readonly requiredFields: "Required: {{fields}}";
2724
3212
  readonly consentLabelDefault: "I agree to the privacy policy and consent to my data being processed for this request.";
2725
3213
  readonly consentLink: "Privacy policy";
2726
3214
  readonly consentRequired: "Please accept the privacy policy to continue.";
@@ -2733,10 +3221,10 @@ declare const en: {
2733
3221
  readonly body: "The MCP surface is off (OS_MCP_SERVER_ENABLED=false), so there is nothing to connect. Ask your operator to re-enable it.";
2734
3222
  };
2735
3223
  readonly url: {
2736
- readonly title: "This environment's MCP endpoint";
3224
+ readonly title: "This system's MCP endpoint";
2737
3225
  readonly body: "Any MCP-capable AI client connects with this URL. Identity is self-serve: the deployment is its own OAuth 2.1 authorization server, so interactive clients just open a browser login — you connect as yourself, and every call runs under your own permissions and row-level security.";
2738
3226
  readonly downloadSkill: "Download SKILL.md";
2739
- readonly skillHint: "The portable agent skill: teaches any skills-capable agent how to work with this environment.";
3227
+ readonly skillHint: "The portable agent skill: teaches any skills-capable agent how to work with this system.";
2740
3228
  };
2741
3229
  readonly claude: {
2742
3230
  readonly body: "Settings → Connectors → Add custom connector, then paste this URL. Sign in through the browser when prompted.";
@@ -2771,18 +3259,83 @@ declare const en: {
2771
3259
  readonly noImportableFields: "That object has no importable fields.";
2772
3260
  readonly schemaReadFailed: "Could not read the object schema.";
2773
3261
  readonly imported: "Imported {{count}} row(s) into {{object}}.";
3262
+ readonly imported_one: "Imported {{count}} row into {{object}}.";
3263
+ readonly imported_other: "Imported {{count}} rows into {{object}}.";
2774
3264
  readonly importFrom: "Import the real rows from";
2775
3265
  readonly into: "into";
2776
3266
  readonly opening: "Opening…";
2777
3267
  readonly importAction: "Import";
2778
3268
  readonly dismiss: "Dismiss";
2779
3269
  };
2780
- readonly cloudOnboarding: {
2781
- readonly hintCreate: "Spin up your first environment — a private workspace with its own URL, database, and plan. Building happens inside it.";
2782
- readonly hintReady: "Your production environment is ready. Open it to build and run your apps — that all happens inside the environment.";
2783
- readonly createEnvironment: "Create your environment";
2784
- readonly openProduction: "Open Production";
2785
- readonly manageEnvironments: "Manage environments";
3270
+ readonly cloudWorkspaceTimezoneNotice: {
3271
+ readonly seeded: "The environment timezone was set to {{zone}} from your browser when the environment was created. You can change it in Settings → Localization.";
3272
+ };
3273
+ readonly ai: {
3274
+ readonly nlQuery: {
3275
+ readonly placeholder: "Ask a question about your data…";
3276
+ readonly ask: "Ask";
3277
+ readonly results: "Results";
3278
+ readonly match: "{{percent}} match";
3279
+ readonly simulatedSummary: "Results for: {{query}}";
3280
+ readonly noResults: "No matching records found";
3281
+ readonly recentQueries: "Recent Queries";
3282
+ };
3283
+ readonly formAssist: {
3284
+ readonly title: "AI Suggestions";
3285
+ readonly suggestionCount: "{{count}} suggestions";
3286
+ readonly suggestionCount_one: "{{count}} suggestion";
3287
+ readonly suggestionCount_other: "{{count}} suggestions";
3288
+ readonly applyAll: "Apply All";
3289
+ readonly confidence: "{{percent}} confidence";
3290
+ readonly appliedCount: "{{count}} suggestions applied";
3291
+ readonly appliedCount_one: "{{count}} suggestion applied";
3292
+ readonly appliedCount_other: "{{count}} suggestions applied";
3293
+ };
3294
+ readonly recommendations: {
3295
+ readonly title: "Recommendations";
3296
+ readonly generating: "Generating recommendations…";
3297
+ readonly empty: "No recommendations available";
3298
+ };
3299
+ };
3300
+ readonly aiApprovals: {
3301
+ readonly title: "AI Approvals";
3302
+ readonly description: "Actions an AI agent proposed that need a human review before execution.";
3303
+ readonly tabPending: "Pending";
3304
+ readonly tabDecided: "Decided";
3305
+ readonly tabAll: "All";
3306
+ readonly statusPending: "Pending";
3307
+ readonly statusApproved: "Approved";
3308
+ readonly statusExecuted: "Executed";
3309
+ readonly statusFailed: "Failed";
3310
+ readonly statusRejected: "Rejected";
3311
+ readonly colTool: "Tool";
3312
+ readonly colAction: "Action";
3313
+ readonly colObject: "Object";
3314
+ readonly colStatus: "Status";
3315
+ readonly colProposed: "Proposed";
3316
+ readonly colDecision: "Decision";
3317
+ readonly emptyTitle: "No actions waiting";
3318
+ readonly emptyDescription: "When the AI proposes a sensitive action it will appear here for review.";
3319
+ readonly view: "View";
3320
+ readonly approve: "Approve";
3321
+ readonly reject: "Reject";
3322
+ readonly working: "Working…";
3323
+ readonly approveAndExecute: "Approve & Execute";
3324
+ readonly outcomeApprove: "Approve for {{id}}: {{message}}";
3325
+ readonly outcomeReject: "Reject for {{id}}: {{message}}";
3326
+ readonly outcomeExecuteFailed: "Action failed during execution";
3327
+ readonly drawerFallbackTitle: "Pending action";
3328
+ readonly drawerSubtitle: "Tool {{tool}} on {{object}}";
3329
+ readonly fieldProposedBy: "Proposed by";
3330
+ readonly fieldDecidedBy: "Decided by";
3331
+ readonly fieldConversation: "Conversation";
3332
+ readonly fieldToolInput: "Tool input";
3333
+ readonly fieldResult: "Result";
3334
+ readonly fieldError: "Error";
3335
+ readonly fieldRejectionReason: "Rejection reason";
3336
+ readonly rejectTitle: "Reject this action?";
3337
+ readonly rejectBody: "The reason is shown back to the AI so it can adjust its next response.";
3338
+ readonly rejectPlaceholder: "Optional reason (e.g. 'Wrong record id — please confirm with the user first.')";
2786
3339
  };
2787
3340
  readonly aiModelStatus: {
2788
3341
  readonly summary: "Build / Ask uses {{conversational}} ({{conversationalSource}}); structured uses {{structured}} ({{structuredSource}}).";
@@ -2792,8 +3345,8 @@ declare const en: {
2792
3345
  readonly rowConversational: "Build / Ask model";
2793
3346
  readonly rowStructured: "Structured (blueprint / seed)";
2794
3347
  readonly rowReasoning: "Reasoning effort";
2795
- readonly readFailed: "Couldn't read the effective AI model. This environment may not run an AI service, or you may lack the ai:read permission.";
2796
- readonly readFailedWithStatus: "Couldn't read the effective AI model (HTTP {{status}}). This environment may not run an AI service, or you may lack the ai:read permission.";
3348
+ readonly readFailed: "Couldn't read the effective AI model. This system may not run an AI service, or you may lack the ai:read permission.";
3349
+ readonly readFailedWithStatus: "Couldn't read the effective AI model (HTTP {{status}}). This system may not run an AI service, or you may lack the ai:read permission.";
2797
3350
  readonly overridesInEffect: "Overrides in effect: ";
2798
3351
  readonly noOverrides: "none — running the deployed code defaults.";
2799
3352
  readonly adapter: "Adapter: ";
@@ -2801,6 +3354,141 @@ declare const en: {
2801
3354
  readonly sourceInherits: "same as build/ask";
2802
3355
  readonly sourcePinned: "pinned by {{source}}";
2803
3356
  };
3357
+ readonly chatbot: {
3358
+ readonly answer: {
3359
+ readonly showFull: "Show full answer";
3360
+ readonly collapse: "Collapse";
3361
+ readonly expandTable: "Expand";
3362
+ readonly exitExpandedTable: "Close";
3363
+ };
3364
+ readonly tool: {
3365
+ readonly aggregate_data: "Aggregate the data";
3366
+ readonly get_record: "Read the record";
3367
+ readonly query_data: "Query the data";
3368
+ readonly query_records: "Look up the records";
3369
+ readonly search_knowledge: "Search the knowledge base";
3370
+ readonly visualize_data: "Chart the data";
3371
+ readonly add_field: "Add a field";
3372
+ readonly apply_blueprint: "Build the app from the plan";
3373
+ readonly apply_edit: "Apply the change";
3374
+ readonly create_metadata: "Create a metadata item";
3375
+ readonly create_object: "Create an object";
3376
+ readonly create_package: "Create a package";
3377
+ readonly create_seed: "Generate sample data";
3378
+ readonly delete_field: "Delete a field";
3379
+ readonly describe_metadata: "Look at the metadata";
3380
+ readonly describe_object: "Look at the object structure";
3381
+ readonly get_active_package: "Check the active package";
3382
+ readonly get_authoring_rules: "Read the authoring rules";
3383
+ readonly get_metadata_schema: "Read the metadata format";
3384
+ readonly get_package: "Look at the package";
3385
+ readonly list_metadata: "List the existing metadata";
3386
+ readonly list_objects: "List the existing objects";
3387
+ readonly list_packages: "List the existing packages";
3388
+ readonly load_tools: "Load more tools";
3389
+ readonly modify_field: "Change a field";
3390
+ readonly open_record: "Open the record";
3391
+ readonly propose_blueprint: "Draft the app plan";
3392
+ readonly set_active_package: "Switch to the target package";
3393
+ readonly suggest_builder: "Suggest building it with AI";
3394
+ readonly test_flow: "Try out the flow";
3395
+ readonly todo_write: "Note follow-up checks";
3396
+ readonly toggle_flow: "Turn the flow on or off";
3397
+ readonly update_metadata: "Update a metadata item";
3398
+ readonly validate_expression: "Check the expression";
3399
+ readonly verify_build: "Check the build";
3400
+ };
3401
+ readonly toolState: {
3402
+ readonly agentActivity: "Agent activity";
3403
+ readonly pending: "Pending";
3404
+ readonly running: "Running";
3405
+ readonly awaitingApproval: "Awaiting approval";
3406
+ readonly responded: "Responded";
3407
+ readonly completed: "Completed";
3408
+ readonly error: "Error";
3409
+ readonly denied: "Denied";
3410
+ readonly failed: "Failed";
3411
+ };
3412
+ readonly phase: {
3413
+ readonly build: "Build";
3414
+ readonly design: "Design the plan";
3415
+ readonly stepCount: "{{count}} steps";
3416
+ readonly stepCount_one: "{{count}} step";
3417
+ readonly stepCount_other: "{{count}} steps";
3418
+ readonly expand: "Show steps";
3419
+ readonly collapse: "Hide steps";
3420
+ };
3421
+ readonly plan: {
3422
+ readonly countObjects: "{{count}} objects";
3423
+ readonly countObjects_one: "{{count}} object";
3424
+ readonly countObjects_other: "{{count}} objects";
3425
+ readonly countViews: "{{count}} views";
3426
+ readonly countViews_one: "{{count}} view";
3427
+ readonly countViews_other: "{{count}} views";
3428
+ readonly countDashboards: "{{count}} dashboards";
3429
+ readonly countDashboards_one: "{{count}} dashboard";
3430
+ readonly countDashboards_other: "{{count}} dashboards";
3431
+ readonly countSeedData: "sample data";
3432
+ readonly extendTarget: "Adding to existing app: {{app}}";
3433
+ readonly awaitingConfirm: "Awaiting confirmation";
3434
+ readonly objectsAndFields: "Objects and fields";
3435
+ readonly views: "Views";
3436
+ readonly suggestedField: "suggested";
3437
+ readonly nameField: "Name: {{field}}";
3438
+ };
3439
+ readonly build: {
3440
+ readonly building: "Building {{app}}…";
3441
+ readonly built: "Built {{app}}";
3442
+ readonly builtAndLive: "Built and live · {{app}}";
3443
+ readonly appFallback: "your app";
3444
+ readonly addingSampleData: "adding sample data";
3445
+ readonly group: {
3446
+ readonly object: "Objects";
3447
+ readonly view: "Views";
3448
+ readonly dashboard: "Dashboards";
3449
+ readonly app: "App";
3450
+ readonly seed: "Sample data";
3451
+ };
3452
+ readonly moreArtifacts: "+{{n}} more";
3453
+ readonly verifying: "Checking the change…";
3454
+ readonly verifyStep: "step {{n}}";
3455
+ readonly verified: "Checked the change";
3456
+ readonly unknownPhase: "Unknown build phase";
3457
+ readonly nextStepsLead: "Next, you can say: {{steps}}";
3458
+ readonly nextStepQuote: "“{{step}}”";
3459
+ readonly draftPosture: "Later changes are saved as drafts, and you publish them in Studio.";
3460
+ readonly checksPassed: "Checks passed {{passed}}/{{total}}";
3461
+ };
3462
+ readonly changes: {
3463
+ readonly planTitle: "Change plan · {{count}} changes";
3464
+ readonly planTitle_one: "Change plan · {{count}} change";
3465
+ readonly planTitle_other: "Change plan · {{count}} changes";
3466
+ readonly saveDraft: "Save as draft";
3467
+ readonly reviewAndPublish: "Review changes and publish";
3468
+ readonly undo: "Undo";
3469
+ readonly undoWithOthers: "Undo (and {{count}} other drafts)";
3470
+ readonly undoWithOthers_one: "Undo (and {{count}} other draft)";
3471
+ readonly undoWithOthers_other: "Undo (and {{count}} other drafts)";
3472
+ readonly undoConfirm: "Undo discards all {{total}} unpublished drafts of this package, including {{count}} that are not part of this change.";
3473
+ readonly undoConfirm_one: "Undo discards all {{total}} unpublished drafts of this package, including {{count}} that is not part of this change.";
3474
+ readonly undoConfirm_other: "Undo discards all {{total}} unpublished drafts of this package, including {{count}} that are not part of this change.";
3475
+ readonly undoConfirmUnknown: "Undo discards every unpublished draft of this package, not only this change.";
3476
+ readonly undoConfirmAction: "Undo all";
3477
+ readonly undoCancel: "Cancel";
3478
+ readonly undoing: "Undoing…";
3479
+ readonly undone: "Undone";
3480
+ readonly undoFailed: "Undo failed";
3481
+ readonly kind: {
3482
+ readonly field: "Field";
3483
+ readonly object: "Object";
3484
+ readonly view: "View";
3485
+ readonly dashboard: "Dashboard";
3486
+ readonly app: "App";
3487
+ readonly seed: "Sample data";
3488
+ readonly package: "App package";
3489
+ };
3490
+ };
3491
+ };
2804
3492
  readonly chatbotError: {
2805
3493
  readonly title: "Response failed";
2806
3494
  readonly fallbackDetail: "Something went wrong. Please try again.";
@@ -2814,10 +3502,13 @@ declare const en: {
2814
3502
  readonly buyCredits: "Buy a credit pack";
2815
3503
  readonly upgradePlan: "Upgrade plan";
2816
3504
  };
3505
+ readonly planTier: {
3506
+ readonly teamAndUp: "Team plan and up";
3507
+ };
2817
3508
  readonly environment: {
2818
- readonly addEnvironment: "Add environment";
2819
3509
  readonly setUpProduction: "Set up your production environment";
2820
3510
  readonly addDevelopment: "Add development environment";
3511
+ readonly developmentLocked: "Development environments · {{tier}}";
2821
3512
  readonly entitlement: {
2822
3513
  readonly productionLimitTitle: "You already have your production environment";
2823
3514
  readonly productionLimitBody: "Each organization includes exactly one production environment. Create a separate organization for another, or contact us about an Enterprise arrangement.";
@@ -2864,14 +3555,14 @@ declare const en: {
2864
3555
  };
2865
3556
  readonly unbound: {
2866
3557
  readonly title: "Not connected";
2867
- readonly body: "Connect this runtime to an ObjectStack control plane to browse your organization's private packages and install them here. Approval is a single click in your cloud account — no ids or credentials are typed into this page.";
3558
+ readonly body: "This runtime is not connected to a control plane. Connect opens your cloud account in a new window, where one click approves the link — no ids or credentials are typed into this page.";
2868
3559
  readonly connect: "Connect";
2869
3560
  };
2870
3561
  };
2871
3562
  readonly marketplace: {
2872
3563
  readonly title: "App Marketplace";
2873
3564
  readonly subtitle: "Browse approved apps published to the ObjectStack catalog. Click an app to view details and install it into one of your environments.";
2874
- readonly searchPlaceholder: "Search apps by name or manifest ID…";
3565
+ readonly searchPlaceholder: "Search apps by name or app ID…";
2875
3566
  readonly searchAria: "Search marketplace apps";
2876
3567
  readonly installed: "Installed";
2877
3568
  readonly installedCount: "Installed ({{count}})";
@@ -2881,21 +3572,24 @@ declare const en: {
2881
3572
  readonly noMatchFilters: "No apps match your filters.";
2882
3573
  readonly noDescription: "No description provided.";
2883
3574
  readonly back: "Back to marketplace";
2884
- readonly installedTitle: "Installed Apps";
2885
- readonly installedSubtitle: "Marketplace packages currently installed into this runtime's kernel. Cached manifests live in <code>.objectstack/installed-packages/</code> and survive restarts.";
2886
- readonly installedEmpty: "No marketplace apps installed in this runtime yet.";
2887
3575
  readonly browseLink: "Browse the marketplace →";
2888
- readonly installedAdditiveNote: "<strong>Note:</strong> The kernel API is additive only — uninstall removes the on-disk manifest so the package won't load on next boot, but the running kernel keeps the app registered until you restart the runtime.";
2889
- readonly installedAt: "Installed {{when}}";
2890
- readonly installedBy: "by {{user}}";
2891
- readonly installedPackageId: "package";
2892
- readonly cachedAs: "Cached as <code>{{path}}</code>";
3576
+ readonly installedAdditiveNote: "Uninstall removes the app from the running kernel at once, together with its permission sets and their grants, and deletes the cached manifest so the package does not load at the next start. Records stored in its objects stay in the database.";
2893
3577
  readonly versionBadge: "v{{version}}";
2894
3578
  readonly installedBadge: "Installed v{{version}}";
3579
+ readonly notLoaded: {
3580
+ readonly badge: "Not loaded";
3581
+ readonly protocolIncompatible: "This runtime did not load this package: it targets protocol {{requiredRange}}, which this runtime does not support.";
3582
+ readonly otherReason: "This runtime did not load this package ({{code}}).";
3583
+ };
2895
3584
  readonly load: {
2896
3585
  readonly failed: "Failed to load marketplace";
2897
3586
  readonly failedHintConfigured: "This runtime reaches the marketplace through the control plane at {{url}}. Check that it is online and reachable from here.";
2898
- readonly failedHintSameOrigin: "This runtime serves the marketplace catalog itself. Check that the runtime is online.";
3587
+ readonly failedHintSameOrigin: "The marketplace catalog is reached through this runtime. Check that the runtime is online and can reach the catalog.";
3588
+ readonly loading: "Loading the marketplace catalog…";
3589
+ readonly slow: "Still loading — the marketplace catalog is slow to answer.";
3590
+ readonly retry: "Retry";
3591
+ readonly unreachable: "The marketplace catalog could not be reached.";
3592
+ readonly answeredError: "The marketplace catalog answered with an error (HTTP {{status}}).";
2899
3593
  readonly packageFailed: "Failed to load package";
2900
3594
  readonly notFound: "Not found.";
2901
3595
  };
@@ -2919,10 +3613,15 @@ declare const en: {
2919
3613
  readonly purgeSampleData: "Purge sample data";
2920
3614
  readonly purgeConfirm: "Delete all sample records seeded by this package? User-added records will NOT be touched.";
2921
3615
  readonly purgeSuccess: "Removed {{count}} sample record(s).";
3616
+ readonly purgeSuccess_one: "Removed {{count}} sample record.";
3617
+ readonly purgeSuccess_other: "Removed {{count}} sample records.";
2922
3618
  readonly purgeNoData: "No sample records found to purge.";
2923
3619
  readonly reseedQueued: "Sample data will be re-seeded on next environment access.";
2924
3620
  readonly reseedLocalSuccess: "Re-seeded sample data: {{inserted}} inserted, {{updated}} updated.";
2925
3621
  readonly reseedPartialErrors: "({{count}} record(s) failed to write)";
3622
+ readonly reseedPartialErrors_one: "({{count}} record failed to write)";
3623
+ readonly reseedPartialErrors_other: "({{count}} records failed to write)";
3624
+ readonly sampleDataKernelUnavailable: "This control plane has no environment kernel, so sample data cannot be re-seeded or purged from here. Do it from the environment's own runtime.";
2926
3625
  readonly updateAvailable: "Update available";
2927
3626
  };
2928
3627
  readonly action: {
@@ -2932,6 +3631,7 @@ declare const en: {
2932
3631
  readonly installToCloud: "Install to cloud…";
2933
3632
  readonly installed: "Installed";
2934
3633
  readonly installing: "Installing…";
3634
+ readonly updating: "Updating…";
2935
3635
  readonly uninstall: "Uninstall";
2936
3636
  readonly uninstalling: "Uninstalling…";
2937
3637
  readonly details: "Details";
@@ -2949,15 +3649,41 @@ declare const en: {
2949
3649
  readonly environmentPlaceholder: "Pick an environment";
2950
3650
  readonly includeSampleData: "Include sample data";
2951
3651
  readonly noEnvs: "No environments found in your active organization.";
2952
- readonly noPermission: "You do not have permission to install apps in any environment. Only organization owners and admins can install — ask your workspace admin.";
3652
+ readonly noPermission: "You do not have permission to install apps in any environment. Only organization owners and admins can install — ask your organization admin.";
2953
3653
  readonly signInFirst: "You need to sign into ObjectStack Cloud first. Click \"Open on cloud\" below.";
2954
3654
  readonly success: "Installed successfully. Open the environment to see the new app.";
2955
3655
  readonly localSuccess: "Installed v{{version}} to this runtime. \"{{name}}\" should now appear in the app switcher.";
3656
+ readonly localLoadsAtRestart: "Installed v{{version}} to this runtime. \"{{name}}\" loads when the runtime next restarts; it does not appear in the app switcher until then.";
2956
3657
  readonly localManifestConflict: "{{message}}\nTip: a local app already owns this manifest_id. Remove it from objectstack.config.ts first.";
2957
3658
  readonly localUnauthorized: "Sign in to this runtime first, then try again.";
2958
3659
  readonly localMarketplaceUnavailable: "This runtime has no OS_CLOUD_URL configured, so the marketplace catalog is unreachable.";
2959
3660
  readonly updateTo: "Update → v{{version}}";
2960
3661
  readonly installedVersion: "Installed v{{version}}";
3662
+ readonly deploying: "Deploying the app…";
3663
+ readonly deployed: "The app is deployed and ready.";
3664
+ readonly openApp: "Open {{name}}";
3665
+ readonly deployTimeout: "The install was recorded, but this environment is not serving the app yet. It may still be deploying — check again shortly. If it never appears, the package may not have loaded, may include no app, or its app may need a permission you do not hold.";
3666
+ readonly checkAgain: "Check again";
3667
+ readonly mode: {
3668
+ readonly label: "Install mode";
3669
+ readonly managed: "Managed";
3670
+ readonly managedHint: "The package stays the authority: it is registered as code, receives its upgrades, and its items are not edited here.";
3671
+ readonly unmanaged: "Unmanaged copy";
3672
+ readonly unmanagedHint: "Copied once into this runtime as its own metadata: every item is editable here, and the copy receives no upgrade.";
3673
+ readonly required: "Choose an install mode to install this package.";
3674
+ };
3675
+ readonly unmanagedSuccess: "Copied v{{version}} of \"{{name}}\" into this runtime as its own metadata, in the base {{base}}. The copy is editable and receives no upgrade.";
3676
+ readonly unmanagedStrippedLocks: "The package locked these items. The copy is editable, so their locks were not copied:";
3677
+ readonly unmanagedIgnored: "This runtime does not support unmanaged installs, so \"{{name}}\" was installed managed (registered as code) instead of copied. Upgrade the runtime, then uninstall the package and install it again as an unmanaged copy.";
3678
+ };
3679
+ readonly update: {
3680
+ readonly dialogTitle: "Update {{name}}";
3681
+ readonly dialogDescCurrent: "Update the copy installed in this environment ({{host}}).";
3682
+ readonly dialogDescPicker: "Choose the environment whose installed copy to update. You need to be signed into ObjectStack Cloud.";
3683
+ readonly majorNotice: "This is a major version update (v{{fromMajor}} → v{{toMajor}}), which may include breaking changes.";
3684
+ readonly releaseNotes: "Read the v{{version}} release notes";
3685
+ readonly success: "Updated to v{{version}}.";
3686
+ readonly deployTimeout: "The update was recorded, but this environment is not serving v{{version}} yet. It may still be deploying — check again shortly.";
2961
3687
  };
2962
3688
  readonly org: {
2963
3689
  readonly heading: "Your organization";
@@ -2971,7 +3697,8 @@ declare const en: {
2971
3697
  readonly reviewed: "Reviewed & approved";
2972
3698
  readonly unreviewed: "Not yet reviewed";
2973
3699
  readonly signed: "Signed";
2974
- readonly grantsIntro: "On install, this package will be granted:";
3700
+ readonly grantsIntro: "This package requests:";
3701
+ readonly notEnforced: "Recorded at install, and re-confirmed if a later version asks for more — but the runtime does not yet restrict the package to this list.";
2975
3702
  readonly services: "Platform services";
2976
3703
  readonly hooks: "Lifecycle hooks";
2977
3704
  readonly network: "Network access";
@@ -2992,11 +3719,20 @@ declare const en: {
2992
3719
  readonly dismiss: "Dismiss";
2993
3720
  readonly confirmedToast: "\"{{set}}\" is now granted to {{anchor}}.";
2994
3721
  readonly dismissedToast: "Suggestion for \"{{set}}\" dismissed.";
3722
+ readonly guestUnsupported: "Cannot be granted here: the Guest position takes no sets from accepted suggestions.";
3723
+ readonly acceptedState: "\"{{set}}\" was accepted for all signed-in users (the Everyone position).";
3724
+ readonly notInForceState: "\"{{set}}\" was accepted but is not in force yet: the Everyone position did not change on this request. The server log says why.";
3725
+ readonly dismissedState: "\"{{set}}\" is not granted: the suggestion was dismissed or revoked.";
3726
+ readonly revoke: "Revoke";
3727
+ readonly revoking: "Revoking…";
3728
+ readonly revokedToast: "Acceptance of \"{{set}}\" revoked.";
2995
3729
  };
2996
3730
  readonly uninstall: {
2997
- readonly confirm: "Uninstall {{manifestId}} v{{version}} from this runtime?\n\nThe cached manifest will be removed. The app will remain loaded in the running kernel until the next restart.";
2998
- readonly successInList: "Removed {{manifestId}}. Restart the runtime to fully unload it from the running kernel.";
2999
- readonly successInDetail: "Removed cached manifest for {{manifestId}}. Restart the runtime to fully unload the app from the running kernel.";
3731
+ readonly confirm: "Uninstall {{manifestId}} v{{version}} from this runtime?\n\nThe app will leave the running kernel at once, together with its permission sets and their grants, and its cached manifest will be removed. Records stored in its objects stay in the database.";
3732
+ readonly successInList: "Removed {{manifestId}}: the app has left the running kernel, with its permission sets and their grants. Records stored in its objects stay in the database.";
3733
+ readonly successInDetail: "Removed {{manifestId}} and its cached manifest: the app has left the running kernel, with its permission sets and their grants. Records stored in its objects stay in the database.";
3734
+ readonly confirmNotLoaded: "Uninstall {{manifestId}} v{{version}} from this runtime?\n\nThe cached manifest will be removed. This runtime did not load the package, so none of it is running.";
3735
+ readonly successNotLoaded: "Removed {{manifestId}}. It was not loaded, so no restart is needed.";
3000
3736
  };
3001
3737
  readonly accessDenied: {
3002
3738
  readonly title: "App Marketplace is admin-only";
@@ -3019,30 +3755,19 @@ declare const en: {
3019
3755
  readonly storage: "Storage";
3020
3756
  readonly other: "Other";
3021
3757
  };
3022
- readonly pricing: {
3023
- readonly free: "Free";
3024
- readonly freemium: "Freemium";
3025
- readonly paid: "Paid";
3026
- readonly subscription: "Subscription";
3027
- readonly 'usage-based': "Usage-based";
3028
- readonly 'contact-sales': "Contact Sales";
3029
- };
3030
3758
  readonly relativeTime: {
3031
3759
  readonly today: "today";
3032
3760
  readonly daysAgo: "{{count}}d ago";
3033
3761
  readonly monthsAgo: "{{count}}mo ago";
3762
+ readonly monthsAgo_one: "{{count}}mo ago";
3763
+ readonly monthsAgo_other: "{{count}}mo ago";
3034
3764
  readonly yearsAgo: "{{count}}y ago";
3765
+ readonly yearsAgo_one: "{{count}}y ago";
3766
+ readonly yearsAgo_other: "{{count}}y ago";
3035
3767
  };
3036
3768
  };
3037
- readonly approvals: {
3038
- readonly approve: "Approve";
3039
- readonly reject: "Reject";
3040
- readonly comment: "Comment (optional)";
3041
- readonly approveSuccess: "Approved";
3042
- readonly rejectSuccess: "Rejected";
3043
- readonly rejectConfirm: "Reject this approval request?";
3044
- };
3045
3769
  readonly approvalsInbox: {
3770
+ readonly recordUnresolvable: "This record cannot be opened";
3046
3771
  readonly loadMore: "Load more";
3047
3772
  readonly loadingMore: "Loading…";
3048
3773
  readonly loadedOf: "Loaded {{loaded}} of {{total}}";
@@ -3061,6 +3786,8 @@ declare const en: {
3061
3786
  readonly requestInfoSent: "Sent back to the requester for more information";
3062
3787
  readonly remindBtn: "Send reminder";
3063
3788
  readonly remindSuccess: "Reminder sent to {{count}} approver(s)";
3789
+ readonly remindSuccess_one: "Reminder sent to {{count}} approver";
3790
+ readonly remindSuccess_other: "Reminder sent to {{count}} approvers";
3064
3791
  readonly remindThrottled: "A reminder was sent recently — try again later.";
3065
3792
  readonly replyPlaceholder: "Reply on this request…";
3066
3793
  readonly slaRemaining: "SLA {{dur}} left";
@@ -3077,8 +3804,11 @@ declare const en: {
3077
3804
  readonly progressApprovals: "Approvals — {{got}} of {{need}}";
3078
3805
  readonly progressGroups: "Sign-off progress — {{got}} of {{need}} groups";
3079
3806
  readonly progressEligible: "{{count}} eligible approver(s)";
3807
+ readonly progressEligible_one: "{{count}} eligible approver";
3808
+ readonly progressEligible_other: "{{count}} eligible approvers";
3080
3809
  readonly progressBar: "Decision progress";
3081
3810
  readonly declaredActions: "Actions";
3811
+ readonly decisionPanelOffRequestPage: "The approval decision panel only works on approval request pages.";
3082
3812
  readonly attachmentChip: "Attachment";
3083
3813
  readonly attachmentOpenFailed: "Could not open the attachment — please try again";
3084
3814
  readonly approveOneTitle: "Approve \"{{title}}\"?";
@@ -3108,6 +3838,8 @@ declare const en: {
3108
3838
  readonly filterCount: "{{shown}} of {{total}}";
3109
3839
  readonly selected: "selected";
3110
3840
  readonly actionableCount: "({{count}} actionable)";
3841
+ readonly actionableCount_one: "({{count}} actionable)";
3842
+ readonly actionableCount_other: "({{count}} actionable)";
3111
3843
  readonly selectAll: "Select all";
3112
3844
  readonly selectRow: "Select request";
3113
3845
  readonly colRequest: "Request";
@@ -3142,6 +3874,9 @@ declare const en: {
3142
3874
  readonly emptyPending: "You're all caught up — nothing is waiting on you.";
3143
3875
  readonly emptyOther: "Nothing here yet.";
3144
3876
  readonly emptyViewAll: "Browse all requests";
3877
+ readonly waitingOnOthers: "{{count}} requests are waiting on other approvers";
3878
+ readonly waitingOnOthers_one: "{{count}} request is waiting on other approvers";
3879
+ readonly waitingOnOthers_other: "{{count}} requests are waiting on other approvers";
3145
3880
  readonly noMatches: "No matches for current filters.";
3146
3881
  readonly keyboardHint: "Keyboard: j/k move · Enter open · x select · a approve · r reject";
3147
3882
  readonly drawerTitle: "Approval Request";
@@ -3159,12 +3894,12 @@ declare const en: {
3159
3894
  readonly overrideActionLabel: "Override {{action}}";
3160
3895
  readonly 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.";
3161
3896
  readonly 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.";
3897
+ readonly overrideReassignNotice: "You hold no approver slot on this step. Continuing uses your admin override: the step moves to the new approver you pick, replacing any approver who has not acted. The request stays pending and waits on the new approver. The reassignment is recorded as an admin override.";
3898
+ readonly overrideReassignNoticeWho: "You hold no approver slot on this step. Continuing uses your admin override: the step moves to the new approver you pick, replacing the approvers who have not acted — {{who}}. The request stays pending and waits on the new approver. The reassignment is recorded as an admin override.";
3899
+ readonly overrideRecallNotice: "You did not submit this request. Continuing uses your admin override: the request is withdrawn, any approver who has not acted can no longer act on it, and the record is unlocked.";
3900
+ readonly overrideRecallNoticeWho: "You did not submit this request. Continuing uses your admin override: the request is withdrawn, the record is unlocked, and the approvers who have not acted can no longer act on it — {{who}}.";
3162
3901
  readonly viaOverrideChip: "Admin override";
3163
3902
  readonly viaOverrideHint: "The actor held no approver slot on this step — admitted by the admin-override path.";
3164
- readonly rawData: "Raw data (JSON)";
3165
- readonly copy: "Copy";
3166
- readonly copied: "Copied";
3167
- readonly copyFailed: "Copy failed";
3168
3903
  readonly overrideActor: "Act as another identity (admin)";
3169
3904
  readonly actor: "Actor";
3170
3905
  readonly auto: "Auto";
@@ -3181,11 +3916,19 @@ declare const en: {
3181
3916
  readonly approveN: "Approve {{count}}";
3182
3917
  readonly rejectN: "Reject {{count}}";
3183
3918
  readonly bulkApproveTitle: "Approve {{count}} requests?";
3919
+ readonly bulkApproveTitle_one: "Approve {{count}} request?";
3920
+ readonly bulkApproveTitle_other: "Approve {{count}} requests?";
3184
3921
  readonly bulkApproveBody: "Each request is approved with your identity and its flow continues down the approve branch.";
3185
3922
  readonly bulkRejectTitle: "Reject {{count}} requests?";
3923
+ readonly bulkRejectTitle_one: "Reject {{count}} request?";
3924
+ readonly bulkRejectTitle_other: "Reject {{count}} requests?";
3186
3925
  readonly bulkRejectBody: "This rejects the selected requests and notifies their submitters.";
3187
3926
  readonly bulkApproved: "Approved {{count}} requests";
3927
+ readonly bulkApproved_one: "Approved {{count}} request";
3928
+ readonly bulkApproved_other: "Approved {{count}} requests";
3188
3929
  readonly bulkRejected: "Rejected {{count}} requests";
3930
+ readonly bulkRejected_one: "Rejected {{count}} request";
3931
+ readonly bulkRejected_other: "Rejected {{count}} requests";
3189
3932
  readonly bulkPartial: "{{ok}} succeeded, {{fail}} failed: {{which}}";
3190
3933
  readonly rejectOneTitle: "Reject \"{{title}}\"?";
3191
3934
  readonly rejectOneBody: "This rejects the request and notifies the submitter.";
@@ -3210,8 +3953,14 @@ declare const en: {
3210
3953
  readonly alreadyDecided: "This request was already decided. Refresh the list.";
3211
3954
  readonly justNow: "just now";
3212
3955
  readonly minutesAgo: "{{count}}m ago";
3956
+ readonly minutesAgo_one: "{{count}}m ago";
3957
+ readonly minutesAgo_other: "{{count}}m ago";
3213
3958
  readonly hoursAgo: "{{count}}h ago";
3959
+ readonly hoursAgo_one: "{{count}}h ago";
3960
+ readonly hoursAgo_other: "{{count}}h ago";
3214
3961
  readonly daysAgo: "{{count}}d ago";
3962
+ readonly daysAgo_one: "{{count}}d ago";
3963
+ readonly daysAgo_other: "{{count}}d ago";
3215
3964
  };
3216
3965
  readonly filterBuilder: {
3217
3966
  readonly where: "Where";
@@ -3235,28 +3984,32 @@ declare const en: {
3235
3984
  readonly rangeEnd: "To";
3236
3985
  readonly operators: {
3237
3986
  readonly equals: "Equals";
3238
- readonly notEquals: "Does not equal";
3987
+ readonly not_equals: "Does not equal";
3239
3988
  readonly contains: "Contains";
3240
- readonly containsCaseInsensitive: "Contains (ignore case)";
3241
- readonly notContains: "Does not contain";
3242
- readonly isEmpty: "Is empty";
3243
- readonly isNotEmpty: "Is not empty";
3244
- readonly greaterThan: "Greater than";
3245
- readonly lessThan: "Less than";
3246
- readonly greaterOrEqual: "Greater than or equal";
3247
- readonly lessOrEqual: "Less than or equal";
3989
+ readonly icontains: "Contains (ignore case)";
3990
+ readonly not_contains: "Does not contain";
3991
+ readonly is_empty: "Is empty";
3992
+ readonly is_not_empty: "Is not empty";
3993
+ readonly greater_than: "Greater than";
3994
+ readonly less_than: "Less than";
3995
+ readonly greater_than_or_equal: "Greater than or equal";
3996
+ readonly less_than_or_equal: "Less than or equal";
3248
3997
  readonly before: "Before";
3249
3998
  readonly after: "After";
3250
3999
  readonly between: "Between";
3251
4000
  readonly in: "In";
3252
- readonly notIn: "Not in";
3253
- readonly startsWith: "Starts with";
3254
- readonly endsWith: "Ends with";
3255
- readonly isNull: "Is null";
3256
- readonly isNotNull: "Is not null";
4001
+ readonly not_in: "Not in";
4002
+ readonly starts_with: "Starts with";
4003
+ readonly ends_with: "Ends with";
4004
+ readonly is_null: "Is null";
4005
+ readonly is_not_null: "Is not null";
3257
4006
  readonly exists: "Is set";
3258
4007
  readonly notExists: "Is not set";
3259
4008
  };
4009
+ readonly emptyCheckHint: {
4010
+ readonly text: "\"{{isEmpty}}\" also matches blank text; \"{{isNull}}\" matches only a missing value.";
4011
+ readonly list: "\"{{isEmpty}}\" also matches an empty list; \"{{isNull}}\" matches only a missing value.";
4012
+ };
3260
4013
  };
3261
4014
  readonly sortBuilder: {
3262
4015
  readonly sortBy: "Sort by";
@@ -3269,7 +4022,8 @@ declare const en: {
3269
4022
  };
3270
4023
  readonly collaboration: {
3271
4024
  readonly commentCount: "{{count}} comments";
3272
- readonly commentCountOne: "{{count}} comment";
4025
+ readonly commentCount_one: "{{count}} comment";
4026
+ readonly commentCount_other: "{{count}} comments";
3273
4027
  readonly resolvedSuffix: " · Resolved";
3274
4028
  readonly sortComments: "Sort comments";
3275
4029
  readonly sortOldest: "Oldest";
@@ -3278,11 +4032,18 @@ declare const en: {
3278
4032
  readonly reopen: "Reopen";
3279
4033
  readonly justNow: "just now";
3280
4034
  readonly minutesAgo: "{{count}}m ago";
4035
+ readonly minutesAgo_one: "{{count}}m ago";
4036
+ readonly minutesAgo_other: "{{count}}m ago";
3281
4037
  readonly hoursAgo: "{{count}}h ago";
4038
+ readonly hoursAgo_one: "{{count}}h ago";
4039
+ readonly hoursAgo_other: "{{count}}h ago";
3282
4040
  readonly daysAgo: "{{count}}d ago";
4041
+ readonly daysAgo_one: "{{count}}d ago";
4042
+ readonly daysAgo_other: "{{count}}d ago";
3283
4043
  readonly edited: "(edited)";
3284
4044
  readonly reactionCount: "{{count}} reactions";
3285
- readonly reactionCountOne: "{{count}} reaction";
4045
+ readonly reactionCount_one: "{{count}} reaction";
4046
+ readonly reactionCount_other: "{{count}} reactions";
3286
4047
  readonly addThumbsUp: "Add thumbs up";
3287
4048
  readonly reply: "Reply";
3288
4049
  readonly reactThumbsUp: "React with thumbs up";
@@ -3293,9 +4054,11 @@ declare const en: {
3293
4054
  readonly commentPlaceholder: "Add a comment… (use @ to mention)";
3294
4055
  readonly send: "Send";
3295
4056
  readonly presentUserCount: "{{count}} users present";
3296
- readonly presentUserCountOne: "{{count}} user present";
4057
+ readonly presentUserCount_one: "{{count}} user present";
4058
+ readonly presentUserCount_other: "{{count}} users present";
3297
4059
  readonly moreUserCount: "{{count}} more users";
3298
- readonly moreUserCountOne: "{{count}} more user";
4060
+ readonly moreUserCount_one: "{{count}} more user";
4061
+ readonly moreUserCount_other: "{{count}} more users";
3299
4062
  readonly userStatusTitle: "{{name}} ({{status}})";
3300
4063
  readonly statusActive: "active";
3301
4064
  readonly statusIdle: "idle";
@@ -3303,6 +4066,11 @@ declare const en: {
3303
4066
  };
3304
4067
  readonly wizard: {
3305
4068
  readonly missingRequired: "Please complete the required fields: {{fields}}";
4069
+ readonly back: "Back";
4070
+ readonly submitting: "Submitting…";
4071
+ readonly stepFallback: "Step {{n}}";
4072
+ readonly progressLabel: "Progress";
4073
+ readonly emptyStep: "No fields configured for this step";
3306
4074
  };
3307
4075
  readonly flowRunner: {
3308
4076
  readonly title: "Input";
@@ -3352,6 +4120,8 @@ declare const en: {
3352
4120
  readonly setDefaultFailed: "Failed to set default app: {{reason}}";
3353
4121
  readonly appDeleted: "{{name}} deleted";
3354
4122
  readonly deleteFailed: "Failed to delete app: {{reason}}";
4123
+ readonly nothingToDelete: "Nothing to delete for {{name}}: {{reason}}";
4124
+ readonly alreadyAtDefault: "it is already at its package default";
3355
4125
  readonly bulkEnabled: "{{n}} apps enabled";
3356
4126
  readonly bulkDisabled: "{{n}} apps disabled";
3357
4127
  readonly bulkFailed: "Failed for {{n}}: {{details}}";
@@ -3360,6 +4130,128 @@ declare const en: {
3360
4130
  readonly bulkOperationFailed: "Bulk operation failed: {{reason}}";
3361
4131
  };
3362
4132
  };
4133
+ readonly packagedAutomation: {
4134
+ readonly title: "Packaged automation";
4135
+ readonly subtitle: "Flows and actions shipped by installed packages. Turn one off for this deployment, or clone a flow under a new name to customize it. Editing happens in Studio.";
4136
+ readonly refresh: "Refresh";
4137
+ readonly flowsHeading: "Packaged flows";
4138
+ readonly actionsHeading: "Packaged actions";
4139
+ readonly colFlow: "Flow";
4140
+ readonly colActivation: "Activation";
4141
+ readonly colActions: "Actions";
4142
+ readonly toggleLabel: "Activation for {{label}}";
4143
+ readonly on: "On";
4144
+ readonly off: "Off";
4145
+ readonly notRunning: "Not running here";
4146
+ readonly clone: "Clone";
4147
+ readonly cloneTitle: "Clone packaged flow";
4148
+ readonly cloneBody: "The copy carries the whole definition and takes a new machine name and label. Edit the copy in Studio.";
4149
+ readonly cloneName: "New machine name";
4150
+ readonly cloneLabel: "New label";
4151
+ readonly cancel: "Cancel";
4152
+ readonly cloneConfirm: "Create clone";
4153
+ readonly cloneCreated: "Created flow \"{{name}}\".";
4154
+ readonly cloneSwitchSourceOff: "Switch \"{{label}}\" off";
4155
+ readonly cloneSourceOff: "The packaged flow \"{{label}}\" is switched off.";
4156
+ readonly cloneOpen: "Open the clone in Studio";
4157
+ readonly emptyTitle: "No packaged flows";
4158
+ readonly emptyBody: "No installed package ships an automation flow on this deployment. Flows you author yourself live in Studio.";
4159
+ readonly loadFailed: "Could not load packaged automation.";
4160
+ readonly toggleFailedHttp: "Could not change activation (HTTP {{status}}).";
4161
+ readonly toggleFailed: "Could not change activation.";
4162
+ readonly cloneFailedHttp: "Could not clone this flow (HTTP {{status}}).";
4163
+ readonly cloneFailed: "Could not clone this flow.";
4164
+ readonly reasonDetails: "Details";
4165
+ readonly actionsSubtitle: "Actions shipped by installed packages. Turn one off for this deployment and it stops running everywhere it is offered. Authoring your own action alongside it stays open in Studio.";
4166
+ readonly colAction: "Action";
4167
+ readonly colObject: "Object";
4168
+ readonly actionToggleLabel: "Activation for {{label}} on {{object}}";
4169
+ readonly actionsEmptyTitle: "No packaged actions";
4170
+ readonly actionsEmptyBody: "No installed package declares an action on this deployment. Actions you author yourself live in Studio.";
4171
+ readonly actionsLoadFailed: "Could not load packaged actions.";
4172
+ };
4173
+ readonly element: {
4174
+ readonly number: {
4175
+ readonly noObject: "No object named: set dataSource.object.";
4176
+ readonly sourceUnresolved: "This metric’s data source could not be resolved";
4177
+ };
4178
+ readonly image: {
4179
+ readonly noSource: "No image source";
4180
+ };
4181
+ readonly recordPicker: {
4182
+ readonly sourceUnresolved: "This record picker’s data source could not be resolved";
4183
+ };
4184
+ readonly calendar: {
4185
+ readonly sourceUnresolved: "This calendar’s data source could not be resolved";
4186
+ };
4187
+ readonly chart: {
4188
+ readonly sourceUnresolved: "This chart’s data source could not be resolved";
4189
+ };
4190
+ readonly pivotTable: {
4191
+ readonly sourceUnresolved: "This pivot table’s data source could not be resolved";
4192
+ };
4193
+ readonly detailView: {
4194
+ readonly sourceUnresolved: "This detail view’s data source could not be resolved";
4195
+ };
4196
+ readonly relatedList: {
4197
+ readonly sourceUnresolved: "This related list’s data source could not be resolved";
4198
+ readonly parentUnreadable: "This related list’s parent record could not be read";
4199
+ };
4200
+ readonly form: {
4201
+ readonly sourceUnresolved: "This form’s data source could not be resolved";
4202
+ };
4203
+ readonly lineItems: {
4204
+ readonly sourceUnresolved: "This line-items panel’s data source could not be resolved";
4205
+ };
4206
+ readonly gantt: {
4207
+ readonly sourceUnresolved: "This gantt chart’s data source could not be resolved";
4208
+ };
4209
+ readonly grid: {
4210
+ readonly sourceUnresolved: "This grid’s data source could not be resolved";
4211
+ };
4212
+ readonly board: {
4213
+ readonly sourceUnresolved: "This board’s data source could not be resolved";
4214
+ };
4215
+ readonly listView: {
4216
+ readonly sourceUnresolved: "This list view’s data source could not be resolved";
4217
+ };
4218
+ readonly map: {
4219
+ readonly sourceUnresolved: "This map’s data source could not be resolved";
4220
+ };
4221
+ readonly timeline: {
4222
+ readonly sourceUnresolved: "This timeline’s data source could not be resolved";
4223
+ };
4224
+ readonly component: {
4225
+ readonly sourceUnresolved: "This component’s data source could not be resolved";
4226
+ readonly noDataSource: "No data source resolved";
4227
+ readonly apiRefused: "This component’s API data source is refused";
4228
+ readonly apiUnreadable: "This component’s API data source could not be read";
4229
+ };
4230
+ readonly metadataViewer: {
4231
+ readonly missingKey: "Missing {{key}} for this view.";
4232
+ readonly loading: "Loading {{name}}…";
4233
+ readonly loadFailed: "Failed to load {{name}}: {{message}}";
4234
+ readonly notFound: "{{name}} not found.";
4235
+ readonly stateMachine: "State machine";
4236
+ readonly flow: "Flow";
4237
+ readonly permission: "Permission";
4238
+ readonly noStateMachine: "No state machine on {{object}}.";
4239
+ readonly noStateMachineNamed: "No state machine named “{{name}}” on {{object}}.";
4240
+ readonly lifecycle: "Lifecycle of {{object}}";
4241
+ readonly field: "field {{field}}";
4242
+ readonly initial: "initial";
4243
+ readonly final: "final";
4244
+ readonly steps: "Steps: {{count}}";
4245
+ readonly noSteps: "No steps to show.";
4246
+ readonly untitledStep: "(step)";
4247
+ readonly hiddenSteps: "Technical steps hidden: {{count}} · set {{setting}} to show all";
4248
+ readonly objectAccess: "Object access: {{count}}";
4249
+ readonly noPermissions: "No object permissions declared.";
4250
+ readonly object: "Object";
4251
+ readonly unknownType: "Unknown metadata view type. Expected {{a}}, {{b}} or {{c}}.";
4252
+ readonly unknownTypeNamed: "Unknown metadata view type “{{type}}”. Expected {{a}}, {{b}} or {{c}}.";
4253
+ };
4254
+ };
3363
4255
  };
3364
4256
  export default en;
3365
4257
  export type TranslationKeys = typeof en;