@object-ui/i18n 5.0.2 → 5.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +125 -0
- package/dist/locales/ar.d.ts +7 -0
- package/dist/locales/ar.js +7 -0
- package/dist/locales/de.d.ts +7 -0
- package/dist/locales/de.js +7 -0
- package/dist/locales/en.d.ts +27 -0
- package/dist/locales/en.js +28 -0
- package/dist/locales/es.d.ts +7 -0
- package/dist/locales/es.js +7 -0
- package/dist/locales/fr.d.ts +7 -0
- package/dist/locales/fr.js +7 -0
- package/dist/locales/index.d.ts +110 -0
- package/dist/locales/ja.d.ts +7 -0
- package/dist/locales/ja.js +7 -0
- package/dist/locales/ko.d.ts +7 -0
- package/dist/locales/ko.js +7 -0
- package/dist/locales/pt.d.ts +7 -0
- package/dist/locales/pt.js +7 -0
- package/dist/locales/ru.d.ts +7 -0
- package/dist/locales/ru.js +7 -0
- package/dist/locales/zh.d.ts +27 -0
- package/dist/locales/zh.js +28 -0
- package/dist/useObjectLabel.js +2 -0
- package/dist/utils/formatting.d.ts +3 -1
- package/dist/utils/formatting.js +10 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,130 @@
|
|
|
1
1
|
# @object-ui/i18n
|
|
2
2
|
|
|
3
|
+
## 5.2.1
|
|
4
|
+
|
|
5
|
+
## 5.2.0
|
|
6
|
+
|
|
7
|
+
### Minor Changes
|
|
8
|
+
|
|
9
|
+
- b2d1704: feat(cmdk): record search across objects in the Command Palette
|
|
10
|
+
- New `useRecordSearch` hook in `@object-ui/react` debounces a query, fans out
|
|
11
|
+
to `dataSource.find(name, { $search, $top })` across candidate objects, and
|
|
12
|
+
aggregates hits. Race-safe via a monotonic runId; per-object 404s are
|
|
13
|
+
silently dropped via `Promise.allSettled`.
|
|
14
|
+
- `CommandPalette` (`@object-ui/app-shell`) now accepts a `dataSource` prop;
|
|
15
|
+
when supplied, the palette renders a `Records` group at the top with hits
|
|
16
|
+
scoped to the active app's nav objects. Item `value` embeds the live query
|
|
17
|
+
so cmdk's client-side filter doesn't hide async results.
|
|
18
|
+
- Added `console.commandPalette.records` i18n key (`Records` / `记录`).
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- 321294c: Cmd-K now shows recently viewed records in its empty state, sourced
|
|
23
|
+
from the existing cloud-synced `sys_user_preference` adapter (already
|
|
24
|
+
wired by `RecentItemsProvider` + `useTrackRouteAsRecent` +
|
|
25
|
+
`RecordDetailView`). Multi-device by construction: open a record on
|
|
26
|
+
laptop, see it in `⌘K → Recently viewed` on phone.
|
|
27
|
+
- Group renders only when input is empty (no competition with search).
|
|
28
|
+
- Limited to the 5 most recent record-type entries.
|
|
29
|
+
- New i18n key `console.commandPalette.recentRecords` (en + zh seeded;
|
|
30
|
+
other locales fall back to `defaultValue: "Recently viewed"`).
|
|
31
|
+
|
|
32
|
+
- 0a644f0: feat(app-shell): CommandPalette searching indicator
|
|
33
|
+
|
|
34
|
+
When `useRecordSearch` is mid-flight (debounced fetch across objects
|
|
35
|
+
hasn't returned yet), the palette now surfaces a subtle visual:
|
|
36
|
+
- A small pulsing primary-coloured dot next to the **Records** group
|
|
37
|
+
heading, so the user sees that more results may still appear.
|
|
38
|
+
- A `Searching…` placeholder inside the empty state when the user has
|
|
39
|
+
typed something but no hits exist yet — replaces the static
|
|
40
|
+
"No results found." message until the request settles.
|
|
41
|
+
|
|
42
|
+
New i18n key `console.commandPalette.searching` (en + zh).
|
|
43
|
+
|
|
44
|
+
- a3cb88f: CRM UX polish batch:
|
|
45
|
+
- Kanban columns: drop the per-column rainbow top stripe. Lane border + header divider are sufficient; cards are now the loudest thing on screen (Linear / HubSpot pattern).
|
|
46
|
+
- Stage chevron (`record:path`): bump completed-stage contrast (emerald-800 text on emerald-500/15, was 700 on /10) and future-stage text from `foreground/70` to `foreground/85` for legibility.
|
|
47
|
+
- i18n: add `notifications.emptyUnread`, `notifications.filterUnread`, `notifications.filterAll` (en + zh) so the InboxPopover Unread/All sub-filter renders in the active locale.
|
|
48
|
+
- 5425608: CRM UX polish pass — calmer enterprise look across detail + kanban.
|
|
49
|
+
- **plugin-kanban**: column headers now use a 2px muted accent stripe with
|
|
50
|
+
neutral foreground titles + a quiet grey count pill instead of full
|
|
51
|
+
rainbow gradient + colored title + colored count. Pipeline boards
|
|
52
|
+
(Opportunity, Case, Task, Lead) look like Salesforce/Linear instead of
|
|
53
|
+
a toy. WIP-limit overflow remains destructive-red so urgency stays loud.
|
|
54
|
+
- **plugin-detail (`record:reference_rail`)**: new `hideEmpty` prop
|
|
55
|
+
(default true) collapses entries whose total === 0 into a single
|
|
56
|
+
`+ N empty (Quotes · Products …)` chip at the bottom of the rail.
|
|
57
|
+
Removes the 4–7 "No records" stack that dominated the aside.
|
|
58
|
+
- **plugin-detail (`record:path`)**: completed stages now render with an
|
|
59
|
+
emerald-tinted background + bold green check instead of low-contrast
|
|
60
|
+
`bg-muted text-muted-foreground` (which read as "light grey on white"
|
|
61
|
+
and was borderline unreadable).
|
|
62
|
+
- **app-shell (`RecordDetailView`)**: record-not-found short-circuit.
|
|
63
|
+
Previously a stale/missing recordId still rendered the page chrome
|
|
64
|
+
(rail, discussion, breadcrumb with the raw id), making invalid links
|
|
65
|
+
look like a partially broken page. Now renders a clean centered
|
|
66
|
+
`Empty` state with database icon + i18n'd "Record not found" copy.
|
|
67
|
+
- **i18n**: added `detail.showEmptyRelated_{one,other}` and
|
|
68
|
+
`empty.recordNotFound{,Description}` keys (en + zh).
|
|
69
|
+
|
|
70
|
+
- e919433: Stop silently assuming USD when a currency field has no `currency`
|
|
71
|
+
configured. For non-USD orgs (e.g. a CNY-based CRM seeded without an
|
|
72
|
+
explicit currency) the cells now render as plain locale-formatted
|
|
73
|
+
numbers (`150,000.00`) instead of `$150,000.00` — which was the #1
|
|
74
|
+
"why is my RMB showing as dollars?" bug.
|
|
75
|
+
|
|
76
|
+
Behavior change is opt-in via omission: when `currency` /
|
|
77
|
+
`defaultCurrency` is set on the field/column, formatting is unchanged.
|
|
78
|
+
|
|
79
|
+
Fixed call sites:
|
|
80
|
+
- `@object-ui/fields`: `formatCurrency`, `formatCompactCurrency`, and
|
|
81
|
+
`CurrencyCellRenderer` no longer default-param `'USD'`.
|
|
82
|
+
- `@object-ui/i18n`: `formatCurrency()` falls back to `formatNumber`
|
|
83
|
+
semantics when `currency` is omitted.
|
|
84
|
+
- `@object-ui/plugin-grid`: column-summary formatter (`Sum: 5,000,000`
|
|
85
|
+
instead of `Sum: $5,000,000.00`).
|
|
86
|
+
- `@object-ui/plugin-detail`: header-highlight currency formatter.
|
|
87
|
+
- `@object-ui/plugin-dashboard`: `ObjectMetricWidget` inferred
|
|
88
|
+
currency now resolves to `undefined` (not `'USD'`) for un-tagged
|
|
89
|
+
fields, so `MetricWidget`'s `isCurrency` heuristic falls through
|
|
90
|
+
to plain number formatting.
|
|
91
|
+
|
|
92
|
+
- d9c3bae: `RichTextField` now translates its inline hints (`Format: markdown`,
|
|
93
|
+
`Rich text editor (basic)`, `Enter text...`) instead of hardcoding
|
|
94
|
+
English. Adds `fields.richText.*` keys to the en / zh locale packs.
|
|
95
|
+
|
|
96
|
+
## 5.1.1
|
|
97
|
+
|
|
98
|
+
## 5.1.0
|
|
99
|
+
|
|
100
|
+
### Minor Changes
|
|
101
|
+
|
|
102
|
+
- 49b1760: Polish the ConcurrentUpdateDialog and add i18n.
|
|
103
|
+
- Internationalise all dialog strings (title, body, button labels, "your edit" / "current value" headings, audit-trail line) through `useDetailTranslation`. Locale strings added to `@object-ui/i18n` for English and Chinese.
|
|
104
|
+
- Replace the plain dialog header with an amber warning badge + `AlertTriangle` icon to communicate that this is a conflict, not a routine confirmation.
|
|
105
|
+
- Visually differentiate the two value blocks: amber tint for the user's pending edit, sky tint for the server's current value. Both wrap long values cleanly.
|
|
106
|
+
- Surface audit provenance for the racer's write (`updated_at`, plus `updated_by_name`/`updated_by_label` when supplied). Opaque ID-looking `updated_by` tokens are suppressed.
|
|
107
|
+
- Re-prioritise the action buttons: **Reload latest** is now the primary/recommended action (autofocused), **Overwrite anyway** is rendered as a destructive-outline button so the dangerous path requires deliberate intent, and **Cancel** falls back to a ghost variant.
|
|
108
|
+
|
|
109
|
+
- c0b236f: Platform detail/form polish:
|
|
110
|
+
- **Auto-section grouping**: When an object has no authored `views.form.sections`, the detail page now splits fields into a primary section and a collapsible "More details" section based on a field-type/name heuristic (textarea / markdown / description / notes / remarks). Eliminates the wall-of-fields layout on objects without explicit detail metadata.
|
|
111
|
+
- **FormSection card chrome**: `FormSection` now accepts `showBorder`. Defaults to `true` for titled sections (Card wrapper) and `false` for untitled sections (flat). Same auto-default already applied to `DetailSection`.
|
|
112
|
+
- **Origin breadcrumb**: Navigating from a list/kanban into a record now records the source view; the detail page shows a `← <view label>` back-link above the page header.
|
|
113
|
+
- New i18n key `detail.sectionMoreDetails` (en + zh-CN).
|
|
114
|
+
|
|
115
|
+
### Patch Changes
|
|
116
|
+
|
|
117
|
+
- 1976691: Fix the drawer "Open as full page" (maximize) button on the record drawer
|
|
118
|
+
which threw `TypeError: name.indexOf is not a function` and prevented
|
|
119
|
+
navigation to the dedicated detail page.
|
|
120
|
+
- `@object-ui/app-shell` `ObjectView`: pass `objectDef.name` (string) — not
|
|
121
|
+
the whole `objectDef` — into `viewLabel(...)` when computing the
|
|
122
|
+
`originState.from.label` for both drawer-navigate and list-navigate
|
|
123
|
+
flows. Two call sites fixed.
|
|
124
|
+
- `@object-ui/i18n` `useObjectLabel`: harden `stripNamespace` so it
|
|
125
|
+
tolerates non-string inputs and returns an empty string instead of
|
|
126
|
+
throwing, providing a safety net for similar future regressions.
|
|
127
|
+
|
|
3
128
|
## 5.0.2
|
|
4
129
|
|
|
5
130
|
### Patch Changes
|
package/dist/locales/ar.d.ts
CHANGED
|
@@ -68,6 +68,13 @@ declare const ar: {
|
|
|
68
68
|
readonly editDescription: "تحديث تفاصيل {{object}}";
|
|
69
69
|
readonly saveRecord: "حفظ السجل";
|
|
70
70
|
};
|
|
71
|
+
readonly fields: {
|
|
72
|
+
readonly richText: {
|
|
73
|
+
readonly format: "Format: {{format}}";
|
|
74
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
75
|
+
readonly placeholder: "Enter text...";
|
|
76
|
+
};
|
|
77
|
+
};
|
|
71
78
|
readonly table: {
|
|
72
79
|
readonly rowsPerPage: "صفوف في الصفحة";
|
|
73
80
|
readonly showing: "عرض {{from}} إلى {{to}} من {{total}}";
|
package/dist/locales/ar.js
CHANGED
|
@@ -68,6 +68,13 @@ const ar = {
|
|
|
68
68
|
editDescription: 'تحديث تفاصيل {{object}}',
|
|
69
69
|
saveRecord: 'حفظ السجل',
|
|
70
70
|
},
|
|
71
|
+
fields: {
|
|
72
|
+
richText: {
|
|
73
|
+
format: 'Format: {{format}}',
|
|
74
|
+
basicEditorHint: 'Rich text editor (basic)',
|
|
75
|
+
placeholder: 'Enter text...',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
71
78
|
table: {
|
|
72
79
|
rowsPerPage: 'صفوف في الصفحة',
|
|
73
80
|
showing: 'عرض {{from}} إلى {{to}} من {{total}}',
|
package/dist/locales/de.d.ts
CHANGED
|
@@ -67,6 +67,13 @@ declare const de: {
|
|
|
67
67
|
readonly editDescription: "Details für {{object}} aktualisieren";
|
|
68
68
|
readonly saveRecord: "Datensatz speichern";
|
|
69
69
|
};
|
|
70
|
+
readonly fields: {
|
|
71
|
+
readonly richText: {
|
|
72
|
+
readonly format: "Format: {{format}}";
|
|
73
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
74
|
+
readonly placeholder: "Enter text...";
|
|
75
|
+
};
|
|
76
|
+
};
|
|
70
77
|
readonly table: {
|
|
71
78
|
readonly rowsPerPage: "Zeilen pro Seite";
|
|
72
79
|
readonly showing: "{{from}} bis {{to}} von {{total}} angezeigt";
|
package/dist/locales/de.js
CHANGED
|
@@ -67,6 +67,13 @@ const de = {
|
|
|
67
67
|
editDescription: 'Details für {{object}} aktualisieren',
|
|
68
68
|
saveRecord: 'Datensatz speichern',
|
|
69
69
|
},
|
|
70
|
+
fields: {
|
|
71
|
+
richText: {
|
|
72
|
+
format: 'Format: {{format}}',
|
|
73
|
+
basicEditorHint: 'Rich text editor (basic)',
|
|
74
|
+
placeholder: 'Enter text...',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
70
77
|
table: {
|
|
71
78
|
rowsPerPage: 'Zeilen pro Seite',
|
|
72
79
|
showing: '{{from}} bis {{to}} von {{total}} angezeigt',
|
package/dist/locales/en.d.ts
CHANGED
|
@@ -72,6 +72,13 @@ declare const en: {
|
|
|
72
72
|
readonly updateSuccess: "{{object}} updated successfully";
|
|
73
73
|
readonly deleteSuccess: "{{object}} deleted successfully";
|
|
74
74
|
};
|
|
75
|
+
readonly fields: {
|
|
76
|
+
readonly richText: {
|
|
77
|
+
readonly format: "Format: {{format}}";
|
|
78
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
79
|
+
readonly placeholder: "Enter text...";
|
|
80
|
+
};
|
|
81
|
+
};
|
|
75
82
|
readonly table: {
|
|
76
83
|
readonly rowsPerPage: "Rows per page";
|
|
77
84
|
readonly showing: "Showing {{from}} to {{to}} of {{total}}";
|
|
@@ -306,6 +313,16 @@ declare const en: {
|
|
|
306
313
|
readonly linkCopyFailed: "Failed to copy link";
|
|
307
314
|
readonly cancel: "Cancel";
|
|
308
315
|
readonly cancelEdit: "Discard changes";
|
|
316
|
+
readonly sectionMoreDetails: "More details";
|
|
317
|
+
readonly concurrentUpdateTitle: "This record was modified by someone else";
|
|
318
|
+
readonly concurrentUpdateDescription: "Another user saved a newer version of {{field}} while you were editing. To prevent silently overwriting their change, please choose how to resolve the conflict.";
|
|
319
|
+
readonly concurrentUpdateYourEdit: "Your edit";
|
|
320
|
+
readonly concurrentUpdateCurrentValue: "Current value";
|
|
321
|
+
readonly concurrentUpdateUpdatedBy: "Updated by {{name}}";
|
|
322
|
+
readonly concurrentUpdateUpdatedAt: "Updated at {{when}}";
|
|
323
|
+
readonly concurrentUpdateReload: "Reload latest";
|
|
324
|
+
readonly concurrentUpdateOverwrite: "Overwrite anyway";
|
|
325
|
+
readonly concurrentUpdateCancel: "Cancel";
|
|
309
326
|
readonly openInNewTab: "Open in new tab";
|
|
310
327
|
readonly share: "Share";
|
|
311
328
|
readonly duplicate: "Duplicate";
|
|
@@ -389,6 +406,8 @@ declare const en: {
|
|
|
389
406
|
readonly nextRecordKey: "Next record (→)";
|
|
390
407
|
readonly lastRecord: "Last record (End)";
|
|
391
408
|
readonly noRecords: "No records";
|
|
409
|
+
readonly showEmptyRelated_one: "+ {{count}} empty";
|
|
410
|
+
readonly showEmptyRelated_other: "+ {{count}} empty";
|
|
392
411
|
readonly searchWhileNavigating: "Search while navigating";
|
|
393
412
|
readonly searchRecords: "Search records…";
|
|
394
413
|
readonly allActivity: "All Activity";
|
|
@@ -897,6 +916,9 @@ declare const en: {
|
|
|
897
916
|
readonly commandPalette: {
|
|
898
917
|
readonly placeholder: "Type a command or search...";
|
|
899
918
|
readonly noResults: "No results found.";
|
|
919
|
+
readonly searching: "Searching…";
|
|
920
|
+
readonly records: "Records";
|
|
921
|
+
readonly recentRecords: "Recently viewed";
|
|
900
922
|
readonly objects: "Objects";
|
|
901
923
|
readonly dashboards: "Dashboards";
|
|
902
924
|
readonly pages: "Pages";
|
|
@@ -1323,6 +1345,8 @@ declare const en: {
|
|
|
1323
1345
|
readonly empty: {
|
|
1324
1346
|
readonly objectNotFound: "Object Not Found";
|
|
1325
1347
|
readonly objectNotFoundDescription: "Object \"{{name}}\" definition missing. Check your configuration or navigate back to select a valid object.";
|
|
1348
|
+
readonly recordNotFound: "Record not found";
|
|
1349
|
+
readonly recordNotFoundDescription: "The record you are looking for does not exist or may have been deleted.";
|
|
1326
1350
|
readonly pageNotFound: "Page Not Found";
|
|
1327
1351
|
readonly pageNotFoundDescription: "The page \"{{name}}\" could not be found. It may have been removed or renamed.";
|
|
1328
1352
|
readonly dashboardNotFound: "Dashboard Not Found";
|
|
@@ -1428,6 +1452,9 @@ declare const en: {
|
|
|
1428
1452
|
};
|
|
1429
1453
|
readonly notifications: {
|
|
1430
1454
|
readonly empty: "No notifications";
|
|
1455
|
+
readonly emptyUnread: "You're all caught up";
|
|
1456
|
+
readonly filterUnread: "Unread";
|
|
1457
|
+
readonly filterAll: "All";
|
|
1431
1458
|
readonly markAllRead: "Mark all read";
|
|
1432
1459
|
readonly viewAll: "View all notifications";
|
|
1433
1460
|
readonly approvalsPending: "{{count}} pending approvals";
|
package/dist/locales/en.js
CHANGED
|
@@ -72,6 +72,13 @@ const en = {
|
|
|
72
72
|
updateSuccess: '{{object}} updated successfully',
|
|
73
73
|
deleteSuccess: '{{object}} deleted successfully',
|
|
74
74
|
},
|
|
75
|
+
fields: {
|
|
76
|
+
richText: {
|
|
77
|
+
format: 'Format: {{format}}',
|
|
78
|
+
basicEditorHint: 'Rich text editor (basic)',
|
|
79
|
+
placeholder: 'Enter text...',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
75
82
|
table: {
|
|
76
83
|
rowsPerPage: 'Rows per page',
|
|
77
84
|
showing: 'Showing {{from}} to {{to}} of {{total}}',
|
|
@@ -306,6 +313,17 @@ const en = {
|
|
|
306
313
|
linkCopyFailed: 'Failed to copy link',
|
|
307
314
|
cancel: 'Cancel',
|
|
308
315
|
cancelEdit: 'Discard changes',
|
|
316
|
+
sectionMoreDetails: 'More details',
|
|
317
|
+
// Concurrent update (OCC) dialog
|
|
318
|
+
concurrentUpdateTitle: 'This record was modified by someone else',
|
|
319
|
+
concurrentUpdateDescription: 'Another user saved a newer version of {{field}} while you were editing. To prevent silently overwriting their change, please choose how to resolve the conflict.',
|
|
320
|
+
concurrentUpdateYourEdit: 'Your edit',
|
|
321
|
+
concurrentUpdateCurrentValue: 'Current value',
|
|
322
|
+
concurrentUpdateUpdatedBy: 'Updated by {{name}}',
|
|
323
|
+
concurrentUpdateUpdatedAt: 'Updated at {{when}}',
|
|
324
|
+
concurrentUpdateReload: 'Reload latest',
|
|
325
|
+
concurrentUpdateOverwrite: 'Overwrite anyway',
|
|
326
|
+
concurrentUpdateCancel: 'Cancel',
|
|
309
327
|
openInNewTab: 'Open in new tab',
|
|
310
328
|
share: 'Share',
|
|
311
329
|
duplicate: 'Duplicate',
|
|
@@ -397,6 +415,8 @@ const en = {
|
|
|
397
415
|
nextRecordKey: 'Next record (→)',
|
|
398
416
|
lastRecord: 'Last record (End)',
|
|
399
417
|
noRecords: 'No records',
|
|
418
|
+
showEmptyRelated_one: '+ {{count}} empty',
|
|
419
|
+
showEmptyRelated_other: '+ {{count}} empty',
|
|
400
420
|
searchWhileNavigating: 'Search while navigating',
|
|
401
421
|
searchRecords: 'Search records…',
|
|
402
422
|
// Activity timeline
|
|
@@ -908,6 +928,9 @@ const en = {
|
|
|
908
928
|
commandPalette: {
|
|
909
929
|
placeholder: 'Type a command or search...',
|
|
910
930
|
noResults: 'No results found.',
|
|
931
|
+
searching: 'Searching…',
|
|
932
|
+
records: 'Records',
|
|
933
|
+
recentRecords: 'Recently viewed',
|
|
911
934
|
objects: 'Objects',
|
|
912
935
|
dashboards: 'Dashboards',
|
|
913
936
|
pages: 'Pages',
|
|
@@ -1334,6 +1357,8 @@ const en = {
|
|
|
1334
1357
|
empty: {
|
|
1335
1358
|
objectNotFound: 'Object Not Found',
|
|
1336
1359
|
objectNotFoundDescription: 'Object "{{name}}" definition missing. Check your configuration or navigate back to select a valid object.',
|
|
1360
|
+
recordNotFound: 'Record not found',
|
|
1361
|
+
recordNotFoundDescription: 'The record you are looking for does not exist or may have been deleted.',
|
|
1337
1362
|
pageNotFound: 'Page Not Found',
|
|
1338
1363
|
pageNotFoundDescription: 'The page "{{name}}" could not be found. It may have been removed or renamed.',
|
|
1339
1364
|
dashboardNotFound: 'Dashboard Not Found',
|
|
@@ -1439,6 +1464,9 @@ const en = {
|
|
|
1439
1464
|
},
|
|
1440
1465
|
notifications: {
|
|
1441
1466
|
empty: 'No notifications',
|
|
1467
|
+
emptyUnread: "You're all caught up",
|
|
1468
|
+
filterUnread: 'Unread',
|
|
1469
|
+
filterAll: 'All',
|
|
1442
1470
|
markAllRead: 'Mark all read',
|
|
1443
1471
|
viewAll: 'View all notifications',
|
|
1444
1472
|
approvalsPending: '{{count}} pending approvals',
|
package/dist/locales/es.d.ts
CHANGED
|
@@ -67,6 +67,13 @@ declare const es: {
|
|
|
67
67
|
readonly editDescription: "Actualizar detalles de {{object}}";
|
|
68
68
|
readonly saveRecord: "Guardar registro";
|
|
69
69
|
};
|
|
70
|
+
readonly fields: {
|
|
71
|
+
readonly richText: {
|
|
72
|
+
readonly format: "Format: {{format}}";
|
|
73
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
74
|
+
readonly placeholder: "Enter text...";
|
|
75
|
+
};
|
|
76
|
+
};
|
|
70
77
|
readonly table: {
|
|
71
78
|
readonly rowsPerPage: "Filas por página";
|
|
72
79
|
readonly showing: "Mostrando {{from}} a {{to}} de {{total}}";
|
package/dist/locales/es.js
CHANGED
|
@@ -67,6 +67,13 @@ const es = {
|
|
|
67
67
|
editDescription: 'Actualizar detalles de {{object}}',
|
|
68
68
|
saveRecord: 'Guardar registro',
|
|
69
69
|
},
|
|
70
|
+
fields: {
|
|
71
|
+
richText: {
|
|
72
|
+
format: 'Format: {{format}}',
|
|
73
|
+
basicEditorHint: 'Rich text editor (basic)',
|
|
74
|
+
placeholder: 'Enter text...',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
70
77
|
table: {
|
|
71
78
|
rowsPerPage: 'Filas por página',
|
|
72
79
|
showing: 'Mostrando {{from}} a {{to}} de {{total}}',
|
package/dist/locales/fr.d.ts
CHANGED
|
@@ -67,6 +67,13 @@ declare const fr: {
|
|
|
67
67
|
readonly editDescription: "Mettre à jour les détails de {{object}}";
|
|
68
68
|
readonly saveRecord: "Enregistrer";
|
|
69
69
|
};
|
|
70
|
+
readonly fields: {
|
|
71
|
+
readonly richText: {
|
|
72
|
+
readonly format: "Format: {{format}}";
|
|
73
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
74
|
+
readonly placeholder: "Enter text...";
|
|
75
|
+
};
|
|
76
|
+
};
|
|
70
77
|
readonly table: {
|
|
71
78
|
readonly rowsPerPage: "Lignes par page";
|
|
72
79
|
readonly showing: "Affichage de {{from}} à {{to}} sur {{total}}";
|
package/dist/locales/fr.js
CHANGED
|
@@ -67,6 +67,13 @@ const fr = {
|
|
|
67
67
|
editDescription: 'Mettre à jour les détails de {{object}}',
|
|
68
68
|
saveRecord: 'Enregistrer',
|
|
69
69
|
},
|
|
70
|
+
fields: {
|
|
71
|
+
richText: {
|
|
72
|
+
format: 'Format: {{format}}',
|
|
73
|
+
basicEditorHint: 'Rich text editor (basic)',
|
|
74
|
+
placeholder: 'Enter text...',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
70
77
|
table: {
|
|
71
78
|
rowsPerPage: 'Lignes par page',
|
|
72
79
|
showing: 'Affichage de {{from}} à {{to}} sur {{total}}',
|
package/dist/locales/index.d.ts
CHANGED
|
@@ -84,6 +84,13 @@ export declare const builtInLocales: {
|
|
|
84
84
|
readonly updateSuccess: "{{object}} updated successfully";
|
|
85
85
|
readonly deleteSuccess: "{{object}} deleted successfully";
|
|
86
86
|
};
|
|
87
|
+
readonly fields: {
|
|
88
|
+
readonly richText: {
|
|
89
|
+
readonly format: "Format: {{format}}";
|
|
90
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
91
|
+
readonly placeholder: "Enter text...";
|
|
92
|
+
};
|
|
93
|
+
};
|
|
87
94
|
readonly table: {
|
|
88
95
|
readonly rowsPerPage: "Rows per page";
|
|
89
96
|
readonly showing: "Showing {{from}} to {{to}} of {{total}}";
|
|
@@ -318,6 +325,16 @@ export declare const builtInLocales: {
|
|
|
318
325
|
readonly linkCopyFailed: "Failed to copy link";
|
|
319
326
|
readonly cancel: "Cancel";
|
|
320
327
|
readonly cancelEdit: "Discard changes";
|
|
328
|
+
readonly sectionMoreDetails: "More details";
|
|
329
|
+
readonly concurrentUpdateTitle: "This record was modified by someone else";
|
|
330
|
+
readonly concurrentUpdateDescription: "Another user saved a newer version of {{field}} while you were editing. To prevent silently overwriting their change, please choose how to resolve the conflict.";
|
|
331
|
+
readonly concurrentUpdateYourEdit: "Your edit";
|
|
332
|
+
readonly concurrentUpdateCurrentValue: "Current value";
|
|
333
|
+
readonly concurrentUpdateUpdatedBy: "Updated by {{name}}";
|
|
334
|
+
readonly concurrentUpdateUpdatedAt: "Updated at {{when}}";
|
|
335
|
+
readonly concurrentUpdateReload: "Reload latest";
|
|
336
|
+
readonly concurrentUpdateOverwrite: "Overwrite anyway";
|
|
337
|
+
readonly concurrentUpdateCancel: "Cancel";
|
|
321
338
|
readonly openInNewTab: "Open in new tab";
|
|
322
339
|
readonly share: "Share";
|
|
323
340
|
readonly duplicate: "Duplicate";
|
|
@@ -401,6 +418,8 @@ export declare const builtInLocales: {
|
|
|
401
418
|
readonly nextRecordKey: "Next record (→)";
|
|
402
419
|
readonly lastRecord: "Last record (End)";
|
|
403
420
|
readonly noRecords: "No records";
|
|
421
|
+
readonly showEmptyRelated_one: "+ {{count}} empty";
|
|
422
|
+
readonly showEmptyRelated_other: "+ {{count}} empty";
|
|
404
423
|
readonly searchWhileNavigating: "Search while navigating";
|
|
405
424
|
readonly searchRecords: "Search records…";
|
|
406
425
|
readonly allActivity: "All Activity";
|
|
@@ -909,6 +928,9 @@ export declare const builtInLocales: {
|
|
|
909
928
|
readonly commandPalette: {
|
|
910
929
|
readonly placeholder: "Type a command or search...";
|
|
911
930
|
readonly noResults: "No results found.";
|
|
931
|
+
readonly searching: "Searching…";
|
|
932
|
+
readonly records: "Records";
|
|
933
|
+
readonly recentRecords: "Recently viewed";
|
|
912
934
|
readonly objects: "Objects";
|
|
913
935
|
readonly dashboards: "Dashboards";
|
|
914
936
|
readonly pages: "Pages";
|
|
@@ -1335,6 +1357,8 @@ export declare const builtInLocales: {
|
|
|
1335
1357
|
readonly empty: {
|
|
1336
1358
|
readonly objectNotFound: "Object Not Found";
|
|
1337
1359
|
readonly objectNotFoundDescription: "Object \"{{name}}\" definition missing. Check your configuration or navigate back to select a valid object.";
|
|
1360
|
+
readonly recordNotFound: "Record not found";
|
|
1361
|
+
readonly recordNotFoundDescription: "The record you are looking for does not exist or may have been deleted.";
|
|
1338
1362
|
readonly pageNotFound: "Page Not Found";
|
|
1339
1363
|
readonly pageNotFoundDescription: "The page \"{{name}}\" could not be found. It may have been removed or renamed.";
|
|
1340
1364
|
readonly dashboardNotFound: "Dashboard Not Found";
|
|
@@ -1440,6 +1464,9 @@ export declare const builtInLocales: {
|
|
|
1440
1464
|
};
|
|
1441
1465
|
readonly notifications: {
|
|
1442
1466
|
readonly empty: "No notifications";
|
|
1467
|
+
readonly emptyUnread: "You're all caught up";
|
|
1468
|
+
readonly filterUnread: "Unread";
|
|
1469
|
+
readonly filterAll: "All";
|
|
1443
1470
|
readonly markAllRead: "Mark all read";
|
|
1444
1471
|
readonly viewAll: "View all notifications";
|
|
1445
1472
|
readonly approvalsPending: "{{count}} pending approvals";
|
|
@@ -1586,6 +1613,13 @@ export declare const builtInLocales: {
|
|
|
1586
1613
|
readonly updateSuccess: "{{object}}更新成功";
|
|
1587
1614
|
readonly deleteSuccess: "{{object}}删除成功";
|
|
1588
1615
|
};
|
|
1616
|
+
readonly fields: {
|
|
1617
|
+
readonly richText: {
|
|
1618
|
+
readonly format: "格式: {{format}}";
|
|
1619
|
+
readonly basicEditorHint: "富文本编辑器(基础)";
|
|
1620
|
+
readonly placeholder: "请输入文字...";
|
|
1621
|
+
};
|
|
1622
|
+
};
|
|
1589
1623
|
readonly table: {
|
|
1590
1624
|
readonly rowsPerPage: "每页行数";
|
|
1591
1625
|
readonly showing: "显示第{{from}}到{{to}}条,共{{total}}条";
|
|
@@ -1820,6 +1854,16 @@ export declare const builtInLocales: {
|
|
|
1820
1854
|
readonly linkCopyFailed: "复制链接失败";
|
|
1821
1855
|
readonly cancel: "取消";
|
|
1822
1856
|
readonly cancelEdit: "放弃更改";
|
|
1857
|
+
readonly sectionMoreDetails: "更多详情";
|
|
1858
|
+
readonly concurrentUpdateTitle: "该记录已被他人修改";
|
|
1859
|
+
readonly concurrentUpdateDescription: "在你编辑期间,另一位用户保存了 {{field}} 的新版本。为避免无声覆盖对方的改动,请选择如何处理该冲突。";
|
|
1860
|
+
readonly concurrentUpdateYourEdit: "你的修改";
|
|
1861
|
+
readonly concurrentUpdateCurrentValue: "当前值";
|
|
1862
|
+
readonly concurrentUpdateUpdatedBy: "由 {{name}} 更新";
|
|
1863
|
+
readonly concurrentUpdateUpdatedAt: "更新于 {{when}}";
|
|
1864
|
+
readonly concurrentUpdateReload: "加载最新";
|
|
1865
|
+
readonly concurrentUpdateOverwrite: "仍然覆盖";
|
|
1866
|
+
readonly concurrentUpdateCancel: "取消";
|
|
1823
1867
|
readonly openInNewTab: "在新标签页打开";
|
|
1824
1868
|
readonly share: "分享";
|
|
1825
1869
|
readonly duplicate: "复制";
|
|
@@ -1903,6 +1947,8 @@ export declare const builtInLocales: {
|
|
|
1903
1947
|
readonly nextRecordKey: "下一条记录 (→)";
|
|
1904
1948
|
readonly lastRecord: "最后一条记录 (End)";
|
|
1905
1949
|
readonly noRecords: "无记录";
|
|
1950
|
+
readonly showEmptyRelated_one: "+ {{count}} 个为空";
|
|
1951
|
+
readonly showEmptyRelated_other: "+ {{count}} 个为空";
|
|
1906
1952
|
readonly searchWhileNavigating: "导航时搜索";
|
|
1907
1953
|
readonly searchRecords: "搜索记录…";
|
|
1908
1954
|
readonly allActivity: "全部动态";
|
|
@@ -2411,6 +2457,9 @@ export declare const builtInLocales: {
|
|
|
2411
2457
|
readonly commandPalette: {
|
|
2412
2458
|
readonly placeholder: "输入命令或搜索...";
|
|
2413
2459
|
readonly noResults: "未找到结果。";
|
|
2460
|
+
readonly searching: "搜索中…";
|
|
2461
|
+
readonly records: "记录";
|
|
2462
|
+
readonly recentRecords: "最近访问";
|
|
2414
2463
|
readonly objects: "对象";
|
|
2415
2464
|
readonly dashboards: "仪表盘";
|
|
2416
2465
|
readonly pages: "页面";
|
|
@@ -2837,6 +2886,8 @@ export declare const builtInLocales: {
|
|
|
2837
2886
|
readonly empty: {
|
|
2838
2887
|
readonly objectNotFound: "未找到对象";
|
|
2839
2888
|
readonly objectNotFoundDescription: "对象 “{{name}}” 的定义不存在。请检查配置或返回选择有效的对象。";
|
|
2889
|
+
readonly recordNotFound: "未找到记录";
|
|
2890
|
+
readonly recordNotFoundDescription: "您查找的记录不存在或已被删除。";
|
|
2840
2891
|
readonly pageNotFound: "未找到页面";
|
|
2841
2892
|
readonly pageNotFoundDescription: "未找到页面 “{{name}}”,可能已被删除或重命名。";
|
|
2842
2893
|
readonly dashboardNotFound: "未找到仪表板";
|
|
@@ -2942,6 +2993,9 @@ export declare const builtInLocales: {
|
|
|
2942
2993
|
};
|
|
2943
2994
|
readonly notifications: {
|
|
2944
2995
|
readonly empty: "暂无通知";
|
|
2996
|
+
readonly emptyUnread: "已读完所有通知";
|
|
2997
|
+
readonly filterUnread: "未读";
|
|
2998
|
+
readonly filterAll: "全部";
|
|
2945
2999
|
readonly markAllRead: "全部标记为已读";
|
|
2946
3000
|
readonly viewAll: "查看全部通知";
|
|
2947
3001
|
readonly approvalsPending: "{{count}} 条待审批";
|
|
@@ -3083,6 +3137,13 @@ export declare const builtInLocales: {
|
|
|
3083
3137
|
readonly editDescription: "{{object}}の詳細を更新";
|
|
3084
3138
|
readonly saveRecord: "レコードを保存";
|
|
3085
3139
|
};
|
|
3140
|
+
readonly fields: {
|
|
3141
|
+
readonly richText: {
|
|
3142
|
+
readonly format: "Format: {{format}}";
|
|
3143
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
3144
|
+
readonly placeholder: "Enter text...";
|
|
3145
|
+
};
|
|
3146
|
+
};
|
|
3086
3147
|
readonly table: {
|
|
3087
3148
|
readonly rowsPerPage: "1ページの行数";
|
|
3088
3149
|
readonly showing: "{{total}}件中{{from}}〜{{to}}件を表示";
|
|
@@ -4272,6 +4333,13 @@ export declare const builtInLocales: {
|
|
|
4272
4333
|
readonly editDescription: "{{object}} 세부 정보 업데이트";
|
|
4273
4334
|
readonly saveRecord: "레코드 저장";
|
|
4274
4335
|
};
|
|
4336
|
+
readonly fields: {
|
|
4337
|
+
readonly richText: {
|
|
4338
|
+
readonly format: "Format: {{format}}";
|
|
4339
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
4340
|
+
readonly placeholder: "Enter text...";
|
|
4341
|
+
};
|
|
4342
|
+
};
|
|
4275
4343
|
readonly table: {
|
|
4276
4344
|
readonly rowsPerPage: "페이지당 행 수";
|
|
4277
4345
|
readonly showing: "{{total}}개 중 {{from}}~{{to}} 표시";
|
|
@@ -5450,6 +5518,13 @@ export declare const builtInLocales: {
|
|
|
5450
5518
|
readonly editDescription: "Details für {{object}} aktualisieren";
|
|
5451
5519
|
readonly saveRecord: "Datensatz speichern";
|
|
5452
5520
|
};
|
|
5521
|
+
readonly fields: {
|
|
5522
|
+
readonly richText: {
|
|
5523
|
+
readonly format: "Format: {{format}}";
|
|
5524
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
5525
|
+
readonly placeholder: "Enter text...";
|
|
5526
|
+
};
|
|
5527
|
+
};
|
|
5453
5528
|
readonly table: {
|
|
5454
5529
|
readonly rowsPerPage: "Zeilen pro Seite";
|
|
5455
5530
|
readonly showing: "{{from}} bis {{to}} von {{total}} angezeigt";
|
|
@@ -6628,6 +6703,13 @@ export declare const builtInLocales: {
|
|
|
6628
6703
|
readonly editDescription: "Mettre à jour les détails de {{object}}";
|
|
6629
6704
|
readonly saveRecord: "Enregistrer";
|
|
6630
6705
|
};
|
|
6706
|
+
readonly fields: {
|
|
6707
|
+
readonly richText: {
|
|
6708
|
+
readonly format: "Format: {{format}}";
|
|
6709
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
6710
|
+
readonly placeholder: "Enter text...";
|
|
6711
|
+
};
|
|
6712
|
+
};
|
|
6631
6713
|
readonly table: {
|
|
6632
6714
|
readonly rowsPerPage: "Lignes par page";
|
|
6633
6715
|
readonly showing: "Affichage de {{from}} à {{to}} sur {{total}}";
|
|
@@ -7806,6 +7888,13 @@ export declare const builtInLocales: {
|
|
|
7806
7888
|
readonly editDescription: "Actualizar detalles de {{object}}";
|
|
7807
7889
|
readonly saveRecord: "Guardar registro";
|
|
7808
7890
|
};
|
|
7891
|
+
readonly fields: {
|
|
7892
|
+
readonly richText: {
|
|
7893
|
+
readonly format: "Format: {{format}}";
|
|
7894
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
7895
|
+
readonly placeholder: "Enter text...";
|
|
7896
|
+
};
|
|
7897
|
+
};
|
|
7809
7898
|
readonly table: {
|
|
7810
7899
|
readonly rowsPerPage: "Filas por página";
|
|
7811
7900
|
readonly showing: "Mostrando {{from}} a {{to}} de {{total}}";
|
|
@@ -8984,6 +9073,13 @@ export declare const builtInLocales: {
|
|
|
8984
9073
|
readonly editDescription: "Atualizar detalhes de {{object}}";
|
|
8985
9074
|
readonly saveRecord: "Salvar registro";
|
|
8986
9075
|
};
|
|
9076
|
+
readonly fields: {
|
|
9077
|
+
readonly richText: {
|
|
9078
|
+
readonly format: "Format: {{format}}";
|
|
9079
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
9080
|
+
readonly placeholder: "Enter text...";
|
|
9081
|
+
};
|
|
9082
|
+
};
|
|
8987
9083
|
readonly table: {
|
|
8988
9084
|
readonly rowsPerPage: "Linhas por página";
|
|
8989
9085
|
readonly showing: "Mostrando {{from}} a {{to}} de {{total}}";
|
|
@@ -10162,6 +10258,13 @@ export declare const builtInLocales: {
|
|
|
10162
10258
|
readonly editDescription: "Обновить данные {{object}}";
|
|
10163
10259
|
readonly saveRecord: "Сохранить запись";
|
|
10164
10260
|
};
|
|
10261
|
+
readonly fields: {
|
|
10262
|
+
readonly richText: {
|
|
10263
|
+
readonly format: "Format: {{format}}";
|
|
10264
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
10265
|
+
readonly placeholder: "Enter text...";
|
|
10266
|
+
};
|
|
10267
|
+
};
|
|
10165
10268
|
readonly table: {
|
|
10166
10269
|
readonly rowsPerPage: "Строк на странице";
|
|
10167
10270
|
readonly showing: "Показано с {{from}} по {{to}} из {{total}}";
|
|
@@ -11351,6 +11454,13 @@ export declare const builtInLocales: {
|
|
|
11351
11454
|
readonly editDescription: "تحديث تفاصيل {{object}}";
|
|
11352
11455
|
readonly saveRecord: "حفظ السجل";
|
|
11353
11456
|
};
|
|
11457
|
+
readonly fields: {
|
|
11458
|
+
readonly richText: {
|
|
11459
|
+
readonly format: "Format: {{format}}";
|
|
11460
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
11461
|
+
readonly placeholder: "Enter text...";
|
|
11462
|
+
};
|
|
11463
|
+
};
|
|
11354
11464
|
readonly table: {
|
|
11355
11465
|
readonly rowsPerPage: "صفوف في الصفحة";
|
|
11356
11466
|
readonly showing: "عرض {{from}} إلى {{to}} من {{total}}";
|
package/dist/locales/ja.d.ts
CHANGED
|
@@ -67,6 +67,13 @@ declare const ja: {
|
|
|
67
67
|
readonly editDescription: "{{object}}の詳細を更新";
|
|
68
68
|
readonly saveRecord: "レコードを保存";
|
|
69
69
|
};
|
|
70
|
+
readonly fields: {
|
|
71
|
+
readonly richText: {
|
|
72
|
+
readonly format: "Format: {{format}}";
|
|
73
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
74
|
+
readonly placeholder: "Enter text...";
|
|
75
|
+
};
|
|
76
|
+
};
|
|
70
77
|
readonly table: {
|
|
71
78
|
readonly rowsPerPage: "1ページの行数";
|
|
72
79
|
readonly showing: "{{total}}件中{{from}}〜{{to}}件を表示";
|
package/dist/locales/ja.js
CHANGED
|
@@ -67,6 +67,13 @@ const ja = {
|
|
|
67
67
|
editDescription: '{{object}}の詳細を更新',
|
|
68
68
|
saveRecord: 'レコードを保存',
|
|
69
69
|
},
|
|
70
|
+
fields: {
|
|
71
|
+
richText: {
|
|
72
|
+
format: 'Format: {{format}}',
|
|
73
|
+
basicEditorHint: 'Rich text editor (basic)',
|
|
74
|
+
placeholder: 'Enter text...',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
70
77
|
table: {
|
|
71
78
|
rowsPerPage: '1ページの行数',
|
|
72
79
|
showing: '{{total}}件中{{from}}〜{{to}}件を表示',
|
package/dist/locales/ko.d.ts
CHANGED
|
@@ -67,6 +67,13 @@ declare const ko: {
|
|
|
67
67
|
readonly editDescription: "{{object}} 세부 정보 업데이트";
|
|
68
68
|
readonly saveRecord: "레코드 저장";
|
|
69
69
|
};
|
|
70
|
+
readonly fields: {
|
|
71
|
+
readonly richText: {
|
|
72
|
+
readonly format: "Format: {{format}}";
|
|
73
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
74
|
+
readonly placeholder: "Enter text...";
|
|
75
|
+
};
|
|
76
|
+
};
|
|
70
77
|
readonly table: {
|
|
71
78
|
readonly rowsPerPage: "페이지당 행 수";
|
|
72
79
|
readonly showing: "{{total}}개 중 {{from}}~{{to}} 표시";
|
package/dist/locales/ko.js
CHANGED
|
@@ -67,6 +67,13 @@ const ko = {
|
|
|
67
67
|
editDescription: '{{object}} 세부 정보 업데이트',
|
|
68
68
|
saveRecord: '레코드 저장',
|
|
69
69
|
},
|
|
70
|
+
fields: {
|
|
71
|
+
richText: {
|
|
72
|
+
format: 'Format: {{format}}',
|
|
73
|
+
basicEditorHint: 'Rich text editor (basic)',
|
|
74
|
+
placeholder: 'Enter text...',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
70
77
|
table: {
|
|
71
78
|
rowsPerPage: '페이지당 행 수',
|
|
72
79
|
showing: '{{total}}개 중 {{from}}~{{to}} 표시',
|
package/dist/locales/pt.d.ts
CHANGED
|
@@ -67,6 +67,13 @@ declare const pt: {
|
|
|
67
67
|
readonly editDescription: "Atualizar detalhes de {{object}}";
|
|
68
68
|
readonly saveRecord: "Salvar registro";
|
|
69
69
|
};
|
|
70
|
+
readonly fields: {
|
|
71
|
+
readonly richText: {
|
|
72
|
+
readonly format: "Format: {{format}}";
|
|
73
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
74
|
+
readonly placeholder: "Enter text...";
|
|
75
|
+
};
|
|
76
|
+
};
|
|
70
77
|
readonly table: {
|
|
71
78
|
readonly rowsPerPage: "Linhas por página";
|
|
72
79
|
readonly showing: "Mostrando {{from}} a {{to}} de {{total}}";
|
package/dist/locales/pt.js
CHANGED
|
@@ -67,6 +67,13 @@ const pt = {
|
|
|
67
67
|
editDescription: 'Atualizar detalhes de {{object}}',
|
|
68
68
|
saveRecord: 'Salvar registro',
|
|
69
69
|
},
|
|
70
|
+
fields: {
|
|
71
|
+
richText: {
|
|
72
|
+
format: 'Format: {{format}}',
|
|
73
|
+
basicEditorHint: 'Rich text editor (basic)',
|
|
74
|
+
placeholder: 'Enter text...',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
70
77
|
table: {
|
|
71
78
|
rowsPerPage: 'Linhas por página',
|
|
72
79
|
showing: 'Mostrando {{from}} a {{to}} de {{total}}',
|
package/dist/locales/ru.d.ts
CHANGED
|
@@ -67,6 +67,13 @@ declare const ru: {
|
|
|
67
67
|
readonly editDescription: "Обновить данные {{object}}";
|
|
68
68
|
readonly saveRecord: "Сохранить запись";
|
|
69
69
|
};
|
|
70
|
+
readonly fields: {
|
|
71
|
+
readonly richText: {
|
|
72
|
+
readonly format: "Format: {{format}}";
|
|
73
|
+
readonly basicEditorHint: "Rich text editor (basic)";
|
|
74
|
+
readonly placeholder: "Enter text...";
|
|
75
|
+
};
|
|
76
|
+
};
|
|
70
77
|
readonly table: {
|
|
71
78
|
readonly rowsPerPage: "Строк на странице";
|
|
72
79
|
readonly showing: "Показано с {{from}} по {{to}} из {{total}}";
|
package/dist/locales/ru.js
CHANGED
|
@@ -67,6 +67,13 @@ const ru = {
|
|
|
67
67
|
editDescription: 'Обновить данные {{object}}',
|
|
68
68
|
saveRecord: 'Сохранить запись',
|
|
69
69
|
},
|
|
70
|
+
fields: {
|
|
71
|
+
richText: {
|
|
72
|
+
format: 'Format: {{format}}',
|
|
73
|
+
basicEditorHint: 'Rich text editor (basic)',
|
|
74
|
+
placeholder: 'Enter text...',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
70
77
|
table: {
|
|
71
78
|
rowsPerPage: 'Строк на странице',
|
|
72
79
|
showing: 'Показано с {{from}} по {{to}} из {{total}}',
|
package/dist/locales/zh.d.ts
CHANGED
|
@@ -72,6 +72,13 @@ declare const zh: {
|
|
|
72
72
|
readonly updateSuccess: "{{object}}更新成功";
|
|
73
73
|
readonly deleteSuccess: "{{object}}删除成功";
|
|
74
74
|
};
|
|
75
|
+
readonly fields: {
|
|
76
|
+
readonly richText: {
|
|
77
|
+
readonly format: "格式: {{format}}";
|
|
78
|
+
readonly basicEditorHint: "富文本编辑器(基础)";
|
|
79
|
+
readonly placeholder: "请输入文字...";
|
|
80
|
+
};
|
|
81
|
+
};
|
|
75
82
|
readonly table: {
|
|
76
83
|
readonly rowsPerPage: "每页行数";
|
|
77
84
|
readonly showing: "显示第{{from}}到{{to}}条,共{{total}}条";
|
|
@@ -306,6 +313,16 @@ declare const zh: {
|
|
|
306
313
|
readonly linkCopyFailed: "复制链接失败";
|
|
307
314
|
readonly cancel: "取消";
|
|
308
315
|
readonly cancelEdit: "放弃更改";
|
|
316
|
+
readonly sectionMoreDetails: "更多详情";
|
|
317
|
+
readonly concurrentUpdateTitle: "该记录已被他人修改";
|
|
318
|
+
readonly concurrentUpdateDescription: "在你编辑期间,另一位用户保存了 {{field}} 的新版本。为避免无声覆盖对方的改动,请选择如何处理该冲突。";
|
|
319
|
+
readonly concurrentUpdateYourEdit: "你的修改";
|
|
320
|
+
readonly concurrentUpdateCurrentValue: "当前值";
|
|
321
|
+
readonly concurrentUpdateUpdatedBy: "由 {{name}} 更新";
|
|
322
|
+
readonly concurrentUpdateUpdatedAt: "更新于 {{when}}";
|
|
323
|
+
readonly concurrentUpdateReload: "加载最新";
|
|
324
|
+
readonly concurrentUpdateOverwrite: "仍然覆盖";
|
|
325
|
+
readonly concurrentUpdateCancel: "取消";
|
|
309
326
|
readonly openInNewTab: "在新标签页打开";
|
|
310
327
|
readonly share: "分享";
|
|
311
328
|
readonly duplicate: "复制";
|
|
@@ -389,6 +406,8 @@ declare const zh: {
|
|
|
389
406
|
readonly nextRecordKey: "下一条记录 (→)";
|
|
390
407
|
readonly lastRecord: "最后一条记录 (End)";
|
|
391
408
|
readonly noRecords: "无记录";
|
|
409
|
+
readonly showEmptyRelated_one: "+ {{count}} 个为空";
|
|
410
|
+
readonly showEmptyRelated_other: "+ {{count}} 个为空";
|
|
392
411
|
readonly searchWhileNavigating: "导航时搜索";
|
|
393
412
|
readonly searchRecords: "搜索记录…";
|
|
394
413
|
readonly allActivity: "全部动态";
|
|
@@ -897,6 +916,9 @@ declare const zh: {
|
|
|
897
916
|
readonly commandPalette: {
|
|
898
917
|
readonly placeholder: "输入命令或搜索...";
|
|
899
918
|
readonly noResults: "未找到结果。";
|
|
919
|
+
readonly searching: "搜索中…";
|
|
920
|
+
readonly records: "记录";
|
|
921
|
+
readonly recentRecords: "最近访问";
|
|
900
922
|
readonly objects: "对象";
|
|
901
923
|
readonly dashboards: "仪表盘";
|
|
902
924
|
readonly pages: "页面";
|
|
@@ -1323,6 +1345,8 @@ declare const zh: {
|
|
|
1323
1345
|
readonly empty: {
|
|
1324
1346
|
readonly objectNotFound: "未找到对象";
|
|
1325
1347
|
readonly objectNotFoundDescription: "对象 “{{name}}” 的定义不存在。请检查配置或返回选择有效的对象。";
|
|
1348
|
+
readonly recordNotFound: "未找到记录";
|
|
1349
|
+
readonly recordNotFoundDescription: "您查找的记录不存在或已被删除。";
|
|
1326
1350
|
readonly pageNotFound: "未找到页面";
|
|
1327
1351
|
readonly pageNotFoundDescription: "未找到页面 “{{name}}”,可能已被删除或重命名。";
|
|
1328
1352
|
readonly dashboardNotFound: "未找到仪表板";
|
|
@@ -1428,6 +1452,9 @@ declare const zh: {
|
|
|
1428
1452
|
};
|
|
1429
1453
|
readonly notifications: {
|
|
1430
1454
|
readonly empty: "暂无通知";
|
|
1455
|
+
readonly emptyUnread: "已读完所有通知";
|
|
1456
|
+
readonly filterUnread: "未读";
|
|
1457
|
+
readonly filterAll: "全部";
|
|
1431
1458
|
readonly markAllRead: "全部标记为已读";
|
|
1432
1459
|
readonly viewAll: "查看全部通知";
|
|
1433
1460
|
readonly approvalsPending: "{{count}} 条待审批";
|
package/dist/locales/zh.js
CHANGED
|
@@ -72,6 +72,13 @@ const zh = {
|
|
|
72
72
|
updateSuccess: '{{object}}更新成功',
|
|
73
73
|
deleteSuccess: '{{object}}删除成功',
|
|
74
74
|
},
|
|
75
|
+
fields: {
|
|
76
|
+
richText: {
|
|
77
|
+
format: '格式: {{format}}',
|
|
78
|
+
basicEditorHint: '富文本编辑器(基础)',
|
|
79
|
+
placeholder: '请输入文字...',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
75
82
|
table: {
|
|
76
83
|
rowsPerPage: '每页行数',
|
|
77
84
|
showing: '显示第{{from}}到{{to}}条,共{{total}}条',
|
|
@@ -306,6 +313,17 @@ const zh = {
|
|
|
306
313
|
linkCopyFailed: '复制链接失败',
|
|
307
314
|
cancel: '取消',
|
|
308
315
|
cancelEdit: '放弃更改',
|
|
316
|
+
sectionMoreDetails: '更多详情',
|
|
317
|
+
// Concurrent update (OCC) dialog
|
|
318
|
+
concurrentUpdateTitle: '该记录已被他人修改',
|
|
319
|
+
concurrentUpdateDescription: '在你编辑期间,另一位用户保存了 {{field}} 的新版本。为避免无声覆盖对方的改动,请选择如何处理该冲突。',
|
|
320
|
+
concurrentUpdateYourEdit: '你的修改',
|
|
321
|
+
concurrentUpdateCurrentValue: '当前值',
|
|
322
|
+
concurrentUpdateUpdatedBy: '由 {{name}} 更新',
|
|
323
|
+
concurrentUpdateUpdatedAt: '更新于 {{when}}',
|
|
324
|
+
concurrentUpdateReload: '加载最新',
|
|
325
|
+
concurrentUpdateOverwrite: '仍然覆盖',
|
|
326
|
+
concurrentUpdateCancel: '取消',
|
|
309
327
|
openInNewTab: '在新标签页打开',
|
|
310
328
|
share: '分享',
|
|
311
329
|
duplicate: '复制',
|
|
@@ -397,6 +415,8 @@ const zh = {
|
|
|
397
415
|
nextRecordKey: '下一条记录 (→)',
|
|
398
416
|
lastRecord: '最后一条记录 (End)',
|
|
399
417
|
noRecords: '无记录',
|
|
418
|
+
showEmptyRelated_one: '+ {{count}} 个为空',
|
|
419
|
+
showEmptyRelated_other: '+ {{count}} 个为空',
|
|
400
420
|
searchWhileNavigating: '导航时搜索',
|
|
401
421
|
searchRecords: '搜索记录…',
|
|
402
422
|
// Activity timeline
|
|
@@ -908,6 +928,9 @@ const zh = {
|
|
|
908
928
|
commandPalette: {
|
|
909
929
|
placeholder: '输入命令或搜索...',
|
|
910
930
|
noResults: '未找到结果。',
|
|
931
|
+
searching: '搜索中…',
|
|
932
|
+
records: '记录',
|
|
933
|
+
recentRecords: '最近访问',
|
|
911
934
|
objects: '对象',
|
|
912
935
|
dashboards: '仪表盘',
|
|
913
936
|
pages: '页面',
|
|
@@ -1334,6 +1357,8 @@ const zh = {
|
|
|
1334
1357
|
empty: {
|
|
1335
1358
|
objectNotFound: '未找到对象',
|
|
1336
1359
|
objectNotFoundDescription: '对象 “{{name}}” 的定义不存在。请检查配置或返回选择有效的对象。',
|
|
1360
|
+
recordNotFound: '未找到记录',
|
|
1361
|
+
recordNotFoundDescription: '您查找的记录不存在或已被删除。',
|
|
1337
1362
|
pageNotFound: '未找到页面',
|
|
1338
1363
|
pageNotFoundDescription: '未找到页面 “{{name}}”,可能已被删除或重命名。',
|
|
1339
1364
|
dashboardNotFound: '未找到仪表板',
|
|
@@ -1439,6 +1464,9 @@ const zh = {
|
|
|
1439
1464
|
},
|
|
1440
1465
|
notifications: {
|
|
1441
1466
|
empty: '暂无通知',
|
|
1467
|
+
emptyUnread: '已读完所有通知',
|
|
1468
|
+
filterUnread: '未读',
|
|
1469
|
+
filterAll: '全部',
|
|
1442
1470
|
markAllRead: '全部标记为已读',
|
|
1443
1471
|
viewAll: '查看全部通知',
|
|
1444
1472
|
approvalsPending: '{{count}} 条待审批',
|
package/dist/useObjectLabel.js
CHANGED
|
@@ -75,6 +75,8 @@ export function useObjectLabel() {
|
|
|
75
75
|
* package namespace from the base name; everything after is preserved.
|
|
76
76
|
*/
|
|
77
77
|
const stripNamespace = (name) => {
|
|
78
|
+
if (typeof name !== 'string')
|
|
79
|
+
return '';
|
|
78
80
|
const idx = name.indexOf('__');
|
|
79
81
|
return idx > 0 ? name.slice(idx + 2) : name;
|
|
80
82
|
};
|
|
@@ -36,7 +36,9 @@ export declare function formatDateTime(date: Date | string | number, options?: D
|
|
|
36
36
|
*/
|
|
37
37
|
export declare function formatRelativeTime(date: Date | string | number, locale?: string): string;
|
|
38
38
|
/**
|
|
39
|
-
* Format a currency value according to locale conventions
|
|
39
|
+
* Format a currency value according to locale conventions. When `currency`
|
|
40
|
+
* is omitted, falls back to a plain locale-formatted number (no symbol)
|
|
41
|
+
* rather than silently assuming USD.
|
|
40
42
|
*/
|
|
41
43
|
export declare function formatCurrency(value: number, options?: CurrencyFormatOptions): string;
|
|
42
44
|
/**
|
package/dist/utils/formatting.js
CHANGED
|
@@ -66,10 +66,18 @@ export function formatRelativeTime(date, locale = 'en') {
|
|
|
66
66
|
return rtf.format(Math.round(diffDay / 365), 'year');
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
|
-
* Format a currency value according to locale conventions
|
|
69
|
+
* Format a currency value according to locale conventions. When `currency`
|
|
70
|
+
* is omitted, falls back to a plain locale-formatted number (no symbol)
|
|
71
|
+
* rather than silently assuming USD.
|
|
70
72
|
*/
|
|
71
73
|
export function formatCurrency(value, options = {}) {
|
|
72
|
-
const { locale = 'en', currency
|
|
74
|
+
const { locale = 'en', currency, minimumFractionDigits, maximumFractionDigits } = options;
|
|
75
|
+
if (!currency) {
|
|
76
|
+
return new Intl.NumberFormat(locale, {
|
|
77
|
+
minimumFractionDigits,
|
|
78
|
+
maximumFractionDigits,
|
|
79
|
+
}).format(value);
|
|
80
|
+
}
|
|
73
81
|
return new Intl.NumberFormat(locale, {
|
|
74
82
|
style: 'currency',
|
|
75
83
|
currency,
|