@object-ui/i18n 11.4.0 → 13.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 +51 -0
- package/dist/locales/ar.d.ts +54 -0
- package/dist/locales/ar.js +54 -0
- package/dist/locales/de.d.ts +54 -0
- package/dist/locales/de.js +54 -0
- package/dist/locales/en.d.ts +78 -0
- package/dist/locales/en.js +82 -0
- package/dist/locales/es.d.ts +54 -0
- package/dist/locales/es.js +54 -0
- package/dist/locales/fr.d.ts +54 -0
- package/dist/locales/fr.js +54 -0
- package/dist/locales/index.d.ts +588 -0
- package/dist/locales/ja.d.ts +54 -0
- package/dist/locales/ja.js +54 -0
- package/dist/locales/ko.d.ts +54 -0
- package/dist/locales/ko.js +54 -0
- package/dist/locales/pt.d.ts +54 -0
- package/dist/locales/pt.js +54 -0
- package/dist/locales/ru.d.ts +54 -0
- package/dist/locales/ru.js +54 -0
- package/dist/locales/zh.d.ts +78 -0
- package/dist/locales/zh.js +81 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,56 @@
|
|
|
1
1
|
# @object-ui/i18n
|
|
2
2
|
|
|
3
|
+
## 13.1.0
|
|
4
|
+
|
|
5
|
+
## 13.0.0
|
|
6
|
+
|
|
7
|
+
### Minor Changes
|
|
8
|
+
|
|
9
|
+
- 9e38270: feat(setup): "Connect an agent" page widget (`mcp:connect-agent`) — framework#2714 Phase 1, #2363
|
|
10
|
+
|
|
11
|
+
The interactive body for the plugin-carried Setup page shipped by
|
|
12
|
+
`@objectstack/mcp`: the environment's MCP URL (from `/discovery`), per-client
|
|
13
|
+
connect cards (claude.ai/Desktop, Claude Code incl. the official plugin,
|
|
14
|
+
Cursor one-click deeplink, VS Code, Codex CLI), the SKILL.md download
|
|
15
|
+
(`GET /api/v1/mcp/skill`), and show-once API-key minting for headless
|
|
16
|
+
callers via the existing `POST /api/v1/keys`. Renders a disabled empty state
|
|
17
|
+
when discovery doesn't advertise `routes.mcp` (deployment opted out).
|
|
18
|
+
Translations for all nine locales.
|
|
19
|
+
|
|
20
|
+
## 12.1.0
|
|
21
|
+
|
|
22
|
+
### Minor Changes
|
|
23
|
+
|
|
24
|
+
- e1840bf: Signal the platform's preview stage in the UI.
|
|
25
|
+
|
|
26
|
+
The console top bar (`AppHeader`) now shows a small **Preview** chip next to the
|
|
27
|
+
product wordmark on every surface (home / app / orgs), so users always know the
|
|
28
|
+
whole platform is pre-GA. It's a new `PreviewBadge` component driven by a
|
|
29
|
+
`branding.stage` field in runtime-config (`'preview' | 'beta' | 'ga'`, exposed
|
|
30
|
+
via `getPlatformStage()`), which defaults to `'preview'` so the badge shows out
|
|
31
|
+
of the box. Operators flip the stage to `'ga'` at launch (`OS_PRODUCT_STAGE` /
|
|
32
|
+
`RuntimeConfigPlugin`) and the badge disappears with no code change; `'beta'`
|
|
33
|
+
renders a "Beta" chip instead. Labels are localized under `topbar.stage.*`.
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- 6cbccf3: Localize form validation messages, toast client-side validation failures, and make native date/time picker icons legible in dark mode.
|
|
38
|
+
|
|
39
|
+
Record-form validation messages (required, min/max length, min/max value, pattern, email, URL) were hard-coded English even when the field label was localized — e.g. a Chinese "计划开始日期" field showed "计划开始日期 is required". `buildValidationRules` baked English strings, so the form renderer's `t(...)` fallback never applied. It now emits `required: true` and, for the other rules, a `messageKey` + `undefined` message (a field-authored `*_message` still wins and passes through verbatim); the form renderer fills the blanks via i18n (`validation.*` keys already exist in every locale), so messages track the label's language.
|
|
40
|
+
|
|
41
|
+
When client-side validation blocks a submit, the offending field's inline error can sit below the fold in a long modal/drawer form — the user clicks 创建 and sees nothing happen. The form renderer now also fires a `toast.error` naming the fields (`validation.formInvalid`, added to all 10 locales), mirroring the existing server-error toast so the feedback is visible regardless of scroll position.
|
|
42
|
+
|
|
43
|
+
Separately, native controls now declare `color-scheme` (`light` on `:root`, `dark` on `.dark`), so the webkit calendar-picker-indicator and other built-in glyphs render light-on-dark instead of vanishing against the dark input background.
|
|
44
|
+
|
|
45
|
+
## 12.0.0
|
|
46
|
+
|
|
47
|
+
## 11.5.0
|
|
48
|
+
|
|
49
|
+
### Minor Changes
|
|
50
|
+
|
|
51
|
+
- 544d8eb: Add the app → Studio reverse bridge (ADR-0080): workspace admins see a "Design in Studio" entry in the app top bar that deep-links to the running app's owning package on the Studio design surface (`/studio/:packageId/data`). Hidden for non-admins and for apps with no owning package; package writability stays server-side (read-only packages open as browse-only).
|
|
52
|
+
- 1072701: Import wizard: use registered server-side import mappings (framework #2611). When an object has `mapping` metadata artifacts targeting it, the wizard shows a "Saved mapping" selector; picking one hands rename + transforms + write semantics to the server (the artifact is authoritative), replaces the manual column table with a read-only summary of the mapping, and submits `mappingName` over source-header rows (mutually exclusive with the inline column rename). `ImportRequestOptions` gains `mappingName`; the objectstack adapter gains `listImportMappings(objectName)` (feature-detected — the selector simply doesn't appear when unsupported). New `grid.import.*` strings added across all locales.
|
|
53
|
+
|
|
3
54
|
## 11.4.0
|
|
4
55
|
|
|
5
56
|
### Patch Changes
|
package/dist/locales/ar.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ declare const ar: {
|
|
|
80
80
|
email: string;
|
|
81
81
|
url: string;
|
|
82
82
|
pattern: string;
|
|
83
|
+
formInvalid: string;
|
|
83
84
|
unique: string;
|
|
84
85
|
type: string;
|
|
85
86
|
};
|
|
@@ -191,6 +192,12 @@ declare const ar: {
|
|
|
191
192
|
templateName: string;
|
|
192
193
|
save: string;
|
|
193
194
|
deleteTemplate: string;
|
|
195
|
+
savedMapping: string;
|
|
196
|
+
chooseSavedMapping: string;
|
|
197
|
+
manualMapping: string;
|
|
198
|
+
transform: string;
|
|
199
|
+
savedMappingHint: string;
|
|
200
|
+
savedMappingPreviewNote: string;
|
|
194
201
|
csvColumn: string;
|
|
195
202
|
mapsTo: string;
|
|
196
203
|
typeMismatch: string;
|
|
@@ -1263,6 +1270,7 @@ declare const ar: {
|
|
|
1263
1270
|
};
|
|
1264
1271
|
topbar: {
|
|
1265
1272
|
aiAssistant: string;
|
|
1273
|
+
designInStudio: string;
|
|
1266
1274
|
};
|
|
1267
1275
|
home: {
|
|
1268
1276
|
title: string;
|
|
@@ -1693,6 +1701,46 @@ declare const ar: {
|
|
|
1693
1701
|
};
|
|
1694
1702
|
};
|
|
1695
1703
|
};
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: string;
|
|
1707
|
+
body: string;
|
|
1708
|
+
};
|
|
1709
|
+
url: {
|
|
1710
|
+
title: string;
|
|
1711
|
+
body: string;
|
|
1712
|
+
downloadSkill: string;
|
|
1713
|
+
skillHint: string;
|
|
1714
|
+
};
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: string;
|
|
1717
|
+
reachability: string;
|
|
1718
|
+
};
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: string;
|
|
1721
|
+
plugin: string;
|
|
1722
|
+
};
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: string;
|
|
1725
|
+
body: string;
|
|
1726
|
+
};
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: string;
|
|
1729
|
+
};
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: string;
|
|
1732
|
+
};
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: string;
|
|
1735
|
+
badge: string;
|
|
1736
|
+
body: string;
|
|
1737
|
+
namePlaceholder: string;
|
|
1738
|
+
mint: string;
|
|
1739
|
+
minting: string;
|
|
1740
|
+
showOnce: string;
|
|
1741
|
+
done: string;
|
|
1742
|
+
};
|
|
1743
|
+
};
|
|
1696
1744
|
marketplace: {
|
|
1697
1745
|
title: string;
|
|
1698
1746
|
subtitle: string;
|
|
@@ -1988,6 +2036,12 @@ declare const ar: {
|
|
|
1988
2036
|
empty: string;
|
|
1989
2037
|
kindNew: string;
|
|
1990
2038
|
kindUpdate: string;
|
|
2039
|
+
detailLoading: string;
|
|
2040
|
+
detailLoadFailed: string;
|
|
2041
|
+
detailNone: string;
|
|
2042
|
+
detailChangedKeys: string;
|
|
2043
|
+
confirmNote: string;
|
|
2044
|
+
publishConfirm: string;
|
|
1991
2045
|
};
|
|
1992
2046
|
};
|
|
1993
2047
|
filterBuilder: {
|
package/dist/locales/ar.js
CHANGED
|
@@ -80,6 +80,7 @@ const ar = {
|
|
|
80
80
|
email: "يرجى إدخال بريد إلكتروني صالح",
|
|
81
81
|
url: "يرجى إدخال رابط صالح",
|
|
82
82
|
pattern: "صيغة {{field}} غير صالحة",
|
|
83
|
+
formInvalid: "يرجى التحقق من الحقول المميزة: {{fields}}",
|
|
83
84
|
unique: "{{field}} يجب أن يكون فريداً",
|
|
84
85
|
type: "{{field}} يجب أن يكون {{type}} صالحاً",
|
|
85
86
|
},
|
|
@@ -191,6 +192,12 @@ const ar = {
|
|
|
191
192
|
templateName: "اسم القالب",
|
|
192
193
|
save: "حفظ",
|
|
193
194
|
deleteTemplate: "حذف القالب",
|
|
195
|
+
savedMapping: 'Saved mapping:',
|
|
196
|
+
chooseSavedMapping: 'Choose a saved mapping…',
|
|
197
|
+
manualMapping: '— Map columns manually —',
|
|
198
|
+
transform: 'Transform',
|
|
199
|
+
savedMappingHint: 'Mapping “{{name}}” applies rename + transforms + type coercion on the server. Column mapping is read-only.',
|
|
200
|
+
savedMappingPreviewNote: 'The preview shows your source columns; on import, mapping “{{name}}” applies rename, transforms and type coercion on the server.',
|
|
194
201
|
csvColumn: "العمود",
|
|
195
202
|
mapsTo: "يُعيَّن إلى",
|
|
196
203
|
typeMismatch: "يبدو أنه {{type}}",
|
|
@@ -1263,6 +1270,7 @@ const ar = {
|
|
|
1263
1270
|
},
|
|
1264
1271
|
topbar: {
|
|
1265
1272
|
aiAssistant: "مساعد الذكاء الاصطناعي",
|
|
1273
|
+
designInStudio: "التصميم في Studio",
|
|
1266
1274
|
},
|
|
1267
1275
|
home: {
|
|
1268
1276
|
title: "الرئيسية",
|
|
@@ -1693,6 +1701,46 @@ const ar = {
|
|
|
1693
1701
|
},
|
|
1694
1702
|
},
|
|
1695
1703
|
},
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: 'MCP معطّل في هذا النشر',
|
|
1707
|
+
body: 'واجهة MCP متوقفة (OS_MCP_SERVER_ENABLED=false). اطلب من المشغّل إعادة تفعيلها.',
|
|
1708
|
+
},
|
|
1709
|
+
url: {
|
|
1710
|
+
title: 'نقطة نهاية MCP لهذه البيئة',
|
|
1711
|
+
body: 'أي عميل ذكاء اصطناعي يدعم MCP يتصل عبر هذا العنوان. الهوية ذاتية الخدمة: النشر هو خادم تفويض OAuth 2.1 الخاص به — تسجّل الدخول بهويتك، وكل استدعاء يخضع لصلاحياتك وأمان مستوى الصفوف.',
|
|
1712
|
+
downloadSkill: 'تنزيل SKILL.md',
|
|
1713
|
+
skillHint: 'مهارة الوكيل المحمولة: تعلّم أي وكيل داعم للمهارات كيفية العمل مع هذه البيئة.',
|
|
1714
|
+
},
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: 'الإعدادات ← الموصلات ← إضافة موصل مخصص، الصق هذا العنوان وسجّل الدخول عبر المتصفح.',
|
|
1717
|
+
reachability: 'يتصل claude.ai (الويب) من خوادم Anthropic — يجب أن يكون النشر متاحًا عبر HTTPS عام. عملاء سطح المكتب والمحليون يصلون أيضًا إلى نشر الشبكات الداخلية.',
|
|
1718
|
+
},
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: 'أمر واحد — يفتح تسجيل دخول OAuth تلقائيًا عند أول استخدام:',
|
|
1721
|
+
plugin: 'أو ثبّت الإضافة الرسمية (تضيف مهارة ObjectStack وأمر /objectstack:connect الموجَّه):',
|
|
1722
|
+
},
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: 'أضِف إلى Cursor',
|
|
1725
|
+
body: 'استخدم زر النقرة الواحدة، أو أضف ما يلي إلى .cursor/mcp.json:',
|
|
1726
|
+
},
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: 'أضِف إلى .vscode/mcp.json (أو عبر أمر MCP: Add Server):',
|
|
1729
|
+
},
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: 'أضِف إلى ~/.codex/config.toml. إذا كانت نسخة Codex لديك لا تدعم تدفق OAuth، فاستخدم ترويسة مفتاح API (انظر أدناه):',
|
|
1732
|
+
},
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: 'مفاتيح API',
|
|
1735
|
+
badge: 'بدون واجهة',
|
|
1736
|
+
body: 'للتكامل المستمر والسكربتات والوكلاء بلا متصفح. المفتاح يتصرف بهويتك — تعامل معه ككلمة مرور. يُعرض مرة واحدة فقط.',
|
|
1737
|
+
namePlaceholder: 'اسم المفتاح (مثل ci-agent)',
|
|
1738
|
+
mint: 'إنشاء مفتاح',
|
|
1739
|
+
minting: 'جارٍ الإنشاء…',
|
|
1740
|
+
showOnce: 'أُنشئ المفتاح «{{name}}» — انسخه الآن، لن يُعرض مجددًا:',
|
|
1741
|
+
done: 'تم — إخفاء',
|
|
1742
|
+
},
|
|
1743
|
+
},
|
|
1696
1744
|
marketplace: {
|
|
1697
1745
|
title: "سوق التطبيقات",
|
|
1698
1746
|
subtitle: "استعرض التطبيقات المعتمدة المنشورة في كتالوج ObjectStack. انقر على تطبيق لرؤية التفاصيل وتثبيته في أحد بيئاتك.",
|
|
@@ -1988,6 +2036,12 @@ const ar = {
|
|
|
1988
2036
|
empty: 'لا شيء معلّق — نُشرت كل المسودات.',
|
|
1989
2037
|
kindNew: 'جديد',
|
|
1990
2038
|
kindUpdate: 'تحديث',
|
|
2039
|
+
detailLoading: 'جارٍ تحميل التفاصيل…',
|
|
2040
|
+
detailLoadFailed: 'تعذر تحميل تفاصيل التغيير:',
|
|
2041
|
+
detailNone: 'لم يتم اكتشاف اختلافات — المسودة مطابقة للنسخة المنشورة.',
|
|
2042
|
+
detailChangedKeys: 'تغييرات أخرى:',
|
|
2043
|
+
confirmNote: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
|
|
2044
|
+
publishConfirm: 'نشر الكل',
|
|
1991
2045
|
},
|
|
1992
2046
|
},
|
|
1993
2047
|
filterBuilder: {
|
package/dist/locales/de.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ declare const de: {
|
|
|
80
80
|
email: string;
|
|
81
81
|
url: string;
|
|
82
82
|
pattern: string;
|
|
83
|
+
formInvalid: string;
|
|
83
84
|
unique: string;
|
|
84
85
|
type: string;
|
|
85
86
|
};
|
|
@@ -191,6 +192,12 @@ declare const de: {
|
|
|
191
192
|
templateName: string;
|
|
192
193
|
save: string;
|
|
193
194
|
deleteTemplate: string;
|
|
195
|
+
savedMapping: string;
|
|
196
|
+
chooseSavedMapping: string;
|
|
197
|
+
manualMapping: string;
|
|
198
|
+
transform: string;
|
|
199
|
+
savedMappingHint: string;
|
|
200
|
+
savedMappingPreviewNote: string;
|
|
194
201
|
csvColumn: string;
|
|
195
202
|
mapsTo: string;
|
|
196
203
|
typeMismatch: string;
|
|
@@ -1263,6 +1270,7 @@ declare const de: {
|
|
|
1263
1270
|
};
|
|
1264
1271
|
topbar: {
|
|
1265
1272
|
aiAssistant: string;
|
|
1273
|
+
designInStudio: string;
|
|
1266
1274
|
};
|
|
1267
1275
|
home: {
|
|
1268
1276
|
title: string;
|
|
@@ -1693,6 +1701,46 @@ declare const de: {
|
|
|
1693
1701
|
};
|
|
1694
1702
|
};
|
|
1695
1703
|
};
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: string;
|
|
1707
|
+
body: string;
|
|
1708
|
+
};
|
|
1709
|
+
url: {
|
|
1710
|
+
title: string;
|
|
1711
|
+
body: string;
|
|
1712
|
+
downloadSkill: string;
|
|
1713
|
+
skillHint: string;
|
|
1714
|
+
};
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: string;
|
|
1717
|
+
reachability: string;
|
|
1718
|
+
};
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: string;
|
|
1721
|
+
plugin: string;
|
|
1722
|
+
};
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: string;
|
|
1725
|
+
body: string;
|
|
1726
|
+
};
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: string;
|
|
1729
|
+
};
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: string;
|
|
1732
|
+
};
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: string;
|
|
1735
|
+
badge: string;
|
|
1736
|
+
body: string;
|
|
1737
|
+
namePlaceholder: string;
|
|
1738
|
+
mint: string;
|
|
1739
|
+
minting: string;
|
|
1740
|
+
showOnce: string;
|
|
1741
|
+
done: string;
|
|
1742
|
+
};
|
|
1743
|
+
};
|
|
1696
1744
|
marketplace: {
|
|
1697
1745
|
title: string;
|
|
1698
1746
|
subtitle: string;
|
|
@@ -1988,6 +2036,12 @@ declare const de: {
|
|
|
1988
2036
|
empty: string;
|
|
1989
2037
|
kindNew: string;
|
|
1990
2038
|
kindUpdate: string;
|
|
2039
|
+
detailLoading: string;
|
|
2040
|
+
detailLoadFailed: string;
|
|
2041
|
+
detailNone: string;
|
|
2042
|
+
detailChangedKeys: string;
|
|
2043
|
+
confirmNote: string;
|
|
2044
|
+
publishConfirm: string;
|
|
1991
2045
|
};
|
|
1992
2046
|
};
|
|
1993
2047
|
filterBuilder: {
|
package/dist/locales/de.js
CHANGED
|
@@ -80,6 +80,7 @@ const de = {
|
|
|
80
80
|
email: "Bitte geben Sie eine gültige E-Mail-Adresse ein",
|
|
81
81
|
url: "Bitte geben Sie eine gültige URL ein",
|
|
82
82
|
pattern: "{{field}} hat ein ungültiges Format",
|
|
83
|
+
formInvalid: "Bitte überprüfen Sie die markierten Felder: {{fields}}",
|
|
83
84
|
unique: "{{field}} muss eindeutig sein",
|
|
84
85
|
type: "{{field}} muss ein gültiger {{type}} sein",
|
|
85
86
|
},
|
|
@@ -191,6 +192,12 @@ const de = {
|
|
|
191
192
|
templateName: "Vorlagenname",
|
|
192
193
|
save: "Speichern",
|
|
193
194
|
deleteTemplate: "Vorlage löschen",
|
|
195
|
+
savedMapping: 'Saved mapping:',
|
|
196
|
+
chooseSavedMapping: 'Choose a saved mapping…',
|
|
197
|
+
manualMapping: '— Map columns manually —',
|
|
198
|
+
transform: 'Transform',
|
|
199
|
+
savedMappingHint: 'Mapping “{{name}}” applies rename + transforms + type coercion on the server. Column mapping is read-only.',
|
|
200
|
+
savedMappingPreviewNote: 'The preview shows your source columns; on import, mapping “{{name}}” applies rename, transforms and type coercion on the server.',
|
|
194
201
|
csvColumn: "Spalte",
|
|
195
202
|
mapsTo: "Zugeordnet zu",
|
|
196
203
|
typeMismatch: "Sieht aus wie {{type}}",
|
|
@@ -1263,6 +1270,7 @@ const de = {
|
|
|
1263
1270
|
},
|
|
1264
1271
|
topbar: {
|
|
1265
1272
|
aiAssistant: "KI-Assistent",
|
|
1273
|
+
designInStudio: "Im Studio gestalten",
|
|
1266
1274
|
},
|
|
1267
1275
|
home: {
|
|
1268
1276
|
title: "Startseite",
|
|
@@ -1693,6 +1701,46 @@ const de = {
|
|
|
1693
1701
|
},
|
|
1694
1702
|
},
|
|
1695
1703
|
},
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: 'MCP ist auf dieser Bereitstellung deaktiviert',
|
|
1707
|
+
body: 'Die MCP-Schnittstelle ist ausgeschaltet (OS_MCP_SERVER_ENABLED=false). Bitten Sie Ihren Betreiber, sie wieder zu aktivieren.',
|
|
1708
|
+
},
|
|
1709
|
+
url: {
|
|
1710
|
+
title: 'MCP-Endpunkt dieser Umgebung',
|
|
1711
|
+
body: 'Jeder MCP-fähige KI-Client verbindet sich über diese URL. Die Identität ist Self-Service: Die Bereitstellung ist ihr eigener OAuth-2.1-Autorisierungsserver — Sie melden sich als Sie selbst an, und jeder Aufruf unterliegt Ihren Berechtigungen und der Zeilensicherheit.',
|
|
1712
|
+
downloadSkill: 'SKILL.md herunterladen',
|
|
1713
|
+
skillHint: 'Die portable Agenten-Skill-Datei: erklärt jedem skill-fähigen Agenten die Arbeit mit dieser Umgebung.',
|
|
1714
|
+
},
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: 'Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen, dann diese URL einfügen und im Browser anmelden.',
|
|
1717
|
+
reachability: 'claude.ai (Web) verbindet sich von Anthropic-Servern — die Bereitstellung muss über öffentliches HTTPS erreichbar sein. Claude Desktop und lokale Clients erreichen auch Intranet-Bereitstellungen.',
|
|
1718
|
+
},
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: 'Ein Befehl — die OAuth-Anmeldung öffnet sich bei der ersten Nutzung automatisch:',
|
|
1721
|
+
plugin: 'Oder das offizielle Plugin installieren (mit ObjectStack-Skill und geführtem /objectstack:connect):',
|
|
1722
|
+
},
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: 'Zu Cursor hinzufügen',
|
|
1725
|
+
body: 'Ein-Klick-Button verwenden oder Folgendes in .cursor/mcp.json eintragen:',
|
|
1726
|
+
},
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: 'In .vscode/mcp.json eintragen (oder über den Befehl „MCP: Add Server“):',
|
|
1729
|
+
},
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: 'In ~/.codex/config.toml eintragen. Falls Ihre Codex-Version den OAuth-Flow nicht unterstützt, stattdessen einen API-Schlüssel-Header verwenden (siehe unten):',
|
|
1732
|
+
},
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: 'API-Schlüssel',
|
|
1735
|
+
badge: 'headless',
|
|
1736
|
+
body: 'Für CI, Skripte und Agenten ohne Browser. Der Schlüssel handelt als Sie — wie ein Passwort behandeln. Er wird nur EINMAL angezeigt.',
|
|
1737
|
+
namePlaceholder: 'Schlüsselname (z. B. ci-agent)',
|
|
1738
|
+
mint: 'Schlüssel erstellen',
|
|
1739
|
+
minting: 'Wird erstellt…',
|
|
1740
|
+
showOnce: 'Schlüssel „{{name}}“ erstellt — jetzt kopieren, er wird nicht erneut angezeigt:',
|
|
1741
|
+
done: 'Fertig — ausblenden',
|
|
1742
|
+
},
|
|
1743
|
+
},
|
|
1696
1744
|
marketplace: {
|
|
1697
1745
|
title: "App-Marktplatz",
|
|
1698
1746
|
subtitle: "Durchsuchen Sie genehmigte Apps, die im ObjectStack-Katalog veröffentlicht wurden. Klicken Sie auf eine App, um Details zu sehen und sie in eine Ihrer Umgebungen zu installieren.",
|
|
@@ -1988,6 +2036,12 @@ const de = {
|
|
|
1988
2036
|
empty: 'Nichts ausstehend — alle Entwürfe wurden veröffentlicht.',
|
|
1989
2037
|
kindNew: 'Neu',
|
|
1990
2038
|
kindUpdate: 'Aktualisierung',
|
|
2039
|
+
detailLoading: 'Details werden geladen…',
|
|
2040
|
+
detailLoadFailed: 'Änderungsdetails konnten nicht geladen werden:',
|
|
2041
|
+
detailNone: 'Keine Unterschiede erkannt — der Entwurf entspricht der veröffentlichten Version.',
|
|
2042
|
+
detailChangedKeys: 'Ebenfalls geändert:',
|
|
2043
|
+
confirmNote: 'Beim Veröffentlichen werden alle {{count}} ausstehenden Entwürfe dieses Pakets atomar freigegeben.',
|
|
2044
|
+
publishConfirm: 'Alle veröffentlichen',
|
|
1991
2045
|
},
|
|
1992
2046
|
},
|
|
1993
2047
|
filterBuilder: {
|
package/dist/locales/en.d.ts
CHANGED
|
@@ -83,6 +83,7 @@ declare const en: {
|
|
|
83
83
|
readonly email: "Please enter a valid email address";
|
|
84
84
|
readonly url: "Please enter a valid URL";
|
|
85
85
|
readonly pattern: "{{field}} format is invalid";
|
|
86
|
+
readonly formInvalid: "Please check the highlighted fields: {{fields}}";
|
|
86
87
|
readonly unique: "{{field}} must be unique";
|
|
87
88
|
readonly type: "{{field}} must be a valid {{type}}";
|
|
88
89
|
};
|
|
@@ -204,6 +205,12 @@ declare const en: {
|
|
|
204
205
|
readonly templateName: "Template name";
|
|
205
206
|
readonly save: "Save";
|
|
206
207
|
readonly deleteTemplate: "Delete template";
|
|
208
|
+
readonly savedMapping: "Saved mapping:";
|
|
209
|
+
readonly chooseSavedMapping: "Choose a saved mapping…";
|
|
210
|
+
readonly manualMapping: "— Map columns manually —";
|
|
211
|
+
readonly transform: "Transform";
|
|
212
|
+
readonly savedMappingHint: "Mapping “{{name}}” applies rename + transforms + type coercion on the server. Column mapping is read-only.";
|
|
213
|
+
readonly savedMappingPreviewNote: "The preview shows your source columns; on import, mapping “{{name}}” applies rename, transforms and type coercion on the server.";
|
|
207
214
|
readonly csvColumn: "Column";
|
|
208
215
|
readonly mapsTo: "Maps To";
|
|
209
216
|
readonly typeMismatch: "Looks like {{type}}";
|
|
@@ -1242,6 +1249,15 @@ declare const en: {
|
|
|
1242
1249
|
readonly dark: "Dark";
|
|
1243
1250
|
readonly system: "System";
|
|
1244
1251
|
};
|
|
1252
|
+
readonly objectData: {
|
|
1253
|
+
readonly badge: "Data";
|
|
1254
|
+
readonly description: "URL-defined data slice — not bound to any saved view.";
|
|
1255
|
+
readonly filteredBy: "Filtered by";
|
|
1256
|
+
readonly removeFilter: "Remove filter {{field}}";
|
|
1257
|
+
readonly saveAsView: "Save as view";
|
|
1258
|
+
readonly noAccessTitle: "Access denied";
|
|
1259
|
+
readonly noAccess: "You do not have permission to view this data.";
|
|
1260
|
+
};
|
|
1245
1261
|
readonly objectView: {
|
|
1246
1262
|
readonly objectNotFound: "Object Not Found";
|
|
1247
1263
|
readonly objectNotFoundDescription: "The object \"{{objectName}}\" does not exist in the current configuration.";
|
|
@@ -1646,6 +1662,7 @@ declare const en: {
|
|
|
1646
1662
|
};
|
|
1647
1663
|
readonly topbar: {
|
|
1648
1664
|
readonly aiAssistant: "AI Assistant";
|
|
1665
|
+
readonly designInStudio: "Design in Studio";
|
|
1649
1666
|
readonly openAssistant: "Open {{name}} assistant";
|
|
1650
1667
|
readonly offline: "Offline";
|
|
1651
1668
|
readonly usersOnline: "Users currently online";
|
|
@@ -1657,6 +1674,11 @@ declare const en: {
|
|
|
1657
1674
|
readonly disconnected: "Disconnected";
|
|
1658
1675
|
readonly error: "Connection Error";
|
|
1659
1676
|
};
|
|
1677
|
+
readonly stage: {
|
|
1678
|
+
readonly preview: "Preview";
|
|
1679
|
+
readonly beta: "Beta";
|
|
1680
|
+
readonly tooltip: "This platform is in preview — features may change.";
|
|
1681
|
+
};
|
|
1660
1682
|
};
|
|
1661
1683
|
readonly home: {
|
|
1662
1684
|
readonly title: "Home";
|
|
@@ -1747,6 +1769,7 @@ declare const en: {
|
|
|
1747
1769
|
readonly appsAvailable: "{{count}} apps available";
|
|
1748
1770
|
readonly addApp: "Add App";
|
|
1749
1771
|
readonly editApp: "Edit App";
|
|
1772
|
+
readonly editNavigation: "Edit Navigation";
|
|
1750
1773
|
readonly manageAllApps: "Manage All Apps";
|
|
1751
1774
|
readonly systemConsole: "System Console";
|
|
1752
1775
|
readonly noAppsConfigured: "No apps configured";
|
|
@@ -1850,6 +1873,12 @@ declare const en: {
|
|
|
1850
1873
|
readonly empty: "Nothing pending — every draft has been published.";
|
|
1851
1874
|
readonly kindNew: "New";
|
|
1852
1875
|
readonly kindUpdate: "Update";
|
|
1876
|
+
readonly detailLoading: "Loading detail…";
|
|
1877
|
+
readonly detailLoadFailed: "Could not load change detail:";
|
|
1878
|
+
readonly detailNone: "No differences detected — the draft matches the published version.";
|
|
1879
|
+
readonly detailChangedKeys: "Also changed:";
|
|
1880
|
+
readonly confirmNote: "Publishing releases all {{count}} pending drafts of this package atomically.";
|
|
1881
|
+
readonly publishConfirm: "Publish all";
|
|
1853
1882
|
};
|
|
1854
1883
|
};
|
|
1855
1884
|
readonly renderer: {
|
|
@@ -2029,6 +2058,46 @@ declare const en: {
|
|
|
2029
2058
|
};
|
|
2030
2059
|
};
|
|
2031
2060
|
};
|
|
2061
|
+
readonly connectAgent: {
|
|
2062
|
+
readonly disabled: {
|
|
2063
|
+
readonly title: "MCP is disabled on this deployment";
|
|
2064
|
+
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.";
|
|
2065
|
+
};
|
|
2066
|
+
readonly url: {
|
|
2067
|
+
readonly title: "This environment's MCP endpoint";
|
|
2068
|
+
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.";
|
|
2069
|
+
readonly downloadSkill: "Download SKILL.md";
|
|
2070
|
+
readonly skillHint: "The portable agent skill: teaches any skills-capable agent how to work with this environment.";
|
|
2071
|
+
};
|
|
2072
|
+
readonly claude: {
|
|
2073
|
+
readonly body: "Settings → Connectors → Add custom connector, then paste this URL. Sign in through the browser when prompted.";
|
|
2074
|
+
readonly reachability: "claude.ai (web) connects from Anthropic's servers — the deployment must be reachable over public HTTPS. Claude Desktop and local clients also reach intranet deployments.";
|
|
2075
|
+
};
|
|
2076
|
+
readonly claudeCode: {
|
|
2077
|
+
readonly body: "One command — the OAuth login opens automatically on first use:";
|
|
2078
|
+
readonly plugin: "Or install the official plugin (adds the ObjectStack skill and a guided /objectstack:connect command):";
|
|
2079
|
+
};
|
|
2080
|
+
readonly cursor: {
|
|
2081
|
+
readonly addButton: "Add to Cursor";
|
|
2082
|
+
readonly body: "Use the one-click button, or add this to .cursor/mcp.json:";
|
|
2083
|
+
};
|
|
2084
|
+
readonly vscode: {
|
|
2085
|
+
readonly body: "Add to .vscode/mcp.json (or via the MCP: Add Server command):";
|
|
2086
|
+
};
|
|
2087
|
+
readonly codex: {
|
|
2088
|
+
readonly body: "Add to ~/.codex/config.toml. If your Codex version lacks the OAuth flow, use an API key header instead (see below):";
|
|
2089
|
+
};
|
|
2090
|
+
readonly apiKey: {
|
|
2091
|
+
readonly title: "API keys";
|
|
2092
|
+
readonly badge: "headless";
|
|
2093
|
+
readonly body: "For CI, scripts, and agents without a browser. The key acts as you — treat it like a password. It is shown ONCE.";
|
|
2094
|
+
readonly namePlaceholder: "Key name (e.g. ci-agent)";
|
|
2095
|
+
readonly mint: "Create key";
|
|
2096
|
+
readonly minting: "Creating…";
|
|
2097
|
+
readonly showOnce: "Key \"{{name}}\" created — copy it now, it will not be shown again:";
|
|
2098
|
+
readonly done: "Done — hide it";
|
|
2099
|
+
};
|
|
2100
|
+
};
|
|
2032
2101
|
readonly marketplace: {
|
|
2033
2102
|
readonly title: "App Marketplace";
|
|
2034
2103
|
readonly subtitle: "Browse approved apps published to the ObjectStack catalog. Click an app to view details and install it into one of your environments.";
|
|
@@ -2111,6 +2180,15 @@ declare const en: {
|
|
|
2111
2180
|
readonly localUnauthorized: "Sign in to this runtime first, then try again.";
|
|
2112
2181
|
readonly localMarketplaceUnavailable: "This runtime has no OS_CLOUD_URL configured, so the marketplace catalog is unreachable.";
|
|
2113
2182
|
};
|
|
2183
|
+
readonly suggestedBindings: {
|
|
2184
|
+
readonly promptEveryone: "This app suggests granting \"{{set}}\" to all signed-in users (the Everyone position).";
|
|
2185
|
+
readonly promptGuest: "This app suggests granting \"{{set}}\" to unauthenticated visitors (the Guest position).";
|
|
2186
|
+
readonly confirm: "Grant";
|
|
2187
|
+
readonly confirming: "Granting…";
|
|
2188
|
+
readonly dismiss: "Dismiss";
|
|
2189
|
+
readonly confirmedToast: "\"{{set}}\" is now granted to {{anchor}}.";
|
|
2190
|
+
readonly dismissedToast: "Suggestion for \"{{set}}\" dismissed.";
|
|
2191
|
+
};
|
|
2114
2192
|
readonly uninstall: {
|
|
2115
2193
|
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.";
|
|
2116
2194
|
readonly successInList: "Removed {{manifestId}}. Restart the runtime to fully unload it from the running kernel.";
|