@object-ui/i18n 13.2.0 → 14.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +142 -0
- package/dist/locales/ar.d.ts +65 -0
- package/dist/locales/ar.js +65 -0
- package/dist/locales/de.d.ts +67 -0
- package/dist/locales/de.js +67 -0
- package/dist/locales/en.d.ts +139 -1
- package/dist/locales/en.js +143 -2
- package/dist/locales/es.d.ts +67 -0
- package/dist/locales/es.js +67 -0
- package/dist/locales/fr.d.ts +65 -0
- package/dist/locales/fr.js +65 -0
- package/dist/locales/index.d.ts +809 -4
- package/dist/locales/ja.d.ts +67 -0
- package/dist/locales/ja.js +67 -0
- package/dist/locales/ko.d.ts +67 -0
- package/dist/locales/ko.js +67 -0
- package/dist/locales/pt.d.ts +65 -0
- package/dist/locales/pt.js +65 -0
- package/dist/locales/ru.d.ts +65 -0
- package/dist/locales/ru.js +65 -0
- package/dist/locales/zh.d.ts +142 -3
- package/dist/locales/zh.js +145 -4
- package/dist/pickLocalized.d.ts +3 -2
- package/dist/pickLocalized.js +7 -2
- package/dist/useObjectLabel.d.ts +1 -0
- package/dist/useObjectLabel.js +1 -0
- package/dist/useSafeTranslation.js +27 -38
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,147 @@
|
|
|
1
1
|
# @object-ui/i18n
|
|
2
2
|
|
|
3
|
+
## 14.1.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 82441e4: feat(console-ai): proactive AI usage indicator in the ChatDock (ADR-0057 #8)
|
|
8
|
+
|
|
9
|
+
Surfaces remaining AI headroom **before** a send hits the 429 wall, instead of
|
|
10
|
+
only learning the limit reactively.
|
|
11
|
+
|
|
12
|
+
- **AiUsageIndicator** — two meters (build + dataChat) as small progress rings in
|
|
13
|
+
the ChatDock header (desktop rail + mobile sheet). Near-full → an amber
|
|
14
|
+
"running low" hint and a popover with "resets tonight / next cycle" plus the
|
|
15
|
+
upgrade / top-up CTA (reusing the 429 deep-link). D5-safe: fractions and
|
|
16
|
+
qualitative words only, never a token number. Hides itself when the usage
|
|
17
|
+
endpoint is absent (older backend / OSS / no seat).
|
|
18
|
+
- **useAiUsage** — fetches the D5-safe per-meter fractions; refetches on the chat
|
|
19
|
+
engine's post-turn / 429 nudge and on tab re-focus; fails soft to nothing.
|
|
20
|
+
- **useObjectChat** emits `AI_USAGE_REFRESH_EVENT` on a rejected send (429) and on
|
|
21
|
+
the turn-finish edge so the ring updates right after the user's action.
|
|
22
|
+
- i18n: `console.ai.usage.*` in en + zh-CN.
|
|
23
|
+
|
|
24
|
+
Consumes the cloud `GET /api/v1/ai/usage` endpoint (objectstack-ai/cloud#824).
|
|
25
|
+
|
|
26
|
+
- 2efa9fd: Detail-page UX follow-ups from the ADR-0085 PR4 real-backend browser pass (framework#2548):
|
|
27
|
+
|
|
28
|
+
- **Highlight strip no longer repeats the record title.** A declared
|
|
29
|
+
`highlightFields` list containing the title field rendered it as the first
|
|
30
|
+
chip — truncated — directly under the identical page H1. `deriveHighlightFields`
|
|
31
|
+
now resolves the title (`primaryField` / `nameField` / deprecated
|
|
32
|
+
`displayNameField`, else the conventional display-field names) via the new
|
|
33
|
+
exported `resolveTitleField` and filters it from declared lists before the
|
|
34
|
+
4-chip cap, matching what the heuristic branch always did. app-shell's
|
|
35
|
+
`RecordDetailView` synthParts (which pre-computes the list and bypasses the
|
|
36
|
+
derivation) applies the same filter.
|
|
37
|
+
- **Per-field currency reaches the renderers.** The spec channel
|
|
38
|
+
(`currencyConfig.defaultCurrency`) was dropped by the highlight-strip and
|
|
39
|
+
detail-section field enrichment, so a spec-authored currency field could
|
|
40
|
+
never show its symbol ("25,000,000" instead of "$25,000,000");
|
|
41
|
+
`resolveFieldCurrency` reads it second after the designer-only bare
|
|
42
|
+
`currency` key.
|
|
43
|
+
- **app-shell approvals fetches send the Bearer token.** The header badge
|
|
44
|
+
poll, home-inbox count, and record-page approvals panel were cookie-only
|
|
45
|
+
(new shared `bearerAuthHeaders()` util) — same split-origin failure mode as
|
|
46
|
+
the console `approvalsApi` fix below.
|
|
47
|
+
- **`fieldGroups[].icon` / `description` reach detail pages.** The shared
|
|
48
|
+
derivation (ADR-0085 §5) already passed them through; the detail synth
|
|
49
|
+
dropped them. Sections now carry both, and `DetailSection` renders a real
|
|
50
|
+
Lucide icon for identifier-shaped names (emoji/text values keep the
|
|
51
|
+
historical text rendering).
|
|
52
|
+
- **Record meta footer stops dangling without an actor.** Seeded/system rows
|
|
53
|
+
with `created_by: null` rendered "Created by · 10m ago"; the footer now
|
|
54
|
+
falls back to actor-less labels ("Created / Updated"), with new i18n keys in
|
|
55
|
+
all six locales (and the zh `createdBy`/`updatedBy` mistranslation fixed:
|
|
56
|
+
创建人/更新人, not 创建于/更新于).
|
|
57
|
+
- **Select badges ellipsize instead of clipping mid-glyph.** In bounded
|
|
58
|
+
containers (highlight-strip columns, grid cells) an overlong option label
|
|
59
|
+
used to be cut at the container edge ("Technolog…"); badges now shrink with
|
|
60
|
+
an inner truncate and expose the full label as a hover title. The highlight
|
|
61
|
+
strip's hover title also prefers the option label over the raw stored value.
|
|
62
|
+
|
|
63
|
+
Console app (unversioned): `approvalsApi` now sends the stored Bearer token
|
|
64
|
+
like every other console call — cookie-only auth silently lost the approvals
|
|
65
|
+
surface on split-origin deployments where the SameSite cookie doesn't flow.
|
|
66
|
+
|
|
67
|
+
- e628d1f: Dashboard-level filters follow-ups (#2578, framework#2501):
|
|
68
|
+
|
|
69
|
+
- **i18n**: the `DashboardFilterBar` strings now ship as real locale entries —
|
|
70
|
+
`dashboard.filters.*` (bar label, "All time", "Custom…", "All", "Reset",
|
|
71
|
+
and the 13 date-range preset labels) added to `en` and `zh`. Previously the
|
|
72
|
+
bar always rendered the `useSafeTranslate` English fallbacks.
|
|
73
|
+
- **types**: `GlobalFilterSchema.name` and `DashboardWidgetSchema.filterBindings`
|
|
74
|
+
landed in `@objectstack/spec` (framework#2501), so the local type
|
|
75
|
+
annotations flip from "Pending alignment" to "Aligned" — no shape changes.
|
|
76
|
+
|
|
77
|
+
Also adds five schema-catalog examples (`plugin-dashboard/filtered-dashboard-*`:
|
|
78
|
+
dynamic `optionsFrom` options, text/number/lookup filter types, dataset +
|
|
79
|
+
inline widget mix, `targetWidgets` allow-list, date presets + custom range)
|
|
80
|
+
and a new "Dashboard-Level Filters" guide page covering the full tutorial,
|
|
81
|
+
`page.*` expression usage, and known limitations with workarounds.
|
|
82
|
+
|
|
83
|
+
- 23d65c3: fix(i18n): `createSafeTranslation` / `useSafeTranslate` no longer wrap the
|
|
84
|
+
translation hook in try/catch — the last known rules-of-hooks violation of
|
|
85
|
+
the class fixed in objectui#2595/#2596 (a throw after the hook ran would
|
|
86
|
+
desync hook order on the next render; the factory closure just escaped the
|
|
87
|
+
static lint). `useObjectTranslation` is provider-safe, and the actual
|
|
88
|
+
fallback behavior is unchanged: the testKey probe (createSafeTranslation)
|
|
89
|
+
and per-key `t(key) === key` detection (useSafeTranslate) still return the
|
|
90
|
+
English defaults when translations aren't configured. The fallback `t` is
|
|
91
|
+
now a stable per-factory reference, so downstream memo deps stop
|
|
92
|
+
invalidating every render in the no-translations case.
|
|
93
|
+
|
|
94
|
+
## 14.0.0
|
|
95
|
+
|
|
96
|
+
### Patch Changes
|
|
97
|
+
|
|
98
|
+
- c70bca7: fix(console-ai): Live Canvas is a full-screen, opt-in preview on mobile — not a broken split (#2481)
|
|
99
|
+
|
|
100
|
+
On a phone the beside-chat Live Canvas split overflowed the viewport (the chat
|
|
101
|
+
column's fixed min-width plus the preview exceeded the screen, and the resize
|
|
102
|
+
handle is desktop-only, so it was stuck clipped). Under `md` the canvas is now:
|
|
103
|
+
|
|
104
|
+
- **Full-width chat, no split** — the build streams in the chat as before.
|
|
105
|
+
- **Opt-in + full-screen** — when the preview is available a floating "Preview
|
|
106
|
+
app" pill appears; tapping it (or a Preview button on a draft card) takes the
|
|
107
|
+
canvas full-screen over the chat. Closing returns to the chat with the
|
|
108
|
+
preview one tap away. The auto-drafted canvas never covers the streaming
|
|
109
|
+
chat unprompted.
|
|
110
|
+
|
|
111
|
+
Desktop is unchanged (the resizable beside-chat split). Adds the
|
|
112
|
+
`console.ai.previewApp` string (en/zh).
|
|
113
|
+
|
|
114
|
+
- 05e56ca: 导出/导入模板的下载文件名与内容本地化。
|
|
115
|
+
|
|
116
|
+
**导出文件名**:CSV/Excel/JSON 导出下载不再是 `<对象名>.<扩展名>`(如 `contracts.csv`),改为「对象显示名-视图名-时间戳.扩展名」(如 `任务-In Progress-20260714-153045.xlsx`);`exportOptions.fileNamePrefix` 配置仍优先(且作为完整前缀,不再追加视图名)。视图名与对象名重复时自动省略;`@object-ui/core` 新增 `buildExportFileName(ext, { prefix, label, objectName, viewLabel }, now?)` 与 `sanitizeFileNameBase(raw)`,ObjectGrid 与 ListView 的所有导出路径(服务端流式与前端兜底)统一走它。app-shell/plugin-view 的 ObjectView 现将当前视图的显示标签写进传给 ListView 的 schema(`label`),使导出文件名能区分同一对象的不同保存视图。
|
|
117
|
+
|
|
118
|
+
**导入模板**:「下载模板」修复两处英文漏出——示例行的 select/多选取值改为优先取选项**显示标签**(如 `准备中`)而非 ASCII slug(`prepare`,服务端导入两者都接受);模板文件名本地化为 `{{object}}-导入模板.csv`(新增 i18n key `grid.import.templateFileName`,英文回退 `{{object}}-import-template.csv`)。
|
|
119
|
+
|
|
120
|
+
- 5971cc4: i18n: translate the Profile page, honor inline i18n label objects under bare
|
|
121
|
+
base-language codes, and localize managed-by badges / record quick actions.
|
|
122
|
+
|
|
123
|
+
- `pickLocalized` now upgrades a bare base language (`zh`) to any
|
|
124
|
+
region-qualified key sharing the base (`zh-CN`) — runtime language is
|
|
125
|
+
normalized to the base code while metadata authors write full BCP-47 tags,
|
|
126
|
+
so inline `{ en, 'zh-CN', ... }` label objects previously fell back to
|
|
127
|
+
English.
|
|
128
|
+
- ProfilePage (`account:profile_card` / `/system/profile`): every hardcoded
|
|
129
|
+
string — page title/subtitle, avatar Upload/Replace/Remove, Personal
|
|
130
|
+
Information card, Change/Set Password card — now goes through
|
|
131
|
+
`useObjectTranslation()` with `profile.*` keys (new namespace in all ten
|
|
132
|
+
locale bundles); the lazy-load fallback reuses `common.loading`.
|
|
133
|
+
- `ManagedByBadge` chips/tooltips (Config/System/Append-only/Identity) now
|
|
134
|
+
resolve through new `managedByBadge.*` keys with `{{provider}}`
|
|
135
|
+
interpolation.
|
|
136
|
+
- `record:quick_actions` resolves action labels via the
|
|
137
|
+
`objects.{object}._actions.{action}.label` convention plus `pickLocalized`,
|
|
138
|
+
so object action buttons (Change Password, Enable 2FA, …) localize.
|
|
139
|
+
- `record:details` / `record:related_list` / `record:alert` / `ObjectTree`
|
|
140
|
+
pass inline label objects through `pickLocalized`.
|
|
141
|
+
- Locale bundles: added `managedByBadge` namespace to all ten locales and
|
|
142
|
+
backfilled `list.inlineEditShort` / `inlineEditLabel` /
|
|
143
|
+
`recordEditingTitle` for ja/es/ko/de/fr/pt/ru/ar.
|
|
144
|
+
|
|
3
145
|
## 13.2.0
|
|
4
146
|
|
|
5
147
|
### Patch Changes
|
package/dist/locales/ar.d.ts
CHANGED
|
@@ -105,6 +105,9 @@ declare const ar: {
|
|
|
105
105
|
deleteSuccess: string;
|
|
106
106
|
};
|
|
107
107
|
fields: {
|
|
108
|
+
relativeDate: {
|
|
109
|
+
overdue: string;
|
|
110
|
+
};
|
|
108
111
|
richText: {
|
|
109
112
|
format: string;
|
|
110
113
|
basicEditorHint: string;
|
|
@@ -280,6 +283,31 @@ declare const ar: {
|
|
|
280
283
|
addGroup: string;
|
|
281
284
|
collapsedByDefault: string;
|
|
282
285
|
removeGroup: string;
|
|
286
|
+
inlineEditShort: string;
|
|
287
|
+
inlineEditLabel: string;
|
|
288
|
+
recordEditingTitle: string;
|
|
289
|
+
};
|
|
290
|
+
managedByBadge: {
|
|
291
|
+
config: {
|
|
292
|
+
short: string;
|
|
293
|
+
title: string;
|
|
294
|
+
body: string;
|
|
295
|
+
};
|
|
296
|
+
system: {
|
|
297
|
+
short: string;
|
|
298
|
+
title: string;
|
|
299
|
+
body: string;
|
|
300
|
+
};
|
|
301
|
+
appendOnly: {
|
|
302
|
+
short: string;
|
|
303
|
+
title: string;
|
|
304
|
+
body: string;
|
|
305
|
+
};
|
|
306
|
+
betterAuth: {
|
|
307
|
+
short: string;
|
|
308
|
+
title: string;
|
|
309
|
+
body: string;
|
|
310
|
+
};
|
|
283
311
|
};
|
|
284
312
|
kanban: {
|
|
285
313
|
addCard: string;
|
|
@@ -1222,6 +1250,43 @@ declare const ar: {
|
|
|
1222
1250
|
tenantHostHint: string;
|
|
1223
1251
|
};
|
|
1224
1252
|
};
|
|
1253
|
+
profile: {
|
|
1254
|
+
title: string;
|
|
1255
|
+
subtitle: string;
|
|
1256
|
+
saving: string;
|
|
1257
|
+
avatar: {
|
|
1258
|
+
upload: string;
|
|
1259
|
+
replace: string;
|
|
1260
|
+
remove: string;
|
|
1261
|
+
};
|
|
1262
|
+
info: {
|
|
1263
|
+
title: string;
|
|
1264
|
+
description: string;
|
|
1265
|
+
saved: string;
|
|
1266
|
+
name: string;
|
|
1267
|
+
email: string;
|
|
1268
|
+
emailImmutable: string;
|
|
1269
|
+
role: string;
|
|
1270
|
+
save: string;
|
|
1271
|
+
};
|
|
1272
|
+
password: {
|
|
1273
|
+
changeTitle: string;
|
|
1274
|
+
setTitle: string;
|
|
1275
|
+
changeDescription: string;
|
|
1276
|
+
setDescription: string;
|
|
1277
|
+
current: string;
|
|
1278
|
+
new: string;
|
|
1279
|
+
password: string;
|
|
1280
|
+
confirm: string;
|
|
1281
|
+
tooShort: string;
|
|
1282
|
+
mismatch: string;
|
|
1283
|
+
enterCurrent: string;
|
|
1284
|
+
changed: string;
|
|
1285
|
+
localSet: string;
|
|
1286
|
+
changeAction: string;
|
|
1287
|
+
setAction: string;
|
|
1288
|
+
};
|
|
1289
|
+
};
|
|
1225
1290
|
errors: {
|
|
1226
1291
|
networkError: string;
|
|
1227
1292
|
serverError: string;
|
package/dist/locales/ar.js
CHANGED
|
@@ -105,6 +105,9 @@ const ar = {
|
|
|
105
105
|
deleteSuccess: "تم حذف {{object}}",
|
|
106
106
|
},
|
|
107
107
|
fields: {
|
|
108
|
+
relativeDate: {
|
|
109
|
+
overdue: "متأخر {{count}} يوم",
|
|
110
|
+
},
|
|
108
111
|
richText: {
|
|
109
112
|
format: "التنسيق: {{format}}",
|
|
110
113
|
basicEditorHint: "محرر النص الغني (أساسي)",
|
|
@@ -280,6 +283,31 @@ const ar = {
|
|
|
280
283
|
addGroup: "إضافة حقل مجموعة",
|
|
281
284
|
collapsedByDefault: "مطوي افتراضياً",
|
|
282
285
|
removeGroup: "إزالة",
|
|
286
|
+
inlineEditShort: "تحرير مضمّن",
|
|
287
|
+
inlineEditLabel: "حرّر السجلات مباشرة (انقر خلية للتحرير)",
|
|
288
|
+
recordEditingTitle: "تحرير السجلات",
|
|
289
|
+
},
|
|
290
|
+
managedByBadge: {
|
|
291
|
+
config: {
|
|
292
|
+
short: "إعدادات المسؤول",
|
|
293
|
+
title: "تكوين المسؤول",
|
|
294
|
+
body: "تحدد هذه الصفوف سلوك المنصة أثناء التشغيل. أنشئها هنا؛ وتُخزَّن بيانات التشغيل الناتجة في جدول منفصل.",
|
|
295
|
+
},
|
|
296
|
+
system: {
|
|
297
|
+
short: "يديره النظام",
|
|
298
|
+
title: "تديره المنصة",
|
|
299
|
+
body: "تُنشأ الصفوف تلقائيًا عند تشغيل الإجراءات على السجل المصدر. القائمة أدناه واجهة مراقبة للقراءة فقط — وتوجد إجراءات مستوى الصف (اعتماد، استرجاع، إعادة إرسال، …) على كل صف.",
|
|
300
|
+
},
|
|
301
|
+
appendOnly: {
|
|
302
|
+
short: "للقراءة فقط · سجل التدقيق",
|
|
303
|
+
title: "سجل تاريخي للقراءة فقط",
|
|
304
|
+
body: "سجل تدقيق غير قابل للتغيير. لا يمكن إنشاء الصفوف أو تعديلها أو حذفها من الواجهة — تكتبها المنصة عند وقوع الأحداث. استخدم التصدير للتنزيل لمراجعة الامتثال.",
|
|
305
|
+
},
|
|
306
|
+
betterAuth: {
|
|
307
|
+
short: "الهوية",
|
|
308
|
+
title: "يديره مزوّد الهوية",
|
|
309
|
+
body: "مخطط هذا الكائن مملوك لـ {{provider}}. التعديلات المباشرة تتجاوز تجزئة كلمات المرور والتحقق من الجلسات وفحوصات المصادقة الثنائية وخطافات التدقيق. أدر هذه السجلات عبر تدفقات تسجيل الدخول والدعوة والأمان لدى مزوّد المصادقة.",
|
|
310
|
+
},
|
|
283
311
|
},
|
|
284
312
|
kanban: {
|
|
285
313
|
addCard: "إضافة بطاقة",
|
|
@@ -1222,6 +1250,43 @@ const ar = {
|
|
|
1222
1250
|
tenantHostHint: "تسجل الدخول إلى مساحة العمل هذه",
|
|
1223
1251
|
},
|
|
1224
1252
|
},
|
|
1253
|
+
profile: {
|
|
1254
|
+
title: "الملف الشخصي",
|
|
1255
|
+
subtitle: "إدارة إعدادات حسابك",
|
|
1256
|
+
saving: "جارٍ الحفظ…",
|
|
1257
|
+
avatar: {
|
|
1258
|
+
upload: "رفع",
|
|
1259
|
+
replace: "استبدال",
|
|
1260
|
+
remove: "إزالة",
|
|
1261
|
+
},
|
|
1262
|
+
info: {
|
|
1263
|
+
title: "المعلومات الشخصية",
|
|
1264
|
+
description: "قم بتحديث اسمك وعرض تفاصيل حسابك",
|
|
1265
|
+
saved: "تم تحديث الملف الشخصي بنجاح.",
|
|
1266
|
+
name: "الاسم",
|
|
1267
|
+
email: "البريد الإلكتروني",
|
|
1268
|
+
emailImmutable: "لا يمكن تغيير البريد الإلكتروني.",
|
|
1269
|
+
role: "الدور",
|
|
1270
|
+
save: "حفظ التغييرات",
|
|
1271
|
+
},
|
|
1272
|
+
password: {
|
|
1273
|
+
changeTitle: "تغيير كلمة المرور",
|
|
1274
|
+
setTitle: "تعيين كلمة مرور محلية",
|
|
1275
|
+
changeDescription: "قم بتحديث كلمة المرور التي تستخدمها لتسجيل الدخول إلى هذه البيئة.",
|
|
1276
|
+
setDescription: "لقد سجّلت الدخول عبر تسجيل الدخول الموحّد. عيّن كلمة مرور محلية لتتمكن أيضاً من تسجيل الدخول بالبريد الإلكتروني وكلمة المرور في هذه البيئة.",
|
|
1277
|
+
current: "كلمة المرور الحالية",
|
|
1278
|
+
new: "كلمة المرور الجديدة",
|
|
1279
|
+
password: "كلمة المرور",
|
|
1280
|
+
confirm: "تأكيد كلمة المرور",
|
|
1281
|
+
tooShort: "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل",
|
|
1282
|
+
mismatch: "كلمتا المرور غير متطابقتين",
|
|
1283
|
+
enterCurrent: "أدخل كلمة المرور الحالية",
|
|
1284
|
+
changed: "تم تغيير كلمة المرور.",
|
|
1285
|
+
localSet: "تم تعيين كلمة المرور المحلية. يمكنك الآن تسجيل الدخول بالبريد الإلكتروني وكلمة المرور في هذه البيئة.",
|
|
1286
|
+
changeAction: "تغيير كلمة المرور",
|
|
1287
|
+
setAction: "تعيين كلمة المرور",
|
|
1288
|
+
},
|
|
1289
|
+
},
|
|
1225
1290
|
errors: {
|
|
1226
1291
|
networkError: "خطأ في الشبكة. يرجى التحقق من اتصالك.",
|
|
1227
1292
|
serverError: "خطأ في الخادم. يرجى المحاولة مرة أخرى لاحقاً.",
|
package/dist/locales/de.d.ts
CHANGED
|
@@ -105,6 +105,9 @@ declare const de: {
|
|
|
105
105
|
deleteSuccess: string;
|
|
106
106
|
};
|
|
107
107
|
fields: {
|
|
108
|
+
relativeDate: {
|
|
109
|
+
overdue: string;
|
|
110
|
+
};
|
|
108
111
|
richText: {
|
|
109
112
|
format: string;
|
|
110
113
|
basicEditorHint: string;
|
|
@@ -280,6 +283,31 @@ declare const de: {
|
|
|
280
283
|
addGroup: string;
|
|
281
284
|
collapsedByDefault: string;
|
|
282
285
|
removeGroup: string;
|
|
286
|
+
inlineEditShort: string;
|
|
287
|
+
inlineEditLabel: string;
|
|
288
|
+
recordEditingTitle: string;
|
|
289
|
+
};
|
|
290
|
+
managedByBadge: {
|
|
291
|
+
config: {
|
|
292
|
+
short: string;
|
|
293
|
+
title: string;
|
|
294
|
+
body: string;
|
|
295
|
+
};
|
|
296
|
+
system: {
|
|
297
|
+
short: string;
|
|
298
|
+
title: string;
|
|
299
|
+
body: string;
|
|
300
|
+
};
|
|
301
|
+
appendOnly: {
|
|
302
|
+
short: string;
|
|
303
|
+
title: string;
|
|
304
|
+
body: string;
|
|
305
|
+
};
|
|
306
|
+
betterAuth: {
|
|
307
|
+
short: string;
|
|
308
|
+
title: string;
|
|
309
|
+
body: string;
|
|
310
|
+
};
|
|
283
311
|
};
|
|
284
312
|
kanban: {
|
|
285
313
|
addCard: string;
|
|
@@ -485,6 +513,8 @@ declare const de: {
|
|
|
485
513
|
highlightFields: string;
|
|
486
514
|
createdBy: string;
|
|
487
515
|
updatedBy: string;
|
|
516
|
+
created: string;
|
|
517
|
+
updated: string;
|
|
488
518
|
showEmptyRelated_one: string;
|
|
489
519
|
showEmptyRelated_other: string;
|
|
490
520
|
copyEmail: string;
|
|
@@ -1222,6 +1252,43 @@ declare const de: {
|
|
|
1222
1252
|
tenantHostHint: string;
|
|
1223
1253
|
};
|
|
1224
1254
|
};
|
|
1255
|
+
profile: {
|
|
1256
|
+
title: string;
|
|
1257
|
+
subtitle: string;
|
|
1258
|
+
saving: string;
|
|
1259
|
+
avatar: {
|
|
1260
|
+
upload: string;
|
|
1261
|
+
replace: string;
|
|
1262
|
+
remove: string;
|
|
1263
|
+
};
|
|
1264
|
+
info: {
|
|
1265
|
+
title: string;
|
|
1266
|
+
description: string;
|
|
1267
|
+
saved: string;
|
|
1268
|
+
name: string;
|
|
1269
|
+
email: string;
|
|
1270
|
+
emailImmutable: string;
|
|
1271
|
+
role: string;
|
|
1272
|
+
save: string;
|
|
1273
|
+
};
|
|
1274
|
+
password: {
|
|
1275
|
+
changeTitle: string;
|
|
1276
|
+
setTitle: string;
|
|
1277
|
+
changeDescription: string;
|
|
1278
|
+
setDescription: string;
|
|
1279
|
+
current: string;
|
|
1280
|
+
new: string;
|
|
1281
|
+
password: string;
|
|
1282
|
+
confirm: string;
|
|
1283
|
+
tooShort: string;
|
|
1284
|
+
mismatch: string;
|
|
1285
|
+
enterCurrent: string;
|
|
1286
|
+
changed: string;
|
|
1287
|
+
localSet: string;
|
|
1288
|
+
changeAction: string;
|
|
1289
|
+
setAction: string;
|
|
1290
|
+
};
|
|
1291
|
+
};
|
|
1225
1292
|
errors: {
|
|
1226
1293
|
networkError: string;
|
|
1227
1294
|
serverError: string;
|
package/dist/locales/de.js
CHANGED
|
@@ -105,6 +105,9 @@ const de = {
|
|
|
105
105
|
deleteSuccess: "{{object}} erfolgreich gelöscht",
|
|
106
106
|
},
|
|
107
107
|
fields: {
|
|
108
|
+
relativeDate: {
|
|
109
|
+
overdue: "{{count}} T. überfällig",
|
|
110
|
+
},
|
|
108
111
|
richText: {
|
|
109
112
|
format: "Format: {{format}}",
|
|
110
113
|
basicEditorHint: "Rich-Text-Editor (einfach)",
|
|
@@ -280,6 +283,31 @@ const de = {
|
|
|
280
283
|
addGroup: "Gruppenfeld hinzufügen",
|
|
281
284
|
collapsedByDefault: "Standardmäßig eingeklappt",
|
|
282
285
|
removeGroup: "Entfernen",
|
|
286
|
+
inlineEditShort: "Inline bearbeiten",
|
|
287
|
+
inlineEditLabel: "Datensätze inline bearbeiten (Zelle anklicken zum Bearbeiten)",
|
|
288
|
+
recordEditingTitle: "Datensatzbearbeitung",
|
|
289
|
+
},
|
|
290
|
+
managedByBadge: {
|
|
291
|
+
config: {
|
|
292
|
+
short: "Admin-Konfiguration",
|
|
293
|
+
title: "Administrator-Konfiguration",
|
|
294
|
+
body: "Diese Zeilen definieren das Laufzeitverhalten der Plattform. Erstellen Sie sie hier; die erzeugten Laufzeitdaten liegen in einer separaten Tabelle.",
|
|
295
|
+
},
|
|
296
|
+
system: {
|
|
297
|
+
short: "Systemverwaltet",
|
|
298
|
+
title: "Von der Plattform verwaltet",
|
|
299
|
+
body: "Zeilen werden automatisch erstellt, wenn Aktionen auf dem Quelldatensatz ausgeführt werden. Die Liste ist eine schreibgeschützte Überwachungsansicht – Aktionen auf Zeilenebene (Genehmigen, Zurückrufen, Erneut senden, …) befinden sich an jeder Zeile.",
|
|
300
|
+
},
|
|
301
|
+
appendOnly: {
|
|
302
|
+
short: "Schreibgeschützt · Audit-Log",
|
|
303
|
+
title: "Schreibgeschützter Verlauf",
|
|
304
|
+
body: "Unveränderliches Audit-Log. Zeilen können in der UI nicht erstellt, bearbeitet oder gelöscht werden – die Plattform schreibt sie bei Ereignissen. Nutzen Sie Export für Compliance-Prüfungen.",
|
|
305
|
+
},
|
|
306
|
+
betterAuth: {
|
|
307
|
+
short: "Identität",
|
|
308
|
+
title: "Vom Identitätsanbieter verwaltet",
|
|
309
|
+
body: "Das Schema dieses Objekts gehört {{provider}}. Direkte Änderungen umgehen Passwort-Hashing, Sitzungsvalidierung, Zwei-Faktor-Prüfungen und Audit-Hooks. Verwalten Sie diese Datensätze über die Anmelde-, Einladungs- und Sicherheitsabläufe Ihres Authentifizierungsanbieters.",
|
|
310
|
+
},
|
|
283
311
|
},
|
|
284
312
|
kanban: {
|
|
285
313
|
addCard: "Karte hinzufügen",
|
|
@@ -485,6 +513,8 @@ const de = {
|
|
|
485
513
|
highlightFields: "Schlüsselfelder",
|
|
486
514
|
createdBy: "Erstellt von",
|
|
487
515
|
updatedBy: "Aktualisiert von",
|
|
516
|
+
created: "Erstellt",
|
|
517
|
+
updated: "Aktualisiert",
|
|
488
518
|
showEmptyRelated_one: "+ {{count}} leer",
|
|
489
519
|
showEmptyRelated_other: "+ {{count}} leer",
|
|
490
520
|
copyEmail: "E-Mail kopieren",
|
|
@@ -1222,6 +1252,43 @@ const de = {
|
|
|
1222
1252
|
tenantHostHint: "Sie melden sich bei diesem Arbeitsbereich an",
|
|
1223
1253
|
},
|
|
1224
1254
|
},
|
|
1255
|
+
profile: {
|
|
1256
|
+
title: "Profil",
|
|
1257
|
+
subtitle: "Verwalten Sie Ihre Kontoeinstellungen",
|
|
1258
|
+
saving: "Speichern…",
|
|
1259
|
+
avatar: {
|
|
1260
|
+
upload: "Hochladen",
|
|
1261
|
+
replace: "Ersetzen",
|
|
1262
|
+
remove: "Entfernen",
|
|
1263
|
+
},
|
|
1264
|
+
info: {
|
|
1265
|
+
title: "Persönliche Informationen",
|
|
1266
|
+
description: "Aktualisieren Sie Ihren Namen und sehen Sie Ihre Kontodetails ein",
|
|
1267
|
+
saved: "Profil erfolgreich aktualisiert.",
|
|
1268
|
+
name: "Name",
|
|
1269
|
+
email: "E-Mail",
|
|
1270
|
+
emailImmutable: "Die E-Mail-Adresse kann nicht geändert werden.",
|
|
1271
|
+
role: "Rolle",
|
|
1272
|
+
save: "Änderungen speichern",
|
|
1273
|
+
},
|
|
1274
|
+
password: {
|
|
1275
|
+
changeTitle: "Passwort ändern",
|
|
1276
|
+
setTitle: "Lokales Passwort festlegen",
|
|
1277
|
+
changeDescription: "Aktualisieren Sie das Passwort, mit dem Sie sich in dieser Umgebung anmelden.",
|
|
1278
|
+
setDescription: "Sie haben sich per Single Sign-On angemeldet. Legen Sie ein lokales Passwort fest, um sich in dieser Umgebung auch mit E-Mail und Passwort anmelden zu können.",
|
|
1279
|
+
current: "Aktuelles Passwort",
|
|
1280
|
+
new: "Neues Passwort",
|
|
1281
|
+
password: "Passwort",
|
|
1282
|
+
confirm: "Passwort bestätigen",
|
|
1283
|
+
tooShort: "Das Passwort muss mindestens 8 Zeichen lang sein",
|
|
1284
|
+
mismatch: "Die Passwörter stimmen nicht überein",
|
|
1285
|
+
enterCurrent: "Geben Sie Ihr aktuelles Passwort ein",
|
|
1286
|
+
changed: "Passwort geändert.",
|
|
1287
|
+
localSet: "Lokales Passwort festgelegt. Sie können sich in dieser Umgebung jetzt auch mit E-Mail und Passwort anmelden.",
|
|
1288
|
+
changeAction: "Passwort ändern",
|
|
1289
|
+
setAction: "Passwort festlegen",
|
|
1290
|
+
},
|
|
1291
|
+
},
|
|
1225
1292
|
errors: {
|
|
1226
1293
|
networkError: "Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.",
|
|
1227
1294
|
serverError: "Serverfehler. Bitte versuchen Sie es später erneut.",
|